From 59a751b134cdf4bd0f30e3065c6cf544edcf027c Mon Sep 17 00:00:00 2001 From: Roland Haeder Date: Tue, 28 Jul 2015 14:20:57 +0200 Subject: [PATCH] =?utf8?q?Introduced=20more=20methods=20+=20added=20first?= =?utf8?q?=20dialog=20call=20(yes,=20it=20is=20still=20visible=20by=20star?= =?utf8?q?tup=20as=20I'm=20not=20finished=20with=20it)=20+=20many=20initFo?= =?utf8?q?o()=20methods=20now=20expect=20a=20JDialog=20instance=20Signed-o?= =?utf8?q?ff-by:Roland=20H=C3=A4der=20?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../client/gui/AddressbookFrame.java | 100 ++++++++++++++++-- .../addressbook/client/gui/ClientFrame.java | 13 +++ .../addressbook/client/gui/SwingClient.java | 47 ++++---- .../localization/bundle_de_DE.properties | 5 +- .../localization/bundle_en_US.properties | 5 +- .../manager/contact/ContactManager.java | 17 ++- 6 files changed, 144 insertions(+), 43 deletions(-) diff --git a/Addressbook/src/org/mxchange/addressbook/client/gui/AddressbookFrame.java b/Addressbook/src/org/mxchange/addressbook/client/gui/AddressbookFrame.java index 92e8dfe3..ea740263 100644 --- a/Addressbook/src/org/mxchange/addressbook/client/gui/AddressbookFrame.java +++ b/Addressbook/src/org/mxchange/addressbook/client/gui/AddressbookFrame.java @@ -46,6 +46,7 @@ import javax.swing.table.TableModel; 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; @@ -140,6 +141,24 @@ public class AddressbookFrame extends BaseFrameworkSystem implements ClientFrame 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 */ @@ -149,6 +168,19 @@ public class AddressbookFrame extends BaseFrameworkSystem implements ClientFrame 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 * @@ -262,6 +294,12 @@ public class AddressbookFrame extends BaseFrameworkSystem implements ClientFrame return title; } + /** + * Initializes "add" and "cancel" buttons + */ + private void initAddCancelButtons () { + } + /** * Initializes "add contact" dialog */ @@ -284,32 +322,58 @@ public class AddressbookFrame extends BaseFrameworkSystem implements ClientFrame // 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)); @@ -437,7 +501,7 @@ public class AddressbookFrame extends BaseFrameworkSystem implements ClientFrame addressPanel.add(zipCityPanel); // Add panel to dialog - this.addContact.add(addressPanel); + dialog.add(addressPanel); } /** @@ -584,8 +648,10 @@ public class AddressbookFrame extends BaseFrameworkSystem implements ClientFrame /** * 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)); @@ -651,13 +717,25 @@ public class AddressbookFrame extends BaseFrameworkSystem implements ClientFrame 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); } /** diff --git a/Addressbook/src/org/mxchange/addressbook/client/gui/ClientFrame.java b/Addressbook/src/org/mxchange/addressbook/client/gui/ClientFrame.java index 6a7d6b0b..ce9b49f9 100644 --- a/Addressbook/src/org/mxchange/addressbook/client/gui/ClientFrame.java +++ b/Addressbook/src/org/mxchange/addressbook/client/gui/ClientFrame.java @@ -18,6 +18,7 @@ package org.mxchange.addressbook.client.gui; import org.mxchange.addressbook.FrameworkInterface; import org.mxchange.addressbook.client.Client; +import org.mxchange.addressbook.contact.Contact; import org.mxchange.addressbook.exceptions.FrameAlreadyInitializedException; /** @@ -27,11 +28,23 @@ 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. diff --git a/Addressbook/src/org/mxchange/addressbook/client/gui/SwingClient.java b/Addressbook/src/org/mxchange/addressbook/client/gui/SwingClient.java index 17d3e1b0..a8c1a729 100644 --- a/Addressbook/src/org/mxchange/addressbook/client/gui/SwingClient.java +++ b/Addressbook/src/org/mxchange/addressbook/client/gui/SwingClient.java @@ -46,7 +46,7 @@ public class SwingClient extends BaseClient implements Client { super(); // Debug message - this.getLogger().trace("CALLED!"); + this.getLogger().trace("CALLED!"); //NOI18N // Set application instance this.setApplication(application); @@ -57,32 +57,32 @@ public class SwingClient extends BaseClient implements Client { @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 } /** @@ -92,7 +92,8 @@ public class SwingClient extends BaseClient implements Client { */ @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(); } /** @@ -101,7 +102,7 @@ public class SwingClient extends BaseClient implements Client { @Override public void doShutdown () { // Debug message - this.getLogger().trace("CALLED!"); + this.getLogger().trace("CALLED!"); //NOI18N // Parent call super.doShutdown(); @@ -111,7 +112,7 @@ public class SwingClient extends BaseClient implements Client { // @TODO Add other shutdown stuff // Debug message - this.getLogger().trace("EXIT!"); + this.getLogger().trace("EXIT!"); //NOI18N } @Override @@ -124,27 +125,27 @@ public class SwingClient extends BaseClient implements Client { @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 } /** @@ -157,7 +158,7 @@ public class SwingClient extends BaseClient implements Client { @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; @@ -169,7 +170,7 @@ public class SwingClient extends BaseClient implements Client { @Override public void init () { // Debug message - this.getLogger().trace("CALLED!"); + this.getLogger().trace("CALLED!"); //NOI18N // Init contact manager here this.initContactManager(); @@ -186,12 +187,12 @@ public class SwingClient extends BaseClient implements Client { 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 @@ -204,20 +205,20 @@ public class SwingClient extends BaseClient implements Client { @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 } /** @@ -226,6 +227,6 @@ public class SwingClient extends BaseClient implements Client { @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 } } diff --git a/Addressbook/src/org/mxchange/addressbook/localization/bundle_de_DE.properties b/Addressbook/src/org/mxchange/addressbook/localization/bundle_de_DE.properties index 570c12fe..4cf55790 100644 --- a/Addressbook/src/org/mxchange/addressbook/localization/bundle_de_DE.properties +++ b/Addressbook/src/org/mxchange/addressbook/localization/bundle_de_DE.properties @@ -13,6 +13,9 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . +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 ... @@ -26,8 +29,6 @@ AddressbookFrame.menuItem.editOwnData.text=Eigene Adresse \u00e4ndern 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: diff --git a/Addressbook/src/org/mxchange/addressbook/localization/bundle_en_US.properties b/Addressbook/src/org/mxchange/addressbook/localization/bundle_en_US.properties index 7800af35..41261737 100644 --- a/Addressbook/src/org/mxchange/addressbook/localization/bundle_en_US.properties +++ b/Addressbook/src/org/mxchange/addressbook/localization/bundle_en_US.properties @@ -13,6 +13,9 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . +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 ... @@ -26,8 +29,6 @@ AddressbookFrame.menuItem.editOwnData.text=Edit own data 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: diff --git a/Addressbook/src/org/mxchange/addressbook/manager/contact/ContactManager.java b/Addressbook/src/org/mxchange/addressbook/manager/contact/ContactManager.java index 62bcfbd4..f502e1e3 100644 --- a/Addressbook/src/org/mxchange/addressbook/manager/contact/ContactManager.java +++ b/Addressbook/src/org/mxchange/addressbook/manager/contact/ContactManager.java @@ -237,8 +237,11 @@ public class ContactManager extends BaseManager implements ManageableContact { // 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 @@ -474,6 +477,12 @@ public class ContactManager extends BaseManager implements ManageableContact { */ @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 @@ -484,9 +493,7 @@ public class ContactManager extends BaseManager implements ManageableContact { } // 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); -- 2.39.5