From c7b4f26d6d268997d992a287d8a790d3f1db5eba Mon Sep 17 00:00:00 2001 From: Holger Bergunde Date: Mon, 9 May 2011 08:19:11 +0000 Subject: [PATCH] SPARK-791 added refresh button to user information to manually force a reload. spark checks for vcard changes on startup. git-svn-id: http://svn.igniterealtime.org/svn/repos/spark/trunk@12346 b35dd754-fafc-0310-a699-88a17e54d16e --- .../sparkimpl/profile/VCardEditor.java | 83 +++++++++++-------- src/resources/i18n/spark_i18n.properties | 1 + src/resources/i18n/spark_i18n_de.properties | 1 + 3 files changed, 51 insertions(+), 34 deletions(-) diff --git a/src/java/org/jivesoftware/sparkimpl/profile/VCardEditor.java b/src/java/org/jivesoftware/sparkimpl/profile/VCardEditor.java index 7b9091d2..efecab3e 100644 --- a/src/java/org/jivesoftware/sparkimpl/profile/VCardEditor.java +++ b/src/java/org/jivesoftware/sparkimpl/profile/VCardEditor.java @@ -64,6 +64,7 @@ public class VCardEditor { private HomePanel homePanel; private AvatarPanel avatarPanel; private JLabel avatarLabel; + private VCard _vcard; /** * Displays the VCard for an individual. @@ -184,8 +185,9 @@ public class VCardEditor { tabbedPane.addTab(Res.getString("tab.avatar"), avatarPanel); // Build the UI + _vcard = vCard; buildUI(vCard); - + final JOptionPane pane; final JDialog dlg; @@ -206,7 +208,7 @@ public class VCardEditor { mainPanel.add(titlePanel, BorderLayout.NORTH); // The user should only be able to close this dialog. - Object[] options = { Res.getString("close") }; + Object[] options = { Res.getString("close"), Res.getString("refresh") }; pane = new JOptionPane(tabbedPane, JOptionPane.PLAIN_MESSAGE, JOptionPane.OK_CANCEL_OPTION, null, options, options[0]); @@ -221,7 +223,6 @@ public class VCardEditor { dlg.setResizable(true); dlg.setContentPane(mainPanel); dlg.setLocationRelativeTo(parent); - PropertyChangeListener changeListener = new PropertyChangeListener() { public void propertyChange(PropertyChangeEvent e) { Object o = pane.getValue(); @@ -236,6 +237,14 @@ public class VCardEditor { pane.removePropertyChangeListener(this); dlg.dispose(); } + + if (Res.getString("refresh").equals(value)) { + VCardManager manager = SparkManager.getVCardManager(); + VCard card = manager.reloadVCard(vCard.getJabberId()); + fillUI(card); + saveVCard(); + } + } }; @@ -329,38 +338,9 @@ public class VCardEditor { * the vcard used to build the UI. */ private void buildUI(VCard vcard) { - personalPanel.setFirstName(vcard.getFirstName()); - personalPanel.setMiddleName(vcard.getMiddleName()); - personalPanel.setLastName(vcard.getLastName()); - personalPanel.setEmailAddress(vcard.getEmailHome()); - personalPanel.setNickname(vcard.getNickName()); - personalPanel.setJID(vcard.getJabberId()); - - businessPanel.setCompany(vcard.getOrganization()); - businessPanel.setDepartment(vcard.getOrganizationUnit()); - businessPanel.setStreetAddress(vcard.getAddressFieldWork("STREET")); - businessPanel.setCity(vcard.getAddressFieldWork("LOCALITY")); - businessPanel.setState(vcard.getAddressFieldWork("REGION")); - businessPanel.setZipCode(vcard.getAddressFieldWork("PCODE")); - businessPanel.setCountry(vcard.getAddressFieldWork("CTRY")); - businessPanel.setJobTitle(vcard.getField("TITLE")); - businessPanel.setPhone(vcard.getPhoneWork("VOICE")); - businessPanel.setFax(vcard.getPhoneWork("FAX")); - businessPanel.setPager(vcard.getPhoneWork("PAGER")); - businessPanel.setMobile(vcard.getPhoneWork("CELL")); - businessPanel.setWebPage(vcard.getField("URL")); - - // Load Home Info - homePanel.setStreetAddress(vcard.getAddressFieldHome("STREET")); - homePanel.setCity(vcard.getAddressFieldHome("LOCALITY")); - homePanel.setState(vcard.getAddressFieldHome("REGION")); - homePanel.setZipCode(vcard.getAddressFieldHome("PCODE")); - homePanel.setCountry(vcard.getAddressFieldHome("CTRY")); - homePanel.setPhone(vcard.getPhoneHome("VOICE")); - homePanel.setFax(vcard.getPhoneHome("FAX")); - homePanel.setPager(vcard.getPhoneHome("PAGER")); - homePanel.setMobile(vcard.getPhoneHome("CELL")); + fillUI(vcard); + // Set avatar byte[] bytes = vcard.getAvatar(); if (bytes != null && bytes.length > 0) { @@ -375,6 +355,41 @@ public class VCardEditor { } } + private void fillUI(VCard vcard){ + personalPanel.setFirstName(vcard.getFirstName()); + personalPanel.setMiddleName(vcard.getMiddleName()); + personalPanel.setLastName(vcard.getLastName()); + personalPanel.setEmailAddress(vcard.getEmailHome()); + personalPanel.setNickname(vcard.getNickName()); + personalPanel.setJID(vcard.getJabberId()); + + businessPanel.setCompany(vcard.getOrganization()); + businessPanel.setDepartment(vcard.getOrganizationUnit()); + businessPanel.setStreetAddress(vcard.getAddressFieldWork("STREET")); + businessPanel.setCity(vcard.getAddressFieldWork("LOCALITY")); + businessPanel.setState(vcard.getAddressFieldWork("REGION")); + businessPanel.setZipCode(vcard.getAddressFieldWork("PCODE")); + businessPanel.setCountry(vcard.getAddressFieldWork("CTRY")); + businessPanel.setJobTitle(vcard.getField("TITLE")); + businessPanel.setPhone(vcard.getPhoneWork("VOICE")); + businessPanel.setFax(vcard.getPhoneWork("FAX")); + businessPanel.setPager(vcard.getPhoneWork("PAGER")); + businessPanel.setMobile(vcard.getPhoneWork("CELL")); + businessPanel.setWebPage(vcard.getField("URL")); + + // Load Home Info + homePanel.setStreetAddress(vcard.getAddressFieldHome("STREET")); + homePanel.setCity(vcard.getAddressFieldHome("LOCALITY")); + homePanel.setState(vcard.getAddressFieldHome("REGION")); + homePanel.setZipCode(vcard.getAddressFieldHome("PCODE")); + homePanel.setCountry(vcard.getAddressFieldHome("CTRY")); + homePanel.setPhone(vcard.getPhoneHome("VOICE")); + homePanel.setFax(vcard.getPhoneHome("FAX")); + homePanel.setPager(vcard.getPhoneHome("PAGER")); + homePanel.setMobile(vcard.getPhoneHome("CELL")); + } + + /** * Saves the VCard. */ diff --git a/src/resources/i18n/spark_i18n.properties b/src/resources/i18n/spark_i18n.properties index 35afa2f0..d345ce5c 100644 --- a/src/resources/i18n/spark_i18n.properties +++ b/src/resources/i18n/spark_i18n.properties @@ -248,6 +248,7 @@ reject = Reject retry = Retry room.name = Room Name save = Save +refresh = Refresh subject = Subject unfiled = Unfiled use.default = Use Default diff --git a/src/resources/i18n/spark_i18n_de.properties b/src/resources/i18n/spark_i18n_de.properties index d5616d16..4aa76a79 100644 --- a/src/resources/i18n/spark_i18n_de.properties +++ b/src/resources/i18n/spark_i18n_de.properties @@ -148,6 +148,7 @@ retry = Wiederholen active = Aktiv not.registered = Nicht registriert save = Speichern +refresh = Aktualisieren yes = Ja no = Nein broadcast = Rundnachricht