View Javadoc

1   /*
2    *  soapUI, copyright (C) 2004-2007 eviware.com 
3    *
4    *  soapUI is free software; you can redistribute it and/or modify it under the 
5    *  terms of version 2.1 of the GNU Lesser General Public License as published by 
6    *  the Free Software Foundation.
7    *
8    *  soapUI is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without 
9    *  even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
10   *  See the GNU Lesser General Public License for more details at gnu.org.
11   */
12  
13  package com.eviware.soapui.impl.wsdl.panels.testcase.actions;
14  
15  import java.awt.BorderLayout;
16  import java.awt.Dimension;
17  import java.awt.event.ActionEvent;
18  
19  import javax.swing.AbstractAction;
20  import javax.swing.Action;
21  import javax.swing.BorderFactory;
22  import javax.swing.JButton;
23  import javax.swing.JDialog;
24  import javax.swing.JPanel;
25  
26  import com.eviware.soapui.impl.wsdl.testcase.WsdlTestCase;
27  import com.eviware.soapui.impl.wsdl.teststeps.WsdlTestRequestStep;
28  import com.eviware.soapui.model.testsuite.TestStep;
29  import com.eviware.soapui.support.UISupport;
30  import com.eviware.soapui.support.components.SimpleForm;
31  import com.jgoodies.forms.factories.ButtonBarFactory;
32  
33  /***
34   * Set the credentials for all requests in a testcase
35   * 
36   * @author Ole.Matzura
37   */
38  
39  public class SetCredentialsAction extends AbstractAction
40  {
41  	private final WsdlTestCase testCase;
42  	private JDialog dialog;
43  	private SimpleForm form;
44  
45  	private static final String DOMAIN = "Domain";
46  	private static final String PASSWORD = "Password";
47  	private static final String USERNAME = "Username";
48  
49  	public SetCredentialsAction( WsdlTestCase testCase )
50     {
51        this.testCase = testCase;
52  		putValue( Action.SMALL_ICON, UISupport.createImageIcon( "/set_credentials.gif"));
53        putValue( Action.SHORT_DESCRIPTION, "Sets the credentials for all requests in this testcase" );
54     }
55     
56  	public void actionPerformed(ActionEvent e)
57  	{
58  		if( dialog == null )
59  		{
60  			buildDialog();
61  		}
62  		
63  		UISupport.showDialog( dialog );
64     }
65  
66  	private void buildDialog()
67  	{
68  		dialog = new JDialog( UISupport.getMainFrame(), "Set TestCase Credentials" );
69  		form = new SimpleForm();
70  		form.appendTextField( USERNAME, "Username to use for authentication" );
71  		form.appendTextField( PASSWORD, "Password to use for authentication" );
72  		form.appendTextField( DOMAIN, "Domain to specify (for NTLM)" );
73  		form.getPanel().setBorder( BorderFactory.createEmptyBorder( 0, 0, 10, 0 ));
74  		
75  		JPanel panel = new JPanel( new BorderLayout() );
76  		panel.add( form.getPanel(), BorderLayout.CENTER );
77  		
78  		JPanel buttonBar = ButtonBarFactory.buildOKCancelBar( new JButton( new OkAction() ), new JButton( new CancelAction() ));
79  		panel.add( buttonBar, BorderLayout.SOUTH );
80  		panel.setBorder( BorderFactory.createEmptyBorder( 10, 10, 10, 10 ));
81  		panel.setPreferredSize( new Dimension( 270, (int) panel.getPreferredSize().getHeight() ));
82  		
83  		dialog.getContentPane().add( panel );
84  		dialog.pack();
85  	}
86  	
87  	private class OkAction extends AbstractAction
88  	{
89  		public OkAction()
90  		{
91  			super( "Ok" );
92  		}
93  		
94  		public void actionPerformed(ActionEvent e)
95  		{
96  			for( int c = 0; c < testCase.getTestStepCount(); c++ )
97  	   	{
98  	   		TestStep step = testCase.getTestStepAt( c );
99  	   		if( step instanceof WsdlTestRequestStep )
100 	   		{
101 	   			WsdlTestRequestStep requestStep = (WsdlTestRequestStep) step;
102 	   			requestStep.getTestRequest().setUsername( form.getComponentValue( USERNAME ));
103 	   			requestStep.getTestRequest().setPassword( form.getComponentValue( PASSWORD ));
104 	   			requestStep.getTestRequest().setDomain( form.getComponentValue( DOMAIN ));
105 	   		}
106 	   	}
107 			
108 			dialog.setVisible( false );
109 		}
110 	}
111 
112 	private class CancelAction extends AbstractAction
113 	{
114 		public CancelAction()
115 		{
116 			super( "Cancel" );
117 		}
118 
119 		public void actionPerformed(ActionEvent e)
120 		{
121 			dialog.setVisible( false );
122 		}
123 	}
124 }