From 9c54829519d762389271eab5fd2a0440f725971d Mon Sep 17 00:00:00 2001 From: Robert Gemmell Date: Tue, 21 Jul 2009 09:16:54 +0000 Subject: QPID-1981: add copyMessages() support to the QueueOperations tab git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@796205 13f79535-47bb-0310-9956-ffa450edef68 --- .../ui/views/queue/QueueOperationsTabControl.java | 82 +++++++++++++++++++--- 1 file changed, 74 insertions(+), 8 deletions(-) (limited to 'java/management/eclipse-plugin') diff --git a/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/queue/QueueOperationsTabControl.java b/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/queue/QueueOperationsTabControl.java index 71dc02f4d4..ef67f7bf27 100644 --- a/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/queue/QueueOperationsTabControl.java +++ b/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/queue/QueueOperationsTabControl.java @@ -390,9 +390,33 @@ public class QueueOperationsTabControl extends TabControl return; } - moveMessages(moveMessagesButton.getShell()); + moveOrCopyMessages(moveMessagesButton.getShell(), QueueOperations.MOVE); } }); + + final Button copyMessagesButton; + if(_ApiVersion.greaterThanOrEqualTo(1, 3))//if the server supports Qpid JMX API 1.3 + { + copyMessagesButton= _toolkit.createButton(buttonsComposite, "Copy Message(s) ...", SWT.PUSH); + copyMessagesButton.setLayoutData(new GridData(SWT.FILL, SWT.TOP, false, false)); + copyMessagesButton.setEnabled(false); + copyMessagesButton.addSelectionListener(new SelectionAdapter() + { + public void widgetSelected(SelectionEvent e) + { + if (_table.getSelectionIndex() == -1) + { + return; + } + + moveOrCopyMessages(copyMessagesButton.getShell(), QueueOperations.COPY); + } + }); + } + else + { + copyMessagesButton = null; + } final Button clearQueueButton = _toolkit.createButton(buttonsComposite, "Clear Queue", SWT.PUSH); clearQueueButton.setLayoutData(new GridData(SWT.FILL, SWT.TOP, false, false)); @@ -476,12 +500,20 @@ public class QueueOperationsTabControl extends TabControl redeliveredText.setText("-"); viewSelectedMsgButton.setEnabled(false); moveMessagesButton.setEnabled(false); - + if(copyMessagesButton != null) + { + copyMessagesButton.setEnabled(false); + } + return; } else { moveMessagesButton.setEnabled(true); + if(copyMessagesButton != null) + { + copyMessagesButton.setEnabled(true); + } final CompositeData selectedMsg = (CompositeData)_table.getItem(selectionIndex).getData(); Boolean redelivered = (Boolean) selectedMsg.get(MSG_REDELIVERED); @@ -697,7 +729,7 @@ public class QueueOperationsTabControl extends TabControl shell.dispose(); } - private void moveMessages(final Shell parent) + private void moveOrCopyMessages(final Shell parent, final QueueOperations op) { final ArrayList rangeStarts = new ArrayList(); final ArrayList rangeEnds = new ArrayList(); @@ -705,14 +737,34 @@ public class QueueOperationsTabControl extends TabControl gatherSelectedAMQMsgIDRanges(rangeStarts,rangeEnds); String rangeString = getRangesString(rangeStarts,rangeEnds); - final Shell shell = ViewUtility.createModalDialogShell(parent, "Move Messages"); + String windowTitle; + String dialogueMessage; + final String feedBackMessage; + final String failureFeedBackMessage; + + if(op.equals(QueueOperations.MOVE)) + { + windowTitle = "Move Messages"; + dialogueMessage = "Move message(s) with AMQ ID:"; + feedBackMessage = "Messages moved"; + failureFeedBackMessage = "Error moving messages"; + } + else + { + windowTitle = "Copy Messages"; + dialogueMessage = "Copy message(s) with AMQ ID:"; + feedBackMessage = "Messages copied"; + failureFeedBackMessage = "Error copying messages"; + } + + final Shell shell = ViewUtility.createModalDialogShell(parent, windowTitle); Composite idComposite = _toolkit.createComposite(shell, SWT.NONE); idComposite.setBackground(shell.getBackground()); idComposite.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false)); idComposite.setLayout(new GridLayout()); - _toolkit.createLabel(idComposite,"Move message(s) with AMQ ID:").setBackground(shell.getBackground()); + _toolkit.createLabel(idComposite,dialogueMessage).setBackground(shell.getBackground()); _toolkit.createLabel(idComposite,rangeString).setBackground(shell.getBackground()); Composite destinationComposite = _toolkit.createComposite(shell, SWT.NONE); @@ -762,14 +814,22 @@ public class QueueOperationsTabControl extends TabControl Long from = rangeStarts.get(i); Long to = rangeEnds.get(i); - _qmb.moveMessages(Long.valueOf(from), Long.valueOf(to), destQueue); + switch(op) + { + case COPY: + _qmb.copyMessages(Long.valueOf(from), Long.valueOf(to), destQueue); + break; + case MOVE: + _qmb.moveMessages(Long.valueOf(from), Long.valueOf(to), destQueue); + break; + } } - ViewUtility.operationResultFeedback(null, "Messages moved", null); + ViewUtility.operationResultFeedback(null, feedBackMessage, null); } catch (Exception e4) { - ViewUtility.operationFailedStatusBarMessage("Error moving messages"); + ViewUtility.operationFailedStatusBarMessage(failureFeedBackMessage); MBeanUtility.handleException(_mbean, e4); } @@ -860,4 +920,10 @@ public class QueueOperationsTabControl extends TabControl return idRangesString.concat("."); } + + private enum QueueOperations + { + MOVE, + COPY; + } } -- cgit v1.2.1