From 505be00d1d8f7e4e2cf411fc72be830689fbc022 Mon Sep 17 00:00:00 2001 From: Damian Minkov Date: Thu, 30 Aug 2012 14:31:32 +0000 Subject: [PATCH] Changes the way action is performed on custom actions for source contacts. Fixes displaying notification source contacts. --- .../contactsource/ExternalContactSource.java | 79 +++---------------- .../notifsource/NotificationContact.java | 2 +- .../notifsource/NotificationGroup.java | 2 +- 3 files changed, 14 insertions(+), 69 deletions(-) diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/ExternalContactSource.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/ExternalContactSource.java index 805e00b26..a1f371fa5 100644 --- a/src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/ExternalContactSource.java +++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/contactsource/ExternalContactSource.java @@ -225,33 +225,11 @@ private void initCustomActionButtons() actionButton.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) + public void actionPerformed(ActionEvent event) { - List contactDetails - = SourceUIContact.getContactDetails( - customActionContact); - contactDetails.add( - new SourceUIContact.SourceContactDetail( - customActionContact.getDisplayName(), - customActionContact)); - - UIContactDetailCustomAction contactAction - = new UIContactDetailCustomAction(ca); - - if (contactDetails.size() > 1) + try { - ChooseUIContactDetailPopupMenu - detailsPopupMenu - = new ChooseUIContactDetailPopupMenu( - (JButton) e.getSource(), - contactDetails, - contactAction); - - detailsPopupMenu.showPopupMenu(); - } - else if (contactDetails.size() == 1) - { - JButton button = (JButton) e.getSource(); + JButton button = (JButton)event.getSource(); Point location = new Point(button.getX(), button.getY() + button.getHeight()); @@ -266,11 +244,18 @@ else if (contactDetails.size() == 1) + contactListTree.getPathBounds( selectionPath).y; - contactAction.actionPerformed( - contactDetails.get(0), + ca.actionPerformed( + customActionContact, location.x, location.y); } + catch (OperationFailedException e) + { + new ErrorDialog(null, + GuiActivator.getResources() + .getI18NString("service.gui.ERROR"), + e.getMessage()); + } } }); @@ -465,44 +450,4 @@ public JPopupMenu getRightButtonMenu() return null; } } - - /** - * An implementation of UIContactDetail for a custom action. - */ - private static class UIContactDetailCustomAction - implements UIContactDetailAction - { - /** - * The contact action. - */ - private final ContactAction contactAction; - - /** - * Creates an instance of UIContactDetailCustomAction. - */ - public UIContactDetailCustomAction( - ContactAction contactAction) - { - this.contactAction = contactAction; - } - - /** - * Performs the action on button click. - */ - public void actionPerformed(UIContactDetail contactDetail, int x, int y) - { - try - { - contactAction.actionPerformed( - (SourceContact) contactDetail.getDescriptor(), x, y); - } - catch (OperationFailedException e) - { - new ErrorDialog(null, - GuiActivator.getResources() - .getI18NString("service.gui.ERROR"), - e.getMessage()); - } - } - } } diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/notifsource/NotificationContact.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/notifsource/NotificationContact.java index aab3c20f0..4d0877b81 100644 --- a/src/net/java/sip/communicator/impl/gui/main/contactlist/notifsource/NotificationContact.java +++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/notifsource/NotificationContact.java @@ -32,7 +32,7 @@ * @author Yana Stamcheva */ public class NotificationContact - extends UIContact + extends UIContactImpl implements RegistrationStateChangeListener, ProviderPresenceStatusListener { diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/notifsource/NotificationGroup.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/notifsource/NotificationGroup.java index d56636620..f7d99b2cf 100644 --- a/src/net/java/sip/communicator/impl/gui/main/contactlist/notifsource/NotificationGroup.java +++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/notifsource/NotificationGroup.java @@ -25,7 +25,7 @@ * @author Yana Stamcheva */ public class NotificationGroup - extends UIGroup + extends UIGroupImpl { /** * The type of the notification message, identifying this group.