import org.mxchange.addressbook.BaseFrameworkSystem;
import org.mxchange.addressbook.application.AddressbookApplication;
import org.mxchange.addressbook.client.Client;
+import org.mxchange.addressbook.contact.Contact;
import org.mxchange.addressbook.contact.Gender;
import org.mxchange.addressbook.exceptions.FrameAlreadyInitializedException;
import org.mxchange.addressbook.model.contact.ContactTableModel;
this.setClient(client);
}
+ @Override
+ public Contact doEnterOwnData () {
+ // Is the "add contact" window visible?
+ if (this.addContact.isVisible()) {
+ // Something bad happened
+ throw new IllegalStateException("Window addContact is already visible.");
+ }
+
+ // Disable main window
+ this.frame.setEnabled(false);
+
+ // Make other window visible
+ this.addContact.setVisible(true);
+
+ // Return value is not supported
+ return null;
+ }
+
/**
* Shutdown this frame
*/
this.updateStatus("shutdown"); //NOI18N
}
+
+ /**
+ * Enables main window (frame)
+ */
+ @Override
+ public void enableMainWindow () {
+ // Enable it again
+ this.frame.setEnabled(true);
+
+ // Request focus for this window
+ this.frame.requestFocus();
+ }
+
/**
* Setups the frame, do not set isInitialized here
*
return title;
}
+ /**
+ * Initializes "add" and "cancel" buttons
+ */
+ private void initAddCancelButtons () {
+ }
+
/**
* Initializes "add contact" dialog
*/
// Initial dimension
this.addContact.setSize(500, 500);
+ // And it is not resizeable
+ this.addContact.setResizable(false);
+
/*
* Add listener which asks for confirmation, if data has been entered
* but not saved yet. The user may appriciate this ... ;-)
*
* @TODO Unfinished
*/
+ this.addContact.addWindowListener(new WindowAdapter() {
+ /**
+ * Invoked when a window has been closed.
+ */
+ @Override
+ public void windowClosed (final WindowEvent e) {
+ // Enable main window again
+ AddressbookFrame.getSelfInstance(null).enableMainWindow();
+ }
+
+ /**
+ * Invoked when a window is in the process of being closed. The
+ * close operation can be overridden at this point.
+ */
+ @Override
+ public void windowClosing (final WindowEvent e) {
+ e.getWindow().dispose();
+ }
+ });
+
// Init 3 panels:
// 1) "name" panel
- initNameDataPanel();
+ initNameDataPanel(this.addContact);
// 2) "address" panel
- initAddressDataPanel();
+ initAddressDataPanel(this.addContact);
// 3) "other" panel
- initOtherDataPanel();
+ initOtherDataPanel(this.addContact);
+
+ // 4) "Add" and "Cancel" buttons
+ initAddCancelButtons();
// x)Only for developing:
- /*
- * DEBUG:
- */ this.addContact.setVisible(true);
+ /* DEBUG: */ this.addContact.setVisible(true);
}
/**
* Initializes address panel
+ *
+ * @param dialog A JDialog instance to this components to
*/
- private void initAddressDataPanel () {
+ private void initAddressDataPanel (final JDialog dialog) {
// Panel "address" input boxes
JPanel addressPanel = new JPanel();
addressPanel.setLayout(new BoxLayout(addressPanel, BoxLayout.Y_AXIS));
addressPanel.add(zipCityPanel);
// Add panel to dialog
- this.addContact.add(addressPanel);
+ dialog.add(addressPanel);
}
/**
/**
* Initializes name panel
+ *
+ * @param dialog A JDialog instance to this components to
*/
- private void initNameDataPanel () {
+ private void initNameDataPanel (final JDialog dialog) {
// Panel "name" input boxes
JPanel namePanel = new JPanel();
namePanel.setLayout(new BoxLayout(namePanel, BoxLayout.Y_AXIS));
namePanel.add(fPanel);
// Finally add panel to dialog
- this.addContact.add(namePanel);
+ dialog.add(namePanel);
}
/**
* Initializes "other" data panel
+ *
+ * @param dialog A JDialog instance to this components to
+ * @todo Fill this with life
*/
- private void initOtherDataPanel () {
+ private void initOtherDataPanel (final JDialog dialog) {
+ // Panel "other" input boxes
+ JPanel otherPanel = new JPanel();
+ otherPanel.setLayout(new BoxLayout(otherPanel, BoxLayout.Y_AXIS));
+
+ // Set border to titled version
+ otherPanel.setBorder(new TitledBorder(this.generateBorderTitle("other"))); //NOI18N
+
+ // Finally add panel to dialog
+ dialog.add(otherPanel);
}
/**
import org.mxchange.addressbook.FrameworkInterface;
import org.mxchange.addressbook.client.Client;
+import org.mxchange.addressbook.contact.Contact;
import org.mxchange.addressbook.exceptions.FrameAlreadyInitializedException;
/**
*/
public interface ClientFrame extends FrameworkInterface {
+ /**
+ * Shows the user the "add contact" form with some special text
+ *
+ * @return Contact instance
+ */
+ public Contact doEnterOwnData ();
+
/**
* Shutdown this frame
*/
public void doShutdown ();
+ /**
+ * Enables main window (frame)
+ */
+ public void enableMainWindow ();
+
/**
* Setups the frame (and starts it). You have to call init() before you can
* call this method.
super();
// Debug message
- this.getLogger().trace("CALLED!");
+ this.getLogger().trace("CALLED!"); //NOI18N
// Set application instance
this.setApplication(application);
@Override
public void displayAddressBox (final Contact contact) {
- throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. //NOI18N
}
@Override
public void displayNameBox (final Contact contact) {
- throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. //NOI18N
}
@Override
public void displayOtherDataBox (final Contact contact) {
- throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. //NOI18N
}
@Override
public void doChangeOwnAddressData (Contact contact) {
- throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. //NOI18N
}
@Override
public void doChangeOwnNameData (Contact contact) {
- throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. //NOI18N
}
@Override
public void doChangeOwnOtherData (Contact contact) {
- throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. //NOI18N
}
/**
*/
@Override
public Contact doEnterOwnData () {
- throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ // Deligate this call to the frame
+ return this.frame.doEnterOwnData();
}
/**
@Override
public void doShutdown () {
// Debug message
- this.getLogger().trace("CALLED!");
+ this.getLogger().trace("CALLED!"); //NOI18N
// Parent call
super.doShutdown();
// @TODO Add other shutdown stuff
// Debug message
- this.getLogger().trace("EXIT!");
+ this.getLogger().trace("EXIT!"); //NOI18N
}
@Override
@Override
public char enterChar (final char[] validChars, String message) {
- throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. //NOI18N
}
@Override
public Gender enterGender (final String message) {
- throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. //NOI18N
}
@Override
public int enterInt (final int minimum, final int maximum, final String message) {
- throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. //NOI18N
}
@Override
public String enterString (final int minLength, final int maxLength, final String message, final boolean allowEmpty) {
- throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. //NOI18N
}
@Override
public Menu getMenu (final String menuType) {
- throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. //NOI18N
}
/**
@Override
public SelectableMenuItem getMenuItem (final char accessKey, final String text) {
// Debug message
- this.getLogger().trace("CALLED!");
+ this.getLogger().trace("CALLED!"); //NOI18N
// Returns null as the menu is now no longer controlled here.
return null;
@Override
public void init () {
// Debug message
- this.getLogger().trace("CALLED!");
+ this.getLogger().trace("CALLED!"); //NOI18N
// Init contact manager here
this.initContactManager();
this.frame.setupFrame(this);
// Debug message
- this.getLogger().trace("EXIT!");
+ this.getLogger().trace("EXIT!"); //NOI18N
}
@Override
public void outputMessage (final String message) {
- throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. //NOI18N
}
@Override
@Override
public void showEntry (final SelectableMenuItem item) {
- throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. //NOI18N
}
@Override
public void showWelcome () {
// Debug message
- this.getLogger().trace("CALLED!");
+ this.getLogger().trace("CALLED!"); //NOI18N
// Not implemented here
}
@Override
public void userChooseChangeContactData (final Contact contact) throws UnhandledUserChoiceException {
- throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. //NOI18N
}
/**
@Override
protected final void fillMenuMap () {
// Nothing to fill here as the Swing frame is handling this all
- throw new UnsupportedOperationException("Not implemented.");
+ throw new UnsupportedOperationException("Not implemented."); //NOI18N
}
}
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
+AddressbookFrame.border.name.title.text=Anrede, Vorname, Nachname:
+AddressbookFrame.border.address.title.text=Anschrift:
+AddressbookFrame.border.other.title.text=Andere Angaben:
AddressbookFrame.menu.file.text=Datei
AddressbookFrame.menu.addressbook.text=Adressbuch
AddressbookFrame.statusLabel.initializing.text=Initialisiere ...
AddressbookFrame.menuItem.editOwnData.toolTipText=Erlaubt das \u00c4ndern eigener Daten.
AddressbookFrame.dialog.addContact.title.text=Neue Adresse hinzuf\u00fcgen
AddressbookFrame.main.title.text=Adressen auflisten
-AddressbookFrame.border.name.title.text=Anrede, Vorname, Nachname:
-AddressbookFrame.border.address.title.text=Anschrift:
AddressbookFrame.gender.text=Anrede:
AddressbookFrame.gender.tooltipText=W\u00e4hlen Sie die Anrede aus.
AddressbookFrame.surname.text=Vorname:
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
+AddressbookFrame.border.name.title.text=Gender, surname, family name:
+AddressbookFrame.border.address.title.text=Address:
+AddressbookFrame.border.other.title.text=Other data:
AddressbookFrame.menu.file.text=File
AddressbookFrame.menu.addressbook.text=Addressbook
AddressbookFrame.statusLabel.initializing.text=Initializing ...
AddressbookFrame.menuItem.editOwnData.toolTipText=Allows the user to edit own address data
AddressbookFrame.dialog.addContact.title.text=Add new address
AddressbookFrame.main.title.text=List addresses
-AddressbookFrame.border.name.title.text=Gender, surname, family name:
-AddressbookFrame.border.address.title.text=Anschrift:
AddressbookFrame.gender.text=Gender:
AddressbookFrame.gender.tooltipText=Choose gender.
AddressbookFrame.surname.text=Surname:
// Deligate this call to the client
Contact contact = this.getClient().doEnterOwnData();
- // Add it to contact "book"
- this.registerContact(contact);
+ // Is it set?
+ if (contact instanceof Contact) {
+ // Add it to contact "book"
+ this.registerContact(contact);
+ }
}
@Override
*/
@Override
public void registerContact (final Contact contact) {
+ // Sanity check
+ if (contact == null) {
+ // Abort here
+ throw new NullPointerException("contact is null");
+ }
+
// Check if contact is found
if (this.isContactAlreadyAdded(contact)) {
// Contact already added
}
// Debug message
- /*
- * NOISY-DEBUG:
- */ this.getLogger().debug(MessageFormat.format("Adding '{0}' '{1}' at pos '{2}' ...", contact.getSurname(), contact.getFamilyName(), this.size()));
+ /* NOISY-DEBUG: */ this.getLogger().debug(MessageFormat.format("Adding '{0}' '{1}' at pos '{2}' ...", contact.getSurname(), contact.getFamilyName(), this.size()));
// Add contact to internal list
this.addContact(contact);