import javax.swing.JMenuItem;
import javax.swing.JPanel;
import org.mxchange.addressbook.BaseFrameworkSystem;
-import org.mxchange.addressbook.FrameAlreadyInitializedException;
import org.mxchange.addressbook.application.AddressbookApplication;
import org.mxchange.addressbook.client.Client;
+import org.mxchange.addressbook.exceptions.FrameAlreadyInitializedException;
/**
*
// Return instance
return self;
}
+ /**
+ * Frame instance for "add own data"
+ */
+ private JMenuItem addOwnItem;
+
+ /**
+ * Frame instance for "edit own data"
+ */
+ private JMenuItem editOwnItem;
/**
* Frame instance
*/
private JLabel statusLabel;
- /**
- * Frame instance
- */
- private JMenuItem addOwnItem;
-
/**
* Creates an instance of this frame with a client instance
*
// Debug message
this.getLogger().debug("Disabling menus: isOwnContactAdded()=false");
- // Not entered yet, so enable menu
+ // Not entered yet, so disable "add" menu
this.addOwnItem.setEnabled(false);
+ } else {
+ // Disable "edit"
+ this.editOwnItem.setEnabled(false);
}
// Make the frame visible
this.frame.setVisible(true);
// All done here
- this.statusLabel.setText(this.getBundle().getString("AddressbookFrame.statusLabel.done.text"));
+ this.updateStatus("done");
}
/**
* accessible) means that any other object can initialize components which
* you may not want.
*
- * @throws org.mxchange.addressbook.FrameAlreadyInitializedException If this method has been called twice
+ * @throws org.mxchange.addressbook.exceptions.FrameAlreadyInitializedException If this method has been called twice
*/
@Override
- public void initFrame () throws FrameAlreadyInitializedException {
+ public void init () throws FrameAlreadyInitializedException {
// Debug line
this.getLogger().trace("CALLED!");
return this.isInitialized;
}
+ /**
+ * Shuts down the application.
+ */
+ @Override
+ public void shutdownApplication () {
+ // To do this, the frame must be initialized
+ if (!this.isInitialized()) {
+ // Not initalized, so bad call
+ this.getLogger().fatal("Bad call of shutdownApplication(). Please report this.");
+ return;
+ }
+ this.getClient().getApplication().doShutdown();
+ }
+
/**
* Initialize components
*/
@Override
public void windowClosed(final WindowEvent e) {
// Shutdown application cleanly
- self.getClient().getApplication().doShutdown();
+ self.shutdownApplication();
}
/**
@Override
public void windowClosing(final WindowEvent e) {
// Also shutdown cleanly here
- self.getClient().getApplication().doShutdown();
+ self.shutdownApplication();
}
});
// Init menu system
initMenuSystem();
- // Init status label (which needs to be updated
- this.statusLabel = new JLabel(this.getBundle().getString("AddressbookFrame.statusLabel.initializing.text"));
-
- // Init status bar in south
- JPanel panel = new JPanel();
- panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));
- panel.add(this.statusLabel);
- panel.setBorder(BorderFactory.createEtchedBorder());
-
- // Add panel to frame
- this.frame.add(panel, BorderLayout.SOUTH);
+ // Init status panel
+ initStatusPanel();
}
/**
*/
@Override
public void actionPerformed (final ActionEvent e) {
- self.getClient().getApplication().doShutdown();
+ self.shutdownApplication();
}
});
// Add item -> menu
menu.add(this.addOwnItem);
+ // 2.2) Edit own data
+ this.editOwnItem = new JMenuItem(this.getBundle().getString("AddressbookFrame.menuItem.editOwnData.text"));
+ this.editOwnItem.setToolTipText(this.getBundle().getString("AddressbookFrame.menuItem.editOwnData.toolTipText"));
+
+ // Add listener to exit menu
+ this.editOwnItem.addActionListener(new ActionListener() {
+ /**
+ * If the user has performed this action
+ *
+ * @param e An instance of an ActionEvent class
+ */
+ @Override
+ public void actionPerformed (final ActionEvent e) {
+ self.getClient().getContactManager().doChangeOwnData();
+ }
+ });
+
+ // Add item -> menu
+ menu.add(this.editOwnItem);
+
// Add menu -> menu bar
menuBar.add(menu);
this.frame.add(menuBar, BorderLayout.NORTH);
}
+ /**
+ * Initializes status panel
+ */
+ private void initStatusPanel () {
+ // Init status label (which needs to be updated
+ this.statusLabel = new JLabel();
+ this.updateStatus("initializing");
+
+ // Init status bar in south
+ JPanel panel = new JPanel();
+ panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));
+ panel.add(this.statusLabel);
+ panel.setBorder(BorderFactory.createEtchedBorder());
+
+ // Add panel to frame
+ this.frame.add(panel, BorderLayout.SOUTH);
+ }
+
+ /**
+ * Updates status to given type
+ *
+ * @param type Status type
+ */
+ private void updateStatus (final String type) {
+ // Set status message
+ this.statusLabel.setText(this.getBundle().getString("AddressbookFrame.statusLabel." + type + ".text"));
+ }
}