|
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.
|