You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by rg...@apache.org on 2009/10/05 12:29:27 UTC
svn commit: r821741 [2/3] - in /qpid/branches/java-broker-0-10/qpid: ./
java/ java/broker/ java/broker/bin/
java/broker/src/main/java/org/apache/qpid/server/
java/broker/src/main/java/org/apache/qpid/server/exchange/
java/broker/src/main/java/org/apach...
Modified: qpid/branches/java-broker-0-10/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/MBeanTabFolderFactory.java
URL: http://svn.apache.org/viewvc/qpid/branches/java-broker-0-10/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/MBeanTabFolderFactory.java?rev=821741&r1=821740&r2=821741&view=diff
==============================================================================
--- qpid/branches/java-broker-0-10/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/MBeanTabFolderFactory.java (original)
+++ qpid/branches/java-broker-0-10/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/MBeanTabFolderFactory.java Mon Oct 5 10:29:26 2009
@@ -34,6 +34,7 @@
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;
@@ -242,9 +243,9 @@
}
/**
- * Creates TabFolder and tabs for each mbeantype (eg Connection, Queue, Exchange)
+ * Creates TabFolder and tabs for all mbeantype (Connection, Queue, and Exchange)
*/
- public static TabFolder generateMBeanTypeTabFolder(final Composite parent)
+ public static TabFolder generateMBeanTypeTabFolder(final Composite parent, ManagedServer server, String virtualHost)
{
TabFolder tabFolder = new TabFolder(parent, SWT.NONE);
FormData layoutData = new FormData();
@@ -254,24 +255,101 @@
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);
+ 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);
+ 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);
+ 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());
@@ -290,7 +368,45 @@
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),
Modified: qpid/branches/java-broker-0-10/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/MBeanView.java
URL: http://svn.apache.org/viewvc/qpid/branches/java-broker-0-10/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/MBeanView.java?rev=821741&r1=821740&r2=821741&view=diff
==============================================================================
--- qpid/branches/java-broker-0-10/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/MBeanView.java (original)
+++ qpid/branches/java-broker-0-10/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/MBeanView.java Mon Oct 5 10:29:26 2009
@@ -173,11 +173,11 @@
if (NODE_TYPE_TYPEINSTANCE.equals(mbeanType))
{
// An virtual host instance is selected
- refreshTypeTabFolder(_typeTabFolder.getItem(0));
+ generateTypeTabFolder();
}
else if (NODE_TYPE_MBEANTYPE.equals(mbeanType))
{
- refreshTypeTabFolder(_selectedNode.getName());
+ showTypeTabFolder(_selectedNode.getName());
}
else if (NOTIFICATIONS.equals(mbeanType))
{
@@ -307,12 +307,7 @@
// Add selection listener for selection events in the Navigation view
getSite().getPage().addSelectionListener(NavigationView.ID, _selectionListener);
-
- // Add mbeantype TabFolder. This will list all the mbeans under a mbeantype (eg Queue, Exchange).
- // Using this list mbeans will be added in the navigation view
- _typeTabFolder = MBeanTabFolderFactory.generateMBeanTypeTabFolder(_form.getBody());
- _typeTabFolder.setVisible(false);
-
+
createNotificationsTabFolder();
ViewUtility.setMBeanView(this);
@@ -370,32 +365,48 @@
_notificationTabFolder.setVisible(true);
}
- /**
- * Refreshes the Selected mbeantype tab. The control lists all the available mbeans
- * for an mbeantype(eg Queue, Exchange etc)
- * @param tab
- * @throws Exception
- */
- private void refreshTypeTabFolder(TabItem tab) throws Exception
+
+
+ private void generateTypeTabFolder() throws Exception
{
- refreshTab(tab);
- _typeTabFolder.setSelection(tab);
- _typeTabFolder.setVisible(true);
+ if (_typeTabFolder != null && !_typeTabFolder.isDisposed())
+ {
+ _typeTabFolder.dispose();
+ }
+
+ //Generates the full Queue/Connection/Exchange selection tab set
+ _typeTabFolder = MBeanTabFolderFactory.generateMBeanTypeTabFolder(
+ _form.getBody(), getServer(), getVirtualHost());
+ refreshTab(_typeTabFolder.getItem(0));
}
- private void refreshTypeTabFolder(String type) throws Exception
+ private void showTypeTabFolder(String type) throws Exception
{
+ if (_typeTabFolder != null && !_typeTabFolder.isDisposed())
+ {
+ _typeTabFolder.dispose();
+ }
+
if (CONNECTION.equals(type))
{
- refreshTypeTabFolder(_typeTabFolder.getItem(0));
+ //Generates the Connection selection tab
+ _typeTabFolder = MBeanTabFolderFactory.generateConnectionTypeTabFolder(
+ _form.getBody(), getServer(), getVirtualHost());
+ refreshTab(_typeTabFolder.getItem(0));
}
else if (EXCHANGE.equals(type))
{
- refreshTypeTabFolder(_typeTabFolder.getItem(1));
+ //Generates the Exchange selection tab
+ _typeTabFolder = MBeanTabFolderFactory.generateExchangeTypeTabFolder(
+ _form.getBody(), getServer(), getVirtualHost());
+ refreshTab(_typeTabFolder.getItem(0));
}
else if (QUEUE.equals(type))
{
- refreshTypeTabFolder(_typeTabFolder.getItem(2));
+ //Generates the Queue selection tab
+ _typeTabFolder = MBeanTabFolderFactory.generateQueueTypeTabFolder(
+ _form.getBody(), getServer(), getVirtualHost());
+ refreshTab(_typeTabFolder.getItem(0));
}
}
Modified: qpid/branches/java-broker-0-10/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/exchange/ExchangeOperationsTabControl.java
URL: http://svn.apache.org/viewvc/qpid/branches/java-broker-0-10/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/exchange/ExchangeOperationsTabControl.java?rev=821741&r1=821740&r2=821741&view=diff
==============================================================================
--- qpid/branches/java-broker-0-10/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/exchange/ExchangeOperationsTabControl.java (original)
+++ qpid/branches/java-broker-0-10/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/exchange/ExchangeOperationsTabControl.java Mon Oct 5 10:29:26 2009
@@ -20,6 +20,9 @@
*/
package org.apache.qpid.management.ui.views.exchange;
+import static org.apache.qpid.management.ui.Constants.EXCHANGE_TYPE;
+import static org.apache.qpid.management.ui.Constants.DEFAULT_EXCHANGE_TYPE_VALUES;
+
import java.util.Collection;
import java.util.List;
@@ -29,11 +32,14 @@
import javax.management.openmbean.CompositeDataSupport;
import javax.management.openmbean.TabularDataSupport;
+import org.apache.qpid.management.ui.ApiVersion;
import org.apache.qpid.management.ui.ApplicationRegistry;
import org.apache.qpid.management.ui.ManagedBean;
+import org.apache.qpid.management.ui.ServerRegistry;
import org.apache.qpid.management.common.mbeans.ManagedExchange;
import org.apache.qpid.management.ui.jmx.JMXManagedObject;
import org.apache.qpid.management.ui.jmx.MBeanUtility;
+import org.apache.qpid.management.ui.views.MBeanView;
import org.apache.qpid.management.ui.views.TabControl;
import org.apache.qpid.management.ui.views.ViewUtility;
import org.eclipse.jface.viewers.ISelectionChangedListener;
@@ -45,6 +51,8 @@
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.viewers.ViewerSorter;
import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.MouseEvent;
+import org.eclipse.swt.events.MouseListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Image;
@@ -60,6 +68,8 @@
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.forms.widgets.FormToolkit;
import org.eclipse.ui.forms.widgets.ScrolledForm;
@@ -79,6 +89,7 @@
private TabularDataSupport _bindings = null;
private ManagedExchange _emb;
+ private ApiVersion _ApiVersion;
static final String BINDING_KEY = ManagedExchange.COMPOSITE_ITEM_NAMES[0];
static final String QUEUES = ManagedExchange.COMPOSITE_ITEM_NAMES[1];
@@ -87,6 +98,7 @@
{
super(tabFolder);
_mbean = mbean;
+ _ApiVersion = ApplicationRegistry.getServerRegistry(mbean).getManagementApiVersion();
_emb = (ManagedExchange) MBeanServerInvocationHandler.newProxyInstance(mbsc,
mbean.getObjectName(), ManagedExchange.class, false);
_toolkit = new FormToolkit(_tabFolder.getDisplay());
@@ -130,10 +142,26 @@
}
catch (Exception e)
{
- MBeanUtility.handleException(mbean,e);
+ MBeanUtility.handleException(_mbean,e);
}
_keysTableViewer.setInput(_bindings);
+
+ //if we have a Qpid JMX API 1.3+ server
+ if(_ApiVersion.greaterThanOrEqualTo(1, 3))
+ {
+ //if it is a fanout exchange
+ if(isFanoutExchange())
+ {
+ //if there are any queue bindings, there is a single wildcard binding key
+ //auto-select it to show all the queues bound to the exchange
+ if (_keysTable.getItemCount() == 1)
+ {
+ _keysTable.setSelection(0);
+ updateQueuesTable();
+ }
+ }
+ }
layout();
}
@@ -260,22 +288,23 @@
_queuesTableViewer.setSorter(queuesTableSorter);
_queuesTableViewer.setInput(new String[]{"Select a binding key to view queues"});
+ //listener for double clicking to open the selection mbean
+ _queuesTable.addMouseListener(new MouseListener()
+ {
+ // MouseListener implementation
+ public void mouseDoubleClick(MouseEvent event)
+ {
+ openMBean(_queuesTable);
+ }
+
+ public void mouseDown(MouseEvent e){}
+ public void mouseUp(MouseEvent e){}
+ });
+
_keysTableViewer.addSelectionChangedListener(new ISelectionChangedListener(){
public void selectionChanged(SelectionChangedEvent evt)
{
- int selectionIndex = _keysTable.getSelectionIndex();
-
- if (selectionIndex != -1)
- {
- final CompositeData selectedMsg = (CompositeData)_keysTable.getItem(selectionIndex).getData();
-
- String[] queues = (String[]) selectedMsg.get(QUEUES);
- _queuesTableViewer.setInput(queues);
- }
- else
- {
- _queuesTableViewer.setInput(new String[]{"Select a binding key to view queues"});
- }
+ updateQueuesTable();
}
});
@@ -296,6 +325,28 @@
}
+ private void updateQueuesTable()
+ {
+ int selectionIndex = _keysTable.getSelectionIndex();
+
+ if (selectionIndex != -1)
+ {
+ final CompositeData selectedMsg = (CompositeData)_keysTable.getItem(selectionIndex).getData();
+
+ String[] queues = (String[]) selectedMsg.get(QUEUES);
+ _queuesTableViewer.setInput(queues);
+ }
+ else
+ {
+ _queuesTableViewer.setInput(new String[]{"Select a binding key to view queues"});
+ }
+ }
+
+ private boolean isFanoutExchange()
+ {
+ return _mbean.getProperty(EXCHANGE_TYPE).equalsIgnoreCase(DEFAULT_EXCHANGE_TYPE_VALUES[1]);
+
+ }
/**
* Content Provider class for the table viewer
@@ -477,6 +528,10 @@
_toolkit.createLabel(bindingComposite,"Binding:").setBackground(shell.getBackground());
final Text bindingText = new Text(bindingComposite, SWT.BORDER);
bindingText.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
+ if(isFanoutExchange())
+ {
+ bindingText.setText("*");
+ }
Composite okCancelButtonsComp = _toolkit.createComposite(shell);
okCancelButtonsComp.setBackground(shell.getBackground());
@@ -507,7 +562,7 @@
{
String binding = bindingText.getText();
- if (binding == null || binding.length() == 0)
+ if (!isFanoutExchange() && (binding == null || binding.length() == 0))
{
ViewUtility.popupErrorMessage("Create New Binding", "Please enter a valid binding");
return;
@@ -544,4 +599,35 @@
shell.pack();
shell.open();
}
+
+ private void openMBean(Table table)
+ {
+ int selectionIndex = table.getSelectionIndex();
+
+ if (selectionIndex == -1)
+ {
+ return;
+ }
+
+ String queueName = (String) table.getItem(selectionIndex).getData();
+ ServerRegistry serverRegistry = ApplicationRegistry.getServerRegistry(_mbean);
+ ManagedBean selectedMBean = serverRegistry.getQueue(queueName, _mbean.getVirtualHostName());
+
+ if(selectedMBean == null)
+ {
+ ViewUtility.popupErrorMessage("Error", "Unable to retrieve the selected MBean to open it");
+ return;
+ }
+
+ IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
+ MBeanView view = (MBeanView) window.getActivePage().findView(MBeanView.ID);
+ try
+ {
+ view.openMBean(selectedMBean);
+ }
+ catch (Exception ex)
+ {
+ MBeanUtility.handleException(selectedMBean, ex);
+ }
+ }
}
Modified: qpid/branches/java-broker-0-10/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/exchange/HeadersExchangeOperationsTabControl.java
URL: http://svn.apache.org/viewvc/qpid/branches/java-broker-0-10/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/exchange/HeadersExchangeOperationsTabControl.java?rev=821741&r1=821740&r2=821741&view=diff
==============================================================================
--- qpid/branches/java-broker-0-10/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/exchange/HeadersExchangeOperationsTabControl.java (original)
+++ qpid/branches/java-broker-0-10/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/exchange/HeadersExchangeOperationsTabControl.java Mon Oct 5 10:29:26 2009
@@ -31,9 +31,11 @@
import org.apache.qpid.management.ui.ApplicationRegistry;
import org.apache.qpid.management.ui.ManagedBean;
+import org.apache.qpid.management.ui.ServerRegistry;
import org.apache.qpid.management.common.mbeans.ManagedExchange;
import org.apache.qpid.management.ui.jmx.JMXManagedObject;
import org.apache.qpid.management.ui.jmx.MBeanUtility;
+import org.apache.qpid.management.ui.views.MBeanView;
import org.apache.qpid.management.ui.views.TabControl;
import org.apache.qpid.management.ui.views.ViewUtility;
import org.eclipse.jface.viewers.ISelectionChangedListener;
@@ -45,6 +47,8 @@
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.viewers.ViewerSorter;
import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.MouseEvent;
+import org.eclipse.swt.events.MouseListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Image;
@@ -60,6 +64,8 @@
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.forms.widgets.FormToolkit;
import org.eclipse.ui.forms.widgets.ScrolledForm;
@@ -82,7 +88,7 @@
static final String BINDING_NUM = ManagedExchange.HEADERS_COMPOSITE_ITEM_NAMES[0];
static final String QUEUE_NAME = ManagedExchange.HEADERS_COMPOSITE_ITEM_NAMES[1];
- static final String QUEUE_BINDINGS = ManagedExchange.HEADERS_COMPOSITE_ITEM_NAMES[2];
+ static final String HEADER_BINDINGS = ManagedExchange.HEADERS_COMPOSITE_ITEM_NAMES[2];
public HeadersExchangeOperationsTabControl(TabFolder tabFolder, JMXManagedObject mbean, MBeanServerConnection mbsc)
{
@@ -132,7 +138,7 @@
}
catch (Exception e)
{
- MBeanUtility.handleException(mbean,e);
+ MBeanUtility.handleException(_mbean,e);
}
_bindingNumberTableViewer.setInput(_bindings);
@@ -224,7 +230,7 @@
_headersTable.setLayoutData(data);
_headersTableViewer = new TableViewer(_headersTable);
- final TableSorter queuesTableSorter = new TableSorter(QUEUE_BINDINGS);
+ final TableSorter queuesTableSorter = new TableSorter(HEADER_BINDINGS);
titles = new String[]{"Header Bindings"};
bounds = new int[]{225};
@@ -262,8 +268,8 @@
}
- _headersTableViewer.setContentProvider(new ContentProviderImpl(QUEUE_BINDINGS));
- _headersTableViewer.setLabelProvider(new LabelProviderImpl(QUEUE_BINDINGS));
+ _headersTableViewer.setContentProvider(new ContentProviderImpl(HEADER_BINDINGS));
+ _headersTableViewer.setLabelProvider(new LabelProviderImpl(HEADER_BINDINGS));
_headersTableViewer.setSorter(queuesTableSorter);
_headersTableViewer.setInput(new String[]{"Select a binding to view key-value pairs"});
@@ -276,7 +282,7 @@
{
final CompositeData selectedMsg = (CompositeData)_bindingNumberTable.getItem(selectionIndex).getData();
- String[] bindings = (String[]) selectedMsg.get(QUEUE_BINDINGS);
+ String[] bindings = (String[]) selectedMsg.get(HEADER_BINDINGS);
_headersTableViewer.setInput(bindings);
}
else
@@ -286,6 +292,19 @@
}
});
+ //listener for double clicking to open the selection mbean
+ _bindingNumberTable.addMouseListener(new MouseListener()
+ {
+ // MouseListener implementation
+ public void mouseDoubleClick(MouseEvent event)
+ {
+ openMBean(_bindingNumberTable);
+ }
+
+ public void mouseDown(MouseEvent e){}
+ public void mouseUp(MouseEvent e){}
+ });
+
//Side Buttons
Composite buttonsComposite = _toolkit.createComposite(bindingsGroup);
gridData = new GridData(SWT.FILL, SWT.FILL, false, true);
@@ -555,4 +574,36 @@
shell.pack();
shell.open();
}
+
+ private void openMBean(Table table)
+ {
+ int selectionIndex = table.getSelectionIndex();
+
+ if (selectionIndex == -1)
+ {
+ return;
+ }
+
+ CompositeData bindingResult = (CompositeData) table.getItem(selectionIndex).getData();
+ String queueName = (String) bindingResult.get(QUEUE_NAME);
+ ServerRegistry serverRegistry = ApplicationRegistry.getServerRegistry(_mbean);
+ ManagedBean selectedMBean = serverRegistry.getQueue(queueName, _mbean.getVirtualHostName());
+
+ if(selectedMBean == null)
+ {
+ ViewUtility.popupErrorMessage("Error", "Unable to retrieve the selected MBean to open it");
+ return;
+ }
+
+ IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
+ MBeanView view = (MBeanView) window.getActivePage().findView(MBeanView.ID);
+ try
+ {
+ view.openMBean(selectedMBean);
+ }
+ catch (Exception ex)
+ {
+ MBeanUtility.handleException(selectedMBean, ex);
+ }
+ }
}
Modified: qpid/branches/java-broker-0-10/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/logging/ConfigurationFileTabControl.java
URL: http://svn.apache.org/viewvc/qpid/branches/java-broker-0-10/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/logging/ConfigurationFileTabControl.java?rev=821741&r1=821740&r2=821741&view=diff
==============================================================================
--- qpid/branches/java-broker-0-10/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/logging/ConfigurationFileTabControl.java (original)
+++ qpid/branches/java-broker-0-10/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/logging/ConfigurationFileTabControl.java Mon Oct 5 10:29:26 2009
@@ -20,6 +20,9 @@
*/
package org.apache.qpid.management.ui.views.logging;
+import java.util.ArrayList;
+import java.util.HashMap;
+
import javax.management.MBeanServerConnection;
import javax.management.MBeanServerInvocationHandler;
import javax.management.openmbean.CompositeData;
@@ -55,6 +58,7 @@
import org.eclipse.swt.widgets.TabFolder;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.forms.widgets.FormToolkit;
import org.eclipse.ui.forms.widgets.ScrolledForm;
@@ -209,7 +213,7 @@
tableComposite.setLayout(gridLayout);
- _table = new Table (tableComposite, SWT.SINGLE | SWT.SCROLL_LINE | SWT.BORDER | SWT.FULL_SELECTION);
+ _table = new Table (tableComposite, SWT.MULTI | SWT.SCROLL_LINE | SWT.BORDER | SWT.FULL_SELECTION);
_table.setLinesVisible (true);
_table.setHeaderVisible (true);
GridData data = new GridData(SWT.FILL, SWT.FILL, true, true);
@@ -347,18 +351,36 @@
if (selectionIndex != -1)
{
- final CompositeData selectedLogger = (CompositeData)_table.getItem(selectionIndex).getData();
- String loggerName = selectedLogger.get(LOGGER_NAME).toString();
+ int[] selectedIndices = _table.getSelectionIndices();
+
+ final ArrayList<String> selectedLoggers = new ArrayList<String>();
+
+ for(int index = 0; index < selectedIndices.length ; index++)
+ {
+ CompositeData selectedLogger = (CompositeData)_table.getItem(selectedIndices[index]).getData();
+ String user = (String) selectedLogger.get(LOGGER_NAME);
+ selectedLoggers.add(user);
+ }
final Shell shell = ViewUtility.createModalDialogShell(parent, "Set Config File Logger Level");
-
- Composite loggerComp = _toolkit.createComposite(shell);
- loggerComp.setBackground(shell.getBackground());
- loggerComp.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
- loggerComp.setLayout(new GridLayout(2,false));
+
+ _toolkit.createLabel(shell, "Logger(s): ").setBackground(shell.getBackground());
+
+ final Text headerText = new Text(shell, SWT.WRAP | SWT.V_SCROLL | SWT.BORDER );
+ headerText.setEditable(false);
+ GridData data = new GridData(SWT.FILL, SWT.FILL, false, false);
+ data.minimumHeight = 125;
+ data.heightHint = 125;
+ data.minimumWidth = 575;
+ data.widthHint = 575;
+ headerText.setLayoutData(data);
- _toolkit.createLabel(loggerComp, "Logger: ").setBackground(shell.getBackground());
- _toolkit.createLabel(loggerComp, loggerName).setBackground(shell.getBackground());
+ String lineSeperator = System.getProperty("line.separator");
+ for(String loggerName : selectedLoggers)
+ {
+ headerText.append(loggerName + lineSeperator);
+ }
+ headerText.setSelection(0);
Composite levelComp = _toolkit.createComposite(shell);
levelComp.setBackground(shell.getBackground());
@@ -384,21 +406,63 @@
{
public void widgetSelected(SelectionEvent e)
{
- String logger = selectedLogger.get(LOGGER_NAME).toString();
String level = levelCombo.getItem(levelCombo.getSelectionIndex()).toString();
shell.close();
try
{
- boolean result = _lmmb.setConfigFileLoggerLevel(logger, level);
- ViewUtility.operationResultFeedback(result,
- "Updated ConfigFile Logger Level", "Failed to update ConfigFile Logger Level");
+ HashMap<String,Boolean> results = new HashMap<String,Boolean>();
+
+ //perform the updates, save the results.
+ for(String logger : selectedLoggers)
+ {
+ boolean result = _lmmb.setConfigFileLoggerLevel(logger, level);
+ results.put(logger, result);
+ }
+
+ //categorise the overall result
+ boolean overallResult = true;
+ for(boolean result : results.values())
+ {
+ if (!result)
+ {
+ overallResult = false;
+ }
+ }
+
+ //output the result to status bar if all succeed, and dialogue if not
+ if(overallResult)
+ {
+ ViewUtility.operationResultFeedback(overallResult, "Updated ConfigFile Logger Level(s)", null);
+ }
+ else
+ {
+ String failedToSetLevelOfLoggers = "";
+ for(String logger : results.keySet())
+ {
+ if(!results.get(logger))
+ {
+ failedToSetLevelOfLoggers = failedToSetLevelOfLoggers.concat(logger + ", ");
+ }
+ }
+
+ //cut off last ", "
+ int lastIndex = failedToSetLevelOfLoggers.lastIndexOf(',');
+ if (lastIndex != -1)
+ {
+ failedToSetLevelOfLoggers = failedToSetLevelOfLoggers.substring(0, lastIndex);
+ }
+
+ ViewUtility.operationResultFeedback(overallResult, null,
+ "Failed to update ConfigFile Logger Level(s): "
+ + failedToSetLevelOfLoggers);
+ }
}
- catch (Exception e4)
+ catch(Exception e4)
{
+ ViewUtility.operationFailedStatusBarMessage("Error updating Config File Logger Level(s)");
MBeanUtility.handleException(_mbean, e4);
- ViewUtility.operationFailedStatusBarMessage("Error updating ConfigFile Logger Level");
}
refresh(_mbean);
Modified: qpid/branches/java-broker-0-10/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/logging/RuntimeTabControl.java
URL: http://svn.apache.org/viewvc/qpid/branches/java-broker-0-10/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/logging/RuntimeTabControl.java?rev=821741&r1=821740&r2=821741&view=diff
==============================================================================
--- qpid/branches/java-broker-0-10/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/logging/RuntimeTabControl.java (original)
+++ qpid/branches/java-broker-0-10/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/logging/RuntimeTabControl.java Mon Oct 5 10:29:26 2009
@@ -20,6 +20,9 @@
*/
package org.apache.qpid.management.ui.views.logging;
+import java.util.ArrayList;
+import java.util.HashMap;
+
import javax.management.MBeanServerConnection;
import javax.management.MBeanServerInvocationHandler;
import javax.management.openmbean.CompositeData;
@@ -55,6 +58,7 @@
import org.eclipse.swt.widgets.TabFolder;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.forms.widgets.FormToolkit;
import org.eclipse.ui.forms.widgets.ScrolledForm;
@@ -188,7 +192,7 @@
GridLayout gridLayout = new GridLayout();
tableComposite.setLayout(gridLayout);
- _table = new Table (tableComposite, SWT.SINGLE | SWT.SCROLL_LINE | SWT.BORDER | SWT.FULL_SELECTION);
+ _table = new Table (tableComposite, SWT.MULTI | SWT.SCROLL_LINE | SWT.BORDER | SWT.FULL_SELECTION);
_table.setLinesVisible (true);
_table.setHeaderVisible (true);
GridData data = new GridData(SWT.FILL, SWT.FILL, true, true);
@@ -311,18 +315,36 @@
if (selectionIndex != -1)
{
- final CompositeData selectedLogger = (CompositeData)_table.getItem(selectionIndex).getData();
- String loggerName = selectedLogger.get(LOGGER_NAME).toString();
+ int[] selectedIndices = _table.getSelectionIndices();
+
+ final ArrayList<String> selectedLoggers = new ArrayList<String>();
+ for(int index = 0; index < selectedIndices.length ; index++)
+ {
+ CompositeData selectedLogger = (CompositeData)_table.getItem(selectedIndices[index]).getData();
+ String user = (String) selectedLogger.get(LOGGER_NAME);
+ selectedLoggers.add(user);
+ }
+
final Shell shell = ViewUtility.createModalDialogShell(parent, "Set Runtime Logger Level");
- Composite loggerComp = _toolkit.createComposite(shell);
- loggerComp.setBackground(shell.getBackground());
- loggerComp.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
- loggerComp.setLayout(new GridLayout(2,false));
+ _toolkit.createLabel(shell, "Logger(s): ").setBackground(shell.getBackground());
- _toolkit.createLabel(loggerComp, "Logger: ").setBackground(shell.getBackground());
- _toolkit.createLabel(loggerComp, loggerName).setBackground(shell.getBackground());
+ final Text headerText = new Text(shell, SWT.WRAP | SWT.V_SCROLL | SWT.BORDER );
+ headerText.setEditable(false);
+ GridData data = new GridData(SWT.FILL, SWT.FILL, false, false);
+ data.minimumHeight = 125;
+ data.heightHint = 125;
+ data.minimumWidth = 575;
+ data.widthHint = 575;
+ headerText.setLayoutData(data);
+
+ String lineSeperator = System.getProperty("line.separator");
+ for(String loggerName : selectedLoggers)
+ {
+ headerText.append(loggerName + lineSeperator);
+ }
+ headerText.setSelection(0);
Composite levelComp = _toolkit.createComposite(shell);
levelComp.setBackground(shell.getBackground());
@@ -348,20 +370,62 @@
{
public void widgetSelected(SelectionEvent e)
{
- String logger = selectedLogger.get(LOGGER_NAME).toString();
String level = levelCombo.getItem(levelCombo.getSelectionIndex()).toString();
shell.close();
-
+
try
{
- boolean result = _lmmb.setRuntimeLoggerLevel(logger, level);
- ViewUtility.operationResultFeedback(result,
- "Updated Runtime Logger Level", "Failed to update Runtime Logger Level");
+ HashMap<String,Boolean> results = new HashMap<String,Boolean>();
+
+ //perform the updates, save the results.
+ for(String logger : selectedLoggers)
+ {
+ boolean result = _lmmb.setRuntimeLoggerLevel(logger, level);
+ results.put(logger, result);
+ }
+
+ //categorise the overall result
+ boolean overallResult = true;
+ for(boolean result : results.values())
+ {
+ if (!result)
+ {
+ overallResult = false;
+ }
+ }
+
+ //output the result to status bar if all succeed, and dialogue if not
+ if(overallResult)
+ {
+ ViewUtility.operationResultFeedback(overallResult, "Updated Runtime Logger Level(s)", null);
+ }
+ else
+ {
+ String failedToSetLevelOfLoggers = "";
+ for(String logger : results.keySet())
+ {
+ if(!results.get(logger))
+ {
+ failedToSetLevelOfLoggers = failedToSetLevelOfLoggers.concat(logger + ", ");
+ }
+ }
+
+ //cut off last ", "
+ int lastIndex = failedToSetLevelOfLoggers.lastIndexOf(',');
+ if (lastIndex != -1)
+ {
+ failedToSetLevelOfLoggers = failedToSetLevelOfLoggers.substring(0, lastIndex);
+ }
+
+ ViewUtility.operationResultFeedback(overallResult, null,
+ "Failed to update Runtime Logger Level(s): "
+ + failedToSetLevelOfLoggers);
+ }
}
catch(Exception e3)
{
- ViewUtility.operationFailedStatusBarMessage("Error updating Runtime Logger Level");
+ ViewUtility.operationFailedStatusBarMessage("Error updating Runtime Logger Level(s)");
MBeanUtility.handleException(_mbean, e3);
}
Modified: qpid/branches/java-broker-0-10/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/queue/QueueOperationsTabControl.java
URL: http://svn.apache.org/viewvc/qpid/branches/java-broker-0-10/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/queue/QueueOperationsTabControl.java?rev=821741&r1=821740&r2=821741&view=diff
==============================================================================
--- qpid/branches/java-broker-0-10/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/queue/QueueOperationsTabControl.java (original)
+++ qpid/branches/java-broker-0-10/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/queue/QueueOperationsTabControl.java Mon Oct 5 10:29:26 2009
@@ -553,9 +553,10 @@
String[] msgHeader = (String[]) selectedMsg.get(MSG_HEADER);
headerText.setText("");
+ String lineSeperator = System.getProperty("line.separator");
for(String s: msgHeader)
{
- headerText.append(s + "\n");
+ headerText.append(s + lineSeperator);
}
}
Modified: qpid/branches/java-broker-0-10/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/type/ConnectionTypeTabControl.java
URL: http://svn.apache.org/viewvc/qpid/branches/java-broker-0-10/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/type/ConnectionTypeTabControl.java?rev=821741&r1=821740&r2=821741&view=diff
==============================================================================
--- qpid/branches/java-broker-0-10/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/type/ConnectionTypeTabControl.java (original)
+++ qpid/branches/java-broker-0-10/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/type/ConnectionTypeTabControl.java Mon Oct 5 10:29:26 2009
@@ -24,10 +24,8 @@
import static org.apache.qpid.management.ui.Constants.CONNECTION;
-import org.apache.qpid.management.ui.ApplicationRegistry;
import org.apache.qpid.management.ui.ManagedBean;
-import org.apache.qpid.management.ui.ServerRegistry;
-import org.apache.qpid.management.ui.views.MBeanView;
+import org.apache.qpid.management.ui.ManagedServer;
import org.eclipse.swt.widgets.TabFolder;
/**
@@ -38,16 +36,15 @@
public class ConnectionTypeTabControl extends MBeanTypeTabControl
{
- public ConnectionTypeTabControl(TabFolder tabFolder)
+ public ConnectionTypeTabControl(TabFolder tabFolder, ManagedServer server, String virtualHost)
{
- super(tabFolder,CONNECTION);
+ super(tabFolder, server, virtualHost, CONNECTION);
}
- @Override
- protected List<ManagedBean> getMbeans()
- {
- ServerRegistry serverRegistry = ApplicationRegistry.getServerRegistry(MBeanView.getServer());
- return serverRegistry.getConnections(MBeanView.getVirtualHost());
- }
+ @Override
+ protected List<ManagedBean> getMbeans()
+ {
+ return _serverRegistry.getConnections(_virtualHost);
+ }
}
Propchange: qpid/branches/java-broker-0-10/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/type/ConnectionTypeTabControl.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Oct 5 10:29:26 2009
@@ -1 +1 @@
-/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/type/ConnectionTypeTabControl.java:796196-797052
+/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/type/ConnectionTypeTabControl.java:796196-797511
Modified: qpid/branches/java-broker-0-10/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/type/ExchangeTypeTabControl.java
URL: http://svn.apache.org/viewvc/qpid/branches/java-broker-0-10/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/type/ExchangeTypeTabControl.java?rev=821741&r1=821740&r2=821741&view=diff
==============================================================================
--- qpid/branches/java-broker-0-10/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/type/ExchangeTypeTabControl.java (original)
+++ qpid/branches/java-broker-0-10/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/type/ExchangeTypeTabControl.java Mon Oct 5 10:29:26 2009
@@ -24,25 +24,22 @@
import static org.apache.qpid.management.ui.Constants.EXCHANGE;
-import org.apache.qpid.management.ui.ApplicationRegistry;
import org.apache.qpid.management.ui.ManagedBean;
-import org.apache.qpid.management.ui.ServerRegistry;
-import org.apache.qpid.management.ui.views.MBeanView;
+import org.apache.qpid.management.ui.ManagedServer;
import org.eclipse.swt.widgets.TabFolder;
public class ExchangeTypeTabControl extends MBeanTypeTabControl
{
- public ExchangeTypeTabControl(TabFolder tabFolder)
+ public ExchangeTypeTabControl(TabFolder tabFolder, ManagedServer server, String virtualHost)
{
- super(tabFolder,EXCHANGE);
+ super(tabFolder, server, virtualHost, EXCHANGE);
}
@Override
protected List<ManagedBean> getMbeans()
{
- ServerRegistry serverRegistry = ApplicationRegistry.getServerRegistry(MBeanView.getServer());
- return serverRegistry.getExchanges(MBeanView.getVirtualHost());
+ return _serverRegistry.getExchanges(_virtualHost);
}
}
Propchange: qpid/branches/java-broker-0-10/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/type/ExchangeTypeTabControl.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Oct 5 10:29:26 2009
@@ -1 +1 @@
-/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/type/ExchangeTypeTabControl.java:796196-797052
+/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/type/ExchangeTypeTabControl.java:796196-797511
Modified: qpid/branches/java-broker-0-10/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/type/MBeanTypeTabControl.java
URL: http://svn.apache.org/viewvc/qpid/branches/java-broker-0-10/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/type/MBeanTypeTabControl.java?rev=821741&r1=821740&r2=821741&view=diff
==============================================================================
--- qpid/branches/java-broker-0-10/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/type/MBeanTypeTabControl.java (original)
+++ qpid/branches/java-broker-0-10/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/type/MBeanTypeTabControl.java Mon Oct 5 10:29:26 2009
@@ -21,9 +21,15 @@
package org.apache.qpid.management.ui.views.type;
+import java.util.ArrayList;
import java.util.List;
+import org.apache.qpid.management.ui.ApiVersion;
+import org.apache.qpid.management.ui.ApplicationRegistry;
import org.apache.qpid.management.ui.ManagedBean;
+import org.apache.qpid.management.ui.ManagedServer;
+import org.apache.qpid.management.ui.jmx.JMXManagedObject;
+import org.apache.qpid.management.ui.jmx.JMXServerRegistry;
import org.apache.qpid.management.ui.jmx.MBeanUtility;
import org.apache.qpid.management.ui.views.MBeanView;
import org.apache.qpid.management.ui.views.NavigationView;
@@ -64,13 +70,20 @@
protected Table _table = null;
protected TableViewer _tableViewer = null;
- private List<ManagedBean> _mbeans = null;
+ protected List<ManagedBean> _mbeans = null;
private String _type;
+ protected ApiVersion _ApiVersion;
+ protected JMXManagedObject _vhostMbean;
+ protected String _virtualHost;
+ protected JMXServerRegistry _serverRegistry;
-
- public MBeanTypeTabControl(TabFolder tabFolder, String type)
+ public MBeanTypeTabControl(TabFolder tabFolder, ManagedServer server, String virtualHost, String type)
{
super(tabFolder);
+ _virtualHost = virtualHost;
+ _serverRegistry = (JMXServerRegistry) ApplicationRegistry.getServerRegistry(server);
+ _ApiVersion = _serverRegistry.getManagementApiVersion();
+ _vhostMbean = (JMXManagedObject) _serverRegistry.getVirtualHostManagerMBean(_virtualHost);
_type = type;
_toolkit = new FormToolkit(_tabFolder.getDisplay());
_form = _toolkit.createForm(_tabFolder);
@@ -120,7 +133,7 @@
protected void createTable(Composite tableComposite)
{
- _table = new Table (tableComposite, SWT.SINGLE | SWT.SCROLL_LINE | SWT.BORDER | SWT.FULL_SELECTION);
+ _table = new Table (tableComposite, SWT.MULTI | SWT.SCROLL_LINE | SWT.BORDER | SWT.FULL_SELECTION);
_table.setLinesVisible (true);
_table.setHeaderVisible (true);
GridData data = new GridData(SWT.FILL, SWT.FILL, true, true);
@@ -187,31 +200,14 @@
buttonComposite.setLayout(new GridLayout(2,true));
final Button favouritesButton = _toolkit.createButton(buttonComposite,
- "<-- Add " + _type + " to favourites", SWT.PUSH);
+ "<-- Add " + _type + "(s) to favourites", SWT.PUSH);
gridData = new GridData(SWT.LEFT, SWT.CENTER, true, false);
favouritesButton.setLayoutData(gridData);
favouritesButton.addSelectionListener(new SelectionAdapter()
{
public void widgetSelected(SelectionEvent e)
{
- int selectionIndex = _table.getSelectionIndex();
-
- if (selectionIndex != -1)
- {
- final ManagedBean selectedMBean = (ManagedBean)_table.getItem(selectionIndex).getData();
-
- IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
- NavigationView view = (NavigationView)window.getActivePage().findView(NavigationView.ID);
- try
- {
- view.addManagedBean(selectedMBean);
- }
- catch (Exception ex)
- {
- MBeanUtility.handleException(selectedMBean, ex);
- }
-
- }
+ addMBeanToFavourites();
}
});
@@ -222,23 +218,7 @@
{
public void widgetSelected(SelectionEvent e)
{
- int selectionIndex = _table.getSelectionIndex();
-
- if (selectionIndex != -1)
- {
- final ManagedBean selectedMBean = (ManagedBean)_table.getItem(selectionIndex).getData();
-
- IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
- MBeanView view = (MBeanView) window.getActivePage().findView(MBeanView.ID);
- try
- {
- view.openMBean(selectedMBean);
- }
- catch (Exception ex)
- {
- MBeanUtility.handleException(selectedMBean, ex);
- }
- }
+ openMBean();
}
});
@@ -257,16 +237,25 @@
{
int selectionIndex = _table.getSelectionIndex();
- if (selectionIndex != -1)
+ if (selectionIndex == -1)
{
- favouritesButton.setEnabled(true);
- openButton.setEnabled(true);
+ favouritesButton.setEnabled(false);
+ openButton.setEnabled(false);
+ return;
}
else
{
- favouritesButton.setEnabled(false);
+ favouritesButton.setEnabled(true);
+ }
+
+ if(_table.getSelectionCount() > 1)
+ {
openButton.setEnabled(false);
}
+ else
+ {
+ openButton.setEnabled(true);
+ }
}
});
@@ -275,23 +264,7 @@
// MouseListener implementation
public void mouseDoubleClick(MouseEvent event)
{
- int selectionIndex = _table.getSelectionIndex();
-
- if (selectionIndex != -1)
- {
- final ManagedBean selectedMBean = (ManagedBean)_table.getItem(selectionIndex).getData();
-
- IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
- MBeanView view = (MBeanView) window.getActivePage().findView(MBeanView.ID);
- try
- {
- view.openMBean(selectedMBean);
- }
- catch (Exception ex)
- {
- MBeanUtility.handleException(selectedMBean, ex);
- }
- }
+ openMBean();
}
public void mouseDown(MouseEvent e){}
@@ -403,4 +376,63 @@
return comparison;
}
}
+
+ protected void addMBeanToFavourites()
+ {
+ int selectionIndex = _table.getSelectionIndex();
+
+ if (selectionIndex == -1)
+ {
+ return;
+ }
+
+ int[] selectedIndices = _table.getSelectionIndices();
+
+ ArrayList<ManagedBean> selectedMBeans = new ArrayList<ManagedBean>();
+
+ for(int index = 0; index < selectedIndices.length ; index++)
+ {
+ ManagedBean selectedMBean = (ManagedBean)_table.getItem(selectedIndices[index]).getData();
+ selectedMBeans.add(selectedMBean);
+ }
+
+ IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
+ NavigationView view = (NavigationView)window.getActivePage().findView(NavigationView.ID);
+
+ ManagedBean bean = null;
+ try
+ {
+ for(ManagedBean mbean: selectedMBeans)
+ {
+ view.addManagedBean(mbean);
+ }
+ }
+ catch (Exception ex)
+ {
+ MBeanUtility.handleException(bean, ex);
+ }
+ }
+
+ protected void openMBean()
+ {
+ int selectionIndex = _table.getSelectionIndex();
+
+ if (selectionIndex == -1)
+ {
+ return;
+ }
+
+ final ManagedBean selectedMBean = (ManagedBean)_table.getItem(selectionIndex).getData();
+
+ IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
+ MBeanView view = (MBeanView) window.getActivePage().findView(MBeanView.ID);
+ try
+ {
+ view.openMBean(selectedMBean);
+ }
+ catch (Exception ex)
+ {
+ MBeanUtility.handleException(selectedMBean, ex);
+ }
+ }
}
Propchange: qpid/branches/java-broker-0-10/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/type/MBeanTypeTabControl.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Oct 5 10:29:26 2009
@@ -1 +1 @@
-/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/type/MBeanTypeTabControl.java:796196-797052
+/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/type/MBeanTypeTabControl.java:796196-797511
Modified: qpid/branches/java-broker-0-10/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/type/QueueTypeTabControl.java
URL: http://svn.apache.org/viewvc/qpid/branches/java-broker-0-10/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/type/QueueTypeTabControl.java?rev=821741&r1=821740&r2=821741&view=diff
==============================================================================
--- qpid/branches/java-broker-0-10/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/type/QueueTypeTabControl.java (original)
+++ qpid/branches/java-broker-0-10/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/type/QueueTypeTabControl.java Mon Oct 5 10:29:26 2009
@@ -23,16 +23,24 @@
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
+import java.util.Map;
+
+import javax.management.MBeanServerConnection;
+import javax.management.MBeanServerInvocationHandler;
import static org.apache.qpid.management.ui.Constants.QUEUE;
+import static org.apache.qpid.management.ui.Constants.ATTRIBUTE_QUEUE_DEPTH;
+import org.apache.qpid.management.common.mbeans.ManagedBroker;
import org.apache.qpid.management.ui.ApplicationRegistry;
-import org.apache.qpid.management.ui.Constants;
import org.apache.qpid.management.ui.ManagedBean;
+import org.apache.qpid.management.ui.ManagedServer;
import org.apache.qpid.management.ui.ServerRegistry;
import org.apache.qpid.management.ui.jmx.MBeanUtility;
import org.apache.qpid.management.ui.model.AttributeData;
import org.apache.qpid.management.ui.views.MBeanView;
+import org.apache.qpid.management.ui.views.NavigationView;
+import org.apache.qpid.management.ui.views.ViewUtility;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.jface.viewers.LabelProvider;
@@ -49,22 +57,60 @@
import org.eclipse.swt.widgets.TabFolder;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
public class QueueTypeTabControl extends MBeanTypeTabControl
{
- private HashMap<ManagedBean, Long> _queueDepths = new HashMap<ManagedBean, Long>();
- private HashMap<ManagedBean, Long> _activeConsumerCounts = new HashMap<ManagedBean, Long>();
-
+ private MBeanServerConnection _mbsc;
+ private ManagedBroker _vhmb;
+ //Map for storing queue depths for servers using Qpid JMX API 1.2 and below
+ private Map<ManagedBean,Long> _queueDepths = new HashMap<ManagedBean, Long>();
+
+ public QueueTypeTabControl(TabFolder tabFolder, ManagedServer server, String virtualHost)
+ {
+ super(tabFolder,server,virtualHost,QUEUE);
+ _mbsc = (MBeanServerConnection) _serverRegistry.getServerConnection();
+ _vhmb = (ManagedBroker) MBeanServerInvocationHandler.newProxyInstance(_mbsc,
+ _vhostMbean.getObjectName(), ManagedBroker.class, false);
+ }
- public QueueTypeTabControl(TabFolder tabFolder)
+ @Override
+ public void refresh(ManagedBean mbean)
{
- super(tabFolder,QUEUE);
+ if(_ApiVersion.greaterThanOrEqualTo(1, 3))
+ {
+ //Qpid JMX API 1.3+, use this virtualhosts VirtualHostManager MBean
+ //to retrieve the Queue Name and Queue Depth
+
+ Map<String,Long> queueNamesDepths = null;
+ try
+ {
+ queueNamesDepths = _vhmb.viewQueueNamesDepths();
+ }
+ catch(Exception e)
+ {
+ MBeanUtility.handleException(_vhostMbean, e);
+ }
+
+ _tableViewer.setInput(queueNamesDepths);
+ }
+ else
+ {
+ //Qpid JMX API 1.2 or below, use the ManagedBeans and look
+ //up the attribute value for each
+ _mbeans = getMbeans();
+ _tableViewer.setInput(_mbeans);
+ }
+
+ layout();
}
@Override
protected List<ManagedBean> getMbeans()
{
ServerRegistry serverRegistry = ApplicationRegistry.getServerRegistry(MBeanView.getServer());
+
try
{
return extractQueueDetails(serverRegistry.getQueues(MBeanView.getVirtualHost()));
@@ -80,36 +126,47 @@
private List<ManagedBean> extractQueueDetails(List<ManagedBean> list) throws Exception
{
_queueDepths.clear();
- _activeConsumerCounts.clear();
-
+
List<ManagedBean> items = new ArrayList<ManagedBean>();
for (ManagedBean mbean : list)
{
- AttributeData data = MBeanUtility.getAttributeData(mbean, Constants.ATTRIBUTE_QUEUE_DEPTH);
+ AttributeData data = MBeanUtility.getAttributeData(mbean, ATTRIBUTE_QUEUE_DEPTH);
_queueDepths.put(mbean, Long.valueOf(data.getValue().toString()));
- data = MBeanUtility.getAttributeData(mbean, Constants.ATTRIBUTE_QUEUE_CONSUMERCOUNT);
- _activeConsumerCounts.put(mbean, Long.valueOf(data.getValue().toString()));
-
+
items.add(mbean);
}
return items;
}
-
+
@Override
protected void createTable(Composite tableComposite)
{
- _table = new Table (tableComposite, SWT.SINGLE | SWT.SCROLL_LINE | SWT.BORDER | SWT.FULL_SELECTION);
+ _table = new Table (tableComposite, SWT.MULTI | SWT.SCROLL_LINE | SWT.BORDER | SWT.FULL_SELECTION);
_table.setLinesVisible (true);
_table.setHeaderVisible (true);
GridData data = new GridData(SWT.FILL, SWT.FILL, true, true);
_table.setLayoutData(data);
_tableViewer = new TableViewer(_table);
- final TableSorter tableSorter = new TableSorter();
+
+ String[] titles = new String[]{"Queue Name", "Queue Depth"};
+ int[] bounds = new int[]{325, 200};
- String[] titles = { "Name", "QueueDepth", "Active Consumer Count"};
- int[] bounds = { 250, 175, 175};
+ final TableSorter tableSorter;
+
+ if(_ApiVersion.greaterThanOrEqualTo(1, 3))
+ {
+ //QpidJMX API 1.3+ using the new getQueueNamesDepths method in VHostManager MBean.
+ //requires sorting Map.Entry elements
+ tableSorter = new NewerTableSorter();
+ }
+ else
+ {
+ //QpidJMX API 1.2 or below. Requires sorting ManagedBeans and using the _queueDepths map
+ tableSorter = new OlderTableSorter();
+ }
+
for (int i = 0; i < titles.length; i++)
{
final int index = i;
@@ -145,17 +202,27 @@
}
- _tableViewer.setContentProvider(new ContentProviderImpl());
- _tableViewer.setLabelProvider(new LabelProviderImpl());
+ if(_ApiVersion.greaterThanOrEqualTo(1, 3))
+ {
+ _tableViewer.setContentProvider(new NewerContentProviderImpl());
+ _tableViewer.setLabelProvider(new NewerLabelProviderImpl());
+ }
+ else
+ {
+ _tableViewer.setContentProvider(new OlderContentProviderImpl());
+ _tableViewer.setLabelProvider(new OlderLabelProviderImpl());
+ }
+
+ _tableViewer.setUseHashlookup(true);
_tableViewer.setSorter(tableSorter);
_table.setSortColumn(_table.getColumn(0));
_table.setSortDirection(SWT.UP);
}
/**
- * Content Provider class for the table viewer
+ * Content Provider class for the table viewer for Qpid JMX API 1.2 and below.
*/
- private class ContentProviderImpl implements IStructuredContentProvider
+ private class OlderContentProviderImpl implements IStructuredContentProvider
{
public void inputChanged(Viewer v, Object oldInput, Object newInput)
@@ -176,9 +243,9 @@
}
/**
- * Label Provider class for the table viewer
+ * Label Provider class for the table viewer for Qpid JMX API 1.2 and below.
*/
- private class LabelProviderImpl extends LabelProvider implements ITableLabelProvider
+ private class OlderLabelProviderImpl extends LabelProvider implements ITableLabelProvider
{
@Override
public String getColumnText(Object element, int columnIndex)
@@ -190,9 +257,7 @@
case 0 : // name column
return mbean.getName();
case 1 : // queue depth column
- return getQueueDepthString(mbean, _queueDepths.get(mbean));
- case 2 : // consumer count column
- return String.valueOf(_activeConsumerCounts.get(mbean));
+ return getQueueDepthString(_queueDepths.get(mbean));
default:
return "-";
}
@@ -205,12 +270,18 @@
}
}
- private String getQueueDepthString(ManagedBean mbean, Long value)
+ private String getQueueDepthString(Long value)
{
- if (mbean.getVersion() == 1) //mbean is v1 and returns KB
- {
- Double mb = 1024.0;
-
+ if(value == null)
+ {
+ return "-";
+ }
+
+ if (_ApiVersion.lessThanOrEqualTo(1,1))
+ {
+ //Qpid JMX API 1.1 or below, returns KB
+ double mb = 1024.0;
+
if(value > mb) //MB
{
return String.format("%.3f", (Double)(value / mb)) + " MB";
@@ -220,11 +291,12 @@
return value + " KB";
}
}
- else //mbean is v2+ and returns Bytes
+ else
{
+ //Qpid JMX API 1.2 or above, returns Bytes
double mb = 1024.0 * 1024.0;
double kb = 1024.0;
-
+
if(value >= mb) //MB
{
return String.format("%.3f", (Double)(value / mb)) + " MB";
@@ -239,18 +311,19 @@
}
}
}
+
/**
- * Sorter class for the table viewer.
+ * Abstract sorter class for the table viewer.
*
*/
- private class TableSorter extends ViewerSorter
+ private abstract class TableSorter extends ViewerSorter
{
- private int column;
- private static final int ASCENDING = 0;
- private static final int DESCENDING = 1;
+ protected int column;
+ protected static final int ASCENDING = 0;
+ protected static final int DESCENDING = 1;
- private int direction;
+ protected int direction;
public TableSorter()
{
@@ -274,6 +347,21 @@
}
@Override
+ public abstract int compare(Viewer viewer, Object e1, Object e2);
+ }
+
+ /**
+ * sorter class for the table viewer for Qpid JMX API 1.2 and below.
+ *
+ */
+ private class OlderTableSorter extends TableSorter
+ {
+ public OlderTableSorter()
+ {
+ super();
+ }
+
+ @Override
public int compare(Viewer viewer, Object e1, Object e2)
{
ManagedBean mbean1 = (ManagedBean) e1;
@@ -287,9 +375,44 @@
break;
case 1: //queue depth
comparison = _queueDepths.get(mbean1).compareTo(_queueDepths.get(mbean2));
+ default:
+ comparison = 0;
+ }
+ // If descending order, flip the direction
+ if(direction == DESCENDING)
+ {
+ comparison = -comparison;
+ }
+ return comparison;
+ }
+ }
+
+ /**
+ * sorter class for the table viewer for Qpid JMX API 1.3 and above.
+ *
+ */
+ private class NewerTableSorter extends TableSorter
+ {
+ public NewerTableSorter()
+ {
+ super();
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public int compare(Viewer viewer, Object e1, Object e2)
+ {
+ Map.Entry<String, Long> queue1 = (Map.Entry<String, Long>) e1;
+ Map.Entry<String, Long> queue2 = (Map.Entry<String, Long>) e2;
+
+ int comparison = 0;
+ switch(column)
+ {
+ case 0://name
+ comparison = (queue1.getKey()).compareTo(queue2.getKey());
break;
- case 2: //active consumer count
- comparison = _activeConsumerCounts.get(mbean1).compareTo(_activeConsumerCounts.get(mbean2));
+ case 1://queue depth
+ comparison = (queue1.getValue()).compareTo(queue2.getValue());;
break;
default:
comparison = 0;
@@ -303,4 +426,152 @@
}
}
+ /**
+ * Content Provider class for the table viewer for Qpid JMX API 1.3 and above.
+ */
+ private class NewerContentProviderImpl implements IStructuredContentProvider
+ {
+
+ public void inputChanged(Viewer v, Object oldInput, Object newInput)
+ {
+
+ }
+
+ public void dispose()
+ {
+
+ }
+
+ @SuppressWarnings("unchecked")
+ public Object[] getElements(Object parent)
+ {
+ Map<String, Long> map = (Map<String, Long>) parent;
+ return map.entrySet().toArray(new Map.Entry[0]);
+ }
+ }
+
+ /**
+ * Label Provider class for the table viewer for for Qpid JMX API 1.3 and above.
+ */
+ private class NewerLabelProviderImpl extends LabelProvider implements ITableLabelProvider
+ {
+ @SuppressWarnings("unchecked")
+ @Override
+ public String getColumnText(Object element, int columnIndex)
+ {
+ Map.Entry<String, Long> queue = (Map.Entry<String, Long>) element;
+
+ switch (columnIndex)
+ {
+ case 0 : // name column
+ return queue.getKey();
+ case 1 : // depth column
+ return getQueueDepthString(queue.getValue());
+ default :
+ return "-";
+ }
+ }
+
+ @Override
+ public Image getColumnImage(Object element, int columnIndex)
+ {
+ return null;
+ }
+ }
+
+ @Override
+ protected void addMBeanToFavourites()
+ {
+ int selectionIndex = _table.getSelectionIndex();
+
+ if (selectionIndex == -1)
+ {
+ return;
+ }
+
+ int[] selectedIndices = _table.getSelectionIndices();
+
+ ArrayList<ManagedBean> selectedMBeans = new ArrayList<ManagedBean>();
+
+ if(_ApiVersion.greaterThanOrEqualTo(1, 3))
+ {
+ //if we have Qpid JMX API 1.3+ the entries are created from Map.Entry<String,Long>
+ for(int index = 0; index < selectedIndices.length ; index++)
+ {
+ Map.Entry<String, Long> queueEntry = (Map.Entry<String, Long>) _table.getItem(selectedIndices[index]).getData();
+ String queueName = queueEntry.getKey();
+ selectedMBeans.add(_serverRegistry.getQueue(queueName, _virtualHost));
+ }
+ }
+ else
+ {
+ //if we have a Qpid JMX API 1.2 or less server, entries are created from ManagedBeans directly
+ for(int index = 0; index < selectedIndices.length ; index++)
+ {
+ ManagedBean mbean = (ManagedBean) _table.getItem(selectedIndices[index]).getData();
+ selectedMBeans.add(mbean);
+ }
+ }
+
+ IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
+ NavigationView view = (NavigationView)window.getActivePage().findView(NavigationView.ID);
+
+ ManagedBean bean = null;
+ try
+ {
+ for(ManagedBean mbean: selectedMBeans)
+ {
+ bean = mbean;
+ view.addManagedBean(mbean);
+ }
+ }
+ catch (Exception ex)
+ {
+ MBeanUtility.handleException(bean, ex);
+ }
+ }
+
+ @Override
+ protected void openMBean()
+ {
+ int selectionIndex = _table.getSelectionIndex();
+
+ if (selectionIndex == -1)
+ {
+ return;
+ }
+
+ ManagedBean selectedMBean;
+
+ if(_ApiVersion.greaterThanOrEqualTo(1, 3))
+ {
+ //if we have Qpid JMX API 1.3+ the entries are created from Map.Entry<String,Long>
+ Map.Entry<String, Long> queueEntry = (Map.Entry<String, Long>) _table.getItem(selectionIndex).getData();
+
+ String queueName = queueEntry.getKey();
+ selectedMBean = _serverRegistry.getQueue(queueName, _virtualHost);
+ }
+ else
+ {
+ //if we have a Qpid JMX API 1.2 or less server, entries are created from ManagedBeans directly
+ selectedMBean = (ManagedBean)_table.getItem(selectionIndex).getData();
+ }
+
+ if(selectedMBean == null)
+ {
+ ViewUtility.popupErrorMessage("Error", "Unable to retrieve the selected MBean to open it");
+ return;
+ }
+
+ IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
+ MBeanView view = (MBeanView) window.getActivePage().findView(MBeanView.ID);
+ try
+ {
+ view.openMBean(selectedMBean);
+ }
+ catch (Exception ex)
+ {
+ MBeanUtility.handleException(selectedMBean, ex);
+ }
+ }
}
Propchange: qpid/branches/java-broker-0-10/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/type/QueueTypeTabControl.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Oct 5 10:29:26 2009
@@ -1 +1 @@
-/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/type/QueueTypeTabControl.java:796196-797052
+/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/type/QueueTypeTabControl.java:796196-797511
---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project: http://qpid.apache.org
Use/Interact: mailto:commits-subscribe@qpid.apache.org