Author: robbie
Date: Fri Jul 24 14:55:24 2009
New Revision: 797510

URL: http://svn.apache.org/viewvc?rev=797510&view=rev
Log:
QPID-2006: enable double click on a Queue from a binding result in order to 
open the Queue mbean directly from the Exchanges mbean view

Modified:
    
qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/exchange/ExchangeOperationsTabControl.java
    
qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/exchange/HeadersExchangeOperationsTabControl.java

Modified: 
qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/exchange/ExchangeOperationsTabControl.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/exchange/ExchangeOperationsTabControl.java?rev=797510&r1=797509&r2=797510&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/exchange/ExchangeOperationsTabControl.java
 (original)
+++ 
qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/exchange/ExchangeOperationsTabControl.java
 Fri Jul 24 14:55:24 2009
@@ -35,9 +35,11 @@
 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;
@@ -49,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;
@@ -64,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;
 
@@ -282,6 +288,19 @@
         _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)
             {
@@ -580,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/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/exchange/HeadersExchangeOperationsTabControl.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/exchange/HeadersExchangeOperationsTabControl.java?rev=797510&r1=797509&r2=797510&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/exchange/HeadersExchangeOperationsTabControl.java
 (original)
+++ 
qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/exchange/HeadersExchangeOperationsTabControl.java
 Fri Jul 24 14:55:24 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)
     {
@@ -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);
+        }
+    }
 }



---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:commits-subscr...@qpid.apache.org

Reply via email to