Package com.eviware.soapui.impl.wsdl.actions.project

Source Code of com.eviware.soapui.impl.wsdl.actions.project.SimpleDialog

/*
*  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.impl.wsdl.actions.project;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.event.ActionEvent;

import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.BorderFactory;
import javax.swing.JDialog;
import javax.swing.KeyStroke;

import com.eviware.soapui.support.HelpActionMarker;
import com.eviware.soapui.support.Tools;
import com.eviware.soapui.support.UISupport;
import com.eviware.soapui.support.action.swing.ActionList;
import com.eviware.soapui.support.action.swing.DefaultActionList;
import com.eviware.soapui.support.components.JButtonBar;

public abstract class SimpleDialog extends JDialog
{
  protected JButtonBar buttons = null;
  private final String title;
  private final String description;
  private final String helpUrl;
  private final boolean okAndCancel;
  private boolean initialized = false;

  public SimpleDialog( String title, String description, String helpUrl, boolean okAndCancel )
  {
    super( UISupport.getMainFrame(), title, true );
    this.title = title;
    this.description = description;
    this.helpUrl = helpUrl;
    this.okAndCancel = okAndCancel;
  }

  private synchronized void init()
  {
    if( initialized )
      return;

    buttons = UISupport.initDialogActions( buildActions( helpUrl, okAndCancel ), this );
    buttons.setBorder( BorderFactory.createEmptyBorder( 5, 0, 0, 0 ) );

    getContentPane().add(
        UISupport.buildDescription( title, description, UISupport.createImageIcon( UISupport.TOOL_ICON_PATH ) ),
        BorderLayout.NORTH );

    getContentPane().add( buildContent(), BorderLayout.CENTER );

    buttons
        .setBorder( BorderFactory.createCompoundBorder( BorderFactory.createCompoundBorder(
            BorderFactory.createMatteBorder( 1, 0, 0, 0, Color.GRAY ),
            BorderFactory.createMatteBorder( 1, 0, 0, 0, Color.WHITE ) ), BorderFactory.createEmptyBorder( 3, 5,
            3, 5 ) ) );

    getContentPane().add( buttons, BorderLayout.SOUTH );
    modifyButtons();

    pack();

    initialized = true;
  }

  /*
   * overide this to change buttons at bottom of dialog. I did not make it
   * abstrac because it would require refactoring when SimpleDialog is used.
   * Robert.
   */
  protected void modifyButtons()
  {
  };

  public SimpleDialog( String title, String description, String helpUrl )
  {
    this( title, description, helpUrl, true );
  }

  protected abstract Component buildContent();

  public ActionList buildActions( String url, boolean okAndCancel )
  {
    DefaultActionList actions = new DefaultActionList( "Actions" );
    if( url != null )
      actions.addAction( new HelpAction( url ) );

    OKAction okAction = new OKAction();
    actions.addAction( okAction );
    if( okAndCancel )
    {
      actions.addAction( new CancelAction() );
      actions.setDefaultAction( okAction );
    }
    return actions;
  }

  protected abstract boolean handleOk();

  @Override
  public void setVisible( boolean b )
  {
    init();

    if( b )
      beforeShow();
    else
      beforeHide();

    UISupport.centerDialog( this );
    super.setVisible( b );

    if( b )
      afterShow();
    else
      afterHide();
  }

  protected void afterHide()
  {
  }

  protected void afterShow()
  {
  }

  protected void beforeHide()
  {
  }

  protected void beforeShow()
  {
  }

  protected boolean handleCancel()
  {
    return true;
  }

  protected final class OKAction extends AbstractAction
  {
    public OKAction()
    {
      super( "OK" );
    }

    public void actionPerformed( ActionEvent e )
    {
      if( handleOk() )
      {
        setVisible( false );
      }
    }
  }

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

    public void actionPerformed( ActionEvent e )
    {
      if( handleCancel() )
      {
        setVisible( false );
      }
    }
  }

  public final class HelpAction extends AbstractAction implements HelpActionMarker
  {
    private final String url;

    public HelpAction( String url )
    {
      this( "Online Help", url, UISupport.getKeyStroke( "F1" ) );
    }

    public HelpAction( String title, String url )
    {
      this( title, url, null );
    }

    public HelpAction( String title, String url, KeyStroke accelerator )
    {
      super( title );
      this.url = url;
      putValue( Action.SHORT_DESCRIPTION, "Show online help" );
      if( accelerator != null )
        putValue( Action.ACCELERATOR_KEY, accelerator );

      putValue( Action.SMALL_ICON, UISupport.HELP_ICON );
    }

    public void actionPerformed( ActionEvent e )
    {
      Tools.openURL( url );
    }
  }
}
TOP

Related Classes of com.eviware.soapui.impl.wsdl.actions.project.SimpleDialog

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.