From: <se...@us...> - 2008-05-14 18:05:29
|
Revision: 137 http://acmcontester.svn.sourceforge.net/acmcontester/?rev=137&view=rev Author: sem62 Date: 2008-05-14 11:01:48 -0700 (Wed, 14 May 2008) Log Message: ----------- Added deleting, inserting and moving answer variant in SimpleQ model Modified Paths: -------------- WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/SimpleQuestionPropertiestsDlg.java WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/SimpleQuestion/SimpleQuestionAnswersDataModel.java WebEditor/template/global/SummaryPage.js Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/SimpleQuestionPropertiestsDlg.java =================================================================== --- WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/SimpleQuestionPropertiestsDlg.java 2008-05-13 19:33:14 UTC (rev 136) +++ WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/SimpleQuestionPropertiestsDlg.java 2008-05-14 18:01:48 UTC (rev 137) @@ -4,6 +4,7 @@ import java.awt.event.ActionListener; import javax.swing.JButton; +import javax.swing.ListSelectionModel; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import javax.swing.table.DefaultTableColumnModel; @@ -36,6 +37,10 @@ private javax.swing.JButton editCaptionInHtmlBtn; private javax.swing.JButton editQuestionInHtmlBtn; private javax.swing.JButton editAnswerVariantInHtmlEditor; + private javax.swing.JButton insertAnswerVariantBtn; + private javax.swing.JButton deleteAnswerVariantBtn; + private javax.swing.JButton moveUpAnswerVariantBtn; + private javax.swing.JButton moveDownAnswerVariantBtn; private SimpleQuestionAnswersDataModel simpleQuestionAnswersDataModel; private javax.swing.JTextField currentAnswerVariant; @@ -57,20 +62,72 @@ if (arg0.getSource() == editCaptionInHtmlBtn) { editTextFieldInHtmlEditor(captionTextField); } - + if (arg0.getSource() == editAnswerVariantInHtmlEditor) { int selectedRow = answersTable.getSelectedRow(); - - if (selectedRow < 0){ + + if (selectedRow < 0) { return; } - - String text = answersTable.getModel().getValueAt(selectedRow, 1).toString(); - + + String text = answersTable.getModel().getValueAt(selectedRow, 1) + .toString(); + currentAnswerVariant.setText(text); editTextFieldInHtmlEditor(currentAnswerVariant); } + + if (arg0.getSource() == insertAnswerVariantBtn) { + int selectedRow = answersTable.getSelectedRow(); + + if (selectedRow < 0) { + return; + } + + simpleQuestionAnswersDataModel.insertRow(selectedRow); + answersTable.getSelectionModel().setSelectionInterval(selectedRow + 1, selectedRow + 1); + } + + if (arg0.getSource() == deleteAnswerVariantBtn) { + int selectedRow = answersTable.getSelectedRow(); + + if (selectedRow < 0) { + return; + } + + simpleQuestionAnswersDataModel.deleteRow(selectedRow); + + if (selectedRow >= simpleQuestionAnswersDataModel.getRowCount()){ + selectedRow--; + } + + answersTable.getSelectionModel().setSelectionInterval(selectedRow, + selectedRow); + } + if (arg0.getSource() == moveUpAnswerVariantBtn) { + int selectedRow = answersTable.getSelectedRow(); + + if (selectedRow < 0) { + return; + } + + if (simpleQuestionAnswersDataModel.moveUp(selectedRow)){ + answersTable.getSelectionModel().setSelectionInterval(selectedRow - 1, selectedRow - 1); + } + } + + if (arg0.getSource() == moveDownAnswerVariantBtn) { + int selectedRow = answersTable.getSelectedRow(); + + if (selectedRow < 0) { + return; + } + + if (simpleQuestionAnswersDataModel.moveDown(selectedRow)){ + answersTable.getSelectionModel().setSelectionInterval(selectedRow + 1, selectedRow+1); + } + } } @Override @@ -91,18 +148,19 @@ .getAnswers(); dlg.answersTable.setModel(dlg.simpleQuestionAnswersDataModel); - DefaultTableColumnModel columnModel = (DefaultTableColumnModel)dlg.answersTable.getColumnModel(); + DefaultTableColumnModel columnModel = (DefaultTableColumnModel) dlg.answersTable + .getColumnModel(); columnModel.getColumn(0).setPreferredWidth(1); columnModel.getColumn(1).setPreferredWidth(300); columnModel.getColumn(2).setPreferredWidth(1); - + dlg.titleTextField.selectAll(); } @Override public void editedHtmlTextWasSet() { super.editedHtmlTextWasSet(); - + String text = currentAnswerVariant.getText(); int selectedRow = answersTable.getSelectedRow(); answersTable.getModel().setValueAt(text, selectedRow, 1); @@ -110,7 +168,7 @@ private void initComponents() { setTitle("Propertiests..."); - + generalPanel = new javax.swing.JPanel(); titleLabel = new javax.swing.JLabel(); titleTextField = new javax.swing.JTextField(); @@ -127,7 +185,17 @@ editCaptionInHtmlBtn = new JButton("..."); editQuestionInHtmlBtn = new JButton("..."); editAnswerVariantInHtmlEditor = new JButton("HTML Editor"); + insertAnswerVariantBtn = new JButton("Insert"); + deleteAnswerVariantBtn = new JButton("Delete"); + moveDownAnswerVariantBtn = new JButton("Down"); + moveUpAnswerVariantBtn = new JButton("Up"); + + insertAnswerVariantBtn.addActionListener(this); + deleteAnswerVariantBtn.addActionListener(this); + moveDownAnswerVariantBtn.addActionListener(this); + moveUpAnswerVariantBtn.addActionListener(this); + currentAnswerVariant = new javax.swing.JTextField(); captionTextField.addActionListener(this); @@ -138,8 +206,9 @@ editCaptionInHtmlBtn.addActionListener(this); editQuestionInHtmlBtn.addActionListener(this); editAnswerVariantInHtmlEditor.addActionListener(this); - + answersTable = new javax.swing.JTable(); + answersTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); setDefaultCloseOperation(javax.swing.WindowConstants.HIDE_ON_CLOSE); @@ -318,31 +387,57 @@ answersPanel); answersPanel.setLayout(jPanel4Layout); jPanel4Layout.setHorizontalGroup(jPanel4Layout.createParallelGroup( - javax.swing.GroupLayout.Alignment.TRAILING) - .addGroup( - jPanel4Layout.createSequentialGroup() - .addComponent(editAnswerVariantInHtmlEditor) - .addContainerGap() - ) - .addGroup( + javax.swing.GroupLayout.Alignment.TRAILING).addGroup( jPanel4Layout.createSequentialGroup() - .addContainerGap() + .addComponent(moveUpAnswerVariantBtn) + .addContainerGap(10, 10) + .addComponent(moveDownAnswerVariantBtn) + .addContainerGap(10, 10) + .addComponent(insertAnswerVariantBtn) + .addContainerGap(10, 10) + .addComponent(deleteAnswerVariantBtn) + .addContainerGap(10, 10) + .addComponent( + editAnswerVariantInHtmlEditor) + .addContainerGap()).addGroup( + jPanel4Layout.createSequentialGroup().addContainerGap() .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 364, - Short.MAX_VALUE) - .addContainerGap() - )); + Short.MAX_VALUE).addContainerGap())); - jPanel4Layout.setVerticalGroup(jPanel4Layout.createParallelGroup( - javax.swing.GroupLayout.Alignment.LEADING).addGroup( - jPanel4Layout.createSequentialGroup().addContainerGap() - .addComponent(jScrollPane1, - javax.swing.GroupLayout.DEFAULT_SIZE, 111, - Short.MAX_VALUE) - .addContainerGap(10, 10) - .addComponent(editAnswerVariantInHtmlEditor, 20, 20, 20) - .addContainerGap() - )); + jPanel4Layout + .setVerticalGroup(jPanel4Layout + .createParallelGroup( + javax.swing.GroupLayout.Alignment.LEADING) + .addGroup( + jPanel4Layout + .createSequentialGroup() + .addContainerGap() + .addComponent( + jScrollPane1, + javax.swing.GroupLayout.DEFAULT_SIZE, + 111, Short.MAX_VALUE) + .addContainerGap(10, 10) + .addGroup( + jPanel4Layout + .createParallelGroup( + javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent( + moveUpAnswerVariantBtn, + 20, 20, 20) + .addComponent( + moveDownAnswerVariantBtn, + 20, 20, 20) + .addComponent( + insertAnswerVariantBtn, + 20, 20, 20) + .addComponent( + deleteAnswerVariantBtn, + 20, 20, 20) + .addComponent( + editAnswerVariantInHtmlEditor, + 20, 20, 20)) + .addContainerGap())); javax.swing.GroupLayout layout = new javax.swing.GroupLayout( getContentPane()); @@ -431,8 +526,10 @@ .createParallelGroup( javax.swing.GroupLayout.Alignment.BASELINE) .addComponent( - cancelButton) - .addComponent(okButton)) + cancelButton, + 20, 20, 20) + .addComponent(okButton, + 20, 20, 20)) .addContainerGap( javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))); @@ -450,7 +547,7 @@ SimpleQuestionData data = itemModel.getData(manifestItem); - if (sameAsTitleCheckBox.isSelected()){ + if (sameAsTitleCheckBox.isSelected()) { data.setCaption(titleTextField.getText()); } else { data.setCaption(captionTextField.getText()); @@ -458,8 +555,7 @@ data.setQuestion(questionTextField.getText()); - data.setAnswers( - simpleQuestionAnswersDataModel); + data.setAnswers(simpleQuestionAnswersDataModel); itemModel.updateItemResource(manifestItem, true); } Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/SimpleQuestion/SimpleQuestionAnswersDataModel.java =================================================================== --- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/SimpleQuestion/SimpleQuestionAnswersDataModel.java 2008-05-13 19:33:14 UTC (rev 136) +++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/SimpleQuestion/SimpleQuestionAnswersDataModel.java 2008-05-14 18:01:48 UTC (rev 137) @@ -1,24 +1,21 @@ package edu.lnu.FireFly.WebEditor.ItemModels.SimpleQuestion; import java.util.ArrayList; +import java.util.List; -import javax.swing.event.TableModelEvent; -import javax.swing.event.TableModelListener; -import javax.swing.table.TableModel; +import javax.swing.table.DefaultTableModel; +public class SimpleQuestionAnswersDataModel extends DefaultTableModel { + /** + * + */ + private static final long serialVersionUID = 1L; -public class SimpleQuestionAnswersDataModel implements TableModel { private boolean singleVariant = false; - public ArrayList<SimpleQuestionAnswer> answers = new ArrayList<SimpleQuestionAnswer>(); - private ArrayList<TableModelListener> listeners = new ArrayList<TableModelListener>(); + public List<SimpleQuestionAnswer> answers = new ArrayList<SimpleQuestionAnswer>(); @Override - public void addTableModelListener(TableModelListener arg0) { - listeners.add(arg0); - } - - @Override public Class<?> getColumnClass(int arg0) { return Object.class; } @@ -42,7 +39,16 @@ @Override public int getRowCount() { - return answers.size() + 1; + + if (answers == null) { + return 0; + } + + int answersCount = answers.size(); + + + + return answersCount > 0 ? answersCount : 1; } @Override @@ -72,11 +78,6 @@ return singleVariant; } - @Override - public void removeTableModelListener(TableModelListener arg0) { - listeners.remove(arg0); - } - public void setSingleVariant(boolean singleVariant) { this.singleVariant = singleVariant; } @@ -107,10 +108,51 @@ } break; } + + fireTableRowsUpdated(arg1, arg1); + } + + public void deleteRow(int selectedRow) { + if (selectedRow < answers.size() && selectedRow >= 0) { + answers.remove(selectedRow); + fireTableRowsDeleted(selectedRow, selectedRow); + } + } + + public void insertRow(int selectedRow) { + if (selectedRow >= answers.size()){ + selectedRow--; + } - for (int i=0; i < listeners.size(); i++){ - TableModelEvent event = new TableModelEvent(this, arg1, arg1, arg2); - listeners.get(i).tableChanged(event); + answers.add(selectedRow + 1, new SimpleQuestionAnswer("")); + fireTableRowsInserted(selectedRow + 1, selectedRow + 1); + } + + public boolean moveUp(int selectedRow) { + if (selectedRow < 1 || selectedRow >= answers.size()){ + return false; } + + SimpleQuestionAnswer answer = answers.get(selectedRow); + answers.set(selectedRow, answers.get(selectedRow - 1)); + answers.set(selectedRow - 1, answer); + + fireTableRowsUpdated(selectedRow - 1, selectedRow); + + return true; } + + public boolean moveDown(int selectedRow) { + if (selectedRow < 0 || selectedRow >= answers.size() - 1){ + return false; + } + + SimpleQuestionAnswer answer = answers.get(selectedRow); + answers.set(selectedRow, answers.get(selectedRow + 1)); + answers.set(selectedRow + 1, answer); + + fireTableRowsUpdated(selectedRow + 1, selectedRow); + + return true; + } } Modified: WebEditor/template/global/SummaryPage.js =================================================================== --- WebEditor/template/global/SummaryPage.js 2008-05-13 19:33:14 UTC (rev 136) +++ WebEditor/template/global/SummaryPage.js 2008-05-14 18:01:48 UTC (rev 137) @@ -101,10 +101,10 @@ function write(completionStatus, title, min, max, raw, modelName){ rowNum++; - var percents = "0"; + var percents = "0 %"; if ((parseInt(min) || min == 0) && (parseInt(max) || max == 0) && (parseInt(raw) || raw == 0)){ if (max == min){ - percents = "? %"; + percents = "0 %"; } else { percents = 100 * (raw - min) / (max - min) + " %"; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |