]> git.mxchange.org Git - addressbook-swing.git/commitdiff
Introduced initStatusPanel() which initializes status panel + renamed methods accordi...
authorRoland Haeder <roland@mxchange.org>
Fri, 24 Jul 2015 09:21:47 +0000 (11:21 +0200)
committerRoland Haeder <roland@mxchange.org>
Fri, 24 Jul 2015 09:21:47 +0000 (11:21 +0200)
Signed-off-by:Roland Häder <roland@mxchange.org>

Addressbook/src/org/mxchange/addressbook/application/AddressbookApplication.java
Addressbook/src/org/mxchange/addressbook/client/Client.java
Addressbook/src/org/mxchange/addressbook/client/console/ConsoleClient.java
Addressbook/src/org/mxchange/addressbook/client/gui/AddressbookFrame.java
Addressbook/src/org/mxchange/addressbook/client/gui/ClientFrame.java
Addressbook/src/org/mxchange/addressbook/client/gui/SwingClient.java
Addressbook/src/org/mxchange/addressbook/localization/bundle_de_DE.properties
Addressbook/src/org/mxchange/addressbook/localization/bundle_en_US.properties
Addressbook/src/org/mxchange/addressbook/manager/contact/ContactManager.java
Addressbook/src/org/mxchange/addressbook/manager/contact/ManageableContact.java

index 3759d978f87e6706ef8522990f0983109badb81f..eab7e71196b228c18c4a50cc4cc2119add9d4430 100644 (file)
@@ -175,7 +175,7 @@ public class AddressbookApplication extends BaseFrameworkSystem implements Appli
        }
 
        // Init client
-       client.initClient();
+       client.init();
 
        // Set client instance
        this.setClient(client);
index 136c95a8b577be175a543a9b8e64dbbf148ed4ba..6e28668d605a3f9d332ac9812123b752a94d6a69 100644 (file)
-/*\r
- * Copyright (C) 2015 Roland Haeder\r
- *\r
- * This program is free software: you can redistribute it and/or modify\r
- * it under the terms of the GNU General Public License as published by\r
- * the Free Software Foundation, either version 3 of the License, or\r
- * (at your option) any later version.\r
- *\r
- * This program is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
- * GNU General Public License for more details.\r
- *\r
- * You should have received a copy of the GNU General Public License\r
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.\r
- */\r
-package org.mxchange.addressbook.client;\r
-\r
-import org.mxchange.addressbook.FrameworkInterface;\r
-import org.mxchange.addressbook.UnhandledUserChoiceException;\r
-import org.mxchange.addressbook.contact.Contact;\r
-import org.mxchange.addressbook.menu.item.SelectableMenuItem;\r
-\r
-/**\r
- * An interface for application clients\r
- * \r
- * @author Roland Haeder\r
- */\r
-public interface Client extends FrameworkInterface {\r
-\r
-    /**\r
-     * Displays a "box" for the address\r
-     *\r
-     * @param contact Contact to show address from\r
-     */\r
-    public void displayAddressBox (final Contact contact);\r
-\r
-    /**\r
-     * The user changes own name data\r
-     * @param contact \r
-     */\r
-    public void doChangeOwnNameData (final Contact contact);\r
-\r
-    /**\r
-     * The user changes own address data\r
-     *\r
-     * @param contact Contact instance to change\r
-     */\r
-    public void doChangeOwnAddressData (final Contact contact);\r
-\r
-    /**\r
-     * The user changes own other data\r
-     * \r
-     * @param contact Constact instance to change\r
-     */\r
-    public void doChangeOwnOtherData (final Contact contact);\r
-\r
-    /**\r
-     * Allows the user to enter own data\r
-     * \r
-     * @return Finished Contact instance\r
-     */\r
-    public Contact doEnterOwnData ();\r
-\r
-    /**\r
-     * Shuts down the client and therefore whole application\r
-     */\r
-    public void doShutdown ();\r
-\r
-    /**\r
-     * Displays a message to the user\r
-     *\r
-     * @param message Message to show to the user\r
-     */\r
-    public void outputMessage (final String message);\r
-\r
-    /**\r
-     * Displays a "box" for the name\r
-     *\r
-     * @param contact Contact to show name from\r
-     */\r
-    public void displayNameBox (final Contact contact);\r
-\r
-    /**\r
-     * Displays a "box" for other data\r
-     *\r
-     * @param contact Contact to show other data from\r
-     */\r
-    public void displayOtherDataBox (final Contact contact);\r
-\r
-    /**\r
-     * Let the user choose what to change on the address: [n]ame, [a]ddress,\r
-     * [o]ther\r
-     * \r
-     * @param contact Contact instance to let the user change data\r
-     * @throws UnhandledUserChoiceException If choice is not supported\r
-     */\r
-    public void userChooseChangeContactData (final Contact contact) throws UnhandledUserChoiceException;\r
-\r
-    /**\r
-     * Asks the user for a choice and proceeds accordingly\r
-     * \r
-     * @throws UnhandledUserChoiceException If choice is not supported\r
-     */\r
-    public void doUserMenuChoice () throws UnhandledUserChoiceException ;\r
-\r
-    /**\r
-     * Enables isRunning attribute which singals that the client is running\r
-     */\r
-    public void enableIsRunning();\r
-\r
-    /**\r
-     * Asks the the user to enter a single character which must match validChars\r
-     * \r
-     * @param  validChars  Valid chars that are accepted\r
-     * @param  message     Message to user\r
-     * @return Allowed character\r
-     */\r
-    public char enterChar (final char[] validChars, final String message);\r
-\r
-    /**\r
-     * Reads a string of minimum and maximum length from the user. An empty\r
-     * string should be generally not allowed, but might be okay for e.g.\r
-     * company name.\r
-     * \r
-     * @param minLength        Minimum length of the string to read\r
-     * @param maxLength        Maximum length of the string to read\r
-     * @param message  Message to user\r
-     * @param allowEmpty Whether empty strings are allowed\r
-     * @return Entered string by user or null if empty string is allowed\r
-     */\r
-    public String enterString (final int minLength, final int maxLength, final String message, final boolean allowEmpty);\r
-\r
-    /**\r
-     * Reads an integer (int) from the user\r
-     * \r
-     * @param minimum Minimum allowed number\r
-     * @param maximum Maximum allowed number\r
-     * @param message  Message to user\r
-     * @return Entered string by user or null if empty string is allowed\r
-     */\r
-    public int enterInt (final int minimum, final int maximum, final String message);\r
-\r
-    /**\r
-     * Setter for current menu choice\r
-     * \r
-     * @param currentMenu Current menu choice\r
-     */\r
-    public void setCurrentMenu (final String currentMenu);\r
-\r
-    /**\r
-     * Some "Getter" for menu item\r
-     * \r
-     * @param accessKey Key to press to access this menu\r
-     * @param text Text to show to user\r
-     * @return \r
-     */\r
-    public SelectableMenuItem getMenuItem (final char accessKey, final String text);\r
-\r
-    /**\r
-     * Determines whether the client is still active by checking some\r
-     * conditions\r
-     * \r
-     * @return Whether the client is still active\r
-     */\r
-    public boolean isRunning();\r
-\r
-    /**\r
-     * Shows given menu entry in client\r
-     * \r
-     * @param item Menu item to show\r
-     */\r
-    public void showEntry (final SelectableMenuItem item);\r
-\r
-    /**\r
-     * Shows introduction to user\r
-     */\r
-    public void showWelcome();\r
-\r
-    /**\r
-     * Shows current menu selection to the user\r
-     */\r
-    public void showCurrentMenu();\r
-\r
-    /**\r
-     * Inizializes this client\r
-     */\r
-    public void initClient ();\r
-}\r
+/*
+ * Copyright (C) 2015 Roland Haeder
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+package org.mxchange.addressbook.client;
+
+import org.mxchange.addressbook.FrameworkInterface;
+import org.mxchange.addressbook.UnhandledUserChoiceException;
+import org.mxchange.addressbook.contact.Contact;
+import org.mxchange.addressbook.menu.item.SelectableMenuItem;
+
+/**
+ * An interface for application clients
+ * 
+ * @author Roland Haeder
+ */
+public interface Client extends FrameworkInterface {
+
+    /**
+     * Displays a "box" for the address
+     *
+     * @param contact Contact to show address from
+     */
+    public void displayAddressBox (final Contact contact);
+
+    /**
+     * The user changes own name data
+     * @param contact 
+     */
+    public void doChangeOwnNameData (final Contact contact);
+
+    /**
+     * The user changes own address data
+     *
+     * @param contact Contact instance to change
+     */
+    public void doChangeOwnAddressData (final Contact contact);
+
+    /**
+     * The user changes own other data
+     * 
+     * @param contact Constact instance to change
+     */
+    public void doChangeOwnOtherData (final Contact contact);
+
+    /**
+     * Allows the user to enter own data
+     * 
+     * @return Finished Contact instance
+     */
+    public Contact doEnterOwnData ();
+
+    /**
+     * Shuts down the client and therefore whole application
+     */
+    public void doShutdown ();
+
+    /**
+     * Displays a message to the user
+     *
+     * @param message Message to show to the user
+     */
+    public void outputMessage (final String message);
+
+    /**
+     * Displays a "box" for the name
+     *
+     * @param contact Contact to show name from
+     */
+    public void displayNameBox (final Contact contact);
+
+    /**
+     * Displays a "box" for other data
+     *
+     * @param contact Contact to show other data from
+     */
+    public void displayOtherDataBox (final Contact contact);
+
+    /**
+     * Let the user choose what to change on the address: [n]ame, [a]ddress,
+     * [o]ther
+     * 
+     * @param contact Contact instance to let the user change data
+     * @throws UnhandledUserChoiceException If choice is not supported
+     */
+    public void userChooseChangeContactData (final Contact contact) throws UnhandledUserChoiceException;
+
+    /**
+     * Asks the user for a choice and proceeds accordingly
+     * 
+     * @throws UnhandledUserChoiceException If choice is not supported
+     */
+    public void doUserMenuChoice () throws UnhandledUserChoiceException ;
+
+    /**
+     * Enables isRunning attribute which singals that the client is running
+     */
+    public void enableIsRunning();
+
+    /**
+     * Asks the the user to enter a single character which must match validChars
+     * 
+     * @param  validChars  Valid chars that are accepted
+     * @param  message     Message to user
+     * @return Allowed character
+     */
+    public char enterChar (final char[] validChars, final String message);
+
+    /**
+     * Reads a string of minimum and maximum length from the user. An empty
+     * string should be generally not allowed, but might be okay for e.g.
+     * company name.
+     * 
+     * @param minLength        Minimum length of the string to read
+     * @param maxLength        Maximum length of the string to read
+     * @param message  Message to user
+     * @param allowEmpty Whether empty strings are allowed
+     * @return Entered string by user or null if empty string is allowed
+     */
+    public String enterString (final int minLength, final int maxLength, final String message, final boolean allowEmpty);
+
+    /**
+     * Reads an integer (int) from the user
+     * 
+     * @param minimum Minimum allowed number
+     * @param maximum Maximum allowed number
+     * @param message  Message to user
+     * @return Entered string by user or null if empty string is allowed
+     */
+    public int enterInt (final int minimum, final int maximum, final String message);
+
+    /**
+     * Setter for current menu choice
+     * 
+     * @param currentMenu Current menu choice
+     */
+    public void setCurrentMenu (final String currentMenu);
+
+    /**
+     * Some "Getter" for menu item
+     * 
+     * @param accessKey Key to press to access this menu
+     * @param text Text to show to user
+     * @return 
+     */
+    public SelectableMenuItem getMenuItem (final char accessKey, final String text);
+
+    /**
+     * Determines whether the client is still active by checking some
+     * conditions
+     * 
+     * @return Whether the client is still active
+     */
+    public boolean isRunning();
+
+    /**
+     * Shows given menu entry in client
+     * 
+     * @param item Menu item to show
+     */
+    public void showEntry (final SelectableMenuItem item);
+
+    /**
+     * Shows introduction to user
+     */
+    public void showWelcome();
+
+    /**
+     * Shows current menu selection to the user
+     */
+    public void showCurrentMenu();
+
+    /**
+     * Inizializes this client
+     */
+    public void init ();
+}
index 8d553096afae3f2e33f1cbdf2e36ee441cc8789b..2015873d861ee58b85e411aa38247596df9caa8b 100644 (file)
-/*\r
- * Copyright (C) 2015 Roland Haeder\r
- *\r
- * This program is free software: you can redistribute it and/or modify\r
- * it under the terms of the GNU General Public License as published by\r
- * the Free Software Foundation, either version 3 of the License, or\r
- * (at your option) any later version.\r
- *\r
- * This program is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
- * GNU General Public License for more details.\r
- *\r
- * You should have received a copy of the GNU General Public License\r
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.\r
- */\r
-package org.mxchange.addressbook.client.console;\r
-\r
-import java.text.MessageFormat;\r
-import java.util.Arrays;\r
-import java.util.Scanner;\r
-import org.mxchange.addressbook.UnhandledUserChoiceException;\r
-import org.mxchange.addressbook.application.AddressbookApplication;\r
-import org.mxchange.addressbook.application.Application;\r
-import org.mxchange.addressbook.client.BaseClient;\r
-import org.mxchange.addressbook.client.Client;\r
-import org.mxchange.addressbook.contact.Contact;\r
-import org.mxchange.addressbook.contact.user.UserContact;\r
-import org.mxchange.addressbook.menu.Menu;\r
-import org.mxchange.addressbook.menu.MenuTools;\r
-import org.mxchange.addressbook.menu.console.ConsoleMenu;\r
-import org.mxchange.addressbook.menu.item.SelectableMenuItem;\r
-import org.mxchange.addressbook.menu.item.console.ConsoleMenuItem;\r
-\r
-/**\r
- * A client for the console\r
- *\r
- * @author Roland Haeder\r
- */\r
-public class ConsoleClient extends BaseClient implements Client {\r
-    /**\r
-     * Scanner instance for reading data from console input\r
-     */\r
-    private final Scanner scanner;\r
-\r
-    /**\r
-     * Parameterless constructor\r
-     * @param application An instance of an Application class\r
-     */\r
-    public ConsoleClient (final Application application) {\r
-       super();\r
-\r
-       // Set application instance\r
-       this.setApplication(application);\r
-\r
-       // Init scanner instance\r
-       this.scanner = new Scanner(System.in);\r
-    }\r
-\r
-    /**\r
-     * Displays a textual address "box" of given contact\r
-     *\r
-     * @param contact Contact to show address for\r
-     */\r
-    @Override\r
-    public void displayAddressBox (final Contact contact) {\r
-       // Simple display ...\r
-       this.outputMessage(MessageFormat.format("Strasse, PLZ Ort, Land: {0}\n{1} {2}\n{3}", contact.getStreet(), contact.getZipCode(), contact.getCity(), contact.getCountryCode()));\r
-    }\r
-\r
-    /**\r
-     * Displays a textual name "box" of given contact\r
-     *\r
-     * @param contact Contact to show name for\r
-     */\r
-    @Override\r
-    public void displayNameBox (final Contact contact) {\r
-       // Get translated gender as the user may want to see "Mr.", "Mrs."\r
-       String gender = contact.getTranslatedGender();\r
-\r
-       // Get company name\r
-       String companyName = contact.getCompanyName();\r
-\r
-       // If it is empty/null, then assume private contact\r
-       if ((companyName == null) || (companyName.isEmpty())) {\r
-           // Now put all together: gender, surname, family name\r
-           // @todo Use mask\r
-           this.outputMessage(MessageFormat.format("Anrede, Vorname, Name: {0} {1} {2}", gender, contact.getSurname(), contact.getFamilyName()));\r
-       } else {\r
-           // Company contact\r
-           this.outputMessage(MessageFormat.format("Firma: {0}\nAnsprechpartner: {1} {2} {3}", companyName, gender, contact.getSurname(), contact.getFamilyName()));\r
-       }\r
-    }\r
-\r
-    /**\r
-     * Displays a textual other data "box" of given contact\r
-     *\r
-     * @param contact Contact to show other data for\r
-     */\r
-    @Override\r
-    public void displayOtherDataBox (final Contact contact) {\r
-       // Cellphone and such ...\r
-       this.outputMessage(MessageFormat.format("Telefonnumer: {0}\nFaxnummer: {1}\nHandy: {2}\nKommentar:\n{3}", contact.getPhoneNumber(), contact.getFaxNumber(), contact.getCellphoneNumber(), contact.getComment()));\r
-    }\r
-\r
-    @Override\r
-    public void doChangeOwnAddressData (final Contact contact) {\r
-       // Make sure it is own contact\r
-       if (!contact.isOwnContact()) {\r
-           // Not own contact\r
-           throw new IllegalArgumentException("Contact is not own data.");\r
-       }\r
-\r
-       // Own address data\r
-       String street = this.getContactManager().enterOwnStreet();\r
-\r
-       // Get zip code\r
-       int zipCode = this.getContactManager().enterOwnZipCode();\r
-\r
-       // Get city name\r
-       String city = this.getContactManager().enterOwnCity();\r
-\r
-       // Get country code\r
-       String countryCode = this.getContactManager().enterOwnCountryCode();\r
-\r
-       // Update address data\r
-       contact.updateAddressData(street, zipCode, city, countryCode);\r
-    }\r
-\r
-    @Override\r
-    public void doChangeOwnNameData (final Contact contact) {\r
-       // Make sure it is own contact\r
-       if (!contact.isOwnContact()) {\r
-           // Not own contact\r
-           throw new IllegalArgumentException("Contact is not own data.");\r
-       }\r
-\r
-       // Gender:\r
-       char gender = this.getContactManager().enterOwnGender();\r
-\r
-       // Surname\r
-       String surname = this.getContactManager().enterOwnSurname();\r
-\r
-       // Family name\r
-       String familyName = this.getContactManager().enterOwnFamilyName();\r
-\r
-       // And company\r
-       String companyName = this.getContactManager().enterOwnCompanyName();\r
-\r
-       // Update contact instance\r
-       contact.updateNameData(gender, surname, familyName, companyName);\r
-    }\r
-\r
-    @Override\r
-    public void doChangeOwnOtherData (final Contact contact) {\r
-       // Make sure it is own contact\r
-       if (!contact.isOwnContact()) {\r
-           // Not own contact\r
-           throw new IllegalArgumentException("Contact is not own data.");\r
-       }\r
-\r
-       // Phone number\r
-       String phoneNumber = this.getContactManager().enterOwnPhoneNumber();\r
-\r
-       // Phone number\r
-       String cellNumber = this.getContactManager().enterOwnCellNumber();\r
-\r
-       // Fax number\r
-       String faxNumber = this.getContactManager().enterOwnFaxNumber();\r
-\r
-       // Email address\r
-       String email = this.getContactManager().enterOwnEmailAddress();\r
-\r
-       // Comment\r
-       String comment = this.getContactManager().enterOwnComment();\r
-\r
-       // Update contact instance\r
-       contact.updateOtherData(phoneNumber, cellNumber, faxNumber, email, null, comment);\r
-    }\r
-\r
-    @Override\r
-    public Contact doEnterOwnData () {\r
-       // First ask for gender\r
-       char gender = this.getContactManager().enterOwnGender();\r
-\r
-       // 2nd for surname\r
-       String surname = this.getContactManager().enterOwnSurname();\r
-       \r
-       // And 3rd for family name\r
-       String familyName = this.getContactManager().enterOwnFamilyName();\r
-\r
-       // Company name ...\r
-       String companyName = this.getContactManager().enterOwnCompanyName();\r
-\r
-       // Construct UserContact instance\r
-       Contact contact = new UserContact(gender, surname, familyName, companyName);\r
-\r
-       // And return object\r
-       return contact;\r
-    }\r
-\r
-    /**\r
-     * Shutdown this client\r
-     */\r
-    @Override\r
-    public void doShutdown () {\r
-       // Parent call\r
-       super.doShutdown();\r
-\r
-       // @TODO Add other shutdown stuff\r
-    }\r
-\r
-    @Override\r
-    public void doUserMenuChoice () throws UnhandledUserChoiceException {\r
-       // Get all access keys from menu\r
-       char[] accessKeys = MenuTools.getAccessKeysFromMenuMap(this.getMenus(), this.getCurrentMenu());\r
-\r
-       // Output textural message and ask for a char as input\r
-       char choice = this.enterChar(accessKeys, "Bitte Auswahl eingeben (0=Programm beenden): ");\r
-\r
-       // @TODO Rewrite this ugly switch() block\r
-       switch (choice) {\r
-           case '1': // Enter/add own data\r
-               this.getContactManager().doEnterOwnData();\r
-               break;\r
-       \r
-           case '2': // Change own data\r
-               this.getContactManager().changeOwnData();\r
-               break;\r
-       \r
-           case '3': // Add new addess\r
-               this.getContactManager().addOtherAddress();\r
-               break;\r
-       \r
-           case '4': // List contacts\r
-               this.getContactManager().listContacts();\r
-               break;\r
-       \r
-           case '5': // Search addresses\r
-               this.getContactManager().searchContacts();\r
-               break;\r
-\r
-           case '6': // Change other addess\r
-               this.getContactManager().changeOtherAddress();\r
-               break;\r
-       \r
-           case '7': // Delete other address\r
-               this.getContactManager().deleteOtherAddress();\r
-               break;\r
-\r
-           case '0': // Program exit\r
-               this.getApplication().doShutdown();\r
-               break;\r
-       \r
-           default:\r
-               // @TODO throw own exception\r
-               throw new UnhandledUserChoiceException(MessageFormat.format("Choice '{0}' not handled yet.", choice));\r
-       }\r
-    }\r
-\r
-    /**\r
-     * Asks the the user to enter a single character which must match validChars\r
-     * @param  validChars  Valid chars that are accepted\r
-     * @param  message     Message to user\r
-     * @return Allowed character\r
-     */\r
-    @Override\r
-    public char enterChar (final char[] validChars, final String message) {\r
-       char input = 0;\r
-\r
-       // Sort array, else binarySearch() won't work\r
-       Arrays.sort(validChars);\r
-\r
-       // Keep asking until valid char has been entered\r
-       while (Arrays.binarySearch(validChars, input) < 0) {\r
-           // Output message\r
-           System.out.print(message);\r
-\r
-           // Read char\r
-           input = this.readChar();\r
-       }\r
-\r
-       // Return read char\r
-       return input;\r
-    }\r
-\r
-    /**\r
-     * Reads an integer (int) with a textural message from the user\r
-     * \r
-     * @param minimum Minimum allowed number\r
-     * @param maximum Maximum allowed number\r
-     * @param message Messager to display in console\r
-     * @return \r
-     */\r
-    @Override\r
-    public int enterInt (final int minimum, final int maximum, final String message) {\r
-       // Minimum should not be below zero\r
-       assert(minimum >= 0);\r
-       assert(maximum > minimum);\r
-\r
-       // Init input\r
-       int input = -1;\r
-\r
-       while ((input < minimum) || (input > maximum)) {\r
-           // Output message\r
-           System.out.print(message);\r
-\r
-           // Read integer from user\r
-           input = this.readInt();\r
-       }\r
-\r
-       // Return it\r
-       return input;\r
-    }\r
-\r
-    /**\r
-     * Reads a string of minimum and maximum length from the user\r
-     * \r
-     * @param minLength        Minimum length of the string to read\r
-     * @param maxLength        Maximum length of the string to read\r
-     * @param message  Message to user\r
-     * @param allowEmpty Whether to allow empty string\r
-     * @return Entered string by user or null for empty strings\r
-     */\r
-    @Override\r
-    public String enterString (final int minLength, final int maxLength, final String message, final boolean allowEmpty) {\r
-       // Check on length, e.g. country codes are excactly 2 chars long\r
-       assert(maxLength >= minLength);\r
-\r
-       // Init input\r
-       String input = null;\r
-\r
-       // Check if it is to short or to long\r
-       while (((input == null) || ((input.length() < minLength) && (!allowEmpty))) || ((input.length() > 0) && (input.length() < minLength) && (allowEmpty)) || ((input instanceof String) && (input.length() > maxLength))) {\r
-           // Output message\r
-           System.out.print(message);\r
-\r
-           // Read line\r
-           input = this.readString();\r
-       }\r
-\r
-       // Return it\r
-       return input;\r
-    }\r
-\r
-    /**\r
-     * Returns a console menu item\r
-     * \r
-     * @param accessKey Key to access the menu\r
-     * @param text Text to show to user\r
-     * @return A SelectableMenuItem\r
-     * @todo Make sure the access key is unique\r
-     */\r
-    @Override\r
-    public SelectableMenuItem getMenuItem (final char accessKey, final String text) {\r
-       // Return a new console menu item\r
-       return new ConsoleMenuItem(accessKey,text);\r
-    }\r
-\r
-    /**\r
-     * Inizializes this client\r
-     */\r
-    @Override\r
-    public void initClient () {\r
-       // Init contact manager here\r
-       this.initContactManager();\r
-\r
-       // Fill menu map\r
-       this.fillMenuMap();\r
-    }\r
-\r
-    /**\r
-     * Displays textural message to the user\r
-     * @param message\r
-     */\r
-    @Override\r
-    public void outputMessage (final String message) {\r
-       System.out.println(message);\r
-    }\r
-\r
-    /**\r
-     * Shows textural menu on console\r
-     */\r
-    @Override\r
-    public void showCurrentMenu () {\r
-       this.showMenu(this.getCurrentMenu());\r
-    }\r
-\r
-    /**\r
-     * Shows given menu entry to user\r
-     * \r
-     * @param item Menu entry\r
-     */\r
-    @Override\r
-    public void showEntry (final SelectableMenuItem item) {\r
-       // Access key then text\r
-       this.outputMessage("[" + item.getAccessKey() + "] " + item.getText());\r
-    }\r
-\r
-    /**\r
-     * Shows a textural message to the user\r
-     */\r
-    @Override\r
-    public void showWelcome () {\r
-       this.outputMessage(MessageFormat.format("Welcome to {0}", AddressbookApplication.printableTitle()));\r
-       this.outputMessage("");\r
-       this.outputMessage("Copyright(c) 2015 by Roland Haeder, this is free software");\r
-       \r
-       // Debug message\r
-       this.getLogger().debug("Intro shown to user");\r
-    }\r
-\r
-    @Override\r
-    public void userChooseChangeContactData (final Contact contact) throws UnhandledUserChoiceException {\r
-       // Ask the user for editing [name], [a]ddress or [other] data\r
-       char choice = this.enterChar(new char[]{'n', 'a', 'o', 'x'}, "Welchen Daten möchten Sie ändern? (n=Namensdaten, a=Anschriftsdaten, o=Andere, x=Zurück zur Hauptauswahl) ");\r
-\r
-       // @TODO Get rid of this ugly switch block, too\r
-       switch (choice) {\r
-           case 'n': // Name data\r
-               this.getContactManager().doChangeNameData(contact, this);\r
-               break;\r
-\r
-           case 'a': // Address data\r
-               this.getContactManager().doChangeAddressData(contact, this);\r
-               break;\r
-\r
-           case 'o': // Other data\r
-               this.getContactManager().doChangeOtherData(contact, this);\r
-               break;\r
-\r
-           case 'x': // Exit this menu\r
-               // Ignored as it should go back\r
-               break;\r
-\r
-           default:\r
-               // @TODO throw own exception\r
-               throw new UnhandledUserChoiceException(MessageFormat.format("Choice '{0}' not handled yet.", choice));\r
-       }\r
-    }\r
-\r
-    /**\r
-     * Reads one character\r
-     * \r
-     * @return A single character\r
-     */\r
-    private char readChar () {\r
-       // Read line\r
-       String input = this.scanner.nextLine();\r
-\r
-       // This must be only one character\r
-       if (input.length() != 1) {\r
-           // Return zero\r
-           return 0;\r
-       }\r
-\r
-       // Get char from first (and only) position\r
-       return input.charAt(0);\r
-    }\r
-\r
-    /**\r
-     * Reads an integer (int) from user\r
-     * \r
-     * @return An integer number\r
-     */\r
-    private int readInt () {\r
-       // First read a string\r
-       String input = this.readString();\r
-\r
-       // Init number with invalid value\r
-       int num = -1;\r
-\r
-       // Parse number, this can be risky\r
-       try {\r
-           num = Integer.parseInt(input);\r
-       } catch (final NumberFormatException e) {\r
-           this.outputMessage("Bitte geben Sie nur Zahlen ein!");\r
-           this.getLogger().warn(MessageFormat.format("No numbers-only entered. input={0},message={1}", input, e.getMessage()));\r
-       }\r
-\r
-       // Return read number\r
-       return num;\r
-    }\r
-\r
-    /**\r
-     * Reads a string from a scanner until RETURN is pressed\r
-     * \r
-     * @return Read string from scanner\r
-     */\r
-    private String readString () {\r
-       return this.scanner.nextLine();\r
-    }\r
-\r
-    /**\r
-     * Fills menu map with menu entries\r
-     */\r
-    @Override\r
-    protected final void fillMenuMap () {\r
-       // Initialize first (main) menu\r
-       Menu menu = new ConsoleMenu("main", this);\r
-       \r
-       // Add it\r
-       this.getMenus().put("main", menu);\r
-    }\r
-}\r
+/*
+ * Copyright (C) 2015 Roland Haeder
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+package org.mxchange.addressbook.client.console;
+
+import java.text.MessageFormat;
+import java.util.Arrays;
+import java.util.Scanner;
+import org.mxchange.addressbook.UnhandledUserChoiceException;
+import org.mxchange.addressbook.application.AddressbookApplication;
+import org.mxchange.addressbook.application.Application;
+import org.mxchange.addressbook.client.BaseClient;
+import org.mxchange.addressbook.client.Client;
+import org.mxchange.addressbook.contact.Contact;
+import org.mxchange.addressbook.contact.user.UserContact;
+import org.mxchange.addressbook.menu.Menu;
+import org.mxchange.addressbook.menu.MenuTools;
+import org.mxchange.addressbook.menu.console.ConsoleMenu;
+import org.mxchange.addressbook.menu.item.SelectableMenuItem;
+import org.mxchange.addressbook.menu.item.console.ConsoleMenuItem;
+
+/**
+ * A client for the console
+ *
+ * @author Roland Haeder
+ */
+public class ConsoleClient extends BaseClient implements Client {
+    /**
+     * Scanner instance for reading data from console input
+     */
+    private final Scanner scanner;
+
+    /**
+     * Parameterless constructor
+     * @param application An instance of an Application class
+     */
+    public ConsoleClient (final Application application) {
+       super();
+
+       // Set application instance
+       this.setApplication(application);
+
+       // Init scanner instance
+       this.scanner = new Scanner(System.in);
+    }
+
+    /**
+     * Displays a textual address "box" of given contact
+     *
+     * @param contact Contact to show address for
+     */
+    @Override
+    public void displayAddressBox (final Contact contact) {
+       // Simple display ...
+       this.outputMessage(MessageFormat.format("Strasse, PLZ Ort, Land: {0}\n{1} {2}\n{3}", contact.getStreet(), contact.getZipCode(), contact.getCity(), contact.getCountryCode()));
+    }
+
+    /**
+     * Displays a textual name "box" of given contact
+     *
+     * @param contact Contact to show name for
+     */
+    @Override
+    public void displayNameBox (final Contact contact) {
+       // Get translated gender as the user may want to see "Mr.", "Mrs."
+       String gender = contact.getTranslatedGender();
+
+       // Get company name
+       String companyName = contact.getCompanyName();
+
+       // If it is empty/null, then assume private contact
+       if ((companyName == null) || (companyName.isEmpty())) {
+           // Now put all together: gender, surname, family name
+           // @todo Use mask
+           this.outputMessage(MessageFormat.format("Anrede, Vorname, Name: {0} {1} {2}", gender, contact.getSurname(), contact.getFamilyName()));
+       } else {
+           // Company contact
+           this.outputMessage(MessageFormat.format("Firma: {0}\nAnsprechpartner: {1} {2} {3}", companyName, gender, contact.getSurname(), contact.getFamilyName()));
+       }
+    }
+
+    /**
+     * Displays a textual other data "box" of given contact
+     *
+     * @param contact Contact to show other data for
+     */
+    @Override
+    public void displayOtherDataBox (final Contact contact) {
+       // Cellphone and such ...
+       this.outputMessage(MessageFormat.format("Telefonnumer: {0}\nFaxnummer: {1}\nHandy: {2}\nKommentar:\n{3}", contact.getPhoneNumber(), contact.getFaxNumber(), contact.getCellphoneNumber(), contact.getComment()));
+    }
+
+    @Override
+    public void doChangeOwnAddressData (final Contact contact) {
+       // Make sure it is own contact
+       if (!contact.isOwnContact()) {
+           // Not own contact
+           throw new IllegalArgumentException("Contact is not own data.");
+       }
+
+       // Own address data
+       String street = this.getContactManager().enterOwnStreet();
+
+       // Get zip code
+       int zipCode = this.getContactManager().enterOwnZipCode();
+
+       // Get city name
+       String city = this.getContactManager().enterOwnCity();
+
+       // Get country code
+       String countryCode = this.getContactManager().enterOwnCountryCode();
+
+       // Update address data
+       contact.updateAddressData(street, zipCode, city, countryCode);
+    }
+
+    @Override
+    public void doChangeOwnNameData (final Contact contact) {
+       // Make sure it is own contact
+       if (!contact.isOwnContact()) {
+           // Not own contact
+           throw new IllegalArgumentException("Contact is not own data.");
+       }
+
+       // Gender:
+       char gender = this.getContactManager().enterOwnGender();
+
+       // Surname
+       String surname = this.getContactManager().enterOwnSurname();
+
+       // Family name
+       String familyName = this.getContactManager().enterOwnFamilyName();
+
+       // And company
+       String companyName = this.getContactManager().enterOwnCompanyName();
+
+       // Update contact instance
+       contact.updateNameData(gender, surname, familyName, companyName);
+    }
+
+    @Override
+    public void doChangeOwnOtherData (final Contact contact) {
+       // Make sure it is own contact
+       if (!contact.isOwnContact()) {
+           // Not own contact
+           throw new IllegalArgumentException("Contact is not own data.");
+       }
+
+       // Phone number
+       String phoneNumber = this.getContactManager().enterOwnPhoneNumber();
+
+       // Phone number
+       String cellNumber = this.getContactManager().enterOwnCellNumber();
+
+       // Fax number
+       String faxNumber = this.getContactManager().enterOwnFaxNumber();
+
+       // Email address
+       String email = this.getContactManager().enterOwnEmailAddress();
+
+       // Comment
+       String comment = this.getContactManager().enterOwnComment();
+
+       // Update contact instance
+       contact.updateOtherData(phoneNumber, cellNumber, faxNumber, email, null, comment);
+    }
+
+    @Override
+    public Contact doEnterOwnData () {
+       // First ask for gender
+       char gender = this.getContactManager().enterOwnGender();
+
+       // 2nd for surname
+       String surname = this.getContactManager().enterOwnSurname();
+       
+       // And 3rd for family name
+       String familyName = this.getContactManager().enterOwnFamilyName();
+
+       // Company name ...
+       String companyName = this.getContactManager().enterOwnCompanyName();
+
+       // Construct UserContact instance
+       Contact contact = new UserContact(gender, surname, familyName, companyName);
+
+       // And return object
+       return contact;
+    }
+
+    /**
+     * Shutdown this client
+     */
+    @Override
+    public void doShutdown () {
+       // Parent call
+       super.doShutdown();
+
+       // @TODO Add other shutdown stuff
+    }
+
+    @Override
+    public void doUserMenuChoice () throws UnhandledUserChoiceException {
+       // Get all access keys from menu
+       char[] accessKeys = MenuTools.getAccessKeysFromMenuMap(this.getMenus(), this.getCurrentMenu());
+
+       // Output textural message and ask for a char as input
+       char choice = this.enterChar(accessKeys, "Bitte Auswahl eingeben (0=Programm beenden): ");
+
+       // @TODO Rewrite this ugly switch() block
+       switch (choice) {
+           case '1': // Enter/add own data
+               this.getContactManager().doEnterOwnData();
+               break;
+       
+           case '2': // Change own data
+               this.getContactManager().doChangeOwnData();
+               break;
+       
+           case '3': // Add new addess
+               this.getContactManager().doAddOtherAddress();
+               break;
+       
+           case '4': // List contacts
+               this.getContactManager().doListContacts();
+               break;
+       
+           case '5': // Search addresses
+               this.getContactManager().doSearchContacts();
+               break;
+
+           case '6': // Change other addess
+               this.getContactManager().doChangeOtherAddress();
+               break;
+       
+           case '7': // Delete other address
+               this.getContactManager().doDeleteOtherAddress();
+               break;
+
+           case '0': // Program exit
+               this.getApplication().doShutdown();
+               break;
+       
+           default:
+               // @TODO throw own exception
+               throw new UnhandledUserChoiceException(MessageFormat.format("Choice '{0}' not handled yet.", choice));
+       }
+    }
+
+    /**
+     * Asks the the user to enter a single character which must match validChars
+     * @param  validChars  Valid chars that are accepted
+     * @param  message     Message to user
+     * @return Allowed character
+     */
+    @Override
+    public char enterChar (final char[] validChars, final String message) {
+       char input = 0;
+
+       // Sort array, else binarySearch() won't work
+       Arrays.sort(validChars);
+
+       // Keep asking until valid char has been entered
+       while (Arrays.binarySearch(validChars, input) < 0) {
+           // Output message
+           System.out.print(message);
+
+           // Read char
+           input = this.readChar();
+       }
+
+       // Return read char
+       return input;
+    }
+
+    /**
+     * Reads an integer (int) with a textural message from the user
+     * 
+     * @param minimum Minimum allowed number
+     * @param maximum Maximum allowed number
+     * @param message Messager to display in console
+     * @return 
+     */
+    @Override
+    public int enterInt (final int minimum, final int maximum, final String message) {
+       // Minimum should not be below zero
+       assert(minimum >= 0);
+       assert(maximum > minimum);
+
+       // Init input
+       int input = -1;
+
+       while ((input < minimum) || (input > maximum)) {
+           // Output message
+           System.out.print(message);
+
+           // Read integer from user
+           input = this.readInt();
+       }
+
+       // Return it
+       return input;
+    }
+
+    /**
+     * Reads a string of minimum and maximum length from the user
+     * 
+     * @param minLength        Minimum length of the string to read
+     * @param maxLength        Maximum length of the string to read
+     * @param message  Message to user
+     * @param allowEmpty Whether to allow empty string
+     * @return Entered string by user or null for empty strings
+     */
+    @Override
+    public String enterString (final int minLength, final int maxLength, final String message, final boolean allowEmpty) {
+       // Check on length, e.g. country codes are excactly 2 chars long
+       assert(maxLength >= minLength);
+
+       // Init input
+       String input = null;
+
+       // Check if it is to short or to long
+       while (((input == null) || ((input.length() < minLength) && (!allowEmpty))) || ((input.length() > 0) && (input.length() < minLength) && (allowEmpty)) || ((input instanceof String) && (input.length() > maxLength))) {
+           // Output message
+           System.out.print(message);
+
+           // Read line
+           input = this.readString();
+       }
+
+       // Return it
+       return input;
+    }
+
+    /**
+     * Returns a console menu item
+     * 
+     * @param accessKey Key to access the menu
+     * @param text Text to show to user
+     * @return A SelectableMenuItem
+     * @todo Make sure the access key is unique
+     */
+    @Override
+    public SelectableMenuItem getMenuItem (final char accessKey, final String text) {
+       // Return a new console menu item
+       return new ConsoleMenuItem(accessKey,text);
+    }
+
+    /**
+     * Inizializes this client
+     */
+    @Override
+    public void init () {
+       // Init contact manager here
+       this.initContactManager();
+
+       // Fill menu map
+       this.fillMenuMap();
+    }
+
+    /**
+     * Displays textural message to the user
+     * @param message
+     */
+    @Override
+    public void outputMessage (final String message) {
+       System.out.println(message);
+    }
+
+    /**
+     * Shows textural menu on console
+     */
+    @Override
+    public void showCurrentMenu () {
+       this.showMenu(this.getCurrentMenu());
+    }
+
+    /**
+     * Shows given menu entry to user
+     * 
+     * @param item Menu entry
+     */
+    @Override
+    public void showEntry (final SelectableMenuItem item) {
+       // Access key then text
+       this.outputMessage("[" + item.getAccessKey() + "] " + item.getText());
+    }
+
+    /**
+     * Shows a textural message to the user
+     */
+    @Override
+    public void showWelcome () {
+       this.outputMessage(MessageFormat.format("Welcome to {0}", AddressbookApplication.printableTitle()));
+       this.outputMessage("");
+       this.outputMessage("Copyright(c) 2015 by Roland Haeder, this is free software");
+       
+       // Debug message
+       this.getLogger().debug("Intro shown to user");
+    }
+
+    @Override
+    public void userChooseChangeContactData (final Contact contact) throws UnhandledUserChoiceException {
+       // Ask the user for editing [name], [a]ddress or [other] data
+       char choice = this.enterChar(new char[]{'n', 'a', 'o', 'x'}, "Welchen Daten möchten Sie ändern? (n=Namensdaten, a=Anschriftsdaten, o=Andere, x=Zurück zur Hauptauswahl) ");
+
+       // @TODO Get rid of this ugly switch block, too
+       switch (choice) {
+           case 'n': // Name data
+               this.getContactManager().doChangeNameData(contact, this);
+               break;
+
+           case 'a': // Address data
+               this.getContactManager().doChangeAddressData(contact, this);
+               break;
+
+           case 'o': // Other data
+               this.getContactManager().doChangeOtherData(contact, this);
+               break;
+
+           case 'x': // Exit this menu
+               // Ignored as it should go back
+               break;
+
+           default:
+               // @TODO throw own exception
+               throw new UnhandledUserChoiceException(MessageFormat.format("Choice '{0}' not handled yet.", choice));
+       }
+    }
+
+    /**
+     * Reads one character
+     * 
+     * @return A single character
+     */
+    private char readChar () {
+       // Read line
+       String input = this.scanner.nextLine();
+
+       // This must be only one character
+       if (input.length() != 1) {
+           // Return zero
+           return 0;
+       }
+
+       // Get char from first (and only) position
+       return input.charAt(0);
+    }
+
+    /**
+     * Reads an integer (int) from user
+     * 
+     * @return An integer number
+     */
+    private int readInt () {
+       // First read a string
+       String input = this.readString();
+
+       // Init number with invalid value
+       int num = -1;
+
+       // Parse number, this can be risky
+       try {
+           num = Integer.parseInt(input);
+       } catch (final NumberFormatException e) {
+           this.outputMessage("Bitte geben Sie nur Zahlen ein!");
+           this.getLogger().warn(MessageFormat.format("No numbers-only entered. input={0},message={1}", input, e.getMessage()));
+       }
+
+       // Return read number
+       return num;
+    }
+
+    /**
+     * Reads a string from a scanner until RETURN is pressed
+     * 
+     * @return Read string from scanner
+     */
+    private String readString () {
+       return this.scanner.nextLine();
+    }
+
+    /**
+     * Fills menu map with menu entries
+     */
+    @Override
+    protected final void fillMenuMap () {
+       // Initialize first (main) menu
+       Menu menu = new ConsoleMenu("main", this);
+       
+       // Add it
+       this.getMenus().put("main", menu);
+    }
+}
index 0cd0a3fc48eb6dc3b99e1a531454ad1747e2c961..c0f132fc73134c745269e4533221519bb99f29bb 100644 (file)
@@ -62,6 +62,15 @@ public class AddressbookFrame extends BaseFrameworkSystem implements ClientFrame
        // Return instance
        return self;
     }
+    /**
+     * Frame instance for "add own data"
+     */
+    private JMenuItem addOwnItem;
+
+    /**
+     * Frame instance for "edit own data"
+     */
+    private JMenuItem editOwnItem;
 
     /**
      * Frame instance
@@ -78,11 +87,6 @@ public class AddressbookFrame extends BaseFrameworkSystem implements ClientFrame
      */
     private JLabel statusLabel;
 
-    /**
-     * Frame instance
-     */
-    private JMenuItem addOwnItem;
-
     /**
      * Creates an instance of this frame with a client instance
      * 
@@ -123,8 +127,11 @@ public class AddressbookFrame extends BaseFrameworkSystem implements ClientFrame
            // 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
@@ -142,7 +149,7 @@ public class AddressbookFrame extends BaseFrameworkSystem implements ClientFrame
      * @throws org.mxchange.addressbook.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!");
 
@@ -216,14 +223,8 @@ public class AddressbookFrame extends BaseFrameworkSystem implements ClientFrame
        // 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();
     }
 
     /**
@@ -287,6 +288,26 @@ public class AddressbookFrame extends BaseFrameworkSystem implements ClientFrame
        // 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);
 
@@ -294,4 +315,17 @@ public class AddressbookFrame extends BaseFrameworkSystem implements ClientFrame
        this.frame.add(menuBar, BorderLayout.NORTH);
     }
 
+    /**
+     * Initializes status panel
+     */
+    private void initStatusPanel () {
+       // 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);
+    }
 }
index f0cc531062d875e8d920b7c0f660703d1e88f726..50395286673446830188da8bd2f9b85e6ca89ab2 100644 (file)
@@ -33,8 +33,8 @@ public interface ClientFrame extends FrameworkInterface {
     public void doShutdown ();
 
     /**
-     * Setups the frame (and starts it). You have to call initFrame() before you
    * can call this method.
+     * Setups the frame (and starts it). You have to call init() before you
+ can call this method.
      * 
      * @param client Client instance
      */
@@ -45,7 +45,7 @@ public interface ClientFrame extends FrameworkInterface {
      * 
      * @throws org.mxchange.addressbook.FrameAlreadyInitializedException If this method has been called twice
      */
-    public void initFrame () throws FrameAlreadyInitializedException;
+    public void init () throws FrameAlreadyInitializedException;
 
     /**
      * Returns field isInitialized. This flag indicates whether this frame has been initialized or not.
index c616ae9ac90186e6a75fecca6e3b7d8f538a3a06..29fc9a6efa8347f8ca2aa7d53754b46fd522eabb 100644 (file)
@@ -153,7 +153,7 @@ public class SwingClient extends BaseClient implements Client {
      * Inizializes this client
      */
     @Override
-    public void initClient () {
+    public void init () {
        // Debug message
        this.getLogger().trace("CALLED!");
 
@@ -162,7 +162,7 @@ public class SwingClient extends BaseClient implements Client {
 
        try {
            // Init frame
-           this.frame.initFrame();
+           this.frame.init();
        } catch (final FrameAlreadyInitializedException ex) {
            this.getLogger().catching(ex);
            System.exit(1);
index 29fec7da9954a87efeb51aa484007a00a2799dce..e6907eebc1919ffe64996e82197ed1194dd7b5fa 100644 (file)
@@ -22,3 +22,5 @@ AddressbookFrame.menuItem.exitProgram.text=Programm beenden
 AddressbookFrame.menu.addressbook.text=Adressbuch
 AddressbookFrame.menuItem.addOwnData.text=Eigene Adresse hinzuf\u00fcgen
 AddressbookFrame.menuItem.addOwnData.toolTipText=Erlaubt das Hinzuf\u00fcgen eigener Daten.
+AddressbookFrame.menuItem.editOwnData.text=Eigene Adresse \u00e4ndern
+AddressbookFrame.menuItem.editOwnData.toolTipText=Erlaubt das \u00c4ndern eigener Daten.
index 4def06bfdddd581cd35723b9d477bbf4e09d863c..c9295322597d58fadb3a3ee5728b55805b8d42d5 100644 (file)
@@ -22,3 +22,5 @@ AddressbookFrame.menuItem.exitProgram.text=Exit program
 AddressbookFrame.addressbookMenu.text=Addressbook
 AddressbookFrame.menuItem.addOwnData.text=Add own address
 AddressbookFrame.menuItem.addOwnData.toolTipText=Allows the user to add own address data
+AddressbookFrame.menuItem.editOwnData.text=Edit own data
+AddressbookFrame.menuItem.editOwnData.toolTipText=Allows the user to edit own address data
index 5c4f54e65b0c053b03d7479a4c649e21219adaa7..da2fe32191c7267362e47f9c600e92e73b27ecbf 100644 (file)
@@ -96,7 +96,7 @@ public class ContactManager extends BaseManager implements ManageableContact {
      * Let the user add a new other address
      */
     @Override
-    public void addOtherAddress () {
+    public void doAddOtherAddress () {
        throw new UnsupportedOperationException("Not supported yet.");
     }
 
@@ -104,7 +104,7 @@ public class ContactManager extends BaseManager implements ManageableContact {
      * Let the user change other address
      */
     @Override
-    public void changeOtherAddress () {
+    public void doChangeOtherAddress () {
        throw new UnsupportedOperationException("Not supported yet.");
     }
 
@@ -112,7 +112,7 @@ public class ContactManager extends BaseManager implements ManageableContact {
      * Allows the user to change his/her own data
      */
     @Override
-    public void changeOwnData () {
+    public void doChangeOwnData () {
        /*
         * First check if the user has registered own contact, before that
         * nothing can be changed.
@@ -146,7 +146,7 @@ public class ContactManager extends BaseManager implements ManageableContact {
      * Let the user delete other address
      */
     @Override
-    public void deleteOtherAddress () {
+    public void doDeleteOtherAddress () {
        throw new UnsupportedOperationException("Not supported yet.");
     }
 
@@ -423,7 +423,7 @@ public class ContactManager extends BaseManager implements ManageableContact {
     }
 
     @Override
-    public void listContacts () {
+    public void doListContacts () {
        throw new UnsupportedOperationException("Not supported yet.");
     }
 
@@ -455,7 +455,7 @@ public class ContactManager extends BaseManager implements ManageableContact {
     }
 
     @Override
-    public void searchContacts () {
+    public void doSearchContacts () {
        throw new UnsupportedOperationException("Not supported yet.");
     }
 
index 736053d21f9850a6c7d879a6ddaa2b6bf2ced91d..6914a261b5e1ca72e76463e0de16fa3f931c9895 100644 (file)
-/*\r
- * Copyright (C) 2015 Roland Haeder\r
- *\r
- * This program is free software: you can redistribute it and/or modify\r
- * it under the terms of the GNU General Public License as published by\r
- * the Free Software Foundation, either version 3 of the License, or\r
- * (at your option) any later version.\r
- *\r
- * This program is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
- * GNU General Public License for more details.\r
- *\r
- * You should have received a copy of the GNU General Public License\r
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.\r
- */\r
-package org.mxchange.addressbook.manager.contact;\r
-\r
-import java.util.List;\r
-import org.mxchange.addressbook.client.Client;\r
-import org.mxchange.addressbook.contact.Contact;\r
-import org.mxchange.addressbook.manager.Manageable;\r
-\r
-/**\r
- *\r
- * @author Roland Haeder\r
- */\r
-public interface ManageableContact extends Manageable {\r
-\r
-    /**\r
-     * Shuts down this contact manager\r
-     */\r
-    public void doShutdown ();\r
-\r
-    /**\r
-     * Allows the user to enter own cellphone number.\r
-     * \r
-     * @return Cellphone number\r
-     */\r
-    public String enterOwnCellNumber ();\r
-\r
-    /**\r
-     * Allows the user to enter own city name.\r
-     * \r
-     * @return City name\r
-     */\r
-    public String enterOwnCity ();\r
-\r
-    /**\r
-     * Allows the user to enter comment for own entry.\r
-     * \r
-     * @return Comment\r
-     */\r
-    public String enterOwnComment ();\r
-\r
-    /**\r
-     * Allows the user to enter own company name.\r
-     * \r
-     * @return Company name\r
-     */\r
-    public String enterOwnCompanyName ();\r
-\r
-    /**\r
-     * Allows the user to enter own country code.\r
-     * \r
-     * @return Country code\r
-     */\r
-    public String enterOwnCountryCode ();\r
-\r
-    /**\r
-     * Allows the user to enter own email address.\r
-     * \r
-     * @return Email address\r
-     */\r
-    public String enterOwnEmailAddress ();\r
-\r
-    /**\r
-     * Allows the user to enter own family name.\r
-     * \r
-     * @return Family name\r
-     */\r
-    public String enterOwnFamilyName ();\r
-\r
-    /**\r
-     * Allows the user to enter own fax number.\r
-     * \r
-     * @return Fax number\r
-     */\r
-    public String enterOwnFaxNumber ();\r
-\r
-    /**\r
-     * Allows the user to enter own gender.\r
-     * \r
-     * @return Gender\r
-     */\r
-    public char enterOwnGender ();\r
-\r
-    /**\r
-     * Allows the user to enter own phone number.\r
-     * \r
-     * @return Phone number\r
-     */\r
-    public String enterOwnPhoneNumber ();\r
-\r
-    /**\r
-     * Allows the user to enter own street and house number.\r
-     * \r
-     * @return Street and house number\r
-     */\r
-    public String enterOwnStreet ();\r
-\r
-    /**\r
-     * Allows the user to enter own surname.\r
-     * \r
-     * @return Surname\r
-     */\r
-    public String enterOwnSurname ();\r
-\r
-    /**\r
-     * Allows the user to enter own ZIP code.\r
-     * \r
-     * @return ZIP code\r
-     */\r
-    public int enterOwnZipCode ();\r
-\r
-    /**\r
-     * Getter for column count\r
-     * \r
-     * @return Column count\r
-     */\r
-    public int getColumnCount ();\r
-\r
-    /**\r
-     * List all contacts\r
-     */\r
-    public void listContacts ();\r
-\r
-    /**\r
-     * Adds given contact to address book\r
-     *\r
-     * @param contact Contact being added\r
-     * @todo Add check for book size\r
-     */\r
-    public void registerContact (final Contact contact);\r
-\r
-    /**\r
-     * Adds given Contact instance to list\r
-     * \r
-     * @param contact Contact instance to add\r
-     */\r
-    public void addContact (final Contact contact);\r
-\r
-    /**\r
-     * Let the user add a new other address\r
-     */\r
-    public void addOtherAddress();\r
-\r
-    /**\r
-     * The user can change address data, like street, ZIP code, city and country\r
-     * of given Contact instance.\r
-     * \r
-     * @param contact Instance to change data\r
-     * @param client Client instance to call back\r
-     */\r
-    public void doChangeAddressData (final Contact contact, final Client client);\r
-\r
-    /**\r
-     * The user can change name data, like gender, surname, family name and\r
-     * company name (if business contact).\r
-     * \r
-     * @param contact Instance to change data\r
-     * @param client Client instance to call back\r
-     */\r
-    public void doChangeNameData (final Contact contact, final Client client);\r
-\r
-    /**\r
-     * Let the user change other address\r
-     */\r
-    public void changeOtherAddress();\r
-\r
-    /**\r
-     * The user can change other data, like phone numbers or comments.\r
-     * \r
-     * @param contact Instance to change data\r
-     * @param client Client instance to call back\r
-     */\r
-    public void doChangeOtherData (final Contact contact, final Client client);\r
-\r
-    /**\r
-     * Let the user change own data\r
-     */\r
-    public void changeOwnData();\r
-\r
-    /**\r
-     * Let the user delete other address\r
-     */\r
-    public void deleteOtherAddress();\r
-\r
-    /**\r
-     * Asks user for own data\r
-     */\r
-    public void doEnterOwnData();\r
-\r
-    /**\r
-     * Getter for whole list\r
-     * @return List of all contacts\r
-     */\r
-    public List<Contact> getList ();\r
-\r
-    /**\r
-     * Searches address book for a contact\r
-     */\r
-    public void searchContacts ();\r
-\r
-    /**\r
-     * Checks whether own contact is already added by checking all entries for\r
-     * isOwnContact flag\r
-     * \r
-     * @return Whether own contact is already added\r
-     */\r
-    public boolean isOwnContactAdded ();\r
-\r
-    /**\r
-     * Getter for size\r
-     *\r
-     * @return size of contact "book"\r
-     */\r
-    public int size();\r
-}\r
+/*
+ * Copyright (C) 2015 Roland Haeder
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+package org.mxchange.addressbook.manager.contact;
+
+import java.util.List;
+import org.mxchange.addressbook.client.Client;
+import org.mxchange.addressbook.contact.Contact;
+import org.mxchange.addressbook.manager.Manageable;
+
+/**
+ *
+ * @author Roland Haeder
+ */
+public interface ManageableContact extends Manageable {
+
+    /**
+     * Shuts down this contact manager
+     */
+    public void doShutdown ();
+
+    /**
+     * Allows the user to enter own cellphone number.
+     * 
+     * @return Cellphone number
+     */
+    public String enterOwnCellNumber ();
+
+    /**
+     * Allows the user to enter own city name.
+     * 
+     * @return City name
+     */
+    public String enterOwnCity ();
+
+    /**
+     * Allows the user to enter comment for own entry.
+     * 
+     * @return Comment
+     */
+    public String enterOwnComment ();
+
+    /**
+     * Allows the user to enter own company name.
+     * 
+     * @return Company name
+     */
+    public String enterOwnCompanyName ();
+
+    /**
+     * Allows the user to enter own country code.
+     * 
+     * @return Country code
+     */
+    public String enterOwnCountryCode ();
+
+    /**
+     * Allows the user to enter own email address.
+     * 
+     * @return Email address
+     */
+    public String enterOwnEmailAddress ();
+
+    /**
+     * Allows the user to enter own family name.
+     * 
+     * @return Family name
+     */
+    public String enterOwnFamilyName ();
+
+    /**
+     * Allows the user to enter own fax number.
+     * 
+     * @return Fax number
+     */
+    public String enterOwnFaxNumber ();
+
+    /**
+     * Allows the user to enter own gender.
+     * 
+     * @return Gender
+     */
+    public char enterOwnGender ();
+
+    /**
+     * Allows the user to enter own phone number.
+     * 
+     * @return Phone number
+     */
+    public String enterOwnPhoneNumber ();
+
+    /**
+     * Allows the user to enter own street and house number.
+     * 
+     * @return Street and house number
+     */
+    public String enterOwnStreet ();
+
+    /**
+     * Allows the user to enter own surname.
+     * 
+     * @return Surname
+     */
+    public String enterOwnSurname ();
+
+    /**
+     * Allows the user to enter own ZIP code.
+     * 
+     * @return ZIP code
+     */
+    public int enterOwnZipCode ();
+
+    /**
+     * Getter for column count
+     * 
+     * @return Column count
+     */
+    public int getColumnCount ();
+
+    /**
+     * List all contacts
+     */
+    public void doListContacts ();
+
+    /**
+     * Adds given contact to address book
+     *
+     * @param contact Contact being added
+     * @todo Add check for book size
+     */
+    public void registerContact (final Contact contact);
+
+    /**
+     * Adds given Contact instance to list
+     * 
+     * @param contact Contact instance to add
+     */
+    public void addContact (final Contact contact);
+
+    /**
+     * Let the user add a new other address
+     */
+    public void doAddOtherAddress();
+
+    /**
+     * The user can change address data, like street, ZIP code, city and country
+     * of given Contact instance.
+     * 
+     * @param contact Instance to change data
+     * @param client Client instance to call back
+     */
+    public void doChangeAddressData (final Contact contact, final Client client);
+
+    /**
+     * The user can change name data, like gender, surname, family name and
+     * company name (if business contact).
+     * 
+     * @param contact Instance to change data
+     * @param client Client instance to call back
+     */
+    public void doChangeNameData (final Contact contact, final Client client);
+
+    /**
+     * Let the user change other address
+     */
+    public void doChangeOtherAddress();
+
+    /**
+     * The user can change other data, like phone numbers or comments.
+     * 
+     * @param contact Instance to change data
+     * @param client Client instance to call back
+     */
+    public void doChangeOtherData (final Contact contact, final Client client);
+
+    /**
+     * Let the user change own data
+     */
+    public void doChangeOwnData();
+
+    /**
+     * Let the user delete other address
+     */
+    public void doDeleteOtherAddress();
+
+    /**
+     * Asks user for own data
+     */
+    public void doEnterOwnData();
+
+    /**
+     * Getter for whole list
+     * @return List of all contacts
+     */
+    public List<Contact> getList ();
+
+    /**
+     * Searches address book for a contact
+     */
+    public void doSearchContacts ();
+
+    /**
+     * Checks whether own contact is already added by checking all entries for
+     * isOwnContact flag
+     * 
+     * @return Whether own contact is already added
+     */
+    public boolean isOwnContactAdded ();
+
+    /**
+     * Getter for size
+     *
+     * @return size of contact "book"
+     */
+    public int size();
+}