summaryrefslogtreecommitdiff
path: root/client/inputforms/EditExistingEvent.java
diff options
context:
space:
mode:
Diffstat (limited to 'client/inputforms/EditExistingEvent.java')
-rw-r--r--client/inputforms/EditExistingEvent.java156
1 files changed, 156 insertions, 0 deletions
diff --git a/client/inputforms/EditExistingEvent.java b/client/inputforms/EditExistingEvent.java
new file mode 100644
index 0000000..ebb0cc3
--- /dev/null
+++ b/client/inputforms/EditExistingEvent.java
@@ -0,0 +1,156 @@
+package client.inputforms;
+
+import java.awt.event.*;
+import java.util.*;
+
+import javax.swing.*;
+
+import client.NetCalendarClient;
+import client.ServerRequester;
+import client.helper.DateSpinner;
+import client.helper.GUIHelper;
+
+
+import shared.*;
+import shared.remotecall.*;
+
+/**
+ * This class contains all the GUI components of the edit event dialog.
+ * Its used for editing existing events of the calendar database.
+ * @author buetow
+ *
+ */
+public class EditExistingEvent extends InputForm {
+ private final static long serialVersionUID = 1L;
+
+ // Static elements which are the same on all AdvancedSearching objects!
+ private final static String BUTTON_DELETE = "Delete";
+ private final static String[] labels =
+ { "Event ID: ", "Description: ", "Category: ", "Place: ", "Yearly: ", "Date: "};
+ private final static int iNumPairs = labels.length;
+ private final static int iTextFields = iNumPairs - 2;
+ private final static int iCheckBoxes = iNumPairs - 1;
+
+ private CalendarEvent originalCalendarEvent;
+ private Date date;
+
+ /**
+ * Create the input form window and show it.
+ * @param netCalendarClient Specifies the current calendar client session window.
+ * @param originalCalendarEvent Specifies the calendar event to modify.
+ */
+ public EditExistingEvent(NetCalendarClient netCalendarClient, CalendarEvent originalCalendarEvent) {
+ super("Edit event", netCalendarClient);
+ this.originalCalendarEvent = originalCalendarEvent;
+ this.date = originalCalendarEvent.getDate();
+ initComponents();
+ setFieldValues();
+ pack();
+ setVisible(true);
+ }
+
+ /**
+ * Initializes all the GUI components.
+ */
+ protected void initComponents() {
+ super.initComponents();
+
+ JPanel jPanel = new JPanel(new SpringLayout());
+
+ ActionListener actionListenerTextFields = new ActionListener() {
+ public void actionPerformed(ActionEvent event) {
+ submit();
+ }
+ };
+
+ vecFields = new Vector();
+ for (int i = 0; i < iNumPairs; ++i) {
+ JLabel jLable = new JLabel(labels[i], JLabel.TRAILING);
+ jPanel.add(jLable);
+ JComponent jComponent = null;
+ if ( i < iTextFields) {
+ JTextField textField = new JTextField(InputForm.TEXTFIELD_LENGTH);
+ textField.addActionListener(actionListenerTextFields);
+ jComponent = textField;
+
+ } else if (i < iCheckBoxes) {
+ jComponent = new JCheckBox();
+
+ } else {
+ jComponent = new DateSpinner(date);
+ }
+
+ jLable.setLabelFor(jComponent);
+ jPanel.add(jComponent);
+ vecFields.add(jComponent);
+ }
+
+ //Lay out the panel.
+ GUIHelper.makeCompactGrid(jPanel,
+ iNumPairs, 2, // iRows, iCols
+ 6, 6, // iInitX, iInitY
+ 6, 6); // iXPad, iYPad
+
+ JButton jButtonDelete = new JButton(BUTTON_DELETE);
+
+ ActionListener actionListenerButtons = new ActionListener() {
+ public void actionPerformed(ActionEvent event) {
+ if (event.getActionCommand().equals(BUTTON_CLEAR)) {
+ for (int i = 1; i < iNumPairs -2; ++i)
+ ((JTextField) vecFields.get(i)).setText("");
+
+ } else if (event.getActionCommand().equals(BUTTON_DELETE)) {
+ netCalendarClient.deleteEvent(originalCalendarEvent);
+ dispose();
+ }
+ }
+ };
+
+ jButtonDelete.addActionListener(actionListenerButtons);
+ jButtonClear.addActionListener(actionListenerButtons);
+ jPanelButtons.add(jButtonDelete);
+
+ JSplitPane jSplitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
+ jSplitPane.setTopComponent(jPanel);
+ jSplitPane.setBottomComponent(jPanelButtons);
+ jSplitPane.setDividerSize(0);
+
+ setContentPane(jSplitPane);
+ }
+
+ /**
+ * This method sets the fields of the edit frame according to the originalCalendarEvent object.
+ * The date is not set by this method. Its done by the initComponents method.
+ */
+ private void setFieldValues() {
+ JTextField jTextFieldEventID = (JTextField) vecFields.get(0);
+ jTextFieldEventID.setText(""+originalCalendarEvent.getEventID());
+ jTextFieldEventID.setEditable(false);
+
+ ((JTextField) vecFields.get(1)).setText(originalCalendarEvent.getDescription());
+ ((JTextField) vecFields.get(2)).setText(originalCalendarEvent.getCategoryName());
+ ((JTextField) vecFields.get(3)).setText(originalCalendarEvent.getPlace());
+ ((JCheckBox) vecFields.get(4)).setSelected(originalCalendarEvent.isYearly());
+ }
+
+ /**
+ * This method is invoked if the enter key is pressed or if the submit button
+ * has been pressed. It starts a client request relating to the user's input of
+ * the text fields.
+ */
+ protected void submit() {
+ String sCategoryName = ((JTextField) vecFields.get(2)).getText();
+ CalendarEvent calendarEvent = new CalendarEvent(sCategoryName);
+ calendarEvent.setDescription(((JTextField) vecFields.get(1)).getText());
+ calendarEvent.setPlace(((JTextField) vecFields.get(3)).getText());
+ calendarEvent.setYearly(((JCheckBox) vecFields.get(4)).isSelected());
+ calendarEvent.setDate(((DateSpinner) vecFields.get(5)).getDate());
+ calendarEvent.setEventID(originalCalendarEvent.getEventID());
+
+ ClientRequest clientRequest = new ClientRequest(ClientRequest.MODIFY_EVENT);
+ clientRequest.setEvent(calendarEvent);
+
+ ServerRequester.sendClientRequest(clientRequest);
+ netCalendarClient.updateLast();
+ }
+}