Author: channa
Date: Sun Jan 20 00:36:33 2008
New Revision: 12536
Log:
Making a single monitored instance a top level menu (MASHUP-514) and changing
left click behaviour match right click (MASHUP-513).
Modified:
trunk/commons/monitor/modules/client/src/main/java/org/wso2/monitor/InstanceMonitor.java
trunk/commons/monitor/modules/client/src/main/java/org/wso2/monitor/ServiceMonitor.java
Modified:
trunk/commons/monitor/modules/client/src/main/java/org/wso2/monitor/InstanceMonitor.java
==============================================================================
---
trunk/commons/monitor/modules/client/src/main/java/org/wso2/monitor/InstanceMonitor.java
(original)
+++
trunk/commons/monitor/modules/client/src/main/java/org/wso2/monitor/InstanceMonitor.java
Sun Jan 20 00:36:33 2008
@@ -18,13 +18,13 @@
import org.jdesktop.jdic.desktop.Desktop;
import org.jdesktop.jdic.desktop.DesktopException;
-import java.awt.event.ActionListener;
+import javax.swing.*;
import java.awt.event.ActionEvent;
-import java.io.IOException;
+import java.awt.event.ActionListener;
import java.io.File;
-import java.net.URL;
+import java.io.IOException;
import java.net.MalformedURLException;
-import javax.swing.*;
+import java.net.URL;
/**
* Instance monitor controls a single server instance.
@@ -32,6 +32,7 @@
public class InstanceMonitor extends MonitorBase implements ActionListener {
private JMXClient jmxClient;
private JMenu instanceMenu;
+ private JPopupMenu parentMenu;
private JMenuItem startMenuItem;
private JMenuItem restartMenuItem;
private JMenuItem stopMenuItem;
@@ -39,6 +40,7 @@
private JMenuItem configMonMenuItem;
private JMenuItem adminMenuItem;
private JMenuItem messagesMenuItem;
+ private JMenuItem titleMenuItem;
private String serviceName;
private ServerState displayedState;
private Timer pollingTimer;
@@ -47,33 +49,74 @@
private int connectionRetries;
private int retryCount;
private String serverHome;
+ int pollInterval;
/**
- * Constructor, instantiates JMX Client and menu and initializes the
polling process
- * which updates server instance status.
+ * Constructor to be used when creating an instance menu as a subordimate
menu item.
+ * Instantiates menu and initializes the polling process which updates
server instance status.
*
* @param display Instance of the message display implementation
object.
* @param instanceNumber Instance number of the server being monitored.
- * @param serverHome Home directory of monitored server.
+ * @param serverHome Home directory of monitored server.
*/
public InstanceMonitor(MessageDisplay display, int instanceNumber, String
serverHome) {
+ initInstance(display, instanceNumber, serverHome);
+ this.instanceMenu = new JMenu(serviceName);
+ buildInstanceMenu();
+ buildChildUI();
+ setStatus(ServerState.UNCONNECTED);
+ setupStatusChecker();
+ }
+
+ /**
+ * Constructor to be used when creating an instance menu as a top level
menu item.
+ * Instantiates menu and initializes the polling process which updates
server instance status.
+ *
+ * @param display Instance of the message display implementation
object.
+ * @param instanceNumber Instance number of the server being monitored.
+ * @param serverHome Home directory of monitored server.
+ * @param mainMenu instance of the main menu to which sumenu is to be
appended.
+ */
+ public InstanceMonitor(MessageDisplay display, int instanceNumber, String
serverHome,
+ JPopupMenu mainMenu) {
+ initInstance(display, instanceNumber, serverHome);
+ this.parentMenu = mainMenu;
+ titleMenuItem = new JMenuItem(serviceName);
+ titleMenuItem.addActionListener(this);
+ parentMenu.add(titleMenuItem);
+ parentMenu.addSeparator();
+ buildInstanceMenu();
+ buildTopLevelUI();
+ setStatus(ServerState.UNCONNECTED);
+ setupStatusChecker();
+ }
+
+ /**
+ * Instantiates JMX Client and retrieved instance setting from property
files.
+ *
+ * @param display Instance of the message display implementation
object.
+ * @param instanceNumber Instance number of the server being monitored.
+ * @param serverHome Home directory of monitored server.
+ */
+ private void initInstance(MessageDisplay display, int instanceNumber,
String serverHome) {
this.serverHome = serverHome;
this.display = display;
this.instanceNumber = instanceNumber;
serviceName = getProperty(".name");
- instanceMenu = new JMenu(serviceName);
String connectorAddress = getProperty(".url");
String wrapperBeanName = getProperty(".mbeanname");
jmxClient = new JMXClient(display, connectorAddress, wrapperBeanName);
- buildInstanceMenu();
- setStatus(ServerState.UNCONNECTED);
// Property determines the maximum number of retries to connect.
connectionRetries = Integer.parseInt(monitorProperties.getProperty(
"monitor.connectionretries"));
+ pollInterval =
Integer.parseInt(monitorProperties.getProperty("monitor.pollinterval"));
+ }
- // Setup timer to check status.
- int pollInterval =
Integer.parseInt(monitorProperties.getProperty("monitor.pollinterval"));
+ /**
+ * Setup timer to check status.
+ */
+ private void setupStatusChecker() {
pollingTimer = new Timer(pollInterval, new ActionListener() {
public void actionPerformed(ActionEvent e) {
refreshStatus();
@@ -114,6 +157,8 @@
getMessages();
} else if
(menuText.equals(monitorProperties.getProperty("monitor.options.admin"))) {
showAdminConsole();
+ } else if (menuText.equals(serviceName)) {
+ showAdminConsole();
}
}
@@ -126,45 +171,92 @@
connectMenuItem = new
JMenuItem(monitorProperties.getProperty("monitor.options.connect"),
connectIcon);
connectMenuItem.addActionListener(this);
- instanceMenu.add(connectMenuItem);
- instanceMenu.addSeparator();
// Start menu icon.
ImageIcon startIcon = getIcon(MonitorConstants.START_IMAGE);
startMenuItem = new
JMenuItem(monitorProperties.getProperty("monitor.options.start"),
startIcon);
startMenuItem.addActionListener(this);
- instanceMenu.add(startMenuItem);
// Restart menu item.
ImageIcon restartIcon = getIcon(MonitorConstants.RESTART_IMAGE);
restartMenuItem = new
JMenuItem(monitorProperties.getProperty("monitor.options.restart"),
restartIcon);
restartMenuItem.addActionListener(this);
- instanceMenu.add(restartMenuItem);
// Stop menu item.
ImageIcon stopIcon = getIcon(MonitorConstants.STOP_IMAGE);
stopMenuItem = new
JMenuItem(monitorProperties.getProperty("monitor.options.stop"),
stopIcon);
stopMenuItem.addActionListener(this);
- instanceMenu.add(stopMenuItem);
// Get messages menu item.
- instanceMenu.addSeparator();
messagesMenuItem = new
JMenuItem(monitorProperties.getProperty("monitor.options.messages"));
messagesMenuItem.addActionListener(this);
- instanceMenu.add(messagesMenuItem);
// Admin console menu item.
adminMenuItem = new
JMenuItem(monitorProperties.getProperty("monitor.options.admin"));
adminMenuItem.addActionListener(this);
- instanceMenu.add(adminMenuItem);
// Configure monitor menu item.
configMonMenuItem =
new
JMenuItem(monitorProperties.getProperty("monitor.options.configmon"));
configMonMenuItem.addActionListener(this);
+ }
+
+ /**
+ * Builds the menu UI at the top level.
+ */
+ private void buildTopLevelUI() {
+ // Connect menu item.
+ parentMenu.add(connectMenuItem);
+ parentMenu.addSeparator();
+
+ // Start menu icon.
+ parentMenu.add(startMenuItem);
+
+ // Restart menu item.
+ parentMenu.add(restartMenuItem);
+
+ // Stop menu item.
+ parentMenu.add(stopMenuItem);
+
+ // Get messages menu item.
+ parentMenu.addSeparator();
+ parentMenu.add(messagesMenuItem);
+
+ // Admin console menu item.
+ parentMenu.add(adminMenuItem);
+
+ // Configure monitor menu item.
+ parentMenu.add(configMonMenuItem);
+ }
+
+ /**
+ * Builds the menu UI at a child level.
+ */
+ private void buildChildUI() {
+ // Connect menu item.
+ instanceMenu.add(connectMenuItem);
+ instanceMenu.addSeparator();
+
+ // Start menu icon.
+ instanceMenu.add(startMenuItem);
+
+ // Restart menu item.
+ instanceMenu.add(restartMenuItem);
+
+ // Stop menu item.
+ instanceMenu.add(stopMenuItem);
+
+ // Get messages menu item.
+ instanceMenu.addSeparator();
+ instanceMenu.add(messagesMenuItem);
+
+ // Admin console menu item.
+ instanceMenu.add(adminMenuItem);
+
+ // Configure monitor menu item.
instanceMenu.add(configMonMenuItem);
}
@@ -281,7 +373,7 @@
/**
* Provides the path to the monitored service, relative or absolute based
on whether the server
* home directory has been provided.
- *
+ *
* @return String path.
*/
private String getWrapperPath() {
Modified:
trunk/commons/monitor/modules/client/src/main/java/org/wso2/monitor/ServiceMonitor.java
==============================================================================
---
trunk/commons/monitor/modules/client/src/main/java/org/wso2/monitor/ServiceMonitor.java
(original)
+++
trunk/commons/monitor/modules/client/src/main/java/org/wso2/monitor/ServiceMonitor.java
Sun Jan 20 00:36:33 2008
@@ -134,6 +134,7 @@
*/
private void buildMenu() {
int instanceNumber = 0;
+ InstanceMonitor instanceMonitor = null;
String instanceHome = null;
// Add a menu for each configured server instance.
@@ -147,10 +148,18 @@
instanceHome = serverHomes[instanceNumber];
}
- InstanceMonitor instanceMonitor = new InstanceMonitor(this,
instanceNumber,
-
instanceHome);
+ // If only a single instance is being monitored, it should be on
the main menu.
+ if (instanceNumber == 0 &&
monitorProperties.getProperty("monitor.service.1.name") ==
+ null) {
+ instanceMonitor = new InstanceMonitor(this, instanceNumber,
instanceHome, monitorMenu);
+ } else {
+ instanceMonitor = new InstanceMonitor(this, instanceNumber,
instanceHome);
+ monitorMenu.add(instanceMonitor.getInstanceMenu());
+ }
+
+
monitoredInstances.put(instanceName, instanceMonitor);
- monitorMenu.add(instanceMonitor.getInstanceMenu());
+
instanceNumber++;
instanceName = monitorProperties.getProperty("monitor.service." +
instanceNumber +
".name");
@@ -203,12 +212,11 @@
trayIcon = new TrayIcon(i, iconText, monitorMenu);
trayIcon.setIconAutoSize(true);
- // Add a listener to respond to clicks - show the instances being
monitored.
+ // Add a listener to respond to clicks - show the menu.
trayIcon.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
- String title =
monitorProperties.getProperty("monitor.configmon.instances");
- String instances =
java.util.Arrays.toString(monitoredInstances.keySet().toArray());
- trayIcon.displayMessage(title, instances,
TrayIcon.NONE_MESSAGE_TYPE);
+ monitorMenu.setLocation(trayIcon.getLocationOnScreen());
+ monitorMenu.setVisible(true);
}
});
defaultTray.addTrayIcon(trayIcon);
_______________________________________________
Commons-dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/commons-dev