Package com.eviware.x.impl.swing

Source Code of com.eviware.x.impl.swing.SwingDialogs

/*
*  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.x.impl.swing;

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

import javax.swing.AbstractAction;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JDialog;
import javax.swing.JEditorPane;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JScrollPane;
import javax.swing.event.AncestorEvent;
import javax.swing.event.AncestorListener;

import com.eviware.soapui.support.DefaultHyperlinkListener;
import com.eviware.soapui.support.UISupport;
import com.eviware.soapui.support.components.ProgressDialog;
import com.eviware.x.dialogs.XDialogs;
import com.eviware.x.dialogs.XProgressDialog;
import com.jgoodies.forms.factories.ButtonBarFactory;

/**
*
* @author Lars
*/
public class SwingDialogs implements XDialogs
{
  private Component parent;
  private JDialog extendedInfoDialog;
  private Boolean extendedInfoResult;

  public SwingDialogs( Component parent )
  {
    this.parent = parent;
  }

  public void showErrorMessage( String message )
  {
    JOptionPane.showMessageDialog( parent, message, "Error", JOptionPane.ERROR_MESSAGE );
  }

  public boolean confirm( String question, String title )
  {
    return JOptionPane.showConfirmDialog( parent, question, title, JOptionPane.YES_NO_OPTION ) == JOptionPane.OK_OPTION;
  }

  public String prompt( String question, String title, String value )
  {
    return ( String )JOptionPane.showInputDialog( parent, question, title, JOptionPane.QUESTION_MESSAGE, null, null,
        value );
  }

  public String prompt( String question, String title )
  {
    return JOptionPane.showInputDialog( parent, question, title, JOptionPane.QUESTION_MESSAGE );
  }

  public void showInfoMessage( String message )
  {
    showInfoMessage( message, "Information" );
  }

  public void showInfoMessage( String message, String title )
  {
    JOptionPane.showMessageDialog( parent, message, title, JOptionPane.INFORMATION_MESSAGE );
  }

  public Object prompt( String question, String title, Object[] objects )
  {
    Object result = JOptionPane.showInputDialog( parent, question, title, JOptionPane.OK_CANCEL_OPTION, null,
        objects, null );
    return result;
  }

  public Object prompt( String question, String title, Object[] objects, String value )
  {
    Object result = JOptionPane.showInputDialog( parent, question, title, JOptionPane.OK_CANCEL_OPTION, null,
        objects, value );
    return result;
  }

  public Boolean confirmOrCancel( String question, String title )
  {
    int result = JOptionPane.showConfirmDialog( parent, question, title, JOptionPane.YES_NO_CANCEL_OPTION );

    if( result == JOptionPane.CANCEL_OPTION )
      return null;

    return Boolean.valueOf( result == JOptionPane.YES_OPTION );
  }

  public int yesYesToAllOrNo( String question, String title )
  {
    String[] buttons = { "Yes", "Yes to all", "No" };
    return JOptionPane.showOptionDialog( parent, question, title, 0, JOptionPane.QUESTION_MESSAGE, null, buttons,
        buttons[0] );
  }

  public XProgressDialog createProgressDialog( String label, int length, String initialValue, boolean canCancel )
  {
    return new ProgressDialog( "Progress", label, length, initialValue, canCancel );
  }

  public void showExtendedInfo( String title, String description, String content, Dimension size )
  {
    JPanel buttonBar = ButtonBarFactory.buildRightAlignedBar( new JButton( new OkAction( "OK" ) ) );

    showExtendedInfo( title, description, content, buttonBar, size );
  }

  private void showExtendedInfo( String title, String description, String content, JPanel buttonBar, Dimension size )
  {
    extendedInfoDialog = new JDialog( UISupport.getMainFrame(), title );
    extendedInfoDialog.setModal( true );
    JPanel panel = new JPanel( new BorderLayout() );

    if( description != null )
    {
      panel.add( UISupport.buildDescription( title, description, null ), BorderLayout.NORTH );
    }

    JEditorPane editorPane = new JEditorPane( "text/html", content );
    editorPane.setCaretPosition( 0 );
    editorPane.setEditable( false );
    editorPane.addHyperlinkListener( new DefaultHyperlinkListener( editorPane ) );

    JScrollPane scrollPane = new JScrollPane( editorPane );
    scrollPane.setBorder( BorderFactory.createCompoundBorder( BorderFactory.createEmptyBorder( 5, 5, 5, 5 ),
        scrollPane.getBorder() ) );

    panel.add( scrollPane );
    buttonBar.setBorder( BorderFactory.createEmptyBorder( 0, 0, 5, 5 ) );
    panel.add( buttonBar, BorderLayout.SOUTH );

    extendedInfoDialog.getRootPane().setContentPane( panel );
    if( size == null )
      extendedInfoDialog.setSize( 400, 300 );
    else
      extendedInfoDialog.setSize( size );

    extendedInfoResult = null;
    UISupport.showDialog( extendedInfoDialog );
  }

  public boolean confirmExtendedInfo( String title, String description, String content, Dimension size )
  {
    JPanel buttonBar = ButtonBarFactory.buildRightAlignedBar( new JButton( new OkAction( "OK" ) ), new JButton(
        new CancelAction( "Cancel" ) ) );

    showExtendedInfo( title, description, content, buttonBar, size );

    return extendedInfoResult == null ? false : extendedInfoResult;
  }

  public Boolean confirmOrCancleExtendedInfo( String title, String description, String content, Dimension size )
  {
    JPanel buttonBar = ButtonBarFactory.buildRightAlignedBar( new JButton( new OkAction( "Yes" ) ), new JButton(
        new NoAction( "No" ) ), new JButton( new CancelAction( "Cancel" ) ) );

    showExtendedInfo( title, description, content, buttonBar, size );

    return extendedInfoResult;
  }

  private final class OkAction extends AbstractAction
  {
    public OkAction( String name )
    {
      super( name );
    }

    public void actionPerformed( ActionEvent e )
    {
      extendedInfoResult = true;
      extendedInfoDialog.setVisible( false );
    }
  }

  private final class NoAction extends AbstractAction
  {
    public NoAction( String name )
    {
      super( name );
    }

    public void actionPerformed( ActionEvent e )
    {
      extendedInfoResult = false;
      extendedInfoDialog.setVisible( false );
    }
  }

  private final class CancelAction extends AbstractAction
  {
    public CancelAction( String name )
    {
      super( name );
    }

    public void actionPerformed( ActionEvent e )
    {
      extendedInfoResult = null;
      extendedInfoDialog.setVisible( false );
    }
  }

  public String selectXPath( String title, String info, String xml, String xpath )
  {
    return prompt( "Specify XPath expression", "Select XPath", xpath );
  }

  /*
   * (non-Javadoc)
   *
   * @see com.eviware.x.dialogs.XDialogs#promptPassword(java.lang.String,
   * java.lang.String)
   */
  public char[] promptPassword( String question, String title )
  {
    JPasswordField passwordField = new JPasswordField();
    passwordField.addAncestorListener( new FocusAncestorListener( passwordField ) );
    JLabel qLabel = new JLabel( question );
    JOptionPane.showConfirmDialog( null, new Object[] { qLabel, passwordField }, title, JOptionPane.OK_CANCEL_OPTION );
    return passwordField.getPassword();
  }

  private final class FocusAncestorListener implements AncestorListener
  {
    private final JComponent component;

    public FocusAncestorListener( JComponent component )
    {
      this.component = component;
    }

    public void ancestorAdded( AncestorEvent event )
    {
      component.requestFocusInWindow();
    }

    public void ancestorMoved( AncestorEvent event )
    {
    }

    public void ancestorRemoved( AncestorEvent event )
    {
    }
  }
}
TOP

Related Classes of com.eviware.x.impl.swing.SwingDialogs

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.