Package com.eviware.soapui.support.resolver

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

/*
*  soapUI, copyright (C) 2004-2011 eviware.com
*
*  soapUI is free software; you can redistribute it and/or modify it under the
*  terms of version 2.1 of the GNU Lesser General Public License as published by
*  the Free Software Foundation.
*
*  soapUI is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
*  even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*  See the GNU Lesser General Public License for more details at gnu.org.
*/

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$PropertyChangeDialog

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.