diff options
Diffstat (limited to 'java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/OperationTabControl.java')
-rw-r--r-- | java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/OperationTabControl.java | 938 |
1 files changed, 0 insertions, 938 deletions
diff --git a/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/OperationTabControl.java b/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/OperationTabControl.java deleted file mode 100644 index 676389bd96..0000000000 --- a/java/management/eclipse-plugin/src/main/java/org/apache/qpid/management/ui/views/OperationTabControl.java +++ /dev/null @@ -1,938 +0,0 @@ -/* - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - * - */ -package org.apache.qpid.management.ui.views; - -import org.eclipse.swt.SWT; -import org.eclipse.swt.custom.ScrolledComposite; -import org.eclipse.swt.events.KeyAdapter; -import org.eclipse.swt.events.KeyEvent; -import org.eclipse.swt.events.KeyListener; -import org.eclipse.swt.events.SelectionAdapter; -import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.events.SelectionListener; -import org.eclipse.swt.events.VerifyEvent; -import org.eclipse.swt.events.VerifyListener; -import org.eclipse.swt.layout.FormAttachment; -import org.eclipse.swt.layout.FormData; -import org.eclipse.swt.layout.FormLayout; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Button; -import org.eclipse.swt.widgets.Combo; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Display; -import org.eclipse.swt.widgets.Label; -import org.eclipse.swt.widgets.Shell; -import org.eclipse.swt.widgets.TabFolder; -import org.eclipse.swt.widgets.Text; -import org.eclipse.ui.forms.widgets.Form; -import org.eclipse.ui.forms.widgets.FormToolkit; - -import org.apache.qpid.management.ui.ApplicationRegistry; -import org.apache.qpid.management.ui.ManagedBean; -import org.apache.qpid.management.ui.jmx.MBeanUtility; -import org.apache.qpid.management.ui.model.OperationData; -import org.apache.qpid.management.ui.model.ParameterData; - -import static org.apache.qpid.management.ui.Constants.*; - -import javax.management.openmbean.CompositeData; -import javax.management.openmbean.TabularDataSupport; -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashMap; -import java.util.List; -import java.util.Map.Entry; - - -/** - * Control class for the MBean operations tab. It creates the required widgets - * for the selected MBean. - */ -public class OperationTabControl extends TabControl -{ - private static final int heightForAParameter = 30; - private static final int labelWidth = 30; - private static final int valueWidth = labelWidth + 25; - - private FormToolkit _toolkit; - private Form _form; - private OperationData _opData; - - private SelectionListener operationExecutionListener = new OperationExecutionListener(); - private SelectionListener refreshListener = new RefreshListener(); - private SelectionListener parameterSelectionListener = new ParameterSelectionListener(); - private SelectionListener booleanSelectionListener = new BooleanSelectionListener(); - private VerifyListener verifyListener = new VerifyListenerImpl(); - private KeyListener keyListener = new KeyListenerImpl(); - private KeyListener headerBindingListener = new HeaderBindingKeyListener(); - - private Composite _headerComposite = null; - private Composite _paramsComposite = null; - private Composite _resultsComposite = null; - private Button _executionButton = null; - - // for customized method in header exchange - private HashMap<Text, Text> headerBindingHashMap = null; - private String _virtualHostName = null; - - public OperationTabControl(TabFolder tabFolder, OperationData opData) - { - super(tabFolder); - _toolkit = new FormToolkit(_tabFolder.getDisplay()); - _form = _toolkit.createForm(_tabFolder); - _form.getBody().setLayout(new GridLayout()); - _opData = opData; - createComposites(); - setHeader(); - } - - /** - * Form area is devided in four parts: - * Header composite - displays operaiton information - * Patameters composite - displays parameters if there - * Button - operation execution button - * Results composite - displays results for operations, which have - * no parameters but have some return value - */ - private void createComposites() - { - // - _headerComposite = _toolkit.createComposite(_form.getBody(), SWT.NONE); - _headerComposite.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false)); - - List<ParameterData> params = _opData.getParameters(); - if (params != null && !params.isEmpty()) - { - _paramsComposite = _toolkit.createComposite(_form.getBody(), SWT.NONE); - _paramsComposite.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false)); - } - _executionButton = _toolkit.createButton(_form.getBody(), BUTTON_EXECUTE, SWT.PUSH | SWT.CENTER); - _executionButton.setFont(ApplicationRegistry.getFont(FONT_BUTTON)); - GridData layoutData = new GridData(SWT.CENTER, SWT.TOP, true, false); - layoutData.verticalIndent = 20; - _executionButton.setLayoutData(layoutData); - - _resultsComposite = _toolkit.createComposite(_form.getBody(), SWT.NONE); - layoutData = new GridData(SWT.FILL, SWT.FILL, true, true); - layoutData.verticalIndent = 20; - _resultsComposite.setLayoutData(layoutData); - _resultsComposite.setLayout(new GridLayout()); - } - - /** - * @see TabControl#getControl() - */ - public Control getControl() - { - return _form; - } - - @Override - public void refresh(ManagedBean mbean) - { - _mbean = mbean; - _virtualHostName = _mbean.getVirtualHostName(); - - // Setting the form to be invisible. Just in case the mbean server connection - // is done and it takes time in getting the response, then the ui should be blank - // instead of having half the widgets displayed. - _form.setVisible(false); - - ViewUtility.disposeChildren(_paramsComposite); - createParameterWidgets(); - - // Set button text and add appropriate listener to button. - // If there are no parameters and it is info operation, then operation gets executed - // and result is displayed - List<ParameterData> params = _opData.getParameters(); - if (params != null && !params.isEmpty()) - { - setButton(BUTTON_EXECUTE); - } - else if (_opData.getImpact() == OPERATION_IMPACT_ACTION) - { - setButton(BUTTON_EXECUTE); - } - else if (_opData.getImpact() == OPERATION_IMPACT_INFO) - { - setButton(BUTTON_REFRESH); - executeAndShowResults(); - } - - _form.setVisible(true); - layout(); - } - - public void layout() - { - _form.layout(true); - _form.getBody().layout(true, true); - } - - /** - * populates the header composite, containing the operation name and description. - */ - private void setHeader() - { - _form.setText(ViewUtility.getDisplayText(_opData.getName())); - _headerComposite.setLayout(new GridLayout(2, false)); - //operation description - Label label = _toolkit.createLabel(_headerComposite, DESCRIPTION + " : "); - label.setFont(ApplicationRegistry.getFont(FONT_BOLD)); - label.setLayoutData(new GridData(SWT.LEAD, SWT.TOP, false, false)); - - label = _toolkit.createLabel(_headerComposite, _opData.getDescription()); - label.setFont(ApplicationRegistry.getFont(FONT_NORMAL)); - label.setLayoutData(new GridData(SWT.LEAD, SWT.TOP, true, false)); - - _headerComposite.layout(); - } - - /** - * Creates the widgets for operation parameters if there are any - */ - private void createParameterWidgets() - { - List<ParameterData> params = _opData.getParameters(); - if (params == null || params.isEmpty()) - { - return; - } - - // Customised parameter widgets - if (_mbean.isExchange() && - HEADERS_EXCHANGE.equals(_mbean.getProperty(EXCHANGE_TYPE)) && - _opData.getName().equalsIgnoreCase(OPERATION_CREATE_BINDING)) - { - customCreateNewBinding(); - return; - } - // end of Customised parameter widgets - - _paramsComposite.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false)); - _paramsComposite.setLayout(new FormLayout()); - int parameterPositionOffset = 0; - for (ParameterData param : params) - { - boolean valueInCombo = false; - Label label = _toolkit.createLabel(_paramsComposite, ViewUtility.getDisplayText(param.getName())); - FormData formData = new FormData(); - if (params.indexOf(param) == 0) - { - parameterPositionOffset = 0; - } - else - { - parameterPositionOffset += heightForAParameter; - } - formData.top = new FormAttachment(0, parameterPositionOffset + 2); - formData.right = new FormAttachment(labelWidth); - label.setLayoutData(formData); - label.setToolTipText(param.getDescription()); - - formData = new FormData(); - formData.top = new FormAttachment(0, parameterPositionOffset); - formData.left = new FormAttachment(label, 5); - formData.right = new FormAttachment(valueWidth); - // this will contain the list of items, if the list is to be made available to choose from - // e.g. the list of exchanges - String[] items = null; - if (param.getName().equals(QUEUE)) - { - List<String> qList = ApplicationRegistry.getServerRegistry(_mbean).getQueueNames(_virtualHostName); - // Customization for AMQQueueMBean method OPERATION_MOVE_MESSAGES - if (_opData.getName().equals(OPERATION_MOVE_MESSAGES)) - { - qList.remove(_mbean.getName()); - } - // End of Customization - items = qList.toArray(new String[0]); - } - else if (param.getName().equals(EXCHANGE)) - { - items = ApplicationRegistry.getServerRegistry(_mbean).getExchangeNames(_virtualHostName); - } - else if (param.getName().equals(EXCHANGE_TYPE)) - { - items = DEFAULT_EXCHANGE_TYPE_VALUES.toArray(new String[DEFAULT_EXCHANGE_TYPE_VALUES.size()]); - } - else if (isUserListParameter(param)) - { - List<String> list = ApplicationRegistry.getServerRegistry(_mbean).getUsernames(); - if (list != null && !list.isEmpty()) - { - items = list.toArray(new String[0]); - } - } - - if (items != null) - { - org.eclipse.swt.widgets.List _list = new org.eclipse.swt.widgets.List(_paramsComposite, SWT.BORDER | SWT.V_SCROLL); - int listSize = _form.getClientArea().height * 2 / 3; - int itemsHeight = items.length * (_list.getItemHeight() + 2); - // Set a min height for the list widget (set it to min 4 items) - if (items.length < 4) - { - itemsHeight = 4 * (_list.getItemHeight() + 2); - } - - listSize = (listSize > itemsHeight) ? itemsHeight : listSize; - parameterPositionOffset = parameterPositionOffset + listSize; - formData.bottom = new FormAttachment(0, parameterPositionOffset); - _list.setLayoutData(formData); - _list.setData(param); - _list.setItems(items); - _list.addSelectionListener(parameterSelectionListener); - valueInCombo = true; - } - else if (param.isBoolean()) - { - Button booleanButton = _toolkit.createButton(_paramsComposite, "", SWT.CHECK); - booleanButton.setLayoutData(formData); - booleanButton.setData(param); - booleanButton.addSelectionListener(booleanSelectionListener); - valueInCombo = true; - } - else - { - int style = SWT.NONE; - if (PASSWORD.equalsIgnoreCase(param.getName())) - { - style = SWT.PASSWORD; - } - Text text = _toolkit.createText(_paramsComposite, "", style); - formData = new FormData(); - formData.top = new FormAttachment(0, parameterPositionOffset); - formData.left = new FormAttachment(label, 5); - formData.right = new FormAttachment(valueWidth); - text.setLayoutData(formData); - // Listener to assign value to the parameter - text.addKeyListener(keyListener); - // Listener to verify if the entered key is valid - text.addVerifyListener(verifyListener); - text.setData(param); - } - - // display the parameter data type next to the text field - if (valueInCombo) - { - label = _toolkit.createLabel(_paramsComposite, ""); - } - else if (PASSWORD.equalsIgnoreCase(param.getName())) - { - label = _toolkit.createLabel(_paramsComposite, "(String)"); - } - else - { - String str = param.getType(); - - if (param.getType().lastIndexOf(".") != -1) - { - str = param.getType().substring(1 + param.getType().lastIndexOf(".")); - } - - label = _toolkit.createLabel(_paramsComposite, "(" + str + ")"); - } - formData = new FormData(); - formData.top = new FormAttachment(0, parameterPositionOffset); - formData.left = new FormAttachment(valueWidth, 5); - label.setLayoutData(formData); - } - } - - private boolean isUserListParameter(ParameterData param) - { - if (_mbean.isAdmin() && param.getName().equals(OPERATION_PARAM_USERNAME) - && !_opData.getName().equals(OPERATION_CREATEUSER)) - { - return true; - } - - return false; - } - - /** - * Creates customized dispaly for a method "CreateNewBinding" for Headers exchange - * - */ - private void customCreateNewBinding() - { - headerBindingHashMap = new HashMap<Text, Text>(); - - _paramsComposite.setLayout(new GridLayout()); - _paramsComposite.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, true)); - final ScrolledComposite scrolledComposite = new ScrolledComposite(_paramsComposite, SWT.BORDER | SWT.V_SCROLL); - scrolledComposite.setExpandHorizontal(true); - scrolledComposite.setExpandVertical(true); - GridData layoutData = new GridData(SWT.FILL, SWT.TOP, true, true); - scrolledComposite.setLayoutData(layoutData); - scrolledComposite.setLayout(new GridLayout()); - - final Composite composite = _toolkit.createComposite(scrolledComposite, SWT.NONE); - scrolledComposite.setContent(composite); - layoutData = new GridData(SWT.FILL, SWT.FILL, true, true); - layoutData.verticalIndent = 20; - composite.setLayoutData(layoutData); - composite.setLayout(new FormLayout()); - - List<ParameterData> params = _opData.getParameters(); - ParameterData param = params.get(0); - // Queue selection widget - Label label = _toolkit.createLabel(composite, ViewUtility.getDisplayText(param.getName())); - FormData formData = new FormData(); - formData.top = new FormAttachment(0, 2); - formData.right = new FormAttachment(labelWidth); - label.setLayoutData(formData); - label.setToolTipText(param.getDescription()); - - formData = new FormData(); - formData.top = new FormAttachment(0); - formData.left = new FormAttachment(label, 5); - formData.right = new FormAttachment(valueWidth); - - Combo combo = new Combo(composite, SWT.READ_ONLY | SWT.DROP_DOWN); - List<String> qList = ApplicationRegistry.getServerRegistry(_mbean).getQueueNames(_virtualHostName); - combo.setItems(qList.toArray(new String[0])); - combo.add("Select Queue", 0); - combo.select(0); - combo.setLayoutData(formData); - combo.setData(param); - combo.addSelectionListener(parameterSelectionListener); - - // Binding creation widgets - createARowForCreatingHeadersBinding(composite, 1); - createARowForCreatingHeadersBinding(composite, 2); - createARowForCreatingHeadersBinding(composite, 3); - createARowForCreatingHeadersBinding(composite, 4); - createARowForCreatingHeadersBinding(composite, 5); - createARowForCreatingHeadersBinding(composite, 6); - createARowForCreatingHeadersBinding(composite, 7); - createARowForCreatingHeadersBinding(composite, 8); - - final Button addMoreButton = _toolkit.createButton(composite, "Add More", SWT.PUSH); - formData = new FormData(); - formData.top = new FormAttachment(0, heightForAParameter); - formData.left = new FormAttachment(70, 5); - addMoreButton.setLayoutData(formData); - addMoreButton.setData("rowCount", 8); - addMoreButton.addSelectionListener(new SelectionAdapter() - { - public void widgetSelected(SelectionEvent e) - { - int count = Integer.parseInt(addMoreButton.getData("rowCount").toString()); - createARowForCreatingHeadersBinding(composite, ++count); - addMoreButton.setData("rowCount", count); - scrolledComposite.setMinSize(composite.computeSize(SWT.DEFAULT, SWT.DEFAULT)); - composite.layout(); - _form.layout(); - } - }); - - scrolledComposite.setMinSize(composite.computeSize(SWT.DEFAULT, SWT.DEFAULT)); - composite.layout(); - } - - /** - * Adds a row for adding a binding for Headers Exchange. Used by the method, which creates the customized - * layout and widgest for Header's exchange method createNewBinding. - * @param parent composite - * @param rowCount - row number - */ - private void createARowForCreatingHeadersBinding(Composite parent, int rowCount) - { - Label key = _toolkit.createLabel(parent, "Name"); - FormData formData = new FormData(); - formData.top = new FormAttachment(0, rowCount * heightForAParameter + 2); - formData.right = new FormAttachment(15); - key.setLayoutData(formData); - - Text keyText = _toolkit.createText(parent, "", SWT.NONE); - formData = new FormData(); - formData.top = new FormAttachment(0, rowCount * heightForAParameter); - formData.left = new FormAttachment(key, 5); - formData.right = new FormAttachment(40); - keyText.setLayoutData(formData); - keyText.addKeyListener(headerBindingListener); - - Label value = _toolkit.createLabel(parent, "Value"); - formData = new FormData(); - formData.top = new FormAttachment(0, rowCount * heightForAParameter + 2); - formData.right = new FormAttachment(45); - value.setLayoutData(formData); - - Text valueText = _toolkit.createText(parent, "", SWT.NONE); - formData = new FormData(); - formData.top = new FormAttachment(0, rowCount * heightForAParameter); - formData.left = new FormAttachment(value, 5); - formData.right = new FormAttachment(70); - valueText.setLayoutData(formData); - valueText.addKeyListener(headerBindingListener); - - // Add these to the map, to retrieve the values while setting the parameter value - headerBindingHashMap.put(keyText, valueText); - } - - /** - * Sets text and listener for the operation execution button - * @param text - */ - private void setButton(String text) - { - _executionButton.setText(text); - _executionButton.removeSelectionListener(refreshListener); - _executionButton.removeSelectionListener(operationExecutionListener); - - if (BUTTON_EXECUTE.equals(text)) - { - _executionButton.addSelectionListener(operationExecutionListener); - } - else - { - _executionButton.addSelectionListener(refreshListener); - } - } - - /** - * displays the operation result in a pop-up window - * @param result - */ - private void populateResults(Object result) - { - Display display = Display.getCurrent(); - int width = 610; - int height = 400; - Shell shell = ViewUtility.createPopupShell(RESULT, width, height); - shell.setImage(ApplicationRegistry.getImage(CONSOLE_IMAGE)); - ViewUtility.populateCompositeWithData(_toolkit, shell, result); - - shell.open(); - while (!shell.isDisposed()) { - if (!display.readAndDispatch()) { - display.sleep(); - } - } - shell.dispose(); - } - - /** - * Clears the parameter values of the operation - */ - private void clearParameters() - { - List<ParameterData> params = _opData.getParameters(); - if (params != null && !params.isEmpty()) - { - for (ParameterData param : params) - { - param.setDefaultValue(); - } - } - } - - /** - * Clears the values entered by the user from parameter value widgets - * @param control - */ - private void clearParameterValues(Composite control) - { - if (control == null || (control.isDisposed())) - { - return; - } - - Control[] controls = control.getChildren(); - if (controls == null || controls.length == 0) - { - return; - } - - for (int i = 0; i < controls.length; i++) - { - if (controls[i] instanceof Combo) - { - ((Combo)controls[i]).select(0); - } - if (controls[i] instanceof org.eclipse.swt.widgets.List) - { - ((org.eclipse.swt.widgets.List)controls[i]).deselectAll(); - } - else if (controls[i] instanceof Text) - { - ((Text)controls[i]).setText(""); - } - else if (controls[i] instanceof Button) - { - ((Button)controls[i]).setSelection(false); - } - else if (controls[i] instanceof Composite) - { - clearParameterValues((Composite)controls[i]); - } - } - } - - /** - * Listener class for operation execution events - */ - private class OperationExecutionListener extends SelectionAdapter - { - public void widgetSelected(SelectionEvent e) - { - List<ParameterData> params = _opData.getParameters(); - if (params != null && !params.isEmpty()) - { - for (ParameterData param : params) - { - if (param.getValue() == null || param.getValue().toString().length() == 0) - { - // Customized check, because for this parameter null is allowed - if (param.getName().equals(ATTRIBUTE_QUEUE_OWNER) && - _opData.getName().equals(OPERATION_CREATE_QUEUE)) - { - continue; - } - // End of custom code - - ViewUtility.popupInfoMessage(_form.getText(), "Please select the " + ViewUtility.getDisplayText(param.getName())); - return; - } - - //Custom handling for the PASSWORD field - if (param.getName().equalsIgnoreCase(PASSWORD)) - { - //Convert the String value to a character array if that is what is required. - if (param.getType().equals("[C")) - { - // Retreive the mBean type and version. - // If we have a version 1 UserManagement class mbean then it expects the password - // to be sent as the hashed version. - if (_mbean.getType().equals("UserManagement") && _mbean.getVersion() == 1) - { - try - { - param.setValue(ViewUtility.getHash((String) param.getValue())); - } - catch (Exception hashException) - { - ViewUtility.popupErrorMessage(_form.getText(), - "Unable to calculate hash for Password:" - + hashException.getMessage()); - return; - } - } - else - { - param.setValue(((String) param.getValue()).toCharArray()); - } - } - } - // end of customization - - } - } - - if (_opData.getImpact() == OPERATION_IMPACT_ACTION) - { - String bean = _mbean.getName() == null ? _mbean.getType() : _mbean.getName(); - int response = ViewUtility.popupConfirmationMessage(bean, "Do you want to " + _form.getText()+ " ?"); - if (response == SWT.YES) - { - executeAndShowResults(); - } - } - else - { - executeAndShowResults(); - } - - if (_mbean.isAdmin() && _opData.getName().equals(OPERATION_DELETEUSER)) - { - refresh(_mbean); - } - else - { - clearParameters(); - clearParameterValues(_paramsComposite); - } - } - } - - // Listener for the "Refresh" execution button - private class RefreshListener extends SelectionAdapter - { - public void widgetSelected(SelectionEvent e) - { - executeAndShowResults(); - } - } - - /** - * Executres the operation, gets the result from server and displays to the user - */ - private void executeAndShowResults() - { - Object result = null; - try - { - result = MBeanUtility.execute(_mbean, _opData); - } - catch(Exception ex) - { - MBeanUtility.handleException(_mbean, ex); - return; - } - - // Custom code for Admin mbean operation - /* These custome codes here are to make the GUI look more user friendly. - * Here we are adding the users to a list, which will be used to list username to be selected on - * pages like "delete user", "set password" instead of typing the username - */ - if (_mbean.isAdmin()) - { - if (_opData.getName().equals(OPERATION_VIEWUSERS)) - { - ApplicationRegistry.getServerRegistry(_mbean).setUserList(extractUserList(result)); - } - else if (_opData.getName().equals(OPERATION_DELETEUSER)) - { - List<String> list = ApplicationRegistry.getServerRegistry(_mbean).getUsernames(); - Object userName = _opData.getParameterValue(OPERATION_PARAM_USERNAME); - if ((list != null) && !list.isEmpty() && (userName != null)) - { - list.remove(userName); - ApplicationRegistry.getServerRegistry(_mbean).setUserList(list); - } - } - else if (_opData.getName().equals(OPERATION_CREATEUSER)) - { - List<String> list = ApplicationRegistry.getServerRegistry(_mbean).getUsernames(); - Object userName = _opData.getParameterValue(OPERATION_PARAM_USERNAME); - if ((list != null) && !list.isEmpty() && (userName != null)) - { - list.add(userName.toString()); - ApplicationRegistry.getServerRegistry(_mbean).setUserList(list); - } - } - } - // end of custom code - - // Some mbeans have only "type" and no "name". - String title = _mbean.getType(); - if (_mbean.getName() != null && _mbean.getName().length() != 0) - { - title = _mbean.getName(); - } - - if (_opData.isReturnTypeVoid()) - { - ViewUtility.popupInfoMessage(title, OPERATION_SUCCESSFUL); - } - else if (_opData.isReturnTypeBoolean()) - { - boolean success = Boolean.parseBoolean(result.toString()); - String message = success ? OPERATION_SUCCESSFUL : OPERATION_UNSUCCESSFUL; - if(success) - { - ViewUtility.popupInfoMessage(title, message); - } - else - { - ViewUtility.popupErrorMessage(title, message); - } - } - else if (_opData.getParameters() != null && !_opData.getParameters().isEmpty()) - { - populateResults(result); - } - else - { - ViewUtility.disposeChildren(_resultsComposite); - ViewUtility.populateCompositeWithData(_toolkit, _resultsComposite, result); - _resultsComposite.layout(); - _form.layout(); - } - - } - - private List<String> extractUserList(Object result) - { - if (!(result instanceof TabularDataSupport)) - { - return null; - } - - TabularDataSupport tabularData = (TabularDataSupport)result; - Collection<Object> records = tabularData.values(); - List<String> list = new ArrayList<String>(); - for (Object o : records) - { - CompositeData data = (CompositeData) o; - if (data.containsKey(USERNAME)) - { - list.add(data.get(USERNAME).toString()); - } - } - - return list; - } - - /** - * Listener class for the operation parameters widget - */ - private static class ParameterSelectionListener extends SelectionAdapter - { - public void widgetSelected(SelectionEvent e) - { - ParameterData parameter = (ParameterData)e.widget.getData(); - parameter.setValue(null); - if (e.widget instanceof Combo) - { - Combo combo = (Combo)e.widget; - if (combo.getSelectionIndex() > 0) - { - String item = combo.getItem(combo.getSelectionIndex()); - parameter.setValueFromString(item); - } - } - else if (e.widget instanceof org.eclipse.swt.widgets.List) - { - org.eclipse.swt.widgets.List list = (org.eclipse.swt.widgets.List)e.widget; - String[] selectedItems = list.getSelection(); - if (selectedItems.length > 0) - { - parameter.setValueFromString(selectedItems[0]); - } - } - } - } - - /** - * Listener class for boolean parameter widgets - */ - private static class BooleanSelectionListener extends SelectionAdapter - { - public void widgetSelected(SelectionEvent e) - { - ParameterData parameter = (ParameterData)(e.widget.getData()); - if (e.widget instanceof Button) - { - Button button = (Button)e.widget; - parameter.setValue(button.getSelection()); - } - else if (e.widget instanceof Combo) - { - Combo combo = (Combo)e.widget; - String item = combo.getItem(combo.getSelectionIndex()); - parameter.setValueFromString(item); - } - } - } - - /** - * Listener class for the operation parameter value widget (Text field) - */ - private static class KeyListenerImpl extends KeyAdapter - { - public void keyReleased(KeyEvent e) - { - if (!(e.widget instanceof Text)) - { - return; - } - - Text text = (Text)e.widget; - // Get the parameters widget and assign the text to the parameter - String strValue = text.getText(); - ParameterData parameter = (ParameterData)text.getData(); - try - { - parameter.setValueFromString(strValue); - } - catch(Exception ex) - { - // Exception occured in setting parameter value. - // ignore it. The value will not be assigned to the parameter - } - } - } - - /** - * Listener class for HeaderExchange's new binding widgets. Used when the new bindings are - * being created for Header's Exchange - */ - private class HeaderBindingKeyListener extends KeyAdapter - { - public void keyReleased(KeyEvent e) - { - ParameterData param = _opData.getParameters().get(1); - StringBuffer paramValue = new StringBuffer(); - for (Entry<Text, Text> entry : headerBindingHashMap.entrySet()) - { - - Text nameText = entry.getKey(); - String name = nameText.getText(); - Text valueText = entry.getValue(); - String value = valueText.getText(); - if ((name != null) && (name.length() != 0) && (value != null) && (value.length() != 0)) - { - if (paramValue.length() != 0) - { - paramValue.append(","); - } - paramValue.append(name + "=" + value); - } - } - - param.setValue(paramValue.toString()); - } - } - - /** - * Listener class for verifying the user input with parameter type - */ - private static class VerifyListenerImpl implements VerifyListener - { - public void verifyText(VerifyEvent event) - { - ParameterData parameter = (ParameterData)event.widget.getData(); - String text = event.text; - char [] chars = new char [text.length ()]; - text.getChars(0, chars.length, chars, 0); - String type = parameter.getType(); - if (type.equals("int") || type.equals("java.lang.Integer") || - type.equals("long") || type.equals("java.lang.Long")) - { - for (int i=0; i<chars.length; i++) - { - if (!('0' <= chars [i] && chars [i] <= '9')) - { - event.doit = false; - return; - } - } - - } - } - } - -} |