/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package interfaces.editClass; import io.parseXML; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JOptionPane; import javax.swing.table.DefaultTableModel; import objects.Assignment; /** * * @author Lilong */ public class AddAssignmentPanel extends javax.swing.JPanel implements ActionListener{ public String actionStatus = "waiting"; private EditSelectedClass parent; public int categoryIndex; private boolean isCorrectedFormat; private boolean isTableSet = false; /** * Creates new form AddAssigmentPanel */ public AddAssignmentPanel(EditSelectedClass p) { parent = p; initComponents(); } public void populateTable() { for (int i = model.getRowCount()-1; i >= 0; i--) { model.removeRow(i); } for (int i = 0; i < parent.parent.courses.get(parent.courseIndex).getAssignmentCategory(categoryIndex).getAssignments().size(); i++) { model.insertRow(i, new Object[]{ parent.parent.courses.get(parent.parent.currentCourseWindow.courseIndex).getAssignmentCategory(categoryIndex).getAssignment(i).getName(), parent.parent.courses.get(parent.parent.currentCourseWindow.courseIndex).getAssignmentCategory(categoryIndex).getAssignment(i).getWorth()}); } } /** * This method is called from within the constructor to initialize the form. * WARNING: Do NOT modify this code. The content of this method is always * regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents private void initComponents() { table = new javax.swing.JTable() { public void changeSelection(final int row, final int column, boolean toggle, boolean extend) { super.changeSelection(row, column, toggle, extend); table.editCellAt(row, column); table.transferFocus(); } }; table.setFont(new java.awt.Font("Georgia", 0, 14)); // NOI18N table.setModel(model); jScrollPane1 = new javax.swing.JScrollPane(); jScrollPane1.setViewportView(table); nameLabel = new javax.swing.JLabel(); nameTextField = new javax.swing.JTextField(); worthLabel = new javax.swing.JLabel(); worthTextField = new javax.swing.JTextField(); nameLabel.setFont(new java.awt.Font("Georgia", 0, 14)); // NOI18N nameLabel.setText("Name: "); nameTextField.setFont(new java.awt.Font("Georgia", 0, 14)); // NOI18N nameTextField.setText(""); worthLabel.setFont(new java.awt.Font("Georgia", 0, 14)); // NOI18N worthLabel.setText("Worth: "); worthTextField.setFont(new java.awt.Font("Georgia", 0, 14)); // NOI18N worthTextField.setText(""); courseInfo = new javax.swing.JLabel(); addButton = new javax.swing.JButton(); cancelButton = new javax.swing.JButton(); courseInfo.setFont(new java.awt.Font("Georgia", 0, 18)); // NOI18N courseInfo.setText(""); addButton.setFont(new java.awt.Font("Georgia", 0, 14)); // NOI18N addButton.setText("Add"); addButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { addButtonActionPerformed(evt); } }); cancelButton.setFont(new java.awt.Font("Georgia", 0, 14)); // NOI18N cancelButton.setText("Return"); cancelButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { cancelButtonActionPerformed(evt); } }); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); this.setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 478, Short.MAX_VALUE) .addGroup(layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(courseInfo) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addGroup(layout.createSequentialGroup() .addComponent(addButton, javax.swing.GroupLayout.PREFERRED_SIZE, 93, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(cancelButton, javax.swing.GroupLayout.PREFERRED_SIZE, 90, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap()) .addGroup(layout.createSequentialGroup() .addComponent(nameLabel) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(nameTextField, javax.swing.GroupLayout.DEFAULT_SIZE, 185, Short.MAX_VALUE) .addContainerGap()) .addGroup(layout.createSequentialGroup() .addComponent(worthLabel) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(worthTextField, javax.swing.GroupLayout.DEFAULT_SIZE, 185, Short.MAX_VALUE) .addContainerGap()))) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addComponent(courseInfo) .addContainerGap() .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 340, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(nameLabel) .addComponent(nameTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(worthLabel) .addComponent(worthTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(addButton) .addComponent(cancelButton)) .addContainerGap()) ); }// </editor-fold>//GEN-END:initComponents private void addButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_addButtonActionPerformed if (table.isEditing()) { table.getCellEditor().stopCellEditing(); } if (nameTextField.getText().equals("")) { nameTextField.requestFocus(); return; } else if (worthTextField.getText().equals("")) { worthTextField.requestFocus(); return; } try { Integer.parseInt(worthTextField.getText()); } catch (NumberFormatException e) { JOptionPane.showMessageDialog(null, String.format("%33s",worthTextField.getText() + " is not an integer"),"Error", JOptionPane.ERROR_MESSAGE); return; } parent.parent.courses.get(parent.parent.currentCourseWindow.courseIndex).getAssignmentCategory(categoryIndex).addAssignment(nameTextField.getText(), Integer.parseInt(worthTextField.getText())); nameTextField.setText(""); worthTextField.setText(""); parent.saveCurrentState(); nameTextField.requestFocus(); populateTable(); }//GEN-LAST:event_addButtonActionPerformed private boolean isInteger() { for (int k = 0; k < parent.assignmentWindow.table.getRowCount(); k++) { if (parent.assignmentWindow.table.getValueAt(k, 0) != null && !parent.assignmentWindow.table.getValueAt(k, 0).equals("")) { try { String s = parent.assignmentWindow.table.getValueAt(k, 1).toString(); Integer.parseInt(s); } catch (Exception e) { JOptionPane.showMessageDialog(null, String.format("%33s","Row " + (k + 1) + "'s worth is not an integer"),"Error", JOptionPane.ERROR_MESSAGE); isCorrectedFormat = false; return false; } } } isCorrectedFormat = true; return true; } private boolean isNullAndEmpty(int i) { if (parent.assignmentWindow.table.getValueAt(i, 0) != null && parent.assignmentWindow.table.getValueAt(i, 1) != null && !parent.assignmentWindow.table.getValueAt(i, 0).equals("") && !parent.assignmentWindow.table.getValueAt(i, 0).equals("")) { return true; } else { return false; } } private void cancelButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cancelButtonActionPerformed if (table.isEditing()) { table.getCellEditor().stopCellEditing(); } if (!isInteger()) return; for (int i = 0; i < parent.assignmentWindow.table.getRowCount(); i++) { if (isNullAndEmpty(i) && i < parent.parent.courses.get(parent.parent.currentCourseWindow.courseIndex).getAssignmentCategory(categoryIndex).getNumberOfAssignments()) { int worth = Integer.valueOf(parent.assignmentWindow.table.getValueAt(i, 1).toString()); parent.parent.courses.get(parent.parent.currentCourseWindow.courseIndex).getAssignmentCategory(categoryIndex) .getAssignment(i).setName((String)parent.assignmentWindow.table.getValueAt(i, 0)); parent.parent.courses.get(parent.parent.currentCourseWindow.courseIndex).getAssignmentCategory(categoryIndex) .getAssignment(i).setWorth(worth); parent.refreshMenu(parent); } if (isNullAndEmpty(i) && i >= parent.parent.courses.get(parent.parent.currentCourseWindow.courseIndex).getAssignmentCategory(categoryIndex).getNumberOfAssignments()) { int worth = Integer.valueOf(parent.assignmentWindow.table.getValueAt(i, 1).toString()); parent.parent.courses.get(parent.parent.currentCourseWindow.courseIndex).getAssignmentCategory(categoryIndex) .addAssignment((String)parent.assignmentWindow.table.getValueAt(i, 0) , worth); } } parent.assignmentWindow.table.clearSelection(); parseXML.saveXML(parent.parent.courses.get(parent.parent.currentCourseWindow.courseIndex)); parent.refreshMenu(parent); parent.parent.setEditSelectedClassVisible(parent.parent.currentCourseWindow); }//GEN-LAST:event_cancelButtonActionPerformed @Override public void actionPerformed(ActionEvent evt) { } public DefaultTableModel model = new DefaultTableModel( new Object [][] { }, new String [] { "Name", "Worth" } ) { public boolean isCellEditable(int row, int column) { if (column == 2) return false; else return true; } }; // Variables declaration - do not modify//GEN-BEGIN:variables public javax.swing.JButton addButton; private javax.swing.JButton cancelButton; public javax.swing.JLabel courseInfo; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JTable table; private javax.swing.JLabel nameLabel; public javax.swing.JTextField nameTextField; private javax.swing.JLabel worthLabel; private javax.swing.JTextField worthTextField; // End of variables declaration//GEN-END:variables }