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 [3/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/users/UserManagementTabControl.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/users/UserManagementTabControl.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/users/UserManagementTabControl.java (original)
+++ qpid/branches/java-broker-0-10/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/users/UserManagementTabControl.java Mon Oct  5 10:29:26 2009
@@ -20,13 +20,17 @@
  */
 package org.apache.qpid.management.ui.views.users;
 
+import java.util.ArrayList;
 import java.util.Collection;
+import java.util.HashMap;
 
 import javax.management.MBeanServerConnection;
 import javax.management.MBeanServerInvocationHandler;
 import javax.management.openmbean.CompositeData;
 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.common.mbeans.UserManagement;
 import org.apache.qpid.management.ui.jmx.JMXManagedObject;
@@ -75,6 +79,7 @@
 
     private TabularDataSupport _userDetails = null;
     private UserManagement _ummb;
+    private ApiVersion _ApiVersion;
     
     static final String USERNAME = UserManagement.COMPOSITE_ITEM_NAMES[0];
     static final String RIGHTS_READ_ONLY = UserManagement.COMPOSITE_ITEM_NAMES[1];
@@ -85,6 +90,7 @@
     {
         super(tabFolder);
         _mbean = mbean;
+        _ApiVersion = ApplicationRegistry.getServerRegistry(mbean).getManagementApiVersion();
         _ummb = (UserManagement)
                 MBeanServerInvocationHandler.newProxyInstance(mbsc, mbean.getObjectName(),
                                                             UserManagement.class, false);
@@ -154,7 +160,7 @@
         tableComposite.setLayoutData(gridData);
         tableComposite.setLayout(new GridLayout(2,false));
         
-        _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 = new GridData(SWT.FILL, SWT.FILL, true, true);
@@ -207,16 +213,29 @@
         _table.setSortDirection(SWT.UP);
         
         Composite buttonsComposite = _toolkit.createComposite(tableComposite);
-        gridData = new GridData(SWT.FILL, SWT.FILL, false, true);
+        gridData = new GridData(SWT.FILL, SWT.TOP, false, false);
+        gridData.heightHint = 165;
         buttonsComposite.setLayoutData(gridData);
         buttonsComposite.setLayout(new GridLayout());
         
-        final Button deleteUserButton = _toolkit.createButton(buttonsComposite, "Delete User", SWT.PUSH);
-        gridData = new GridData(SWT.CENTER, SWT.TOP, false, false);
+        final Button addUserButton = _toolkit.createButton(buttonsComposite, "Add New User ...", SWT.PUSH);
+        gridData = new GridData(SWT.CENTER, SWT.TOP, false, true);
         gridData.widthHint = 125;
-        deleteUserButton.setLayoutData(gridData);
-        deleteUserButton.setEnabled(false);
-        deleteUserButton.addSelectionListener(new SelectionAdapter()
+        addUserButton.setLayoutData(gridData);
+        addUserButton.addSelectionListener(new SelectionAdapter()
+        {
+            public void widgetSelected(SelectionEvent e)
+            {
+                addUser(addUserButton.getShell());
+            }
+        });
+        
+        final Button deleteUsersButton = _toolkit.createButton(buttonsComposite, "Delete User(s)", SWT.PUSH);
+        gridData = new GridData(SWT.CENTER, SWT.BOTTOM, false, false);
+        gridData.widthHint = 125;
+        deleteUsersButton.setLayoutData(gridData);
+        deleteUsersButton.setEnabled(false);
+        deleteUsersButton.addSelectionListener(new SelectionAdapter()
         {
             public void widgetSelected(SelectionEvent e)
             {
@@ -224,32 +243,13 @@
 
                 if (selectionIndex != -1)
                 {
-                    final CompositeData selectedLogger = (CompositeData)_table.getItem(selectionIndex).getData();
-                    String user = selectedLogger.get(USERNAME).toString(); 
-
-                    int response = ViewUtility.popupOkCancelConfirmationMessage("User Management", 
-                                                                    "Delete user: " + user + " ?");
-                    if (response == SWT.OK)
-                    {
-                        try
-                        {
-                            boolean result = _ummb.deleteUser(user);
-                            ViewUtility.operationResultFeedback(result, "Deleted user", "Failed to delete user");
-                        }
-                        catch(Exception e1)
-                        {
-                            ViewUtility.operationFailedStatusBarMessage("Error deleting user");
-                            MBeanUtility.handleException(_mbean, e1);
-                        }
-
-                        refresh(_mbean);;
-                    }
+                    deleteUsers();
                 }
             }
         });
         
         final Button setPasswordButton = _toolkit.createButton(buttonsComposite, "Set Password ...", SWT.PUSH);
-        gridData = new GridData(SWT.CENTER, SWT.TOP, false, false);
+        gridData = new GridData(SWT.CENTER, SWT.BOTTOM, false, false);
         gridData.widthHint = 125;
         setPasswordButton.setLayoutData(gridData);
         setPasswordButton.setEnabled(false);
@@ -317,7 +317,7 @@
         });
         
         final Button setRightsButton = _toolkit.createButton(buttonsComposite, "Set Rights ...", SWT.PUSH);
-        gridData = new GridData(SWT.CENTER, SWT.TOP, false, false);
+        gridData = new GridData(SWT.CENTER, SWT.BOTTOM, false, false);
         gridData.widthHint = 125;
         setRightsButton.setLayoutData(gridData);
         setRightsButton.setEnabled(false);
@@ -329,43 +329,36 @@
 
                 if (selectionIndex != -1)
                 {
-                    final CompositeData selectedLogger = (CompositeData)_table.getItem(
-                                                                        selectionIndex).getData();
-                    String user = selectedLogger.get(USERNAME).toString();
-                    
-                    setRights(setRightsButton.getShell(), user);
+                    setRights(setRightsButton.getShell());
                 }
             }
         });
         
-        final Button addUserButton = _toolkit.createButton(buttonsComposite, "Add New User ...", SWT.PUSH);
-        gridData = new GridData(SWT.CENTER, SWT.BOTTOM, false, true);
-        gridData.widthHint = 125;
-        addUserButton.setLayoutData(gridData);
-        addUserButton.addSelectionListener(new SelectionAdapter()
-        {
-            public void widgetSelected(SelectionEvent e)
-            {
-                addUser(addUserButton.getShell());
-            }
-        });
-        
         _tableViewer.addSelectionChangedListener(new ISelectionChangedListener(){
             public void selectionChanged(SelectionChangedEvent evt)
             {
                 int selectionIndex = _table.getSelectionIndex();
 
-                if (selectionIndex != -1)
+                if (selectionIndex == -1)
                 {
-                    deleteUserButton.setEnabled(true);
-                    setPasswordButton.setEnabled(true);
-                    setRightsButton.setEnabled(true);
+                    deleteUsersButton.setEnabled(false);
+                    setRightsButton.setEnabled(false);
+                    setPasswordButton.setEnabled(false);
+                    return;
                 }
                 else
                 {
-                    deleteUserButton.setEnabled(false);
+                    deleteUsersButton.setEnabled(true);
+                    setRightsButton.setEnabled(true);
+                }
+                
+                if (_table.getSelectionCount() > 1)
+                {
                     setPasswordButton.setEnabled(false);
-                    setRightsButton.setEnabled(false);
+                }
+                else
+                {
+                    setPasswordButton.setEnabled(true);
                 }
             }
         });
@@ -379,12 +372,14 @@
 
         final Button reloadUserDetails = _toolkit.createButton(miscGroup, 
                                                                 "Reload User Details", SWT.PUSH);
-        if(_mbean.getVersion() == 1)
+        if(_ApiVersion.lessThan(1, 2))
         {
+            //this only reloaded the JMX rights file before Qpid JMX API 1.2
             _toolkit.createLabel(miscGroup, " Loads the current management rights file from disk");
         }
         else
         {
+            //since Qpid JMX API 1.2 it also reloads the password file
             _toolkit.createLabel(miscGroup, " Loads the current password and management rights files from disk");
         }
         reloadUserDetails.addSelectionListener(new SelectionAdapter()
@@ -549,13 +544,48 @@
         }
     }
     
-    private void setRights(final Shell parent, final String user)
+    private void setRights(final Shell parent)
     {
+        
+        int selectionIndex = _table.getSelectionIndex();
+
+        if (selectionIndex == -1)
+        {
+            return;
+        }
+
+        int[] selectedIndices = _table.getSelectionIndices();
+
+        final ArrayList<String> selectedUsers = new ArrayList<String>();
+
+        for(int index = 0; index < selectedIndices.length ; index++)
+        {
+            CompositeData selectedUser = (CompositeData)_table.getItem(selectedIndices[index]).getData();
+            String user = selectedUser.get(USERNAME).toString();
+            selectedUsers.add(user);
+        }
+
+        String selectedUsersString = "";
+        for(String user : selectedUsers)
+        {
+            selectedUsersString = selectedUsersString.concat(user + ", ");
+        }
+        //cut off last ", "
+        int lastIndex = selectedUsersString.lastIndexOf(',');
+        if (lastIndex != -1)
+        {
+            selectedUsersString = selectedUsersString.substring(0,lastIndex);
+        }
+
+
+        
         final Shell shell = ViewUtility.createModalDialogShell(parent, "Set Rights");
         
-        Label overview = _toolkit.createLabel(shell,"Select rights for user '" + user + "':");
+        Label overview = _toolkit.createLabel(shell,"Select rights for user(s): ");
         overview.setBackground(shell.getBackground());
-        
+        Label userNamesLabel= _toolkit.createLabel(shell,selectedUsersString);
+        userNamesLabel.setBackground(shell.getBackground());
+
         Composite buttons = _toolkit.createComposite(shell, SWT.NONE);
         buttons.setBackground(shell.getBackground());
         buttons.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
@@ -590,14 +620,56 @@
                 boolean admin = adminButton.getSelection();
                 
                 shell.dispose();
+
+                HashMap<String,Boolean> results = new HashMap<String,Boolean>();
                 try
                 {
-                    boolean result = _ummb.setRights(user,read,write,admin);
-                    ViewUtility.operationResultFeedback(result, "Updated user rights", "Failed to update user rights");
+                    //perform the rights updates, save the results.
+                    for(String user : selectedUsers)
+                    {
+                        boolean result = _ummb.setRights(user,read,write,admin);
+                        results.put(user, 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 success, and dialogue if not
+                    if(overallResult)
+                    {
+                        ViewUtility.operationResultFeedback(overallResult, "Updated user rights", null);
+                    }
+                    else
+                    {
+                        String failedToUpdateRightsUsers = "";
+                        for(String user : results.keySet())
+                        {
+                            if(!results.get(user))
+                            {
+                                failedToUpdateRightsUsers = failedToUpdateRightsUsers.concat(user + ", ");
+                            }
+                        }
+
+                        //cut off last ", "
+                        int lastIndex2 = failedToUpdateRightsUsers.lastIndexOf(',');
+                        if (lastIndex2 != -1)
+                        {
+                            failedToUpdateRightsUsers = failedToUpdateRightsUsers.substring(0, lastIndex2);
+                        }
+
+                        ViewUtility.operationResultFeedback(overallResult, null, "Failed to update user(s) rights: " + failedToUpdateRightsUsers);
+                    }
                 }
                 catch(Exception e4)
                 {
-                    ViewUtility.operationFailedStatusBarMessage("Error setting user rights");
+                    ViewUtility.operationFailedStatusBarMessage("Error updating user rights");
                     MBeanUtility.handleException(_mbean, e4);
                 }
                 refresh(_mbean);
@@ -716,4 +788,97 @@
         shell.pack();
         shell.open();
     }
+    
+    private void deleteUsers()
+    {
+        int selectionIndex = _table.getSelectionIndex();
+        if (selectionIndex == -1)
+        {
+            return;
+        }
+        
+        int[] selectedIndices = _table.getSelectionIndices();
+        
+        ArrayList<String> selectedUsers = new ArrayList<String>();
+        
+        for(int index = 0; index < selectedIndices.length ; index++)
+        {
+            CompositeData selectedUser = (CompositeData)_table.getItem(selectedIndices[index]).getData();
+            String user = selectedUser.get(USERNAME).toString();
+            selectedUsers.add(user);
+        }
+
+        String selectedUsersString = "";
+        for(String user : selectedUsers)
+        {
+            selectedUsersString = selectedUsersString.concat(user + ", ");
+        }
+        //cut off last ", "
+        int lastIndex = selectedUsersString.lastIndexOf(',');
+        if (lastIndex != -1)
+        {
+            selectedUsersString = selectedUsersString.substring(0,lastIndex);
+        }
+        
+        int response = ViewUtility.popupOkCancelConfirmationMessage(
+                "User Management", "Delete user(s): " + selectedUsersString + " ?");
+        
+        if (response == SWT.OK)
+        {
+            HashMap<String,Boolean> results = new HashMap<String,Boolean>();
+            try
+            {
+                //perform the deletes, save the results.
+                for(String user : selectedUsers)
+                {
+                    boolean result = _ummb.deleteUser(user);
+                    results.put(user, 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 success, and dialogue if not
+                if(overallResult)
+                {
+                    ViewUtility.operationResultFeedback(overallResult, "Deleted user(s)", null);
+                }
+                else
+                {
+                    String failedToDeleteUsers = "";
+                    for(String user : results.keySet())
+                    {
+                        if(!results.get(user))
+                        {
+                            failedToDeleteUsers = failedToDeleteUsers.concat(user + ", ");
+                        }
+                    }
+                    
+                    //cut off last ", "
+                    lastIndex = failedToDeleteUsers.lastIndexOf(',');
+                    if (lastIndex != -1)
+                    {
+                        failedToDeleteUsers = failedToDeleteUsers.substring(0, lastIndex);
+                    }
+                    
+                    ViewUtility.operationResultFeedback(overallResult, null, "Failed to delete user(s): " + failedToDeleteUsers);
+                }
+                
+            }
+            catch(Exception e1)
+            {
+                ViewUtility.operationFailedStatusBarMessage("Error deleting user(s)");
+                MBeanUtility.handleException(_mbean, e1);
+            }
+
+            refresh(_mbean);;
+        }
+    }
 }

Modified: qpid/branches/java-broker-0-10/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/vhost/VHostTabControl.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/vhost/VHostTabControl.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/vhost/VHostTabControl.java (original)
+++ qpid/branches/java-broker-0-10/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/vhost/VHostTabControl.java Mon Oct  5 10:29:26 2009
@@ -23,7 +23,9 @@
 import static org.apache.qpid.management.ui.Constants.DEFAULT_EXCHANGE_TYPE_VALUES;
 
 import java.io.IOException;
+import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 
 import javax.management.MBeanServerConnection;
 import javax.management.MBeanServerInvocationHandler;
@@ -47,6 +49,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;
@@ -61,6 +65,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.Form;
 import org.eclipse.ui.forms.widgets.FormToolkit;
 
@@ -81,12 +87,16 @@
 
     private ManagedBroker _vhmb;
     private ApiVersion _ApiVersion;
+    private List<ManagedBean> _queues;
+    private List<ManagedBean> _exchanges;
+    private ServerRegistry _serverRegistry;
 
     public VHostTabControl(TabFolder tabFolder, JMXManagedObject mbean, MBeanServerConnection mbsc)
     {
         super(tabFolder);
         _mbean = mbean;
-        _ApiVersion = ApplicationRegistry.getServerRegistry(mbean).getManagementApiVersion();
+        _serverRegistry = ApplicationRegistry.getServerRegistry(mbean);
+        _ApiVersion = _serverRegistry.getManagementApiVersion();
         _vhmb = (ManagedBroker) MBeanServerInvocationHandler.newProxyInstance(mbsc, 
                                 mbean.getObjectName(), ManagedBroker.class, false);
         _toolkit = new FormToolkit(_tabFolder.getDisplay());
@@ -122,15 +132,12 @@
     @Override
     public void refresh(ManagedBean mbean)
     {
-        List<ManagedBean> queues = null;
-        List<ManagedBean> exchanges = null;
-        
         ServerRegistry serverRegistry = ApplicationRegistry.getServerRegistry(MBeanView.getServer());
-        queues = serverRegistry.getQueues(MBeanView.getVirtualHost());
-        exchanges = serverRegistry.getExchanges(MBeanView.getVirtualHost());
+        _queues = serverRegistry.getQueues(MBeanView.getVirtualHost());
+        _exchanges = serverRegistry.getExchanges(MBeanView.getVirtualHost());
 
-        _queueTableViewer.setInput(queues);
-        _exchangeTableViewer.setInput(exchanges);
+        _queueTableViewer.setInput(_queues);
+        _exchangeTableViewer.setInput(_exchanges);
         
         layout();
     }
@@ -150,7 +157,7 @@
         GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
         queuesGroup.setLayoutData(gridData);
                
-        _queueTable = new Table (queuesGroup, SWT.SINGLE | SWT.SCROLL_LINE | SWT.BORDER | SWT.FULL_SELECTION);
+        _queueTable = new Table (queuesGroup, SWT.MULTI | SWT.SCROLL_LINE | SWT.BORDER | SWT.FULL_SELECTION);
         _queueTable.setLinesVisible (true);
         _queueTable.setHeaderVisible (true);
         GridData data = new GridData(SWT.FILL, SWT.FILL, true, true);
@@ -221,35 +228,7 @@
         {
             public void widgetSelected(SelectionEvent e)
             {
-                int selectionIndex = _queueTable.getSelectionIndex();
-
-                if (selectionIndex != -1)
-                {
-                    final ManagedBean selectedQueue = (ManagedBean)_queueTable.getItem(selectionIndex).getData();
-                    String queue = selectedQueue.getName(); 
-
-                    int response = ViewUtility.popupOkCancelConfirmationMessage("VirtualHost Manager", 
-                                                                    "Delete queue: " + queue + " ?");
-                    if (response == SWT.OK)
-                    {
-                        try
-                        {
-                            _vhmb.deleteQueue(queue);
-                            
-                            ViewUtility.operationResultFeedback(null, "Deleted Queue", null);
-                            //remove queue from list of managed beans
-                            ServerRegistry serverRegistry = ApplicationRegistry.getServerRegistry(MBeanView.getServer());
-                            serverRegistry.removeManagedObject(selectedQueue);
-                        }
-                        catch(Exception e1)
-                        {
-                            ViewUtility.operationFailedStatusBarMessage("Error deleting Queue");
-                            MBeanUtility.handleException(_mbean, e1);
-                        }
-
-                        refresh(_mbean);;
-                    }
-                }
+                deleteQueuesOrExchanges(deleteQueueButton.getShell(), VhostOperations.DELETE_QUEUE);
             }
         });
   
@@ -269,6 +248,18 @@
             }
         });
 
+        //listener for double clicking to open the selection mbean
+        _queueTable.addMouseListener(new MouseListener()                                              
+        {
+            // MouseListener implementation
+            public void mouseDoubleClick(MouseEvent event)
+            {
+                openMBean(_queueTable);
+            }
+            
+            public void mouseDown(MouseEvent e){}
+            public void mouseUp(MouseEvent e){}
+        });
         
         Group exchangesGroup = new Group(_paramsComposite, SWT.SHADOW_NONE);
         exchangesGroup.setBackground(_paramsComposite.getBackground());
@@ -277,7 +268,7 @@
         gridData = new GridData(SWT.FILL, SWT.FILL, true, true);
         exchangesGroup.setLayoutData(gridData);
                
-        _exchangeTable = new Table (exchangesGroup, SWT.SINGLE | SWT.SCROLL_LINE | SWT.BORDER | SWT.FULL_SELECTION);
+        _exchangeTable = new Table (exchangesGroup, SWT.MULTI | SWT.SCROLL_LINE | SWT.BORDER | SWT.FULL_SELECTION);
         _exchangeTable.setLinesVisible (true);
         _exchangeTable.setHeaderVisible (true);
         data = new GridData(SWT.FILL, SWT.FILL, true, true);
@@ -346,35 +337,7 @@
         {
             public void widgetSelected(SelectionEvent e)
             {
-                int selectionIndex = _exchangeTable.getSelectionIndex();
-
-                if (selectionIndex != -1)
-                {
-                    final ManagedBean selectedExchange = (ManagedBean)_exchangeTable.getItem(selectionIndex).getData();
-                    String exchange = selectedExchange.getName(); 
-
-                    int response = ViewUtility.popupOkCancelConfirmationMessage("VirtualHost Manager", 
-                                                                    "Delete exchange: " + exchange + " ?");
-                    if (response == SWT.OK)
-                    {
-                        try
-                        {
-                            _vhmb.unregisterExchange(exchange);
-                            
-                            ViewUtility.operationResultFeedback(null, "Deleted Exchange", null);
-                            //remove exchange from list of managed beans
-                            ServerRegistry serverRegistry = ApplicationRegistry.getServerRegistry(MBeanView.getServer());
-                            serverRegistry.removeManagedObject(selectedExchange);
-                        }
-                        catch(Exception e1)
-                        {
-                            ViewUtility.operationFailedStatusBarMessage("Error deleting Exchange");
-                            MBeanUtility.handleException(_mbean, e1);
-                        }
-
-                        refresh(_mbean);;
-                    }
-                }
+                deleteQueuesOrExchanges(deleteExchangeButton.getShell(), VhostOperations.DELETE_EXCHANGE);
             }
         });
   
@@ -394,6 +357,18 @@
             }
         });
         
+        //listener for double clicking to open the selection mbean
+        _exchangeTable.addMouseListener(new MouseListener()                                              
+        {
+            // MouseListener implementation
+            public void mouseDoubleClick(MouseEvent event)
+            {
+                openMBean(_exchangeTable);
+            }
+            
+            public void mouseDown(MouseEvent e){}
+            public void mouseUp(MouseEvent e){}
+        });
     }
 
     
@@ -732,4 +707,155 @@
         shell.open();
     }
     
+    private void deleteQueuesOrExchanges(Shell parent, final VhostOperations op)
+    {
+        Table table;
+        String windowTitle;
+        String dialogueMessage;
+        final String feedBackMessage;
+        final String failureFeedBackMessage;
+        
+        if(op.equals(VhostOperations.DELETE_QUEUE))
+        {
+            table = _queueTable;
+            windowTitle = "Delete Queue(s)";
+            dialogueMessage = "Delete Queue(s): ";
+            feedBackMessage = "Queue(s) deleted";
+            failureFeedBackMessage = "Error deleting Queue(s)";
+        }
+        else
+        {
+            table = _exchangeTable;
+            windowTitle = "Delete Exchange(s)";
+            dialogueMessage = "Delete Exchange(s): ";
+            feedBackMessage = "Exchange(s) deleted";
+            failureFeedBackMessage = "Error deleting Exchange(s)";
+        }
+        
+        int selectionIndex = table.getSelectionIndex();
+        if (selectionIndex == -1)
+        {
+            return;
+        }
+        
+        int[] selectedIndices = table.getSelectionIndices();
+        
+        final 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);
+        }
+        
+        
+        final Shell shell = ViewUtility.createModalDialogShell(parent, windowTitle);
+
+        _toolkit.createLabel(shell, dialogueMessage).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 = 150;
+        data.heightHint = 150;
+        data.minimumWidth = 400;
+        data.widthHint = 400;
+        headerText.setLayoutData(data);
+
+        String lineSeperator = System.getProperty("line.separator");
+        for(ManagedBean mbean : selectedMBeans)
+        {
+            headerText.append(mbean.getName() + lineSeperator);
+        }
+        headerText.setSelection(0);
+        
+        Composite okCancelButtonsComp = _toolkit.createComposite(shell);
+        okCancelButtonsComp.setBackground(shell.getBackground());
+        okCancelButtonsComp.setLayoutData(new GridData(SWT.RIGHT, SWT.FILL, true, true));
+        okCancelButtonsComp.setLayout(new GridLayout(2,false));
+        
+        Button okButton = _toolkit.createButton(okCancelButtonsComp, "OK", SWT.PUSH);
+        okButton.setLayoutData(new GridData(SWT.RIGHT, SWT.TOP, false, false));
+        Button cancelButton = _toolkit.createButton(okCancelButtonsComp, "Cancel", SWT.PUSH);
+        cancelButton.setLayoutData(new GridData(SWT.RIGHT, SWT.TOP, false, false));
+
+        okButton.addSelectionListener(new SelectionAdapter()
+        {
+            public void widgetSelected(SelectionEvent e)
+            {
+                shell.dispose();
+                
+                try
+                {
+                    //perform the deletes
+                    for(ManagedBean mbean : selectedMBeans)
+                    {
+                        switch(op)
+                        {
+                            case DELETE_QUEUE:
+                                _vhmb.deleteQueue(mbean.getName());
+                                _serverRegistry.removeManagedObject(mbean);
+                                break;
+                            case DELETE_EXCHANGE:
+                                _vhmb.unregisterExchange(mbean.getName());
+                                break;
+                        }
+                        //remove the mbean from the server registry now instead of
+                        //waiting for an mbean Unregistration Notification to do it
+                        _serverRegistry.removeManagedObject(mbean);
+                    }
+
+                    ViewUtility.operationResultFeedback(null, feedBackMessage, null);
+                }
+                catch(Exception e1)
+                {
+                    ViewUtility.operationFailedStatusBarMessage(failureFeedBackMessage);
+                    MBeanUtility.handleException(_mbean, e1);
+                }
+
+                refresh(_mbean);;
+            }
+        });
+        
+        cancelButton.addSelectionListener(new SelectionAdapter()
+        {
+            public void widgetSelected(SelectionEvent e)
+            {
+                shell.dispose();
+            }
+        });
+
+        shell.setDefaultButton(okButton);
+        shell.pack();
+        shell.open();
+    }
+    
+    private enum VhostOperations
+    {
+        DELETE_QUEUE,
+        DELETE_EXCHANGE;
+    }
+    
+    private void openMBean(Table table)
+    {
+        int selectionIndex = table.getSelectionIndex();
+
+        if (selectionIndex == -1)
+        {
+            return;
+        }
+        
+        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/resources/macosx/Contents/MacOS/qpidmc
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Oct  5 10:29:26 2009
@@ -1 +1 @@
-/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/resources/macosx/Contents/MacOS/qpidmc:796196-797052
+/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/resources/macosx/Contents/MacOS/qpidmc:796196-797511



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