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