diff options
author | Rajith Muditha Attapattu <rajith@apache.org> | 2011-05-27 15:44:23 +0000 |
---|---|---|
committer | Rajith Muditha Attapattu <rajith@apache.org> | 2011-05-27 15:44:23 +0000 |
commit | 66765100f4257159622cefe57bed50125a5ad017 (patch) | |
tree | a88ee23bb194eb91f0ebb2d9b23ff423e3ea8e37 /qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/MBeanTabFolderFactory.java | |
parent | 1aeaa7b16e5ce54f10c901d75c4d40f9f88b9db6 (diff) | |
parent | 88b98b2f4152ef59a671fad55a0d08338b6b78ca (diff) | |
download | qpid-python-66765100f4257159622cefe57bed50125a5ad017.tar.gz |
Creating a branch for experimenting with some ideas for JMS client.rajith_jms_client
git-svn-id: https://svn.apache.org/repos/asf/qpid/branches/rajith_jms_client@1128369 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/MBeanTabFolderFactory.java')
-rw-r--r-- | qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/MBeanTabFolderFactory.java | 466 |
1 files changed, 466 insertions, 0 deletions
diff --git a/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/MBeanTabFolderFactory.java b/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/MBeanTabFolderFactory.java new file mode 100644 index 0000000000..527fc67be3 --- /dev/null +++ b/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/MBeanTabFolderFactory.java @@ -0,0 +1,466 @@ +/* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * + */ +package org.apache.qpid.management.ui.views; + +import static org.apache.qpid.management.ui.Constants.ATTRIBUTES; +import static org.apache.qpid.management.ui.Constants.CONNECTION; +import static org.apache.qpid.management.ui.Constants.EXCHANGE; +import static org.apache.qpid.management.ui.Constants.EXCHANGE_TYPE; +import static org.apache.qpid.management.ui.Constants.NOTIFICATIONS; +import static org.apache.qpid.management.ui.Constants.QUEUE; + +import java.util.EnumSet; +import java.util.HashMap; +import java.util.Map; + +import javax.management.MBeanServerConnection; + +import org.apache.qpid.management.ui.ApplicationRegistry; +import org.apache.qpid.management.ui.ManagedServer; +import org.apache.qpid.management.ui.ServerRegistry; +import org.apache.qpid.management.ui.jmx.JMXManagedObject; +import org.apache.qpid.management.ui.jmx.MBeanUtility; +import org.apache.qpid.management.ui.model.NotificationInfoModel; +import org.apache.qpid.management.ui.model.OperationData; +import org.apache.qpid.management.ui.model.OperationDataModel; +import org.apache.qpid.management.ui.views.queue.QueueOperationsTabControl; +import org.apache.qpid.management.ui.views.type.ConnectionTypeTabControl; +import org.apache.qpid.management.ui.views.type.ExchangeTypeTabControl; +import org.apache.qpid.management.ui.views.type.QueueTypeTabControl; +import org.apache.qpid.management.ui.views.users.UserManagementTabControl; +import org.apache.qpid.management.ui.views.vhost.VHostTabControl; +import org.apache.qpid.management.ui.views.connection.ConnectionOperationsTabControl; +import org.apache.qpid.management.ui.views.exchange.ExchangeOperationsTabControl; +import org.apache.qpid.management.ui.views.exchange.HeadersExchangeOperationsTabControl; +import org.apache.qpid.management.ui.views.logging.ConfigurationFileTabControl; +import org.apache.qpid.management.ui.views.logging.RuntimeTabControl; +import org.eclipse.swt.SWT; +import org.eclipse.swt.layout.FormAttachment; +import org.eclipse.swt.layout.FormData; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Event; +import org.eclipse.swt.widgets.Listener; +import org.eclipse.swt.widgets.TabFolder; +import org.eclipse.swt.widgets.TabItem; + +public class MBeanTabFolderFactory +{ + private static final String MBEANTYPE_QUEUE = "VirtualHost.Queue"; + private static final String MBEANTYPE_CONNECTION = "VirtualHost.Connection"; + private static final String MBEANTYPE_EXCHANGE = "VirtualHost.Exchange"; + private static final String MBEANTYPE_VHOST_MANAGER = "VirtualHost.VirtualHostManager"; + private static final String MBEANTYPE_LOGGING_MANAGEMENT = "LoggingManagement"; + private static final String MBEANTYPE_USER_MANAGEMENT = "UserManagement"; + private static final String MBEANTYPE_CONFIGURATION_MANAGEMENT = "ConfigurationManagement"; + + private MBeanTabFolderFactory() + { + //no instances + } + + public static TabFolder generateMBeanTabFolder(final Composite parent, final JMXManagedObject mbean, final MBeanServerConnection mbsc) + { + TabFolder tabFolder = new TabFolder(parent, SWT.NONE); + FormData layoutData = new FormData(); + layoutData.left = new FormAttachment(0); + layoutData.top = new FormAttachment(0); + layoutData.right = new FormAttachment(100); + layoutData.bottom = new FormAttachment(100); + tabFolder.setLayoutData(layoutData); + + TabItem tab; + TabControl controller; + QpidMBeanType mbeanType = QpidMBeanType.get(mbean.getType()); + + switch(mbeanType) + { + case QUEUE: + createAttributesTab(tabFolder, mbean); + + tab = new TabItem(tabFolder, SWT.NONE); + tab.setText("Operations"); + controller = new QueueOperationsTabControl(tabFolder, mbean, mbsc); + tab.setControl(controller.getControl()); + tab.setData(TabControl.CONTROLLER, controller); + break; + case CONNECTION: + createAttributesTab(tabFolder, mbean); + + tab = new TabItem(tabFolder, SWT.NONE); + tab.setText("Operations"); + controller = new ConnectionOperationsTabControl(tabFolder, mbean, mbsc); + tab.setControl(controller.getControl()); + tab.setData(TabControl.CONTROLLER, controller); + break; + case EXCHANGE: + createAttributesTab(tabFolder, mbean); + + if (mbean.getProperty(EXCHANGE_TYPE).equalsIgnoreCase("headers")) + { + tab = new TabItem(tabFolder, SWT.NONE); + tab.setText("Operations"); + controller = new HeadersExchangeOperationsTabControl(tabFolder, mbean, mbsc); + tab.setControl(controller.getControl()); + tab.setData(TabControl.CONTROLLER, controller); + } + else + { + tab = new TabItem(tabFolder, SWT.NONE); + tab.setText("Operations"); + controller = new ExchangeOperationsTabControl(tabFolder, mbean, mbsc); + tab.setControl(controller.getControl()); + tab.setData(TabControl.CONTROLLER, controller); + } + break; + case VHOST_MANAGER: + createAttributesTab(tabFolder, mbean); + + tab = new TabItem(tabFolder, SWT.NONE); + tab.setText("Operations"); + controller = new VHostTabControl(tabFolder, mbean, mbsc); + tab.setControl(controller.getControl()); + tab.setData(TabControl.CONTROLLER, controller); + break; + case LOGGING_MANAGEMENT: + tab = new TabItem(tabFolder, SWT.NONE); + tab.setText("Runtime Options"); + controller = new RuntimeTabControl(tabFolder, mbean, mbsc); + tab.setControl(controller.getControl()); + tab.setData(TabControl.CONTROLLER, controller); + + tab = new TabItem(tabFolder, SWT.NONE); + tab.setText("ConfigurationFile Options"); + controller = new ConfigurationFileTabControl(tabFolder, mbean, mbsc); + tab.setControl(controller.getControl()); + tab.setData(TabControl.CONTROLLER, controller); + break; + case USER_MANAGEMENT: + tab = new TabItem(tabFolder, SWT.NONE); + tab.setText("Operations"); + controller = new UserManagementTabControl(tabFolder, mbean, mbsc); + tab.setControl(controller.getControl()); + tab.setData(TabControl.CONTROLLER, controller); + break; + case CONFIGURATION_MANAGEMENT: + createGenericTabFolder(tabFolder, mbean); + break; + case UNKNOWN: + createGenericTabFolder(tabFolder, mbean); + break; + } + + createNotificationsTabIfNecessary(tabFolder, mbean); + + tabFolder.addListener(SWT.Selection, new Listener() + { + public void handleEvent(Event evt) + { + TabItem tab = (TabItem)evt.item; + TabControl controller = (TabControl)tab.getData(TabControl.CONTROLLER); + if(controller != null) + { + controller.refresh(mbean); + } + } + }); + + return tabFolder; + } + + private static void createGenericTabFolder(TabFolder tabFolder, JMXManagedObject mbean) + { + createAttributesTab(tabFolder, mbean); + createOperationTabs(tabFolder, mbean); + } + + private static void createAttributesTab(TabFolder tabFolder, JMXManagedObject mbean) + { + ServerRegistry serverRegistry = ApplicationRegistry.getServerRegistry(mbean); + if(serverRegistry.getAttributeModel(mbean).getCount() == 0) + { + return; + } + + TabItem tab = new TabItem(tabFolder, SWT.NONE); + tab.setText(ATTRIBUTES); + AttributesTabControl controller = new AttributesTabControl(tabFolder); + tab.setControl(controller.getControl()); + tab.setData(TabControl.CONTROLLER, controller); + } + + private static void createOperationTabs(TabFolder tabFolder, JMXManagedObject mbean) + { + ServerRegistry serverRegistry = ApplicationRegistry.getServerRegistry(mbean); + int operationsCount = serverRegistry.getOperationModel(mbean).getCount(); + if(operationsCount == 0) + { + return; + } + + OperationDataModel operationModel = serverRegistry.getOperationModel(mbean); + for(OperationData operationData : operationModel.getOperations()) + { + TabItem operationTab = new TabItem(tabFolder, SWT.NONE); + operationTab.setText(ViewUtility.getDisplayText(operationData.getName())); + operationTab.setData(operationData); + OperationTabControl control = new OperationTabControl(tabFolder, operationData); + operationTab.setData(TabControl.CONTROLLER, control); + operationTab.setControl(control.getControl()); + } + } + + private static void createNotificationsTabIfNecessary(TabFolder tabFolder, JMXManagedObject mbean) + { + NotificationInfoModel[] items = MBeanUtility.getNotificationInfo(mbean); + if(items == null || items.length == 0) + { + //the mbean has no notifications to subscribe for, do not create the tab. + return; + } + + NotificationsTabControl controller = new NotificationsTabControl(tabFolder, mbean); + + TabItem tab = new TabItem(tabFolder, SWT.NONE); + tab.setText(NOTIFICATIONS); + tab.setData(TabControl.CONTROLLER, controller); + tab.setControl(controller.getControl()); + } + + /** + * Creates TabFolder and tabs for all mbeantype (Connection, Queue, and Exchange) + */ + public static TabFolder generateMBeanTypeTabFolder(final Composite parent, ManagedServer server, String virtualHost) + { + TabFolder tabFolder = new TabFolder(parent, SWT.NONE); + FormData layoutData = new FormData(); + layoutData.left = new FormAttachment(0); + layoutData.top = new FormAttachment(0); + layoutData.right = new FormAttachment(100); + layoutData.bottom = new FormAttachment(100); + tabFolder.setLayoutData(layoutData); + + + TabItem tab; + TabControl controller; + + tab = new TabItem(tabFolder, SWT.NONE); + tab.setText(CONNECTION); + controller = new ConnectionTypeTabControl(tabFolder,server,virtualHost); + tab.setData(TabControl.CONTROLLER, controller); + tab.setControl(controller.getControl()); + + tab = new TabItem(tabFolder, SWT.NONE); + tab.setText(EXCHANGE); + controller = new ExchangeTypeTabControl(tabFolder,server,virtualHost); + tab.setData(TabControl.CONTROLLER, controller); + tab.setControl(controller.getControl()); + + tab = new TabItem(tabFolder, SWT.NONE); + tab.setText(QUEUE); + controller = new QueueTypeTabControl(tabFolder,server,virtualHost); + tab.setData(TabControl.CONTROLLER, controller); + tab.setControl(controller.getControl()); + + tabFolder.addListener(SWT.Selection, new Listener() + { + public void handleEvent(Event evt) + { + TabItem tab = (TabItem)evt.item; + TabControl controller = (TabControl)tab.getData(TabControl.CONTROLLER); + if(controller != null) + { + controller.refresh(null); + } + } + }); + + return tabFolder; + } + + /** + * Creates TabFolder and tab for the Connection selection view + */ + public static TabFolder generateConnectionTypeTabFolder(final Composite parent, ManagedServer server, String virtualHost) + { + TabFolder tabFolder = new TabFolder(parent, SWT.NONE); + FormData layoutData = new FormData(); + layoutData.left = new FormAttachment(0); + layoutData.top = new FormAttachment(0); + layoutData.right = new FormAttachment(100); + layoutData.bottom = new FormAttachment(100); + tabFolder.setLayoutData(layoutData); + + TabItem tab; + TabControl controller; + + tab = new TabItem(tabFolder, SWT.NONE); + tab.setText(CONNECTION); + controller = new ConnectionTypeTabControl(tabFolder,server,virtualHost); + tab.setData(TabControl.CONTROLLER, controller); + tab.setControl(controller.getControl()); + + tabFolder.addListener(SWT.Selection, new Listener() + { + public void handleEvent(Event evt) + { + TabItem tab = (TabItem)evt.item; + TabControl controller = (TabControl)tab.getData(TabControl.CONTROLLER); + if(controller != null) + { + controller.refresh(null); + } + } + }); + + return tabFolder; + } + + /** + * Creates TabFolder and tab for the Exchange selection view + */ + public static TabFolder generateExchangeTypeTabFolder(final Composite parent, ManagedServer server, String virtualHost) + { + TabFolder tabFolder = new TabFolder(parent, SWT.NONE); + FormData layoutData = new FormData(); + layoutData.left = new FormAttachment(0); + layoutData.top = new FormAttachment(0); + layoutData.right = new FormAttachment(100); + layoutData.bottom = new FormAttachment(100); + tabFolder.setLayoutData(layoutData); + + TabItem tab; + TabControl controller; + + tab = new TabItem(tabFolder, SWT.NONE); + tab.setText(EXCHANGE); + controller = new ExchangeTypeTabControl(tabFolder,server,virtualHost); + tab.setData(TabControl.CONTROLLER, controller); + tab.setControl(controller.getControl()); + + tabFolder.addListener(SWT.Selection, new Listener() + { + public void handleEvent(Event evt) + { + TabItem tab = (TabItem)evt.item; + TabControl controller = (TabControl)tab.getData(TabControl.CONTROLLER); + if(controller != null) + { + controller.refresh(null); + } + } + }); + + return tabFolder; + } + + /** + * Creates TabFolder and tab for the Queue selection view + */ + public static TabFolder generateQueueTypeTabFolder(final Composite parent, ManagedServer server, String virtualHost) + { + TabFolder tabFolder = new TabFolder(parent, SWT.NONE); + FormData layoutData = new FormData(); + layoutData.left = new FormAttachment(0); + layoutData.top = new FormAttachment(0); + layoutData.right = new FormAttachment(100); + layoutData.bottom = new FormAttachment(100); + tabFolder.setLayoutData(layoutData); + + TabItem tab; + TabControl controller; + + tab = new TabItem(tabFolder, SWT.NONE); + tab.setText(QUEUE); + controller = new QueueTypeTabControl(tabFolder,server,virtualHost); + tab.setData(TabControl.CONTROLLER, controller); + tab.setControl(controller.getControl()); + + tabFolder.addListener(SWT.Selection, new Listener() + { + public void handleEvent(Event evt) + { + TabItem tab = (TabItem)evt.item; + TabControl controller = (TabControl)tab.getData(TabControl.CONTROLLER); + if(controller != null) + { + controller.refresh(null); + } + } + }); + + return tabFolder; + } + + private enum QpidMBeanType + { + QUEUE (MBEANTYPE_QUEUE), + CONNECTION (MBEANTYPE_CONNECTION), + EXCHANGE (MBEANTYPE_EXCHANGE), + VHOST_MANAGER (MBEANTYPE_VHOST_MANAGER), + LOGGING_MANAGEMENT (MBEANTYPE_LOGGING_MANAGEMENT), + USER_MANAGEMENT (MBEANTYPE_USER_MANAGEMENT), + CONFIGURATION_MANAGEMENT (MBEANTYPE_CONFIGURATION_MANAGEMENT), + UNKNOWN (null); + + private static final Map<String,QpidMBeanType> lookup = new HashMap<String,QpidMBeanType>(); + + static + { + for(QpidMBeanType m : EnumSet.allOf(QpidMBeanType.class)) + { + lookup.put(m.getType(), m); + } + } + + private String type; + + private QpidMBeanType() + { + + } + + private QpidMBeanType(String type) + { + this.type = type; + } + + public String getType() + { + return type; + } + + public static QpidMBeanType get(String type) + { + QpidMBeanType t= lookup.get(type); + if (t != null) + { + return t; + } + else + { + return UNKNOWN; + } + + } + } + + +} |