|
From: <se...@us...> - 2008-05-14 21:06:42
|
Revision: 138
http://acmcontester.svn.sourceforge.net/acmcontester/?rev=138&view=rev
Author: sem62
Date: 2008-05-14 14:05:22 -0700 (Wed, 14 May 2008)
Log Message:
-----------
Added CompileQ model.
Not working properly jet.
Modified Paths:
--------------
WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/TreeDataModel.java
WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ItemModels.java
WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ResourcedItemModel.java
Added Paths:
-----------
WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/
WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/CompileQPropertiestsDlg.java
WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/MultiLineCellRenderer.java
WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/MultiLineTableCellEditor.java
WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/PartOptionsPanel.java
WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/
WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQData.java
WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQModel.java
WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQPart.java
WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQPartsTableModel.java
Added: WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/CompileQPropertiestsDlg.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/CompileQPropertiestsDlg.java (rev 0)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/CompileQPropertiestsDlg.java 2008-05-14 21:05:22 UTC (rev 138)
@@ -0,0 +1,508 @@
+package edu.lnu.FireFly.WebEditor.GUI.Dialogs.CompileQ;
+
+import java.awt.event.ActionEvent;
+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;
+
+import edu.lnu.FireFly.WebEditor.GUI.Dialogs.PropertyDlg;
+import edu.lnu.FireFly.WebEditor.ItemModels.CompileQ.CompileQData;
+import edu.lnu.FireFly.WebEditor.ItemModels.CompileQ.CompileQModel;
+import edu.lnu.FireFly.WebEditor.ItemModels.CompileQ.CompileQPartsTableModel;
+
+/**
+ *
+ * @author Yura
+ */
+public class CompileQPropertiestsDlg extends PropertyDlg implements
+ ActionListener, ChangeListener {
+
+ private static final long serialVersionUID = 1961383080461718171L;
+
+ private javax.swing.JCheckBox sameAsTitleCheckBox;
+ private javax.swing.JCheckBox oneAnswerCheckBox;
+ private javax.swing.JLabel titleLabel;
+ private javax.swing.JPanel generalPanel;
+ private javax.swing.JPanel captionPanel;
+ private javax.swing.JPanel partsPanel;
+ private javax.swing.JScrollPane jScrollPane1;
+ private javax.swing.JTable partsTable;
+ private javax.swing.JTextField titleTextField;
+ private javax.swing.JTextField captionTextField;
+ private javax.swing.JTextField questionTextField;
+ 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 CompileQPartsTableModel simpleQuestionAnswersDataModel;
+
+ private javax.swing.JTextField currentAnswerVariant;
+
+ public CompileQPropertiestsDlg() {
+ obj = this;
+
+ initComponents();
+ }
+
+ @Override
+ public void actionPerformed(ActionEvent arg0) {
+ super.actionPerformed(arg0);
+
+ if (arg0.getSource() == editQuestionInHtmlBtn) {
+ editTextFieldInHtmlEditor(questionTextField);
+ }
+
+ if (arg0.getSource() == editCaptionInHtmlBtn) {
+ editTextFieldInHtmlEditor(captionTextField);
+ }
+
+ if (arg0.getSource() == editAnswerVariantInHtmlEditor) {
+ int selectedRow = partsTable.getSelectedRow();
+
+ if (selectedRow < 0) {
+ return;
+ }
+
+ String text = partsTable.getModel().getValueAt(selectedRow, 1)
+ .toString();
+
+ currentAnswerVariant.setText(text);
+
+ editTextFieldInHtmlEditor(currentAnswerVariant);
+ }
+
+ if (arg0.getSource() == insertAnswerVariantBtn) {
+ int selectedRow = partsTable.getSelectedRow();
+
+ if (selectedRow < 0) {
+ return;
+ }
+
+ simpleQuestionAnswersDataModel.insertRow(selectedRow);
+ partsTable.getSelectionModel().setSelectionInterval(selectedRow + 1, selectedRow + 1);
+ }
+
+ if (arg0.getSource() == deleteAnswerVariantBtn) {
+ int selectedRow = partsTable.getSelectedRow();
+
+ if (selectedRow < 0) {
+ return;
+ }
+
+ simpleQuestionAnswersDataModel.deleteRow(selectedRow);
+
+ if (selectedRow >= simpleQuestionAnswersDataModel.getRowCount()){
+ selectedRow--;
+ }
+
+ partsTable.getSelectionModel().setSelectionInterval(selectedRow,
+ selectedRow);
+ }
+ if (arg0.getSource() == moveUpAnswerVariantBtn) {
+ int selectedRow = partsTable.getSelectedRow();
+
+ if (selectedRow < 0) {
+ return;
+ }
+
+ if (simpleQuestionAnswersDataModel.moveUp(selectedRow)){
+ partsTable.getSelectionModel().setSelectionInterval(selectedRow - 1, selectedRow - 1);
+ }
+ }
+
+ if (arg0.getSource() == moveDownAnswerVariantBtn) {
+ int selectedRow = partsTable.getSelectedRow();
+
+ if (selectedRow < 0) {
+ return;
+ }
+
+ if (simpleQuestionAnswersDataModel.moveDown(selectedRow)){
+ partsTable.getSelectionModel().setSelectionInterval(selectedRow + 1, selectedRow+1);
+ }
+ }
+ }
+
+ @Override
+ protected void fillFields() {
+ CompileQPropertiestsDlg dlg = (CompileQPropertiestsDlg) obj;
+ dlg.titleTextField.setText(manifestItem.getTitle());
+
+ CompileQModel itemModel = new CompileQModel();
+
+ dlg.captionTextField.setText(itemModel.getData(manifestItem)
+ .getCaption());
+ dlg.sameAsTitleCheckBox.setSelected(dlg.titleTextField.getText()
+ .equals(dlg.captionTextField.getText()));
+ dlg.questionTextField.setText(itemModel.getData(manifestItem)
+ .getQuestion());
+
+ dlg.simpleQuestionAnswersDataModel = itemModel.getData(manifestItem)
+ .getAnswers();
+ dlg.partsTable.setModel(dlg.simpleQuestionAnswersDataModel);
+ partsTable.getColumnModel().getColumn(1).setCellEditor(new MultiLineTableCellEditor());
+
+ DefaultTableColumnModel columnModel = (DefaultTableColumnModel) dlg.partsTable
+ .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 = partsTable.getSelectedRow();
+ partsTable.getModel().setValueAt(text, selectedRow, 1);
+ }
+
+ private void initComponents() {
+ setTitle("Propertiests...");
+
+ generalPanel = new javax.swing.JPanel();
+ titleLabel = new javax.swing.JLabel();
+ titleTextField = new javax.swing.JTextField();
+ captionPanel = new javax.swing.JPanel();
+ captionTextField = new javax.swing.JTextField();
+ sameAsTitleCheckBox = new javax.swing.JCheckBox();
+ questionTextField = new javax.swing.JTextField();
+ oneAnswerCheckBox = new javax.swing.JCheckBox();
+ partsPanel = new javax.swing.JPanel();
+ jScrollPane1 = new javax.swing.JScrollPane();
+ cancelButton = new javax.swing.JButton("Cancel");
+ okButton = new javax.swing.JButton("Ok");
+ 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);
+
+ cancelButton.addActionListener(this);
+ okButton.addActionListener(this);
+ sameAsTitleCheckBox.addChangeListener(this);
+ oneAnswerCheckBox.addChangeListener(this);
+ editCaptionInHtmlBtn.addActionListener(this);
+ editQuestionInHtmlBtn.addActionListener(this);
+ editAnswerVariantInHtmlEditor.addActionListener(this);
+
+ partsTable = new javax.swing.JTable();
+ partsTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
+
+ partsTable.setDefaultRenderer(String.class, new MultiLineCellRenderer());
+ partsTable.setDefaultRenderer(Object.class, new MultiLineCellRenderer());
+ partsTable.setDefaultRenderer(PartOptionsPanel.class, new PartOptionsPanel());
+
+ setDefaultCloseOperation(javax.swing.WindowConstants.HIDE_ON_CLOSE);
+
+ generalPanel.setBorder(javax.swing.BorderFactory
+ .createTitledBorder("General"));
+ titleLabel.setText("Title");
+
+ javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(
+ generalPanel);
+ generalPanel.setLayout(jPanel1Layout);
+ jPanel1Layout.setHorizontalGroup(jPanel1Layout.createParallelGroup(
+ javax.swing.GroupLayout.Alignment.LEADING).addGroup(
+ jPanel1Layout.createSequentialGroup().addContainerGap()
+ .addComponent(titleLabel)).addGroup(
+ jPanel1Layout.createSequentialGroup().addContainerGap()
+ .addComponent(titleTextField,
+ javax.swing.GroupLayout.DEFAULT_SIZE, 364,
+ Short.MAX_VALUE).addContainerGap()));
+ jPanel1Layout
+ .setVerticalGroup(jPanel1Layout
+ .createParallelGroup(
+ javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(
+ jPanel1Layout
+ .createSequentialGroup()
+ .addComponent(titleLabel)
+ .addPreferredGap(
+ javax.swing.LayoutStyle.ComponentPlacement.RELATED,
+ javax.swing.GroupLayout.DEFAULT_SIZE,
+ Short.MAX_VALUE)
+ .addComponent(
+ titleTextField,
+ javax.swing.GroupLayout.PREFERRED_SIZE,
+ javax.swing.GroupLayout.DEFAULT_SIZE,
+ javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addContainerGap()));
+
+ captionPanel.setBorder(javax.swing.BorderFactory
+ .createTitledBorder("Caption"));
+ sameAsTitleCheckBox.setText("Some as the title");
+
+ javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(
+ captionPanel);
+ captionPanel.setLayout(jPanel2Layout);
+ jPanel2Layout
+ .setHorizontalGroup(jPanel2Layout
+ .createParallelGroup(
+ javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(
+ jPanel2Layout
+ .createSequentialGroup()
+ .addContainerGap()
+ .addGroup(
+ jPanel2Layout
+ .createParallelGroup(
+ javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(
+ sameAsTitleCheckBox))
+ .addContainerGap(283, Short.MAX_VALUE))
+ .addGroup(
+ javax.swing.GroupLayout.Alignment.TRAILING,
+ jPanel2Layout
+ .createSequentialGroup()
+ .addContainerGap()
+ .addComponent(
+ captionTextField,
+ javax.swing.GroupLayout.DEFAULT_SIZE,
+ 370, Short.MAX_VALUE)
+ .addPreferredGap(
+ javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(
+ editCaptionInHtmlBtn,
+ javax.swing.GroupLayout.PREFERRED_SIZE,
+ 30,
+ javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addContainerGap()));
+ jPanel2Layout
+ .setVerticalGroup(jPanel2Layout
+ .createParallelGroup(
+ javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(
+ jPanel2Layout
+ .createSequentialGroup()
+ .addComponent(sameAsTitleCheckBox)
+ .addPreferredGap(
+ javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addGroup(
+ jPanel2Layout
+ .createParallelGroup(
+ javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(
+ editCaptionInHtmlBtn,
+ javax.swing.GroupLayout.PREFERRED_SIZE,
+ 20,
+ javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(
+ captionTextField,
+ javax.swing.GroupLayout.PREFERRED_SIZE,
+ javax.swing.GroupLayout.DEFAULT_SIZE,
+ javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addContainerGap()));
+
+ oneAnswerCheckBox.setText("Only one correct answer");
+
+ partsPanel.setBorder(javax.swing.BorderFactory
+ .createTitledBorder("Variants of answer"));
+
+ jScrollPane1.setViewportView(partsTable);
+
+ javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(
+ partsPanel);
+ partsPanel.setLayout(jPanel4Layout);
+ jPanel4Layout.setHorizontalGroup(jPanel4Layout.createParallelGroup(
+ javax.swing.GroupLayout.Alignment.TRAILING).addGroup(
+ jPanel4Layout.createSequentialGroup()
+ .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()));
+
+ 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());
+ getContentPane().setLayout(layout);
+ layout
+ .setHorizontalGroup(layout
+ .createParallelGroup(
+ javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(
+ layout
+ .createSequentialGroup()
+ .addContainerGap()
+ .addGroup(
+ layout
+ .createParallelGroup(
+ javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(
+ partsPanel,
+ 600,
+ 600,
+ Short.MAX_VALUE)
+ .addComponent(
+ captionPanel,
+ javax.swing.GroupLayout.DEFAULT_SIZE,
+ javax.swing.GroupLayout.DEFAULT_SIZE,
+ Short.MAX_VALUE)
+ .addComponent(
+ generalPanel,
+ javax.swing.GroupLayout.DEFAULT_SIZE,
+ javax.swing.GroupLayout.DEFAULT_SIZE,
+ Short.MAX_VALUE)
+ .addGroup(
+ javax.swing.GroupLayout.Alignment.TRAILING,
+ layout
+ .createSequentialGroup()
+ .addComponent(
+ okButton)
+ .addPreferredGap(
+ javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(
+ cancelButton)))
+ .addContainerGap()));
+ layout
+ .setVerticalGroup(layout
+ .createParallelGroup(
+ javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(
+ layout
+ .createSequentialGroup()
+ .addContainerGap()
+ .addComponent(
+ generalPanel,
+ javax.swing.GroupLayout.PREFERRED_SIZE,
+ javax.swing.GroupLayout.DEFAULT_SIZE,
+ javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(
+ javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(
+ captionPanel,
+ javax.swing.GroupLayout.PREFERRED_SIZE,
+ javax.swing.GroupLayout.DEFAULT_SIZE,
+ javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(
+ javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addPreferredGap(
+ javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(
+ partsPanel,
+ 300,
+ 300,
+ 300)
+ .addPreferredGap(
+ javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addGroup(
+ layout
+ .createParallelGroup(
+ javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(
+ cancelButton,
+ 20, 20, 20)
+ .addComponent(okButton,
+ 20, 20, 20))
+ .addContainerGap(
+ javax.swing.GroupLayout.DEFAULT_SIZE,
+ Short.MAX_VALUE)));
+
+ this.getRootPane().setDefaultButton(okButton);
+
+ pack();
+ }
+
+ @Override
+ protected void saveChanges() {
+ CompileQModel itemModel = new CompileQModel();
+
+ manifestItem.setTitle(titleTextField.getText());
+
+ CompileQData data = itemModel.getData(manifestItem);
+
+ if (sameAsTitleCheckBox.isSelected()) {
+ data.setCaption(titleTextField.getText());
+ } else {
+ data.setCaption(captionTextField.getText());
+ }
+
+ data.setQuestion(questionTextField.getText());
+
+ data.setAnswers(simpleQuestionAnswersDataModel);
+
+ itemModel.updateItemResource(manifestItem, true);
+ }
+
+ @Override
+ public void stateChanged(ChangeEvent e) {
+ if (e.getSource() == sameAsTitleCheckBox) {
+ if (sameAsTitleCheckBox.isSelected()
+ && captionTextField.isEnabled()) {
+ captionTextField.setText(titleTextField.getText());
+ }
+ captionTextField.setEnabled(!sameAsTitleCheckBox.isSelected());
+ }
+
+ if (e.getSource() == oneAnswerCheckBox) {
+ simpleQuestionAnswersDataModel.setSingleVariant(oneAnswerCheckBox
+ .isSelected());
+ }
+ }
+
+}
Added: WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/MultiLineCellRenderer.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/MultiLineCellRenderer.java (rev 0)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/MultiLineCellRenderer.java 2008-05-14 21:05:22 UTC (rev 138)
@@ -0,0 +1,45 @@
+package edu.lnu.FireFly.WebEditor.GUI.Dialogs.CompileQ;
+
+import java.awt.Component;
+
+import javax.swing.JTable;
+import javax.swing.JTextArea;
+import javax.swing.UIManager;
+import javax.swing.border.EmptyBorder;
+import javax.swing.table.TableCellRenderer;
+
+class MultiLineCellRenderer extends JTextArea implements TableCellRenderer {
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+ public MultiLineCellRenderer() {
+ setLineWrap(true);
+ setWrapStyleWord(true);
+ setOpaque(true);
+ }
+
+ public Component getTableCellRendererComponent(JTable table, Object value,
+ boolean isSelected, boolean hasFocus, int row, int column) {
+ if (isSelected) {
+ setForeground(table.getSelectionForeground());
+ setBackground(table.getSelectionBackground());
+ } else {
+ setForeground(table.getForeground());
+ setBackground(table.getBackground());
+ }
+ setFont(table.getFont());
+ if (hasFocus) {
+ setBorder(UIManager.getBorder("Table.focusCellHighlightBorder"));
+ if (table.isCellEditable(row, column)) {
+ setForeground(UIManager.getColor("Table.focusCellForeground"));
+ setBackground(UIManager.getColor("Table.focusCellBackground"));
+ }
+ } else {
+ setBorder(new EmptyBorder(1, 2, 1, 2));
+ }
+ setText((value == null) ? "" : value.toString());
+ return this;
+ }
+}
Added: WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/MultiLineTableCellEditor.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/MultiLineTableCellEditor.java (rev 0)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/MultiLineTableCellEditor.java 2008-05-14 21:05:22 UTC (rev 138)
@@ -0,0 +1,51 @@
+package edu.lnu.FireFly.WebEditor.GUI.Dialogs.CompileQ;
+
+import java.awt.Component;
+
+import javax.swing.AbstractCellEditor;
+import javax.swing.BorderFactory;
+import javax.swing.JScrollPane;
+import javax.swing.JTable;
+import javax.swing.JTextArea;
+import javax.swing.table.TableCellEditor;
+
+public class MultiLineTableCellEditor extends AbstractCellEditor implements TableCellEditor
+{
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ protected JTextArea myEditor;
+ protected JScrollPane myScrollPane;
+
+ public MultiLineTableCellEditor() {
+ myEditor = new JTextArea();
+ myEditor.setWrapStyleWord(true);
+ myEditor.setLineWrap(true);
+ myEditor.setOpaque(true);
+// myEditor.setRows(3);
+ myScrollPane = new JScrollPane(myEditor);
+ myScrollPane.setBorder(BorderFactory.createEmptyBorder());
+ myScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
+ myScrollPane.getVerticalScrollBar().setFocusable(false);
+ myScrollPane.getHorizontalScrollBar().setFocusable(false);
+ }
+
+ public Component getTableCellEditorComponent(JTable table, Object value,
+ boolean isSelected, int row, int column)
+ {
+ myEditor.setBackground(isSelected ? table.getSelectionBackground() : table.getBackground());
+ myEditor.setForeground(isSelected ? table.getSelectionForeground() : table.getForeground());
+ myEditor.setText(value == null ? "" : value.toString());
+
+ myScrollPane.setBounds(0,0,table.getColumnModel().getColumn(column).getWidth(), 0);
+ int thisHeight = myEditor.getPreferredSize().height+2;
+ table.setRowHeight(row, thisHeight);
+
+ return myScrollPane;
+ }
+
+ public Object getCellEditorValue() {
+ return myEditor.getText();
+ }
+}
Added: WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/PartOptionsPanel.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/PartOptionsPanel.java (rev 0)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/Dialogs/CompileQ/PartOptionsPanel.java 2008-05-14 21:05:22 UTC (rev 138)
@@ -0,0 +1,83 @@
+package edu.lnu.FireFly.WebEditor.GUI.Dialogs.CompileQ;
+
+import java.awt.Component;
+import java.awt.FlowLayout;
+import java.awt.LayoutManager;
+
+import javax.swing.JCheckBox;
+import javax.swing.JPanel;
+import javax.swing.JTable;
+import javax.swing.UIManager;
+import javax.swing.border.EmptyBorder;
+import javax.swing.table.TableCellRenderer;
+
+public class PartOptionsPanel extends JPanel implements TableCellRenderer {
+
+ @Override
+ public Component getTableCellRendererComponent(JTable table, Object value,
+ boolean isSelected, boolean hasFocus, int row, int column) {
+ if (isSelected) {
+ setForeground(table.getSelectionForeground());
+ setBackground(table.getSelectionBackground());
+
+ readOnlyCheckBox.setForeground(table.getSelectionForeground());
+ isAnswerCheckBox.setForeground(table.getSelectionForeground());
+ isVisibleCheckBox.setForeground(table.getSelectionForeground());
+
+ readOnlyCheckBox.setBackground(table.getSelectionBackground());
+ isAnswerCheckBox.setBackground(table.getSelectionBackground());
+ isVisibleCheckBox.setBackground(table.getSelectionBackground());
+ } else {
+ setForeground(table.getForeground());
+ setBackground(table.getBackground());
+
+ readOnlyCheckBox.setForeground(table.getForeground());
+ isAnswerCheckBox.setForeground(table.getForeground());
+ isVisibleCheckBox.setForeground(table.getForeground());
+
+ readOnlyCheckBox.setBackground(table.getBackground());
+ isAnswerCheckBox.setBackground(table.getBackground());
+ isVisibleCheckBox.setBackground(table.getBackground());
+ }
+ setFont(table.getFont());
+ if (hasFocus) {
+ setBorder(UIManager.getBorder("Table.focusCellHighlightBorder"));
+ if (table.isCellEditable(row, column)) {
+ setForeground(UIManager.getColor("Table.focusCellForeground"));
+ setBackground(UIManager.getColor("Table.focusCellBackground"));
+ }
+ } else {
+ setBorder(new EmptyBorder(1, 2, 1, 2));
+ }
+
+
+
+ return this;
+ }
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+ public JCheckBox readOnlyCheckBox;
+ public JCheckBox isAnswerCheckBox;
+ public JCheckBox isVisibleCheckBox;
+
+ public PartOptionsPanel() {
+ initComponents();
+ }
+
+ private void initComponents() {
+ LayoutManager layout = new FlowLayout(FlowLayout.LEFT);
+ setLayout(layout);
+
+ readOnlyCheckBox = new JCheckBox("read only");
+ isAnswerCheckBox = new JCheckBox("is answer");
+ isVisibleCheckBox = new JCheckBox("is visible");
+
+ add(readOnlyCheckBox);
+ add(isAnswerCheckBox);
+ add(isVisibleCheckBox);
+ }
+}
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/TreeDataModel.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/TreeDataModel.java 2008-05-14 18:01:48 UTC (rev 137)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/GUI/TreeDataModel.java 2008-05-14 21:05:22 UTC (rev 138)
@@ -133,16 +133,16 @@
}
public void treeNodesDeleted(TreeItem item) {
+ TreePath path = getItemPath(item);
+
+ int[] indicies = new int[1];
+ indicies[0] = item.getParent().getChildIndex(item);
+ Object[] children = new Object[1];
+ children[0] = item;
+ TreeModelEvent event = new TreeModelEvent(this, path.getParentPath(), indicies, children);
+
for (int i=0; i < listeners.size(); i++){
TreeModelListener listener = listeners.get(i);
-
- TreePath path = getItemPath(item);
-
- int[] indicies = new int[1];
- indicies[0] = item.getParent().getChildIndex(item);
- Object[] children = new Object[1];
- children[0] = item;
- TreeModelEvent event = new TreeModelEvent(this, path.getParentPath(), indicies, children);
listener.treeNodesRemoved(event);
}
}
Added: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQData.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQData.java (rev 0)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQData.java 2008-05-14 21:05:22 UTC (rev 138)
@@ -0,0 +1,108 @@
+package edu.lnu.FireFly.WebEditor.ItemModels.CompileQ;
+
+import java.io.Reader;
+import java.util.Iterator;
+
+import org.dom4j.Document;
+import org.dom4j.DocumentHelper;
+import org.dom4j.Element;
+import org.dom4j.io.SAXReader;
+
+import edu.lnu.FireFly.FFManifest.TreeItem;
+import edu.lnu.FireFly.WebEditor.ItemModels.ItemData;
+
+public class CompileQData extends ItemData {
+ @Override
+ public String marshal(TreeItem anItem) {
+ Document doc = DocumentHelper.createDocument();
+ Element root = doc.addElement("SimpleQuestion");
+ root.addElement("caption").setText(getCaption());
+ root.addElement("question").setText(getQuestion());
+
+ root.addElement("ShowOnSummaryPage").setText(
+ String.valueOf(getShowOnSummaryPage()));
+
+ Element ans = root.addElement("answers");
+
+ ans.addAttribute("singleVariant", String.valueOf(getAnswers()
+ .getSingleVariant()));
+
+ Iterator<CompileQPart> iter = getAnswers().answers.iterator();
+
+ while (iter.hasNext()) {
+ CompileQPart answer = iter.next();
+
+ Element ansEl = ans.addElement("answer");
+ ansEl
+ .addAttribute("point", String.valueOf(answer
+ .getAnswerPoint()));
+ ansEl.setText(answer.getAnswerText());
+ }
+
+ return doc.asXML();
+ }
+
+ private CompileQPartsTableModel answers = new CompileQPartsTableModel();
+ private String caption = "";
+ private String question = "";
+
+ public CompileQPartsTableModel getAnswers() {
+ return answers;
+ }
+ public void setAnswers(CompileQPartsTableModel answers) {
+ this.answers = answers;
+ }
+ public String getCaption() {
+ return caption;
+ }
+ public void setCaption(String caption) {
+ this.caption = caption;
+ }
+ public String getQuestion() {
+ return question;
+ }
+ public void setQuestion(String question) {
+ this.question = question;
+ }
+
+ @SuppressWarnings("unchecked")
+ public boolean unmarshal(Reader res, TreeItem anItem) {
+ SAXReader reader = new SAXReader();
+
+ Document doc = null;
+ try {
+ doc = reader.read(res);
+
+ Element root = doc.getRootElement();
+ Element answers = root.element("answers");
+
+ setCaption(root.elementTextTrim("caption"));
+ setQuestion(root.elementTextTrim("question"));
+
+ boolean showOnSP = Boolean.valueOf(root
+ .elementTextTrim("ShowOnSummaryPage"));
+ setShowOnSummaryPage(showOnSP);
+
+ getAnswers().setSingleVariant(
+ answers.attributeValue("singleVariant").equalsIgnoreCase(
+ "true"));
+
+ getAnswers().answers.clear();
+
+ Iterator<Element> iter = answers.elementIterator("answer");
+ while (iter.hasNext()) {
+ Element answer = iter.next();
+ CompileQPart ans = new CompileQPart(answer
+ .getText());
+ ans.setAnswerPoint(Double.valueOf(answer
+ .attributeValue("point")));
+ getAnswers().answers.add(ans);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+
+ return true;
+ }
+}
Added: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQModel.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQModel.java (rev 0)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQModel.java 2008-05-14 21:05:22 UTC (rev 138)
@@ -0,0 +1,101 @@
+package edu.lnu.FireFly.WebEditor.ItemModels.CompileQ;
+
+import java.util.Iterator;
+
+import edu.lnu.FireFly.FFManifest.TreeItem;
+import edu.lnu.FireFly.FFManifest.item.Item;
+import edu.lnu.FireFly.FFManifest.resource.Resource;
+import edu.lnu.FireFly.WebEditor.WebEditor;
+import edu.lnu.FireFly.WebEditor.GUI.TreeDataModel;
+import edu.lnu.FireFly.WebEditor.GUI.Dialogs.CompileQ.CompileQPropertiestsDlg;
+import edu.lnu.FireFly.WebEditor.ItemModels.ItemData;
+import edu.lnu.FireFly.WebEditor.ItemModels.ResourcedItemModel;
+import edu.lnu.FireFly.WebEditor.ItemModels.Template;
+
+public class CompileQModel extends ResourcedItemModel {
+ @Override
+ protected String getDefaultTitle() {
+ return "New compile question";
+ }
+
+ @Override
+ public boolean getLimitConditionsMenuVisible(TreeItem anItem) {
+ return true;
+ }
+
+ @Override
+ public boolean getShowOnSummaryPageMenuVisible() {
+ return true;
+ }
+
+ public CompileQModel() {
+ modelName = "CompileQModel";
+ }
+
+ @Override
+ public boolean canAddToItem(TreeItem parent) {
+ // TODO Auto-generated method stub
+ return true;
+ }
+
+ @Override
+ public boolean canConvertItem(TreeItem parent) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public void ConfigureItem(TreeItem item) {
+ new CompileQPropertiestsDlg().showDialog(item);
+
+ TreeDataModel.getInstance().treeNodesChanged(item);
+ WebEditor.tree.setSelectionPath(null);
+ WebEditor.tree.setSelectionPath(TreeDataModel.getInstance()
+ .getItemPath(item));
+ }
+
+ public CompileQData getData(TreeItem item) {
+ return ((CompileQData) getItemData(item));
+ }
+
+ @Override
+ public boolean isRemovable() {
+ return true;
+ }
+
+ protected ItemData createItemDataInstance() {
+ return new CompileQData();
+ }
+
+ @Override
+ protected void updateResourceFile(TreeItem anItem) {
+ Resource resource = WebEditor.instance.getManifest().resources
+ .findResourceByIdentifier(((Item) anItem).identifierref);
+
+ Template template = new Template(resource.getFullHref(), this);
+
+ CompileQData itemData = getData(anItem);
+
+ template.setProperty("Caption", itemData.getCaption());
+ template.setProperty("Question", itemData.getQuestion());
+
+ Iterator<CompileQPart> iter = itemData.getAnswers().answers
+ .iterator();
+ String answers = "\r\nsetSingleVariant("
+ + itemData.getAnswers().getSingleVariant() + ");\r\n";
+
+ while (iter.hasNext()) {
+ CompileQPart answer = iter.next();
+ answers += "addAnswer(\"" + answer.getAnswerText().replace("\"", "\\\"") + "\", "
+ + answer.getAnswerPoint() + ");" + "\r\n";
+ }
+
+ template.setProperty("answers", answers);
+ template.updateResource();
+ }
+
+ @Override
+ public boolean getShowSummaryPageMenuVisible() {
+ return false;
+ }
+}
\ No newline at end of file
Added: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQPart.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQPart.java (rev 0)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQPart.java 2008-05-14 21:05:22 UTC (rev 138)
@@ -0,0 +1,26 @@
+package edu.lnu.FireFly.WebEditor.ItemModels.CompileQ;
+
+public class CompileQPart {
+ private String answerText = "";
+ private double answerPoint = 0;
+
+ public CompileQPart(String answerText) {
+ this.answerText = answerText;
+ }
+
+ public double getAnswerPoint() {
+ return answerPoint;
+ }
+
+ public String getAnswerText() {
+ return answerText;
+ }
+
+ public void setAnswerPoint(double answerPoint) {
+ this.answerPoint = answerPoint;
+ }
+
+ public void setAnswerText(String answerText) {
+ this.answerText = answerText;
+ }
+}
Added: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQPartsTableModel.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQPartsTableModel.java (rev 0)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/CompileQ/CompileQPartsTableModel.java 2008-05-14 21:05:22 UTC (rev 138)
@@ -0,0 +1,174 @@
+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.PartOptionsPanel;
+
+public class CompileQPartsTableModel extends DefaultTableModel {
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+ private boolean singleVariant = false;
+
+ public List<CompileQPart> answers = new ArrayList<CompileQPart>();
+
+ @Override
+ public Class<?> getColumnClass(int col) {
+
+ if (col == 2){
+ return PartOptionsPanel.class;
+ }
+
+ return Object.class;
+ }
+
+ @Override
+ public int getColumnCount() {
+ return 3;
+ }
+
+ @Override
+ public String getColumnName(int arg0) {
+ switch (arg0) {
+ case 0:
+ return "#";
+ case 1:
+ return "Part content";
+ default:
+ return "Options";
+ }
+ }
+
+ @Override
+ public int getRowCount() {
+
+ if (answers == null) {
+ return 0;
+ }
+
+ int answersCount = answers.size();
+
+
+
+ return answersCount > 0 ? answersCount : 1;
+ }
+
+ @Override
+ public Object getValueAt(int row, int col) {
+ if (row == answers.size()) {
+ return "";
+ }
+
+ switch (col) {
+ case 0:
+ return row + 1;
+ case 1:
+ return answers.get(row).getAnswerText();
+ case 2:
+ return answers.get(row).getAnswerPoint();
+ default:
+ return "";
+ }
+ }
+
+ @Override
+ public boolean isCellEditable(int row, int col) {
+ switch (col){
+ case 0:
+ return false;
+ case 1:
+ return true;
+ case 2:
+ return false;
+ default:
+ return false;
+ }
+ }
+
+ public boolean isSingleVariant() {
+ return singleVariant;
+ }
+
+ public void setSingleVariant(boolean singleVariant) {
+ this.singleVariant = singleVariant;
+ }
+
+ public boolean getSingleVariant() {
+ return this.singleVariant;
+ }
+
+ @Override
+ public void setValueAt(Object arg0, int arg1, int arg2) {
+ if (arg1 == answers.size()) {
+ answers.add(new CompileQPart(""));
+ }
+
+ switch (arg2) {
+ case 1:
+ answers.get(arg1).setAnswerText(arg0.toString());
+ break;
+ case 2:
+ try {
+ double value = 0;
+ if (!arg0.toString().equals("")) {
+ value = Double.valueOf(arg0.toString());
+ }
+ answers.get(arg1).setAnswerPoint(value);
+ } catch (NumberFormatException e) {
+ System.out.print("Entered value is't a double value!\n");
+ }
+ 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--;
+ }
+
+ answers.add(selectedRow + 1, new CompileQPart(""));
+ fireTableRowsInserted(selectedRow + 1, selectedRow + 1);
+ }
+
+ public boolean moveUp(int selectedRow) {
+ if (selectedRow < 1 || selectedRow >= answers.size()){
+ return false;
+ }
+
+ CompileQPart 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;
+ }
+
+ CompileQPart answer = answers.get(selectedRow);
+ answers.set(selectedRow, answers.get(selectedRow + 1));
+ answers.set(selectedRow + 1, answer);
+
+ fireTableRowsUpdated(selectedRow + 1, selectedRow);
+
+ return true;
+ }
+}
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ItemModels.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ItemModels.java 2008-05-14 18:01:48 UTC (rev 137)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ItemModels.java 2008-05-14 21:05:22 UTC (rev 138)
@@ -5,6 +5,7 @@
import edu.lnu.FireFly.FFManifest.Organization;
import edu.lnu.FireFly.FFManifest.TreeItem;
import edu.lnu.FireFly.WebEditor.ItemModels.Chapter.ChapterModel;
+import edu.lnu.FireFly.WebEditor.ItemModels.CompileQ.CompileQModel;
import edu.lnu.FireFly.WebEditor.ItemModels.Lecture.LectureModel;
import edu.lnu.FireFly.WebEditor.ItemModels.SimpleQuestion.SimpleQuestionModel;
import edu.lnu.FireFly.WebEditor.ItemModels.SummaryPageModel.SummaryPageModel;
@@ -81,9 +82,10 @@
static {
ItemModels.clear();
+ ItemModels.registerModel(new ChapterModel());
ItemModels.registerModel(new LectureModel());
ItemModels.registerModel(new SimpleQuestionModel());
- ItemModels.registerModel(new ChapterModel());
+ ItemModels.registerModel(new CompileQModel());
ItemModels.registerModel(new OrganizationModel());
ItemModels.registerModel(new SummaryPageModel());
}
Modified: WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ResourcedItemModel.java
===================================================================
--- WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ResourcedItemModel.java 2008-05-14 18:01:48 UTC (rev 137)
+++ WebEditor/src/edu/lnu/FireFly/WebEditor/ItemModels/ResourcedItemModel.java 2008-05-14 21:05:22 UTC (rev 138)
@@ -65,8 +65,8 @@
@Override
public void remove(TreeItem anItem) {
+ TreeDataModel.getInstance().treeNodesDeleted(anItem);
anItem.getParent().removeChild(anItem);
- TreeDataModel.getInstance().treeNodesDeleted(anItem);
deleteResource(anItem);
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|