/*************************************************** * * cismet GmbH, Saarbruecken, Germany * * ... and it just works. * ****************************************************/ package Sirius.navigator.plugin.ui; import Sirius.navigator.method.*; import Sirius.navigator.plugin.*; import Sirius.navigator.plugin.interfaces.*; import Sirius.server.localserver.method.*; import org.apache.log4j.*; import java.awt.event.*; import javax.swing.*; /** * DOCUMENT ME! * * @author pascal * @version $Revision$, $Date$ */ public class PluginMenuItem extends JMenuItem { //~ Instance fields -------------------------------------------------------- protected PluginMethod pluginMethod = null; protected Method method = null; /** Holds value of property availability. */ private long availability = 0; //~ Constructors ----------------------------------------------------------- /** * Creates a new PluginMenuItem object. * * @param availability DOCUMENT ME! */ public PluginMenuItem(final long availability) { this.availability = availability; this.addActionListener(new PluginMethodInvoker()); } /** * Creates a new instance of PluginMenuItem. * * @param pluginMethod DOCUMENT ME! * @param availability DOCUMENT ME! */ public PluginMenuItem(final PluginMethod pluginMethod, final long availability) { this(availability); this.pluginMethod = pluginMethod; } /** * Creates a new PluginMenuItem object. * * @param pluginMethod DOCUMENT ME! * @param method DOCUMENT ME! */ public PluginMenuItem(final PluginMethod pluginMethod, final Method method) { this.pluginMethod = pluginMethod; this.method = method; this.availability = MethodManager.PURE_NODE + MethodManager.OBJECT_NODE + MethodManager.CLASS_NODE; if (method.isMultiple()) { this.availability += MethodManager.MULTIPLE; } if (method.isClassMultiple()) { this.availability += MethodManager.CLASS_MULTIPLE; } this.addActionListener(new PluginMethodInvoker()); } //~ Methods ---------------------------------------------------------------- /** * DOCUMENT ME! * * @return DOCUMENT ME! */ public String getId() { return this.pluginMethod.getId(); } /** * Getter for property availability. * * @return Value of property availability. */ public long getAvailability() { return this.availability; } /** * Getter for property method. * * @return Value of property method. */ public Sirius.server.localserver.method.Method getMethod() { return this.method; } /** * Setter for property method. * * @param method New value of property method. */ public void setMethod(final Sirius.server.localserver.method.Method method) { this.method = method; } //~ Inner Classes ---------------------------------------------------------- /** * public void setVisible(long availability) { if((this.availability & availability) > 0 ) { this.setVisible(true); * } else { this.setVisible(false); } }. * * @version $Revision$, $Date$ */ private class PluginMethodInvoker implements ActionListener { //~ Methods ------------------------------------------------------------ /** * Invoked when an method occurs. * * @param e DOCUMENT ME! */ @Override public void actionPerformed(final ActionEvent e) { try { if (Logger.getLogger(this.getClass()).isDebugEnabled()) { Logger.getLogger(this.getClass()).debug("invoking method " + PluginMenuItem.this.getName()); // NOI18N } PluginMenuItem.this.pluginMethod.invoke(); } catch (Throwable t) { Logger.getLogger(this.getClass()) .error("invocation of plugin method '" + PluginMenuItem.this.getId() + "' failed", t); // NOI18N // XXX i18n JOptionPane.showMessageDialog( PluginMenuItem.this, org.openide.util.NbBundle.getMessage( PluginMenuItem.class, "PluginMenuItem.PluginMethodInvoker.actionPerformed(ActionEvent).JOptionPane_anon.message", t.getMessage()), // NOI18N org.openide.util.NbBundle.getMessage( PluginMenuItem.class, "PluginMenuItem.PluginMethodInvoker.actionPerformed(ActionEvent).JOptionPane_anon.title"), // NOI18N JOptionPane.ERROR_MESSAGE); } } } }