From: <se...@us...> - 2008-05-29 19:08:54
|
Revision: 182 http://acmcontester.svn.sourceforge.net/acmcontester/?rev=182&view=rev Author: sem62 Date: 2008-05-29 12:08:52 -0700 (Thu, 29 May 2008) Log Message: ----------- Added all GUI element for editing CompileQ IO data. Modified Paths: -------------- WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/CompileQPropertiestsDlg.java WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQData.java Added Paths: ----------- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQIOModel.java WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQIORecord.java Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/CompileQPropertiestsDlg.java =================================================================== --- WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/CompileQPropertiestsDlg.java 2008-05-29 11:41:50 UTC (rev 181) +++ WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/CompileQPropertiestsDlg.java 2008-05-29 19:08:52 UTC (rev 182) @@ -12,8 +12,10 @@ import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTabbedPane; +import javax.swing.JTable; import javax.swing.JTextField; import javax.swing.LayoutStyle; +import javax.swing.ListSelectionModel; import javax.swing.ScrollPaneConstants; import javax.swing.WindowConstants; import javax.swing.GroupLayout.Alignment; @@ -25,6 +27,7 @@ import edu.lnu.FireFly.WebEditor.GUI.Dialogs.PropertyDlg; import edu.lnu.FireFly.WebEditor.ItemModels.CompileQ.CompileQData; +import edu.lnu.FireFly.WebEditor.ItemModels.CompileQ.CompileQIOModel; import edu.lnu.FireFly.WebEditor.ItemModels.CompileQ.CompileQModel; import edu.lnu.FireFly.WebEditor.ItemModels.CompileQ.CompileQPartsTableModel; @@ -47,18 +50,28 @@ private JPanel partsPanel; private JPanel testingDataPanel; private JScrollPane jScrollPane1; + private JScrollPane jScrollPane2; private PartsTable partsTable; + private JTable ioTable; private JTextField titleTextField; private JTextField captionTextField; private JTextField questionTextField; private JButton editCaptionInHtmlBtn; private JButton editQuestionInHtmlBtn; private JButton editAnswerVariantInHtmlEditor; + private JButton insertAnswerVariantBtn; private JButton deleteAnswerVariantBtn; private JButton moveUpAnswerVariantBtn; private JButton moveDownAnswerVariantBtn; + + private JButton insertIORecordBtn; + private JButton deleteIORecordBtn; + private JButton moveUpIORecordBtn; + private JButton moveDownIORecordBtn; + private CompileQPartsTableModel compileQTableDataModel; + private CompileQIOModel compileQIOTableModel; private JTextField currentAnswerVariant; @@ -84,7 +97,8 @@ return; } - stopCellEditing(); + stopCellEditing(partsTable); + stopCellEditing(ioTable); String text = partsTable.getModel().getValueAt(selectedRow, 1) .toString(); @@ -100,12 +114,27 @@ return; } - stopCellEditing(); + stopCellEditing(partsTable); + stopCellEditing(ioTable); compileQTableDataModel.insertRow(selectedRow); partsTable.getSelectionModel().setSelectionInterval( selectedRow + 1, selectedRow + 1); } + if (arg0.getSource() == insertIORecordBtn) { + int selectedRow = ioTable.getSelectedRow(); + + if (selectedRow < 0) { + return; + } + + stopCellEditing(partsTable); + stopCellEditing(ioTable); + compileQIOTableModel.insertRow(selectedRow); + ioTable.getSelectionModel().setSelectionInterval( + selectedRow + 1, selectedRow + 1); + } + if (arg0.getSource() == deleteAnswerVariantBtn) { int selectedRow = partsTable.getSelectedRow(); @@ -113,7 +142,8 @@ return; } - stopCellEditing(); + stopCellEditing(partsTable); + stopCellEditing(ioTable); compileQTableDataModel.deleteRow(selectedRow); if (selectedRow >= compileQTableDataModel.getRowCount()) { @@ -123,6 +153,26 @@ partsTable.getSelectionModel().setSelectionInterval(selectedRow, selectedRow); } + + if (arg0.getSource() == deleteIORecordBtn) { + int selectedRow = ioTable.getSelectedRow(); + + if (selectedRow < 0) { + return; + } + + stopCellEditing(partsTable); + stopCellEditing(ioTable); + compileQIOTableModel.deleteRow(selectedRow); + + if (selectedRow >= compileQIOTableModel.getRowCount()) { + selectedRow--; + } + + ioTable.getSelectionModel().setSelectionInterval(selectedRow, + selectedRow); + } + if (arg0.getSource() == moveUpAnswerVariantBtn) { int selectedRow = partsTable.getSelectedRow(); @@ -130,13 +180,29 @@ return; } - stopCellEditing(); + stopCellEditing(partsTable); + stopCellEditing(ioTable); if (compileQTableDataModel.moveUp(selectedRow)) { partsTable.getSelectionModel().setSelectionInterval( selectedRow - 1, selectedRow - 1); } } + if (arg0.getSource() == moveUpIORecordBtn) { + int selectedRow = ioTable.getSelectedRow(); + + if (selectedRow < 0) { + return; + } + + stopCellEditing(partsTable); + stopCellEditing(ioTable); + if (compileQIOTableModel.moveUp(selectedRow)) { + ioTable.getSelectionModel().setSelectionInterval( + selectedRow - 1, selectedRow - 1); + } + } + if (arg0.getSource() == moveDownAnswerVariantBtn) { int selectedRow = partsTable.getSelectedRow(); @@ -144,22 +210,38 @@ return; } - stopCellEditing(); + stopCellEditing(partsTable); + stopCellEditing(ioTable); if (compileQTableDataModel.moveDown(selectedRow)) { partsTable.getSelectionModel().setSelectionInterval( selectedRow + 1, selectedRow + 1); } } + + if (arg0.getSource() == moveDownIORecordBtn) { + int selectedRow = ioTable.getSelectedRow(); + + if (selectedRow < 0) { + return; + } + + stopCellEditing(partsTable); + stopCellEditing(ioTable); + if (compileQIOTableModel.moveDown(selectedRow)) { + ioTable.getSelectionModel().setSelectionInterval( + selectedRow + 1, selectedRow + 1); + } + } } - public boolean stopCellEditing() { + public boolean stopCellEditing(JTable table) { try { - int column = partsTable.getEditingColumn(); + int column = table.getEditingColumn(); if (column > -1) { - TableCellEditor cellEditor = partsTable.getColumnModel() + TableCellEditor cellEditor = table.getColumnModel() .getColumn(column).getCellEditor(); if (cellEditor == null) { - cellEditor = partsTable.getDefaultEditor(partsTable + cellEditor = table.getDefaultEditor(table .getColumnClass(column)); } @@ -185,6 +267,7 @@ captionTextField.getText())); compileQTableDataModel = itemModel.getData(manifestItem).getParts(); + compileQIOTableModel = itemModel.getData(manifestItem).getIoRecords(); programmingLanguage.addItem("Any"); programmingLanguage.addItem("C++"); @@ -194,6 +277,7 @@ .getLanguge()); partsTable.setModel(compileQTableDataModel); + ioTable.setModel(compileQIOTableModel); DefaultTableColumnModel columnModel = (DefaultTableColumnModel) partsTable .getColumnModel(); @@ -212,6 +296,10 @@ columnModel.getColumn(2).setResizable(false); titleTextField.selectAll(); + + columnModel = (DefaultTableColumnModel) ioTable.getColumnModel(); + columnModel.getColumn(1).setCellEditor(multiLineTableCellEditor); + columnModel.getColumn(2).setCellEditor(multiLineTableCellEditor); } @Override @@ -229,6 +317,11 @@ add(tabbedPane); JPanel generalTab = new JPanel(); + ioTable = new JTable(); + ioTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); + ioTable.setDefaultRenderer(String.class, new MultiLineCellRenderer()); + ioTable.setDefaultRenderer(PartNumber.class, + new PartNumberCellRenderer()); generalPanel = new JPanel(); titleLabel = new JLabel(); @@ -242,23 +335,34 @@ partsPanel = new JPanel(); testingDataPanel = new JPanel(); jScrollPane1 = new JScrollPane(); + jScrollPane2 = new JScrollPane(); cancelButton = new JButton("Cancel"); okButton = new JButton("Ok"); editCaptionInHtmlBtn = new JButton("..."); editQuestionInHtmlBtn = new JButton("..."); editAnswerVariantInHtmlEditor = new JButton("HTML Editor"); - insertAnswerVariantBtn = new JButton("Insert"); - deleteAnswerVariantBtn = new JButton("Delete"); programmingLanguage = new JComboBox(); moveDownAnswerVariantBtn = new JButton("Down"); moveUpAnswerVariantBtn = new JButton("Up"); + insertAnswerVariantBtn = new JButton("Insert"); + deleteAnswerVariantBtn = new JButton("Delete"); + moveDownIORecordBtn = new JButton("Down"); + moveUpIORecordBtn = new JButton("Up"); + insertIORecordBtn = new JButton("Insert"); + deleteIORecordBtn = new JButton("Delete"); + insertAnswerVariantBtn.addActionListener(this); deleteAnswerVariantBtn.addActionListener(this); moveDownAnswerVariantBtn.addActionListener(this); moveUpAnswerVariantBtn.addActionListener(this); + insertIORecordBtn.addActionListener(this); + deleteIORecordBtn.addActionListener(this); + moveDownIORecordBtn.addActionListener(this); + moveUpIORecordBtn.addActionListener(this); + currentAnswerVariant = new JTextField(); captionTextField.addActionListener(this); @@ -349,6 +453,10 @@ jScrollPane1 .setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); + jScrollPane2.setViewportView(ioTable); + jScrollPane2 + .setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); + GroupLayout jPanel4Layout = new GroupLayout(partsPanel); partsPanel.setLayout(jPanel4Layout); jPanel4Layout.setHorizontalGroup(jPanel4Layout.createParallelGroup( @@ -523,13 +631,67 @@ 20, 20, 20)) .addContainerGap())); + GroupLayout jPanel5Layout = new GroupLayout(testingDataPanel); + testingDataPanel.setLayout(jPanel5Layout); + + jPanel5Layout + .setHorizontalGroup(jPanel5Layout + .createParallelGroup( + Alignment.TRAILING).addGroup( + jPanel5Layout.createSequentialGroup().addComponent( + moveUpIORecordBtn).addContainerGap(10, 10) + .addComponent(moveDownIORecordBtn).addContainerGap(10, + 10).addComponent(insertIORecordBtn) + .addContainerGap(10, 10) + .addComponent(deleteIORecordBtn).addContainerGap()) + .addGroup( + jPanel5Layout.createSequentialGroup().addContainerGap() + .addComponent(jScrollPane2, + GroupLayout.DEFAULT_SIZE, 364, + Short.MAX_VALUE).addContainerGap())); + + jPanel5Layout + .setVerticalGroup(jPanel5Layout + .createParallelGroup(Alignment.LEADING) + .addGroup( + jPanel5Layout + .createSequentialGroup() + .addContainerGap(10, 10) + .addGroup( + jPanel5Layout + .createParallelGroup(Alignment.BASELINE)) + .addContainerGap(10, 10) + .addComponent(jScrollPane2, + GroupLayout.DEFAULT_SIZE, 111, + Short.MAX_VALUE) + .addContainerGap(10, 10) + .addGroup( + jPanel5Layout + .createParallelGroup( + Alignment.BASELINE) + .addComponent( + moveUpIORecordBtn, + 20, 20, 20) + .addComponent( + moveDownIORecordBtn, + 20, 20, 20) + .addComponent( + insertIORecordBtn, + 20, 20, 20) + .addComponent( + deleteIORecordBtn, + 20, 20, 20)) + .addContainerGap())); + pack(); setSize(550, 600); } @Override protected void saveChanges() { - stopCellEditing(); + stopCellEditing(partsTable); + stopCellEditing(ioTable); + CompileQModel itemModel = new CompileQModel(); manifestItem.setTitle(titleTextField.getText()); Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQData.java =================================================================== --- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQData.java 2008-05-29 11:41:50 UTC (rev 181) +++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQData.java 2008-05-29 19:08:52 UTC (rev 182) @@ -47,6 +47,7 @@ } private CompileQPartsTableModel parts = new CompileQPartsTableModel(); + private CompileQIOModel ioRecords = new CompileQIOModel(); public void setCaption(String caption) { this.caption = caption; @@ -108,4 +109,12 @@ public void setLanguge(String languge) { this.languge = languge; } + + public CompileQIOModel getIoRecords() { + return ioRecords; + } + + public void setIoRecords(CompileQIOModel ioRecords) { + this.ioRecords = ioRecords; + } } Added: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQIOModel.java =================================================================== --- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQIOModel.java (rev 0) +++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQIOModel.java 2008-05-29 19:08:52 UTC (rev 182) @@ -0,0 +1,150 @@ +package edu.lnu.FireFly.WebEditor.ItemModels.CompileQ; + +import java.util.ArrayList; +import java.util.List; + +import javax.swing.table.DefaultTableModel; + +import edu.lnu.FireFly.WebEditor.GUI.Dialogs.CompileQ.PartNumber; + +public class CompileQIOModel extends DefaultTableModel { + /** + * + */ + private static final long serialVersionUID = 1L; + + public List<CompileQIORecord> ioRecords = new ArrayList<CompileQIORecord>(); + + @Override + public Class<?> getColumnClass(int col) { + switch (col) { + case 0: + return PartNumber.class; + default: + return String.class; + } + } + + @Override + public int getColumnCount() { + return 3; + } + + @Override + public String getColumnName(int arg0) { + switch (arg0) { + case 0: + return "#"; + case 1: + return "Input"; + default: + return "Output"; + } + } + + @Override + public int getRowCount() { + + if (ioRecords == null) { + return 0; + } + + return ioRecords.size() > 0 ? ioRecords.size() : 1; + } + + @Override + public Object getValueAt(int row, int col) { + if (row == ioRecords.size()) { + return null; + } + + switch (col) { + case 0: + return new PartNumber(row + 1); + case 1: + return ioRecords.get(row).getInputData(); + case 2: + return ioRecords.get(row).getOutputData(); + default: + return null; + } + } + + @Override + public boolean isCellEditable(int row, int col) { + switch (col) { + case 0: + return false; + case 1: + return true; + case 2: + return true; + default: + return false; + } + } + + @Override + public void setValueAt(Object value, int row, int col) { + if (row == ioRecords.size()) { + ioRecords.add(new CompileQIORecord()); + } + + String newValue = value.toString(); + + switch (col) { + case 1: + ioRecords.get(row).setInputData(newValue); + break; + case 2: + ioRecords.get(row).setOutputData(newValue); + break; + } + + fireTableRowsUpdated(row, row); + } + + public void deleteRow(int selectedRow) { + if (selectedRow < ioRecords.size() && selectedRow >= 0) { + ioRecords.remove(selectedRow); + fireTableRowsDeleted(selectedRow, selectedRow); + } + } + + public void insertRow(int selectedRow) { + if (selectedRow >= ioRecords.size()) { + selectedRow--; + } + + ioRecords.add(selectedRow + 1, new CompileQIORecord()); + fireTableRowsInserted(selectedRow + 1, selectedRow + 1); + } + + public boolean moveUp(int selectedRow) { + if (selectedRow < 1 || selectedRow >= ioRecords.size()) { + return false; + } + + CompileQIORecord answer = ioRecords.get(selectedRow); + ioRecords.set(selectedRow, ioRecords.get(selectedRow - 1)); + ioRecords.set(selectedRow - 1, answer); + + fireTableRowsUpdated(selectedRow - 1, selectedRow); + + return true; + } + + public boolean moveDown(int selectedRow) { + if (selectedRow < 0 || selectedRow >= ioRecords.size() - 1) { + return false; + } + + CompileQIORecord answer = ioRecords.get(selectedRow); + ioRecords.set(selectedRow, ioRecords.get(selectedRow + 1)); + ioRecords.set(selectedRow + 1, answer); + + fireTableRowsUpdated(selectedRow + 1, selectedRow); + + return true; + } +} Added: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQIORecord.java =================================================================== --- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQIORecord.java (rev 0) +++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQIORecord.java 2008-05-29 19:08:52 UTC (rev 182) @@ -0,0 +1,22 @@ +package edu.lnu.FireFly.WebEditor.ItemModels.CompileQ; + +public class CompileQIORecord { + private String inputData = ""; + private String outputData = ""; + + public String getInputData() { + return inputData; + } + + public void setInputData(String inputData) { + this.inputData = inputData; + } + + public String getOutputData() { + return outputData; + } + + public void setOutputData(String outputData) { + this.outputData = outputData; + } +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |