Author: robbie Date: Fri Jul 24 14:44:52 2009 New Revision: 797502 URL: http://svn.apache.org/viewvc?rev=797502&view=rev Log: QPID-1978: Enable multiple selection for the LoggingManagement tabs, allowing alteration of multiple logger levels at once
Modified: qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/logging/ConfigurationFileTabControl.java qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/logging/RuntimeTabControl.java qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/queue/QueueOperationsTabControl.java Modified: qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/logging/ConfigurationFileTabControl.java URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/logging/ConfigurationFileTabControl.java?rev=797502&r1=797501&r2=797502&view=diff ============================================================================== --- qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/logging/ConfigurationFileTabControl.java (original) +++ qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/logging/ConfigurationFileTabControl.java Fri Jul 24 14:44:52 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/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/logging/RuntimeTabControl.java URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/logging/RuntimeTabControl.java?rev=797502&r1=797501&r2=797502&view=diff ============================================================================== --- qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/logging/RuntimeTabControl.java (original) +++ qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/logging/RuntimeTabControl.java Fri Jul 24 14:44:52 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/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/queue/QueueOperationsTabControl.java URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/queue/QueueOperationsTabControl.java?rev=797502&r1=797501&r2=797502&view=diff ============================================================================== --- qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/queue/QueueOperationsTabControl.java (original) +++ qpid/trunk/qpid/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/queue/QueueOperationsTabControl.java Fri Jul 24 14:44:52 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); } } --------------------------------------------------------------------- Apache Qpid - AMQP Messaging Implementation Project: http://qpid.apache.org Use/Interact: mailto:commits-subscr...@qpid.apache.org