Author: robbie
Date: Fri Jul 24 14:48:23 2009
New Revision: 797506
URL: http://svn.apache.org/viewvc?rev=797506&view=rev
Log:
QPID-1978: Enable multiple selection in the VirtualHostManager MBean for
Queue/Exchange deletion
Modified:
qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/vhost/VHostTabControl.java
Modified:
qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/vhost/VHostTabControl.java
URL:
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/vhost/VHostTabControl.java?rev=797506&r1=797505&r2=797506&view=diff
==============================================================================
---
qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/vhost/VHostTabControl.java
(original)
+++
qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/vhost/VHostTabControl.java
Fri Jul 24 14:48:23 2009
@@ -23,6 +23,7 @@
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 javax.management.MBeanServerConnection;
@@ -81,12 +82,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 +127,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 +152,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 +223,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);
}
});
@@ -277,7 +251,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 +320,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);
}
});
@@ -732,4 +678,133 @@
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;
+ }
+
}
---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project: http://qpid.apache.org
Use/Interact: mailto:[email protected]