/*
* 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
}