diff options
18 files changed, 443 insertions, 567 deletions
diff --git a/src/net/java/sip/communicator/impl/gui/UIServiceImpl.java b/src/net/java/sip/communicator/impl/gui/UIServiceImpl.java index a16f189..3079904 100644 --- a/src/net/java/sip/communicator/impl/gui/UIServiceImpl.java +++ b/src/net/java/sip/communicator/impl/gui/UIServiceImpl.java @@ -921,7 +921,7 @@ public class UIServiceImpl logger.info("Handling registration of a new Plugin Component."); Object component = pluginComponent.getComponent(); - if (component == null || !(component instanceof Component)) + if (!(component instanceof Component)) { logger.error("Plugin Component type is not supported." + "Should provide a plugin in AWT, SWT or Swing."); diff --git a/src/net/java/sip/communicator/impl/gui/main/MainFrame.java b/src/net/java/sip/communicator/impl/gui/main/MainFrame.java index 03a2e3c..f214313 100755 --- a/src/net/java/sip/communicator/impl/gui/main/MainFrame.java +++ b/src/net/java/sip/communicator/impl/gui/main/MainFrame.java @@ -1020,17 +1020,22 @@ public class MainFrame // context. ServiceReference[] serRefs = null; - String osgiFilter = "(|(" - + Container.CONTAINER_ID - + "="+Container.CONTAINER_MAIN_WINDOW.getID()+")" - + "(" + Container.CONTAINER_ID - + "="+Container.CONTAINER_STATUS_BAR.getID()+"))"; - try { - serRefs = GuiActivator.bundleContext.getServiceReferences( - PluginComponent.class.getName(), - osgiFilter); + serRefs + = GuiActivator + .bundleContext + .getServiceReferences( + PluginComponent.class.getName(), + "(|(" + + Container.CONTAINER_ID + + "=" + + Container.CONTAINER_MAIN_WINDOW.getID() + + ")(" + + Container.CONTAINER_ID + + "=" + + Container.CONTAINER_STATUS_BAR.getID() + + "))"); } catch (InvalidSyntaxException exc) { @@ -1039,11 +1044,11 @@ public class MainFrame if (serRefs != null) { - for (int i = 0; i < serRefs.length; i++) + for (ServiceReference serRef : serRefs) { - PluginComponent c = - (PluginComponent) GuiActivator.bundleContext - .getService(serRefs[i]); + PluginComponent c + = (PluginComponent) + GuiActivator.bundleContext.getService(serRef); if (c.isNativeComponent()) nativePluginsTable.put(c, new JPanel()); @@ -1053,9 +1058,10 @@ public class MainFrame Object constraints; if (pluginConstraints != null) - constraints = - UIServiceImpl - .getBorderLayoutConstraintsFromContainer(pluginConstraints); + constraints + = UIServiceImpl + .getBorderLayoutConstraintsFromContainer( + pluginConstraints); else constraints = BorderLayout.SOUTH; @@ -1120,7 +1126,6 @@ public class MainFrame public void pluginComponentRemoved(PluginComponentEvent event) { final PluginComponent pluginComponent = event.getPluginComponent(); - final Container containerID = pluginComponent.getContainer(); if (containerID.equals(Container.CONTAINER_MAIN_WINDOW)) @@ -1137,7 +1142,6 @@ public class MainFrame if (nativePluginsTable.containsKey(pluginComponent)) { final Component c = nativePluginsTable.get(pluginComponent); - final Object finalConstraints = constraints; SwingUtilities.invokeLater(new Runnable() @@ -1167,15 +1171,14 @@ public class MainFrame */ private void removeNativePlugins() { - Object constraints; - for (Map.Entry<PluginComponent, Component> entry : nativePluginsTable - .entrySet()) + for (Map.Entry<PluginComponent, Component> entry + : nativePluginsTable.entrySet()) { PluginComponent pluginComponent = entry.getKey(); Component c = entry.getValue(); - constraints = - UIServiceImpl + Object constraints + = UIServiceImpl .getBorderLayoutConstraintsFromContainer(pluginComponent .getConstraints()); @@ -1196,14 +1199,14 @@ public class MainFrame { this.removeNativePlugins(); - for (Map.Entry<PluginComponent, Component> pluginEntry : nativePluginsTable - .entrySet()) + for (Map.Entry<PluginComponent, Component> pluginEntry + : nativePluginsTable.entrySet()) { PluginComponent plugin = pluginEntry.getKey(); - - Object constraints = - UIServiceImpl.getBorderLayoutConstraintsFromContainer(plugin - .getConstraints()); + Object constraints + = UIServiceImpl + .getBorderLayoutConstraintsFromContainer( + plugin.getConstraints()); Component c = (Component) plugin.getComponent(); diff --git a/src/net/java/sip/communicator/impl/gui/main/chat/ChatWindow.java b/src/net/java/sip/communicator/impl/gui/main/chat/ChatWindow.java index 10a4f06..4bcba5c 100755 --- a/src/net/java/sip/communicator/impl/gui/main/chat/ChatWindow.java +++ b/src/net/java/sip/communicator/impl/gui/main/chat/ChatWindow.java @@ -76,9 +76,9 @@ public class ChatWindow private final ContactPhotoPanel contactPhotoPanel = new ContactPhotoPanel(); - private MessageWindowMenuBar menuBar; + private final MessageWindowMenuBar menuBar; - private MainToolBar mainToolBar; + private final MainToolBar mainToolBar; /** * Creates an instance of <tt>ChatWindow</tt> by passing to it an instance @@ -830,8 +830,9 @@ public class ChatWindow { for (ServiceReference serRef : serRefs) { - PluginComponent c = (PluginComponent) GuiActivator - .bundleContext.getService(serRef); + PluginComponent c + = (PluginComponent) + GuiActivator .bundleContext.getService(serRef); Object borderLayoutConstraint = UIServiceImpl .getBorderLayoutConstraintsFromContainer(c.getConstraints()); diff --git a/src/net/java/sip/communicator/impl/gui/main/chat/menus/MessageWindowMenuBar.java b/src/net/java/sip/communicator/impl/gui/main/chat/menus/MessageWindowMenuBar.java index 888eea7..de11c13 100644 --- a/src/net/java/sip/communicator/impl/gui/main/chat/menus/MessageWindowMenuBar.java +++ b/src/net/java/sip/communicator/impl/gui/main/chat/menus/MessageWindowMenuBar.java @@ -177,25 +177,39 @@ public class MessageWindowMenuBar if (serRefs != null) { - for (int i = 0; i < serRefs.length; i ++) + for (ServiceReference serRef : serRefs) { - PluginComponent component = (PluginComponent) GuiActivator - .bundleContext.getService(serRefs[i]);; + PluginComponent component + = (PluginComponent) + GuiActivator.bundleContext.getService(serRef); - this.add((Component)component.getComponent()); + addPluginComponent(component); } } GuiActivator.getUIService().addPluginComponentListener(this); } + /** + * Adds the component of a specific <code>PluginComponent</code> to this + * <code>JMenuBar</code>. + * + * @param component + * the <code>PluginComponent</code> which is to have its + * component added to this <code>JMenuBar</code> + */ + private void addPluginComponent(PluginComponent component) + { + add((Component) component.getComponent(), getComponentIndex(helpMenu)); + } + public void pluginComponentAdded(PluginComponentEvent event) { PluginComponent c = event.getPluginComponent(); if (c.getContainer().equals(Container.CONTAINER_CHAT_MENU_BAR)) { - this.add((Component) c.getComponent()); + addPluginComponent(c); this.revalidate(); this.repaint(); diff --git a/src/net/java/sip/communicator/impl/gui/main/chat/toolBars/MainToolBar.java b/src/net/java/sip/communicator/impl/gui/main/chat/toolBars/MainToolBar.java index 7d25ec1..87d2447 100644 --- a/src/net/java/sip/communicator/impl/gui/main/chat/toolBars/MainToolBar.java +++ b/src/net/java/sip/communicator/impl/gui/main/chat/toolBars/MainToolBar.java @@ -340,10 +340,11 @@ public class MainToolBar if (serRefs != null) { - for (int i = 0; i < serRefs.length; i ++) + for (ServiceReference serRef : serRefs) { - PluginComponent component = (PluginComponent) GuiActivator - .bundleContext.getService(serRefs[i]); + PluginComponent component + = (PluginComponent) + GuiActivator.bundleContext.getService(serRef); this.add((Component)component.getComponent()); diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/ContactListPane.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/ContactListPane.java index 323eeba..c5d242f 100755 --- a/src/net/java/sip/communicator/impl/gui/main/contactlist/ContactListPane.java +++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/ContactListPane.java @@ -787,11 +787,11 @@ public class ContactListPane if (serRefs != null) { - for (int i = 0; i < serRefs.length; i ++) + for (ServiceReference serRef : serRefs) { - PluginComponent component = (PluginComponent) GuiActivator - .bundleContext - .getService(serRefs[i]); + PluginComponent component + = (PluginComponent) + GuiActivator.bundleContext.getService(serRef); Object selectedValue = mainFrame.getContactListPanel().getContactList() diff --git a/src/net/java/sip/communicator/impl/gui/main/menus/ExtendedQuickMenu.java b/src/net/java/sip/communicator/impl/gui/main/menus/ExtendedQuickMenu.java index 453d9df..da40396 100644 --- a/src/net/java/sip/communicator/impl/gui/main/menus/ExtendedQuickMenu.java +++ b/src/net/java/sip/communicator/impl/gui/main/menus/ExtendedQuickMenu.java @@ -338,10 +338,12 @@ public class ExtendedQuickMenu } } + Component moreButtonComponent = (Component) moreButton.getComponent(); + if (moreButton.getItemsCount() > 0) - this.add(moreButton, BorderLayout.EAST); + this.add(moreButtonComponent, BorderLayout.EAST); else - this.remove(moreButton); + this.remove(moreButtonComponent); this.revalidate(); this.repaint(); diff --git a/src/net/java/sip/communicator/impl/gui/main/menus/MoreButton.java b/src/net/java/sip/communicator/impl/gui/main/menus/MoreButton.java index bad9432..ae53c96 100644 --- a/src/net/java/sip/communicator/impl/gui/main/menus/MoreButton.java +++ b/src/net/java/sip/communicator/impl/gui/main/menus/MoreButton.java @@ -14,79 +14,60 @@ import javax.swing.*; import net.java.sip.communicator.impl.gui.*; import net.java.sip.communicator.impl.gui.utils.*; -import net.java.sip.communicator.service.contactlist.*; import net.java.sip.communicator.service.gui.*; import net.java.sip.communicator.service.gui.Container; -import net.java.sip.communicator.service.protocol.*; /** * @author Yana Stamcheva */ public class MoreButton - extends JLabel - implements PluginComponent, - MouseListener, - FocusListener + extends AbstractPluginComponent + implements FocusListener, + MouseListener { - private boolean isMouseOver = false; + private JLabel label; - private final JPopupMenu menu = new JPopupMenu(); + private JPopupMenu menu; private final Map<String, Component> menuItemsTable = new Hashtable<String, Component>(); public MoreButton() { - super(new ImageIcon(ImageLoader.getImage(ImageLoader.MORE_BUTTON)), - JLabel.CENTER); - - this.setVerticalTextPosition(SwingConstants.BOTTOM); - this.setHorizontalTextPosition(SwingConstants.CENTER); - - this.setToolTipText( - GuiActivator.getResources().getI18NString("service.gui.MORE")); - - this.addMouseListener(this); - - this.addFocusListener(this); + super(Container.CONTAINER_MAIN_TOOL_BAR); } public Object getComponent() { - return this; - } + if (label == null) + { + label + = new JLabel( + new ImageIcon( + ImageLoader.getImage(ImageLoader.MORE_BUTTON)), + JLabel.CENTER); - public String getConstraints() - { - return null; - } + label.setVerticalTextPosition(SwingConstants.BOTTOM); + label.setHorizontalTextPosition(SwingConstants.CENTER); - public Container getContainer() - { - return Container.CONTAINER_MAIN_TOOL_BAR; + label.setToolTipText( + GuiActivator.getResources().getI18NString("service.gui.MORE")); + + label.addFocusListener(this); + label.addMouseListener(this); + } + return label; } public String getName() { - return this.getText(); + return ""; } public void setMouseOver(boolean isMouseOver) { - this.isMouseOver = isMouseOver; - this.repaint(); - } - - public void setCurrentContact(Contact contact) - { - } - - public void setCurrentContact(MetaContact metaContact) - { - } - - public void setCurrentContactGroup(MetaContactGroup metaGroup) - { + if (label != null) + label.repaint(); } public void mouseClicked(MouseEvent e) @@ -105,15 +86,20 @@ public class MoreButton public void mousePressed(MouseEvent e) { - requestFocus(); + if (label != null) + return; + + label.requestFocus(); + if (menu == null) + menu = createMenu(); if (!menu.isVisible()) { - Point locationOnScreen = getLocationOnScreen(); + Point locationOnScreen = label.getLocationOnScreen(); menu.setLocation( locationOnScreen.x, - locationOnScreen.y + getHeight()); + locationOnScreen.y + label.getHeight()); menu.setVisible(true); } @@ -125,23 +111,14 @@ public class MoreButton { } - /** - * Specifies the position of this component in the container, where it - * will be added. - * @return 0 to indicate the first position in the container. - */ - public int getPositionIndex() - { - return -1; - } - public void focusGained(FocusEvent arg0) { } public void focusLost(FocusEvent arg0) { - menu.setVisible(false); + if (menu != null) + menu.setVisible(false); } public void addMenuItem(final JComponent c) @@ -171,13 +148,17 @@ public class MoreButton l.mouseReleased(mouseEvent); l.mouseClicked(mouseEvent); } - - menu.setVisible(false); + + if (menu != null) + menu.setVisible(false); } }); - this.menu.add(item); - this.menuItemsTable.put(name, item); + if (menu == null) + menu = createMenu(); + menu.add(item); + + menuItemsTable.put(name, item); } } @@ -188,7 +169,8 @@ public class MoreButton if (item != null) { - this.menu.remove(item); + if (menu != null) + menu.remove(item); menuItemsTable.remove(name); } } @@ -203,8 +185,8 @@ public class MoreButton return menuItemsTable.containsKey(name); } - public boolean isNativeComponent() + private JPopupMenu createMenu() { - return false; + return new JPopupMenu(); } -}
\ No newline at end of file +} diff --git a/src/net/java/sip/communicator/plugin/branding/AboutWindowPluginComponent.java b/src/net/java/sip/communicator/plugin/branding/AboutWindowPluginComponent.java index e9be610..0825402 100644 --- a/src/net/java/sip/communicator/plugin/branding/AboutWindowPluginComponent.java +++ b/src/net/java/sip/communicator/plugin/branding/AboutWindowPluginComponent.java @@ -10,12 +10,10 @@ import java.awt.event.*; import javax.swing.*;
-import net.java.sip.communicator.service.contactlist.*;
import net.java.sip.communicator.service.gui.*;
-import net.java.sip.communicator.service.protocol.*;
public class AboutWindowPluginComponent
- implements PluginComponent
+ extends AbstractPluginComponent
{
/**
@@ -27,45 +25,36 @@ public class AboutWindowPluginComponent AboutWindow.showAboutWindow();
}
- private final JMenuItem aboutMenuItem;
+ private JMenuItem aboutMenuItem;
- private final Container container;
-
- public AboutWindowPluginComponent(Container c)
+ public AboutWindowPluginComponent(Container container)
{
- this.container = c;
-
- aboutMenuItem = new JMenuItem(getName());
- aboutMenuItem
- .setMnemonic(
- BrandingActivator
- .getResources()
- .getI18nMnemonic("plugin.branding.ABOUT_MENU_ENTRY"));
-
- aboutMenuItem.addActionListener(new ActionListener()
- {
- public void actionPerformed(ActionEvent e)
- {
- AboutWindowPluginComponent.actionPerformed();
- }
- });
+ super(container);
}
public Object getComponent()
{
+ if (aboutMenuItem == null)
+ {
+ aboutMenuItem = new JMenuItem(getName());
+ aboutMenuItem
+ .setMnemonic(
+ BrandingActivator
+ .getResources()
+ .getI18nMnemonic(
+ "plugin.branding.ABOUT_MENU_ENTRY"));
+
+ aboutMenuItem.addActionListener(new ActionListener()
+ {
+ public void actionPerformed(ActionEvent e)
+ {
+ AboutWindowPluginComponent.actionPerformed();
+ }
+ });
+ }
return aboutMenuItem;
}
- public String getConstraints()
- {
- return null;
- }
-
- public Container getContainer()
- {
- return this.container;
- }
-
public String getName()
{
return
@@ -73,26 +62,4 @@ public class AboutWindowPluginComponent .getResources()
.getI18NString("plugin.branding.ABOUT_MENU_ENTRY");
}
-
- public void setCurrentContact(Contact contact)
- {
- }
-
- public void setCurrentContact(MetaContact metaContact)
- {
- }
-
- public void setCurrentContactGroup(MetaContactGroup metaGroup)
- {
- }
-
- public int getPositionIndex()
- {
- return -1;
- }
-
- public boolean isNativeComponent()
- {
- return false;
- }
}
diff --git a/src/net/java/sip/communicator/plugin/callhistoryform/ExtendedCallHistorySearchItem.java b/src/net/java/sip/communicator/plugin/callhistoryform/ExtendedCallHistorySearchItem.java index 0d3e28a..a708a5f 100644 --- a/src/net/java/sip/communicator/plugin/callhistoryform/ExtendedCallHistorySearchItem.java +++ b/src/net/java/sip/communicator/plugin/callhistoryform/ExtendedCallHistorySearchItem.java @@ -4,7 +4,6 @@ * Distributable under LGPL license. * See terms of license at gnu.org. */ - package net.java.sip.communicator.plugin.callhistoryform; import java.awt.*; @@ -12,10 +11,8 @@ import java.awt.event.*; import javax.swing.*; -import net.java.sip.communicator.service.contactlist.*; import net.java.sip.communicator.service.gui.*; import net.java.sip.communicator.service.gui.Container; -import net.java.sip.communicator.service.protocol.*; /** * The <tt>ExtendedCallHistorySearchButton</tt> is the button that will be @@ -25,10 +22,10 @@ import net.java.sip.communicator.service.protocol.*; * @author Bourdon Maxime & Meyer Thomas */ public class ExtendedCallHistorySearchItem - implements ActionListener, - PluginComponent + extends AbstractPluginComponent + implements ActionListener { - private JMenuItem historyMenuItem + private final JMenuItem historyMenuItem = new JMenuItem(ExtendedCallHistorySearchActivator.getResources() .getI18NString("plugin.callhistoryform.TITLE"), ExtendedCallHistorySearchActivator.getResources() @@ -41,6 +38,8 @@ public class ExtendedCallHistorySearchItem */ public ExtendedCallHistorySearchItem() { + super(Container.CONTAINER_TOOLS_MENU); + this.historyMenuItem.setMnemonic( ExtendedCallHistorySearchActivator.getResources() .getI18nMnemonic("plugin.callhistoryform.TITLE")); @@ -55,11 +54,14 @@ public class ExtendedCallHistorySearchItem if (callHistorySearchDialog == null) { callHistorySearchDialog = new ExtendedCallHistorySearchDialog(); - callHistorySearchDialog.setLocation(Toolkit.getDefaultToolkit() - .getScreenSize().width - / 2 - callHistorySearchDialog.getWidth() / 2, Toolkit - .getDefaultToolkit().getScreenSize().height - / 2 - callHistorySearchDialog.getHeight() / 2); + + Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); + callHistorySearchDialog + .setLocation( + screenSize.width / 2 + - callHistorySearchDialog.getWidth() / 2, + screenSize.height / 2 + - callHistorySearchDialog.getHeight() / 2); } callHistorySearchDialog.loadHistoryCalls(); @@ -72,40 +74,8 @@ public class ExtendedCallHistorySearchItem return historyMenuItem; } - public String getConstraints() - { - return null; - } - - public Container getContainer() - { - return Container.CONTAINER_TOOLS_MENU; - } - public String getName() { return historyMenuItem.getText(); } - - public void setCurrentContact(Contact contact) - { - } - - public void setCurrentContact(MetaContact metaContact) - { - } - - public void setCurrentContactGroup(MetaContactGroup metaGroup) - { - } - - public int getPositionIndex() - { - return -1; - } - - public boolean isNativeComponent() - { - return false; - } } diff --git a/src/net/java/sip/communicator/plugin/contactinfo/ContactInfoMenuItem.java b/src/net/java/sip/communicator/plugin/contactinfo/ContactInfoMenuItem.java index 1b9ee22..6e0e4aa 100644 --- a/src/net/java/sip/communicator/plugin/contactinfo/ContactInfoMenuItem.java +++ b/src/net/java/sip/communicator/plugin/contactinfo/ContactInfoMenuItem.java @@ -1,10 +1,10 @@ -package net.java.sip.communicator.plugin.contactinfo;
/*
* SIP Communicator, the OpenSource Java VoIP and Instant Messaging client.
*
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
+package net.java.sip.communicator.plugin.contactinfo;
import java.awt.*;
import java.awt.event.*;
@@ -14,15 +14,14 @@ import javax.swing.*; import net.java.sip.communicator.service.contactlist.*;
import net.java.sip.communicator.service.gui.*;
import net.java.sip.communicator.service.gui.Container;
-import net.java.sip.communicator.service.protocol.*;
/**
*
* @author Adam Goldstein
*/
public class ContactInfoMenuItem
- implements PluginComponent,
- ActionListener
+ extends AbstractPluginComponent
+ implements ActionListener
{
private JMenuItem menuItem
= new JMenuItem(Resources.getString("service.gui.CONTACT_INFO"),
@@ -36,12 +35,11 @@ public class ContactInfoMenuItem */
public ContactInfoMenuItem()
{
+ super(Container.CONTAINER_CONTACT_RIGHT_BUTTON_MENU);
+
menuItem.addActionListener(this);
}
- public void setCurrentContact(Contact contact)
- {}
-
/**
* Sets the currently selected <tt>MetaContact</tt>.
* @param metaContact the currently selected meta contact
@@ -51,23 +49,17 @@ public class ContactInfoMenuItem this.metaContact = metaContact;
}
- public void setCurrentContactGroup(MetaContactGroup metaGroup)
- {}
-
/**
* Initializes and shows the contact details dialog.
*/
public void actionPerformed(ActionEvent e)
{
ContactInfoDialog cinfoDialog = new ContactInfoDialog(metaContact);
+ Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
cinfoDialog.setLocation(
- Toolkit.getDefaultToolkit().getScreenSize().width/2
- - cinfoDialog.getWidth()/2,
- Toolkit.getDefaultToolkit().getScreenSize().height/2
- - cinfoDialog.getHeight()/2
- );
-
+ screenSize.width/2 - cinfoDialog.getWidth()/2,
+ screenSize.height/2 - cinfoDialog.getHeight()/2);
cinfoDialog.setVisible(true);
}
@@ -76,28 +68,8 @@ public class ContactInfoMenuItem return menuItem;
}
- public String getConstraints()
- {
- return null;
- }
-
- public Container getContainer()
- {
- return Container.CONTAINER_CONTACT_RIGHT_BUTTON_MENU;
- }
-
public String getName()
{
return menuItem.getText();
}
-
- public int getPositionIndex()
- {
- return -1;
- }
-
- public boolean isNativeComponent()
- {
- return false;
- }
-}
\ No newline at end of file +}
diff --git a/src/net/java/sip/communicator/plugin/exampleplugin/ExamplePluginMenuItem.java b/src/net/java/sip/communicator/plugin/exampleplugin/ExamplePluginMenuItem.java index 3346226..85d105e 100644 --- a/src/net/java/sip/communicator/plugin/exampleplugin/ExamplePluginMenuItem.java +++ b/src/net/java/sip/communicator/plugin/exampleplugin/ExamplePluginMenuItem.java @@ -6,15 +6,14 @@ */ package net.java.sip.communicator.plugin.exampleplugin; -import java.awt.Toolkit; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; +import java.awt.*; +import java.awt.event.*; -import javax.swing.JMenuItem; +import javax.swing.*; import net.java.sip.communicator.service.contactlist.*; import net.java.sip.communicator.service.gui.*; -import net.java.sip.communicator.service.protocol.*; +import net.java.sip.communicator.service.gui.Container; /** * The <tt>ExamplePluginMenuItem</tt> is a <tt>JMenuItem</tt> that implements @@ -26,10 +25,11 @@ import net.java.sip.communicator.service.protocol.*; * @author Yana Stamcheva */ public class ExamplePluginMenuItem - extends JMenuItem - implements PluginComponent, - ActionListener + extends AbstractPluginComponent + implements ActionListener { + private JMenuItem menuItem; + private MetaContact metaContact; /** @@ -37,94 +37,58 @@ public class ExamplePluginMenuItem */ public ExamplePluginMenuItem() { - super("Example plugin"); - - this.addActionListener(this); - } - - public void setCurrentContact(Contact contact) - {} - - /** - * Sets the current <tt>MetaContact</tt>. This in the case of the contact - * right button menu container would be the underlying contact in the - * contact list. - * - * @param metaContact the <tt>MetaContact</tt> to set. - * - * @see PluginComponent#setCurrentContact(MetaContact) - */ - public void setCurrentContact(MetaContact metaContact) - { - this.metaContact = metaContact; + super(Container.CONTAINER_CONTACT_RIGHT_BUTTON_MENU); } /** - * Sets the current <tt>MetaContactGroup</tt>. - * - * @see PluginComponent#setCurrentContactGroup(MetaContactGroup) - */ - public void setCurrentContactGroup(MetaContactGroup metaGroup) - {} - - /** * Listens for events triggered by user clicks on this menu item. Opens * the <tt>PluginDialog</tt>. */ public void actionPerformed(ActionEvent e) { PluginDialog pluginDialog = new PluginDialog(metaContact); + Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); - pluginDialog.setLocation( - Toolkit.getDefaultToolkit().getScreenSize().width/2 - - pluginDialog.getWidth()/2, - Toolkit.getDefaultToolkit().getScreenSize().height/2 - - pluginDialog.getHeight()/2 - ); + pluginDialog + .setLocation( + screenSize.width/2 - pluginDialog.getWidth()/2, + screenSize.height/2 - pluginDialog.getHeight()/2); pluginDialog.setVisible(true); } - /** - * No constraints to return. - * - * @see PluginComponent#getConstraints() + /* + * Implements PluginComponent#getComponent(). */ - public String getConstraints() + public Object getComponent() { - return null; + if (menuItem == null) + { + menuItem = new JMenuItem(getName()); + menuItem.addActionListener(this); + } + return menuItem; } - /** - * Returns the container where we would like to add this menu item. In our - * case this is the contact right button menu. - * - * @see PluginComponent#getContainer() + /* + * Implements PluginComponent#getName(). */ - public Container getContainer() + public String getName() { - return Container.CONTAINER_CONTACT_RIGHT_BUTTON_MENU; + return "Example plugin"; } /** - * Returns -1 as a position index, to indicate that the order in which this - * menu item will be added in the parent container is not important. + * Sets the current <tt>MetaContact</tt>. This in the case of the contact + * right button menu container would be the underlying contact in the + * contact list. * - * @see PluginComponent#getPositionIndex() - */ - public int getPositionIndex() - { - return -1; - } - - /** - * Returns <code>false</code> to indicate that this is not a native - * component. + * @param metaContact the <tt>MetaContact</tt> to set. * - * @see PluginComponent#isNativeComponent() + * @see PluginComponent#setCurrentContact(MetaContact) */ - public boolean isNativeComponent() + public void setCurrentContact(MetaContact metaContact) { - return false; + this.metaContact = metaContact; } } diff --git a/src/net/java/sip/communicator/plugin/otr/OtrMetaContactButton.java b/src/net/java/sip/communicator/plugin/otr/OtrMetaContactButton.java index 4ba5fff..17cdf79 100644 --- a/src/net/java/sip/communicator/plugin/otr/OtrMetaContactButton.java +++ b/src/net/java/sip/communicator/plugin/otr/OtrMetaContactButton.java @@ -14,30 +14,24 @@ import javax.imageio.*; import net.java.otr4j.*; import net.java.otr4j.session.*; import net.java.sip.communicator.service.contactlist.*; -import net.java.sip.communicator.service.gui.Container; import net.java.sip.communicator.service.gui.*; +import net.java.sip.communicator.service.gui.Container; import net.java.sip.communicator.service.protocol.*; import net.java.sip.communicator.util.swing.*; /** - * * @author George Politis - * */ -@SuppressWarnings("serial") public class OtrMetaContactButton - extends SIPCommButton - implements PluginComponent + extends AbstractPluginComponent { + private SIPCommButton button; - private Container container; + private Contact contact; public OtrMetaContactButton(Container container) { - super(null, null); - this.setEnabled(false); - this.setPreferredSize(new Dimension(25, 25)); - this.container = container; + super(container); OtrActivator.scOtrEngine.addListener(new ScOtrEngineListener() { @@ -79,58 +73,68 @@ public class OtrMetaContactButton setStatus(OtrActivator.scOtrEngine .getSessionStatus(contact)); } - } }); + } - this.addActionListener(new ActionListener() + /** + * Gets the <code>SIPCommButton</code> which is the component of this + * plugin. If the button doesn't exist, it's created. + * + * @return the <code>SIPCommButton</code> which is the component of this + * plugin + */ + private SIPCommButton getButton() + { + if (button == null) { - public void actionPerformed(ActionEvent e) - { - if (contact == null) - return; + button = new SIPCommButton(null, null); + button.setEnabled(false); + button.setPreferredSize(new Dimension(25, 25)); - switch (OtrActivator.scOtrEngine.getSessionStatus(contact)) + button.addActionListener(new ActionListener() + { + public void actionPerformed(ActionEvent e) { - case ENCRYPTED: - case FINISHED: - // Default action for finished and encrypted sessions is end - // session. - OtrActivator.scOtrEngine.endSession(contact); - break; - case PLAINTEXT: - // Default action for finished and plaintext sessions is - // start session. - OtrActivator.scOtrEngine.startSession(contact); - break; + if (contact == null) + return; + + switch (OtrActivator.scOtrEngine.getSessionStatus(contact)) + { + case ENCRYPTED: + case FINISHED: + // Default action for finished and encrypted sessions is + // end session. + OtrActivator.scOtrEngine.endSession(contact); + break; + case PLAINTEXT: + // Default action for finished and plaintext sessions is + // start session. + OtrActivator.scOtrEngine.startSession(contact); + break; + } } - } - }); + }); + } + return button; } + /* + * Implements PluginComponent#getComponent(). Returns the SIPCommButton + * which is the component of this plugin creating it first if it doesn't + * exist. + */ public Object getComponent() { - return this; + return getButton(); } - public String getConstraints() + /* + * Implements PluginComponent#getName(). + */ + public String getName() { - return null; - } - - public Container getContainer() - { - return this.container; - } - - public int getPositionIndex() - { - return -1; - } - - public boolean isNativeComponent() - { - return false; + return ""; } public void setCurrentContact(Contact contact) @@ -142,21 +146,12 @@ public class OtrMetaContactButton public void setCurrentContact(MetaContact metaContact) { - contact = metaContact.getDefaultContact(); - this.setStatus(OtrActivator.scOtrEngine.getSessionStatus(contact)); - this.setPolicy(OtrActivator.scOtrEngine.getContactPolicy(contact)); + setCurrentContact(metaContact.getDefaultContact()); } private void setPolicy(OtrPolicy contactPolicy) { - this.setEnabled(contactPolicy.getEnableManual()); - } - - private Contact contact; - - public void setCurrentContactGroup(MetaContactGroup metaGroup) - { - + getButton().setEnabled(contactPolicy.getEnableManual()); } private void setStatus(SessionStatus status) @@ -164,46 +159,35 @@ public class OtrMetaContactButton if (contact == null) return; + String urlKey; switch (status) { case ENCRYPTED: - try - { - this - .setImage(ImageIO - .read(OtrActivator.resourceService - .getImageURL((OtrActivator.scOtrKeyManager - .isVerified(contact)) ? "plugin.otr.ENCRYPTED_ICON_22x22" - : "plugin.otr.ENCRYPTED_UNVERIFIED_ICON_22x22"))); - } - catch (IOException e) - { - e.printStackTrace(); - } + urlKey + = OtrActivator.scOtrKeyManager.isVerified(contact) + ? "plugin.otr.ENCRYPTED_ICON_22x22" + : "plugin.otr.ENCRYPTED_UNVERIFIED_ICON_22x22"; break; case FINISHED: - try - { - this.setImage(ImageIO.read(OtrActivator.resourceService - .getImageURL("plugin.otr.FINISHED_ICON_22x22"))); - } - catch (IOException e) - { - e.printStackTrace(); - } + urlKey = "plugin.otr.FINISHED_ICON_22x22"; break; case PLAINTEXT: - try - { - this.setImage(ImageIO.read(OtrActivator.resourceService - .getImageURL("plugin.otr.PLAINTEXT_ICON_22x22"))); - } - catch (IOException e) - { - e.printStackTrace(); - } + urlKey = "plugin.otr.PLAINTEXT_ICON_22x22"; break; + default: + return; } - } + try + { + getButton() + .setImage( + ImageIO.read( + OtrActivator.resourceService.getImageURL(urlKey))); + } + catch (IOException e) + { + e.printStackTrace(); + } + } } diff --git a/src/net/java/sip/communicator/plugin/otr/OtrMetaContactMenu.java b/src/net/java/sip/communicator/plugin/otr/OtrMetaContactMenu.java index ad5ed9f..7c4b87a 100644 --- a/src/net/java/sip/communicator/plugin/otr/OtrMetaContactMenu.java +++ b/src/net/java/sip/communicator/plugin/otr/OtrMetaContactMenu.java @@ -5,7 +5,7 @@ */ package net.java.sip.communicator.plugin.otr; -import java.awt.Component; /* Explicit import required */ +import java.awt.*; import java.awt.event.*; import java.util.*; @@ -13,83 +13,93 @@ import javax.swing.*; import net.java.sip.communicator.service.contactlist.*; import net.java.sip.communicator.service.gui.*; +import net.java.sip.communicator.service.gui.Container; import net.java.sip.communicator.service.protocol.*; /** - * * @author George Politis - * */ -@SuppressWarnings("serial") public class OtrMetaContactMenu - extends JMenu - implements PluginComponent + extends AbstractPluginComponent { - private final Container container; + /** + * The <code>JMenu</code> which is the component of this plugin. + */ + private JMenu menu; public OtrMetaContactMenu(Container container) { - - this.container = container; - if (Container.CONTAINER_CONTACT_RIGHT_BUTTON_MENU.equals(container)) - { - Icon icon = - OtrActivator.resourceService - .getImage("plugin.otr.MENU_ITEM_ICON_16x16"); - - if (icon != null) - this.setIcon(icon); - } - - this.setText(OtrActivator.resourceService - .getI18NString("plugin.otr.menu.TITLE")); - } - - public String getConstraints() - { - return null; + super(container); } + /* + * Implements PluginComponent#getComponent(). Returns the JMenu which is + * the component of this plugin creating it first if it doesn't exist. + */ public Component getComponent() { - return this; + return getMenu(); } - public Container getContainer() + /** + * Gets the <code>JMenu</code> which is the component of this plugin. If it + * still doesn't exist, it's created. + * + * @return the <code>JMenu</code> which is the component of this plugin + */ + private JMenu getMenu() { - return this.container; - } + if (menu == null) + { + menu = new JMenu(); - public int getPositionIndex() - { - return -1; - } + if (Container.CONTAINER_CONTACT_RIGHT_BUTTON_MENU + .equals(getContainer())) + { + Icon icon + = OtrActivator + .resourceService + .getImage("plugin.otr.MENU_ITEM_ICON_16x16"); - public boolean isNativeComponent() - { - return false; + if (icon != null) + menu.setIcon(icon); + } + + menu.setText(getName()); + } + return menu; } - public void setCurrentContact(Contact contact) + /* + * Implements PluginComponent#getName(). + */ + public String getName() { + return + OtrActivator + .resourceService + .getI18NString("plugin.otr.menu.TITLE"); } - + public void setCurrentContact(MetaContact metaContact) { // Rebuild menu. - this.removeAll(); + if (menu != null) + menu.removeAll(); if (metaContact == null) return; + JMenu menu = getMenu(); + Iterator<Contact> contacts = metaContact.getContacts(); while (contacts.hasNext()) { - this.add(new OtrContactMenu(contacts.next())); + menu.add(new OtrContactMenu(contacts.next())); } - this.addSeparator(); + menu.addSeparator(); JMenuItem whatsThis = new JMenuItem(); whatsThis.setIcon(OtrActivator.resourceService @@ -103,10 +113,6 @@ public class OtrMetaContactMenu OtrActivator.scOtrEngine.launchHelp(); } }); - this.add(whatsThis); - } - - public void setCurrentContactGroup(MetaContactGroup metaGroup) - { + menu.add(whatsThis); } } diff --git a/src/net/java/sip/communicator/plugin/profiler4j/SettingsWindowMenuEntry.java b/src/net/java/sip/communicator/plugin/profiler4j/SettingsWindowMenuEntry.java index 083c936..9813138 100644 --- a/src/net/java/sip/communicator/plugin/profiler4j/SettingsWindowMenuEntry.java +++ b/src/net/java/sip/communicator/plugin/profiler4j/SettingsWindowMenuEntry.java @@ -6,26 +6,28 @@ */
package net.java.sip.communicator.plugin.profiler4j;
-/**
- * Menu entry for the profiler plug-in
- *
- * @author Vladimir Skarupelov
- */
import java.awt.event.*;
+
import javax.swing.*;
-import net.java.sip.communicator.service.contactlist.*;
+
import net.java.sip.communicator.service.gui.*;
-import net.java.sip.communicator.service.protocol.*;
import net.sf.profiler4j.console.*;
-public class SettingsWindowMenuEntry implements PluginComponent
+/**
+ * Menu entry for the profiler plug-in
+ *
+ * @author Vladimir Skarupelov
+ */
+public class SettingsWindowMenuEntry
+ extends AbstractPluginComponent
{
private static final String PROFILER_NAME = "plugin.profiler.PLUGIN_NAME";
private JMenuItem settingsMenuEntry;
- private Container container;
public SettingsWindowMenuEntry(Container container)
{
+ super(container);
+
settingsMenuEntry = new JMenuItem(Resources.getString( PROFILER_NAME ));
settingsMenuEntry.addActionListener(new ActionListener()
{
@@ -44,7 +46,6 @@ public class SettingsWindowMenuEntry implements PluginComponent f.setVisible(true);
}
});
- this.container = container;
}
public Object getComponent()
@@ -52,39 +53,8 @@ public class SettingsWindowMenuEntry implements PluginComponent return settingsMenuEntry;
}
- public String getConstraints()
- {
- return null;
- }
-
- public Container getContainer()
- {
- return container;
- }
-
public String getName()
{
return Resources.getString( PROFILER_NAME );
}
-
- public void setCurrentContact(Contact contact)
- {
- }
-
- public void setCurrentContact(MetaContact metaContact)
- {
- }
-
- public void setCurrentContactGroup(MetaContactGroup metaGroup)
- {
- }
-
- public int getPositionIndex()
- {
- return -1;
- }
-
- public boolean isNativeComponent() {
- return false;
- }
}
diff --git a/src/net/java/sip/communicator/plugin/updatechecker/UpdateCheckActivator.java b/src/net/java/sip/communicator/plugin/updatechecker/UpdateCheckActivator.java index 32d66ca..b329fc5 100644 --- a/src/net/java/sip/communicator/plugin/updatechecker/UpdateCheckActivator.java +++ b/src/net/java/sip/communicator/plugin/updatechecker/UpdateCheckActivator.java @@ -18,7 +18,6 @@ import javax.swing.*; import net.java.sip.communicator.service.browserlauncher.*; import net.java.sip.communicator.service.configuration.*; -import net.java.sip.communicator.service.contactlist.*; import net.java.sip.communicator.service.gui.*; import net.java.sip.communicator.service.gui.Container; import net.java.sip.communicator.service.protocol.*; @@ -603,17 +602,15 @@ public class UpdateCheckActivator * The menu entry under tools menu. */ private class UpdateMenuButtonComponent - implements PluginComponent + extends AbstractPluginComponent { - private final Container container; - private final JMenuItem updateMenuItem = new JMenuItem(getResources(). getI18NString("plugin.updatechecker.UPDATE_MENU_ENTRY")); - UpdateMenuButtonComponent(Container c) + UpdateMenuButtonComponent(Container container) { - this.container = c; + super(container); updateMenuItem.addActionListener(new ActionListener() { @@ -630,42 +627,10 @@ public class UpdateCheckActivator "plugin.updatechecker.UPDATE_MENU_ENTRY"); } - public Container getContainer() - { - return this.container; - } - - public String getConstraints() - { - return null; - } - - public int getPositionIndex() - { - return -1; - } - public Object getComponent() { return updateMenuItem; } - - public void setCurrentContact(Contact contact) - { - } - - public void setCurrentContact(MetaContact metaContact) - { - } - - public void setCurrentContactGroup(MetaContactGroup metaGroup) - { - } - - public boolean isNativeComponent() - { - return false; - } } /** diff --git a/src/net/java/sip/communicator/plugin/whiteboard/WhiteboardMenuItem.java b/src/net/java/sip/communicator/plugin/whiteboard/WhiteboardMenuItem.java index 5a7b7cc..b45678b 100644 --- a/src/net/java/sip/communicator/plugin/whiteboard/WhiteboardMenuItem.java +++ b/src/net/java/sip/communicator/plugin/whiteboard/WhiteboardMenuItem.java @@ -21,10 +21,10 @@ import net.java.sip.communicator.service.protocol.*; * @author Julien Waechter */ public class WhiteboardMenuItem - implements PluginComponent, - ActionListener + extends AbstractPluginComponent + implements ActionListener { - private JMenu whiteboardMenu + private final JMenu whiteboardMenu = new JMenu(Resources.getString("plugin.whiteboard.MENU_ITEM")); /** @@ -35,7 +35,7 @@ public class WhiteboardMenuItem /** * The Whiteboard session manager */ - private WhiteboardSessionManager session; + private final WhiteboardSessionManager session; /** * WhiteboardMenuItem constructor. @@ -44,6 +44,8 @@ public class WhiteboardMenuItem */ public WhiteboardMenuItem (WhiteboardSessionManager session) { + super(Container.CONTAINER_CONTACT_RIGHT_BUTTON_MENU); + this.session = session; this.whiteboardMenu.setIcon ( Resources.getImage ("plugin.whiteboard.MPEN_ICON")); @@ -64,10 +66,10 @@ public class WhiteboardMenuItem this.whiteboardMenu.removeAll(); - Iterator iter = metaContact.getContacts(); + Iterator<Contact> iter = metaContact.getContacts(); while (iter.hasNext()) { - Contact contact = (Contact)iter.next(); + Contact contact = iter.next(); ProtocolProviderService pps = contact.getProtocolProvider(); OperationSetWhiteboarding opSetWb = (OperationSetWhiteboarding) @@ -110,11 +112,11 @@ public class WhiteboardMenuItem public void actionPerformed (ActionEvent e) { String itemID = ((JMenuItem)e.getSource()).getName(); - Iterator i = this.metaContact.getContacts(); + Iterator<Contact> i = this.metaContact.getContacts(); while(i.hasNext()) { - Contact contact = (Contact)i.next(); + Contact contact = i.next(); String id = contact.getAddress() + contact.getProtocolProvider().getProtocolName(); @@ -124,16 +126,6 @@ public class WhiteboardMenuItem } } - public String getConstraints() - { - return null; - } - - public Container getContainer() - { - return Container.CONTAINER_CONTACT_RIGHT_BUTTON_MENU; - } - public Object getComponent() { if(metaContact == null) @@ -142,10 +134,10 @@ public class WhiteboardMenuItem return whiteboardMenu; } - Iterator iter = metaContact.getContacts(); + Iterator<Contact> iter = metaContact.getContacts(); while (iter.hasNext()) { - Contact contact = (Contact)iter.next(); + Contact contact = iter.next(); ProtocolProviderService pps = contact.getProtocolProvider(); OperationSetWhiteboarding opSetWb = (OperationSetWhiteboarding) @@ -166,14 +158,4 @@ public class WhiteboardMenuItem { return whiteboardMenu.getText(); } - - public int getPositionIndex() - { - return -1; - } - - public boolean isNativeComponent() - { - return false; - } }
\ No newline at end of file diff --git a/src/net/java/sip/communicator/service/gui/AbstractPluginComponent.java b/src/net/java/sip/communicator/service/gui/AbstractPluginComponent.java new file mode 100644 index 0000000..ee9d65c --- /dev/null +++ b/src/net/java/sip/communicator/service/gui/AbstractPluginComponent.java @@ -0,0 +1,93 @@ +/* + * SIP Communicator, the OpenSource Java VoIP and Instant Messaging client. + * + * Distributable under LGPL license. + * See terms of license at gnu.org. + */ +package net.java.sip.communicator.service.gui; + +import net.java.sip.communicator.service.contactlist.*; +import net.java.sip.communicator.service.protocol.*; + +/** + * Provides an abstract base implementation of <code>PluginComponent</code> in + * order to take case of the implementation boilerplate and let implementers + * focus on the specifics of their plugin. + * + * @author Lubomir Marinov + */ +public abstract class AbstractPluginComponent + implements PluginComponent +{ + + /** + * The container in which the component of this plugin is to be added. + */ + private final Container container; + + /** + * Initializes a new <code>AbstractPluginComponent</code> which is to be + * added to a specific <code>Container</code>. + * + * @param container + * the container in which the component of the new plugin is to + * be added + */ + protected AbstractPluginComponent(Container container) + { + this.container = container; + } + + /* + * Implements PluginComponent#getConstraints(). + */ + public String getConstraints() + { + return null; + } + + /* + * Implements PluginComponent#getContainer(). + */ + public Container getContainer() + { + return container; + } + + /* + * Implements PluginComponent#getPositionIndex(). + */ + public int getPositionIndex() + { + return -1; + } + + /* + * Implements PluginComponent#isNativeComponent(). + */ + public boolean isNativeComponent() + { + return false; + } + + /* + * Implements PluginComponent#setCurrentContact(Contact). + */ + public void setCurrentContact(Contact contact) + { + } + + /* + * Implements PluginComponent#setCurrentContact(MetaContact). + */ + public void setCurrentContact(MetaContact metaContact) + { + } + + /* + * Implements PluginComponent#setCurrentContactGroup(MetaContactGroup). + */ + public void setCurrentContactGroup(MetaContactGroup metaGroup) + { + } +} |