Package com.eviware.soapui.support.resolver

Source Code of com.eviware.soapui.support.resolver.ChooseAnotherTestCase$TestCaseChangeDialog

/*
* 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 java.util.List;

import javax.swing.BorderFactory;
import javax.swing.DefaultComboBoxModel;
import javax.swing.DefaultListCellRenderer;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JList;

import com.eviware.soapui.impl.wsdl.WsdlProject;
import com.eviware.soapui.impl.wsdl.testcase.WsdlTestCase;
import com.eviware.soapui.impl.wsdl.teststeps.WsdlRunTestCaseTestStep;
import com.eviware.soapui.model.iface.Interface;
import com.eviware.soapui.model.iface.Operation;
import com.eviware.soapui.model.testsuite.TestCase;
import com.eviware.soapui.model.testsuite.TestSuite;
import com.eviware.soapui.support.UISupport;
import com.eviware.soapui.support.resolver.ResolveContext.Resolver;
import com.jgoodies.forms.builder.PanelBuilder;
import com.jgoodies.forms.layout.CellConstraints;
import com.jgoodies.forms.layout.FormLayout;

public class ChooseAnotherTestCase implements Resolver {

    private boolean resolved;
    private WsdlRunTestCaseTestStep runTestStep;
    private WsdlProject project;
    private WsdlTestCase pickedTestCase;

    public ChooseAnotherTestCase(WsdlRunTestCaseTestStep wsdlRunTestCaseTestStep) {
        runTestStep = wsdlRunTestCaseTestStep;
        project = runTestStep.getTestCase().getTestSuite().getProject();
    }

    public String getDescription() {
        return "Choose another test step";
    }

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

    public String getResolvedPath() {
        // TODO Auto-generated method stub
        return null;
    }

    public boolean isResolved() {
        return resolved;
    }

    public boolean resolve() {
        TestCaseChangeDialog dialog = new TestCaseChangeDialog("Choose another test case");
        dialog.showAndChoose();

        return resolved;
    }

    @SuppressWarnings("serial")
    private class TestCaseChangeDialog extends JDialog {

        private JComboBox tSuiteStepCombo;
        private JComboBox tCaseCombo;
        private JButton okBtn = new JButton(" Ok ");
        private JButton cancelBtn = new JButton(" Cancel ");

        public TestCaseChangeDialog(String title) {
            super(UISupport.getMainFrame(), title, true);
            init();
        }

        private void init() {
            FormLayout layout = new FormLayout("right:pref, 4dlu, 30dlu, 5dlu, 30dlu, min ",
                    "min, pref, 4dlu, pref, 4dlu, pref, min");
            CellConstraints cc = new CellConstraints();
            PanelBuilder panel = new PanelBuilder(layout);
            panel.addLabel("Interface:", cc.xy(1, 2));

            List<TestSuite> tSuites = project.getTestSuiteList();
            DefaultComboBoxModel sourceStepComboModel = new DefaultComboBoxModel();
            tSuiteStepCombo = new JComboBox(sourceStepComboModel);
            tSuiteStepCombo.setRenderer(new TestSuiteComboRenderer());
            for (TestSuite element : tSuites) {
                sourceStepComboModel.addElement(element);
            }

            tSuiteStepCombo.setSelectedIndex(0);
            panel.add(tSuiteStepCombo, cc.xyw(3, 2, 3));

            tCaseCombo = new JComboBox(((TestSuite) tSuiteStepCombo.getSelectedItem()).getTestCaseList().toArray());
            tCaseCombo.setRenderer(new TestCaseComboRender());

            panel.addLabel("Operation:", cc.xy(1, 4));
            panel.add(tCaseCombo, cc.xyw(3, 4, 3));

            panel.add(okBtn, cc.xy(3, 6));
            panel.add(cancelBtn, cc.xy(5, 6));

            tSuiteStepCombo.addActionListener(new ActionListener() {

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

                }

            });

            okBtn.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e) {

                    pickedTestCase = (WsdlTestCase) tCaseCombo.getSelectedItem();
                    runTestStep.setTargetTestCase(pickedTestCase);
                    resolved = true;
                    setVisible(false);
                }

            });

            cancelBtn.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e) {
                    resolved = false;
                    setVisible(false);
                }

            });

            setLocationRelativeTo(UISupport.getParentFrame(this));
            panel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
            this.add(panel.getPanel());
        }

        public void showAndChoose() {
            this.pack();
            this.setVisible(true);
        }
    }

    @SuppressWarnings("serial")
    private class TestSuiteComboRenderer extends DefaultListCellRenderer {
        @Override
        public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected,
                                                      boolean cellHasFocus) {
            Component result = super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);

            if (value instanceof TestSuite) {
                TestSuite item = (TestSuite) value;
                setIcon(item.getIcon());
                setText(item.getName());
            }

            return result;
        }
    }

    @SuppressWarnings("serial")
    private class TestCaseComboRender extends DefaultListCellRenderer {

        @Override
        public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected,
                                                      boolean cellHasFocus) {
            Component result = super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);

            if (value instanceof TestCase) {
                TestCase item = (TestCase) value;
                setIcon(item.getIcon());
                setText(item.getName());
            }

            return result;
        }

    }

    public WsdlTestCase getPickedTestCase() {
        return pickedTestCase;
    }

}
TOP

Related Classes of com.eviware.soapui.support.resolver.ChooseAnotherTestCase$TestCaseChangeDialog

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.