Package com.eviware.soapui.security.ui

Source Code of com.eviware.soapui.security.ui.SecurityConfigurationDialog

/*
*  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.security.ui;

import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;

import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;

import com.eviware.soapui.config.StrategyTypeConfig;
import com.eviware.soapui.impl.wsdl.actions.project.SimpleDialog;
import com.eviware.soapui.model.security.SecurityScan;
import com.eviware.soapui.model.security.SecurityParametersTableModel;
import com.eviware.soapui.security.assertion.SecurityAssertionPanel;
import com.eviware.soapui.security.scan.AbstractSecurityScanWithProperties;
import com.eviware.soapui.security.ui.SecurityConfigurationDialogBuilder.Strategy;
import com.eviware.soapui.support.UISupport;
import com.eviware.x.form.XFormDialog;
import com.eviware.x.form.XFormField;
import com.eviware.x.form.XFormFieldListener;
import com.eviware.x.form.support.ADialogBuilder;
import com.eviware.x.form.support.XFormRadioGroup;
import com.eviware.x.impl.swing.JFormDialog;

public class SecurityConfigurationDialog extends SimpleDialog
{
  private SecurityScan securityCheck;
  private boolean result;
  private JTabbedPane tabs;
  private SecurityCheckedParametersTablePanel parametersTable;
  private SecurityAssertionPanel securityAssertionPanel;
  private XFormDialog strategyDialog;

  public SecurityConfigurationDialog( SecurityScan securityCheck )
  {
    super( securityCheck.getName(), securityCheck.getDescription(), securityCheck.getHelpURL() );

    this.securityCheck = securityCheck;
  }

  public SecurityScan getSecurityScan()
  {
    return securityCheck;
  }

  @Override
  protected Component buildContent()
  {
    JPanel mainPanel = UISupport.createEmptyPanel( 5, 5, 5, 5 );

    if( securityCheck instanceof AbstractSecurityScanWithProperties )
    {
      JPanel topPanel = UISupport.createEmptyPanel( 0, 0, 10, 0 );
      topPanel.add( buildParametersTable(), BorderLayout.CENTER );

      JPanel p = UISupport.createEmptyPanel( 5, 0, 5, 0 );
      JLabel jLabel = new JLabel( "Parameters:" );
      jLabel.setPreferredSize( new Dimension( 72, 20 ) );
      p.add( jLabel, BorderLayout.NORTH );

      topPanel.add( p, BorderLayout.NORTH );

      JComponent component = securityCheck.getComponent();
      if( component != null )
        topPanel.add( component, BorderLayout.SOUTH );

      mainPanel.add( topPanel, BorderLayout.NORTH );
    }
    else
    {
      JComponent component = securityCheck.getComponent();
      if( component != null )
      {
        JPanel topPanel = UISupport.createEmptyPanel( 0, 0, 10, 10 );
        topPanel.add( component, BorderLayout.SOUTH );
        mainPanel.add( topPanel, BorderLayout.NORTH );
      }
    }

    Dimension prefSize = mainPanel.getPreferredSize();
    int prefHeight = ( int )( prefSize.getHeight() + 170 );
    int prefWidth = ( int )Math.max( prefSize.getWidth(), 600 );

    mainPanel.setPreferredSize( new Dimension( prefWidth, prefHeight ) );

    mainPanel.add( buildTabs(), BorderLayout.CENTER );

    return mainPanel;
  }

  protected Component buildParametersTable()
  {
    parametersTable = new SecurityCheckedParametersTablePanel( new SecurityParametersTableModel(
        ( ( AbstractSecurityScanWithProperties )securityCheck ).getParameterHolder() ), securityCheck
        .getTestStep().getProperties(), ( AbstractSecurityScanWithProperties )securityCheck );

    parametersTable.setPreferredSize( new Dimension( 400, 150 ) );
    return parametersTable;
  }

  protected Component buildTabs()
  {
    tabs = new JTabbedPane();
    securityAssertionPanel = new SecurityAssertionPanel( securityCheck );
    tabs.addTab( "Assertions", securityAssertionPanel );
    tabs.addTab( "Strategy", buildStrategyTab() );

    JComponent advancedSettingsPanel = securityCheck.getAdvancedSettingsPanel();
    if( advancedSettingsPanel != null )
      tabs.addTab( "Advanced", new JScrollPane( advancedSettingsPanel ) );

    return tabs;
  }

  protected Component buildStrategyTab()
  {
    strategyDialog = ADialogBuilder.buildDialog( SecurityConfigurationDialogBuilder.Strategy.class, null );

    XFormRadioGroup strategy = ( XFormRadioGroup )strategyDialog.getFormField( Strategy.STRATEGY );
    final String[] strategyOptions = new String[] { "One by One", "All At Once" };
    strategy.setOptions( strategyOptions );

    if( securityCheck.getExecutionStrategy().getStrategy() == StrategyTypeConfig.NO_STRATEGY )
      strategy.setEnabled( false );
    else
    {
      if( securityCheck.getExecutionStrategy().getStrategy() == StrategyTypeConfig.ONE_BY_ONE )
        strategy.setValue( strategyOptions[0] );
      else
        strategy.setValue( strategyOptions[1] );
    }

    // default is ONE_BY_ONE
    if( securityCheck.getExecutionStrategy().getImmutable() )
    {
      strategy.setDisabled();
    }

    strategy.addFormFieldListener( new XFormFieldListener()
    {
      @Override
      public void valueChanged( XFormField sourceField, String newValue, String oldValue )
      {

        if( newValue.equals( strategyOptions[0] ) )
          securityCheck.getExecutionStrategy().setStrategy( StrategyTypeConfig.ONE_BY_ONE );
        else
          securityCheck.getExecutionStrategy().setStrategy( StrategyTypeConfig.ALL_AT_ONCE );

      }
    } );

    XFormField delay = strategyDialog.getFormField( Strategy.DELAY );
    delay.setValue( String.valueOf( securityCheck.getExecutionStrategy().getDelay() ) );

    delay.addFormFieldListener( new XFormFieldListener()
    {

      @Override
      public void valueChanged( XFormField sourceField, String newValue, String oldValue )
      {
        try
        {
          if( "".equals( newValue ) )
            return;
          Integer.valueOf( newValue );
          securityCheck.getExecutionStrategy().setDelay( Integer.valueOf( newValue ) );
        }
        catch( Exception e )
        {
          UISupport.showErrorMessage( "Delay value must be integer number" );
        }
      }
    } );
    XFormField applyToFailedTests = strategyDialog.getFormField( Strategy.APPLY_TO_FAILED_STEPS );
    applyToFailedTests.setValue( String.valueOf( securityCheck.isApplyForFailedStep() ) );
    applyToFailedTests.addFormFieldListener( new XFormFieldListener()
    {

      @Override
      public void valueChanged( XFormField sourceField, String newValue, String oldValue )
      {
        securityCheck.setApplyForFailedTestStep( Boolean.parseBoolean( newValue ) );
      }
    } );
    XFormField runOnlyOnce = strategyDialog.getFormField( Strategy.RUN_ONLY_ONCE );
    runOnlyOnce.setValue( String.valueOf( securityCheck.isRunOnlyOnce() ) );
    runOnlyOnce.addFormFieldListener( new XFormFieldListener()
    {

      @Override
      public void valueChanged( XFormField sourceField, String newValue, String oldValue )
      {
        securityCheck.setRunOnlyOnce( Boolean.parseBoolean( newValue ) );
      }
    } );


    return ( ( JFormDialog )strategyDialog ).getPanel();
  }

  @Override
  protected boolean handleOk()
  {
    result = true;
    return true;
  }

  public boolean configure()
  {
    result = false;
    setVisible( true );
    return result;
  }

  public void release()
  {
    if( strategyDialog != null )
    {
      strategyDialog.release();
      strategyDialog = null;
    }

    securityAssertionPanel.release();
    securityAssertionPanel = null;
    securityCheck = null;
    tabs.removeAll();
    tabs = null;
    dispose();
  }
}
TOP

Related Classes of com.eviware.soapui.security.ui.SecurityConfigurationDialog

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.