Package com.eviware.soapui.support.resolver

Source Code of com.eviware.soapui.support.resolver.ChangeOperationResolver

/*
* Copyright 2004-2014 SmartBear Software
*
* Licensed under the EUPL, Version 1.1 or - as soon as they will be approved by the European Commission - subsequent
* versions of the EUPL (the "Licence");
* You may not use this work except in compliance with the Licence.
* You may obtain a copy of the Licence at:
*
* http://ec.europa.eu/idabc/eupl
*
* Unless required by applicable law or agreed to in writing, software distributed under the Licence is
* distributed on an "AS IS" basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the Licence for the specific language governing permissions and limitations
* under the Licence.
*/

package com.eviware.soapui.support.resolver;

import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.DefaultComboBoxModel;
import javax.swing.JComboBox;

import com.eviware.soapui.impl.wsdl.WsdlProject;
import com.eviware.soapui.impl.wsdl.actions.project.SimpleDialog;
import com.eviware.soapui.impl.wsdl.teststeps.WsdlTestStep;
import com.eviware.soapui.model.iface.Interface;
import com.eviware.soapui.model.iface.Operation;
import com.eviware.soapui.support.components.SimpleForm;
import com.eviware.soapui.support.resolver.ResolveContext.Resolver;
import com.eviware.soapui.support.swing.ModelItemListCellRenderer;

public abstract class ChangeOperationResolver implements Resolver {
    private boolean resolved = false;
    private WsdlProject project;
    private Operation selectedOperation;
    private String operationType;

    public ChangeOperationResolver(WsdlTestStep testStep, String operationType) {
        this.project = testStep.getTestCase().getTestSuite().getProject();

        this.operationType = operationType;
    }

    public String getResolvedPath() {
        return "";
    }

    public boolean isResolved() {
        return resolved;
    }

    public boolean resolve() {
        PropertyChangeDialog pDialog = new PropertyChangeDialog("Resolve " + operationType);
        pDialog.setVisible(true);
        resolved = update();
        return resolved;
    }

    public abstract boolean update();

    protected abstract Interface[] getInterfaces(WsdlProject project);

    public String getDescription() {
        return "Resolve: Select another " + operationType;
    }

    @Override
    public String toString() {
        return getDescription();
    }

    @SuppressWarnings("serial")
    private class PropertyChangeDialog extends SimpleDialog {
        private JComboBox sourceStepCombo;
        private JComboBox propertiesCombo;

        public PropertyChangeDialog(String title) {
            super(title, getDescription(), null);
        }

        protected Component buildContent() {
            SimpleForm form = new SimpleForm();

            form.addSpace(5);
            Interface[] ifaces = getInterfaces(project);
            DefaultComboBoxModel sourceStepComboModel = new DefaultComboBoxModel();
            sourceStepCombo = form.appendComboBox("Interfaces", sourceStepComboModel, "Target Interface");
            sourceStepCombo.setRenderer(new ModelItemListCellRenderer());
            for (Interface element : ifaces) {
                sourceStepComboModel.addElement(element);
            }

            propertiesCombo = form.appendComboBox(operationType, ((Interface) sourceStepCombo.getSelectedItem())
                    .getOperationList().toArray(), "Target " + operationType);
            propertiesCombo.setRenderer(new ModelItemListCellRenderer());

            sourceStepCombo.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    Interface iface = project.getInterfaceByName(((Interface) sourceStepCombo.getSelectedItem())
                            .getName());
                    propertiesCombo.removeAllItems();
                    if (iface != null) {
                        propertiesCombo.setEnabled(true);
                        for (Operation op : iface.getOperationList()) {
                            propertiesCombo.addItem(op);
                        }
                    } else {
                        propertiesCombo.setEnabled(false);
                    }
                }
            });

            form.addSpace(5);
            return form.getPanel();
        }

        protected boolean handleOk() {
            selectedOperation = (Operation) propertiesCombo.getSelectedItem();
            return true;
        }
    }

    public Operation getSelectedOperation() {
        return selectedOperation;
    }

}
TOP

Related Classes of com.eviware.soapui.support.resolver.ChangeOperationResolver

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.