Package com.eviware.soapui.support.components

Source Code of com.eviware.soapui.support.components.SwingConfigurationDialogImpl$CancelAction

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

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.util.HashMap;
import java.util.Map;

import javax.swing.AbstractAction;
import javax.swing.BorderFactory;
import javax.swing.DefaultComboBoxModel;
import javax.swing.ImageIcon;
import javax.swing.JComboBox;
import javax.swing.JComponent;
import javax.swing.JDialog;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JSeparator;

import com.eviware.soapui.impl.support.actions.ShowOnlineHelpAction;
import com.eviware.soapui.support.UISupport;
import com.eviware.soapui.support.action.swing.ActionList;
import com.eviware.soapui.support.action.swing.DefaultActionList;
import com.jgoodies.forms.layout.FormLayout;

/**
* Utility for creating simple configuration dialogs
*
* @author Ole.Matzura
*/

public class SwingConfigurationDialogImpl implements ConfigurationDialog
{
  private JDialog dialog;
  private SimpleForm form;
  private boolean result;
  private Map<String, String> values;
  private Map<String, FieldType> fieldTypes = new HashMap<String, FieldType>();
  private final String title;
  private Dimension size;
  private JComponent content;
  private ActionList actions;
  private String description;
  private ImageIcon icon;

  public SwingConfigurationDialogImpl( String title, String helpUrl, String description, ImageIcon icon )
  {
    this.title = title;
    this.description = description;
    this.icon = icon;
    form = new SimpleForm( new FormLayout( "10px,left:pref,10px,left:pref,5px" ) );

    actions = new DefaultActionList( "Actions" );
    if( helpUrl != null )
    {
      actions.addAction( new ShowOnlineHelpAction( helpUrl ) );
      actions.addSeparator();
    }

    OkAction okAction = new OkAction();
    actions.addAction( okAction );
    actions.addAction( new CancelAction() );
    actions.setDefaultAction( okAction );
  }

  public boolean show( Map<String, String> values )
  {
    if( dialog == null )
      buildDialog();

    this.values = values;

    result = false;

    form.setValues( values );

    if( size == null )
      dialog.pack();
    else
      dialog.setSize( size );

    UISupport.showDialog( dialog );
    return result;
  }

  public Dimension getSize()
  {
    return size;
  }

  public void setSize( Dimension preferredSize )
  {
    this.size = preferredSize;
  }

  public void addTextField( String name, String tooltip )
  {
    addTextField( name, tooltip, FieldType.TEXT );
  }

  public void addTextField( String name, String tooltip, FieldType type )
  {
    if( type == FieldType.DIRECTORY )
      form.append( name, new DirectoryFormComponent( tooltip ) );
    else
      form.appendTextField( name, tooltip );

    fieldTypes.put( name, type );
  }

  public void addCheckBox( String caption, String label, boolean selected )
  {
    form.appendCheckBox( caption, label, selected );
  }

  public void setContent( JComponent content )
  {
    this.content = content;
  }

  private void buildDialog()
  {
    dialog = new JDialog( UISupport.getMainFrame(), title, true );

    form.getPanel().setBorder( BorderFactory.createEmptyBorder( 5, 0, 5, 0 ) );

    JPanel panel = new JPanel( new BorderLayout() );
    JComponent contentPanel = content == null ? form.getPanel() : content;
    panel.add( contentPanel, BorderLayout.CENTER );

    JButtonBar buttons = UISupport.initDialogActions( actions, dialog );
    buttons.setBorder( BorderFactory.createEmptyBorder( 3, 5, 3, 5 ) );

    if( content == null )
    {
      JPanel p = new JPanel( new BorderLayout() );
      p.add( new JSeparator(), BorderLayout.NORTH );
      p.add( buttons, BorderLayout.CENTER );

      panel.add( p, BorderLayout.SOUTH );
    }
    else
    {
      panel.add( buttons, BorderLayout.SOUTH );
    }

    if( description != null || icon != null )
      dialog.getContentPane().add( UISupport.buildDescription( title, description, icon ), BorderLayout.NORTH );

    dialog.getContentPane().add( panel );
    dialog.pack();
  }

  private class OkAction extends AbstractAction
  {
    public OkAction()
    {
      super( "Ok" );
    }

    public void actionPerformed( ActionEvent e )
    {
      result = true;

      form.getValues( values );
      dialog.setVisible( false );
    }
  }

  private class CancelAction extends AbstractAction
  {
    public CancelAction()
    {
      super( "Cancel" );
    }

    public void actionPerformed( ActionEvent e )
    {
      dialog.setVisible( false );
    }
  }

  public void addComboBox( String label, Object[] objects, String tooltip )
  {
    form.appendComboBox( label, objects, tooltip );
  }

  public void setValues( String id, String[] values )
  {
    JComponent component = form.getComponent( id );
    if( component instanceof JComboBox )
    {
      ( ( JComboBox )component ).setModel( new DefaultComboBoxModel( values ) );
    }
    else if( component instanceof JList )
    {
      ( ( JList )component ).setModel( new DefaultComboBoxModel( values ) );
    }
    else
      throw new RuntimeException( "Could not set values on [" + component + "]" );
  }

  public void addComboBox( String label, String tooltip )
  {
    form.appendComboBox( label, new String[] {}, tooltip );
  }

  public void addComponent( JComponent component )
  {
    form.addComponent( component );
  }

  public void getValues( Map<String, String> values )
  {
    form.getValues( values );
  }

  public ActionList getActions()
  {
    return actions;
  }

  public void hide()
  {
    dialog.setVisible( false );
  }
}
TOP

Related Classes of com.eviware.soapui.support.components.SwingConfigurationDialogImpl$CancelAction

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.