View Javadoc

1   /*
2    *  soapUI, copyright (C) 2006 eviware.com 
3    *
4    *  soapUI is free software; you can redistribute it and/or modify it under the 
5    *  terms of the GNU Lesser General Public License as published by the Free Software Foundation; 
6    *  either version 2.1 of the License, or (at your option) any later version.
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.actions;
14  
15  import java.awt.Font;
16  import java.awt.event.ActionEvent;
17  import java.awt.event.ActionListener;
18  
19  import javax.swing.AbstractAction;
20  import javax.swing.JButton;
21  import javax.swing.JCheckBox;
22  import javax.swing.JTextField;
23  
24  import com.eviware.soapui.SoapUI;
25  import com.eviware.soapui.model.settings.Settings;
26  import com.eviware.soapui.settings.UISettings;
27  import com.eviware.soapui.support.components.SimpleForm;
28  import com.eviware.soapui.support.types.StringToStringMap;
29  import com.eviware.soapui.ui.desktop.DesktopRegistry;
30  import com.jgoodies.forms.builder.ButtonBarBuilder;
31  import com.l2fprod.common.swing.JFontChooser;
32  
33  public class UIPrefs implements Prefs
34  {
35  	public static final String ORDER_PROJECTS = "Order Projects";
36  	public static final String ORDER_TESTCASES = "Order TestCases";
37  	public static final String ORDER_REQUESTS = "Order Requests";
38  	public static final String NO_RESIZE_REQUEST_EDITOR = "Disable auto-resize";
39  	public static final String START_WITH_REQUEST_TABS = "Tabbed request view";
40  	public static final String AUTO_VALIDATE_REQUEST = "Validate Requests";
41  	public static final String ABORT_ON_INVALID_REQUEST = "Abort on invalid";
42  	public static final String AUTO_VALIDATE_RESPONSE = "Validate Responses";
43  	public static final String CREATE_BACKUP = "Create Backup";
44  	public static final String BACKUP_FOLDER = "Backup Folder";
45  	public static final String DESKTOP_TYPE = "Desktop Type";
46  	public static final String NATIVE_LAF = "Native L&F";
47  	public static final String ENABLE_GROOVY_LOG_DURING_LOADTEST = "Do not disable Groovy Log";
48  	
49  	private JTextField editorFontTextField;
50  	private SimpleForm editorForm;
51  	private final String title;
52  	private JCheckBox abortCheckBox;
53  	private JCheckBox autoValidateCheckBox;
54  	private JCheckBox backupCheckBox;
55  	private JTextField backupFolder;
56  
57  	public UIPrefs(String title)
58  	{
59  		this.title = title;
60  	}
61  	
62  	public String getTitle()
63  	{
64  		return title;
65  	}
66  
67  	public SimpleForm getForm()
68  	{
69  		if( editorForm == null )
70  		{
71  			ButtonBarBuilder builder = new ButtonBarBuilder();
72  			editorFontTextField = new JTextField( 20 );
73  			editorFontTextField.setEnabled( false );
74  			builder.addFixed( editorFontTextField );
75  			builder.addRelatedGap();
76  			builder.addFixed( new JButton( new AbstractAction("Select Font..")
77  					{
78  						public void actionPerformed(ActionEvent e)
79  						{
80  							Font font = JFontChooser.showDialog( null, "Select XML Editor Font", 
81  									Font.decode( editorFontTextField.getText() ));
82  							
83  							if( font != null )
84  								editorFontTextField.setText( font.getFontName() + "-plain-" + font.getSize() );
85  						}}));
86  			
87  			editorForm = new SimpleForm();
88  			editorForm.addSpace( 5 );
89  			editorForm.append( "Editor Font", builder.getPanel() );
90  			editorForm.addSpace( 5 );
91  			
92  			editorForm.appendCheckBox( ORDER_PROJECTS, "(orders projects alphabetically in tree)", false );
93  			editorForm.appendCheckBox( ORDER_TESTCASES, "(orders testcases alphabetically in tree)", false );
94  			editorForm.appendCheckBox( ORDER_REQUESTS, "(orders requests alphabetically in tree)", false );
95  			editorForm.appendSeparator();
96  
97  			editorForm.appendCheckBox( NO_RESIZE_REQUEST_EDITOR, "(disables automatic resizing of request editors)", true );
98  			editorForm.appendCheckBox( START_WITH_REQUEST_TABS, "(defaults the request editor to the tabbed layout)", true );
99  			editorForm.appendSeparator();
100 
101 			autoValidateCheckBox = editorForm.appendCheckBox( AUTO_VALIDATE_REQUEST, "(always validate request messages before they are sent)", true );
102 			abortCheckBox = editorForm.appendCheckBox( ABORT_ON_INVALID_REQUEST, "(aborts invalid requests)", true );
103 			editorForm.appendCheckBox( AUTO_VALIDATE_RESPONSE, "(always validate response messages)", true );
104 			
105 			autoValidateCheckBox.addActionListener( new ActionListener() {
106 
107 				public void actionPerformed(ActionEvent e)
108 				{
109 					abortCheckBox.setEnabled( autoValidateCheckBox.isSelected() );
110 				}} );
111 			
112 			editorForm.appendSeparator();
113 			backupCheckBox = editorForm.appendCheckBox( CREATE_BACKUP, "(backup project files before they are saved)", true );
114 			backupFolder = editorForm.appendTextField( BACKUP_FOLDER, "(folder to backup to, can be both relative or absolut)" );
115 			backupCheckBox.addActionListener( new ActionListener() {
116 
117 				public void actionPerformed(ActionEvent e)
118 				{
119 					backupFolder.setEnabled( backupCheckBox.isSelected() );
120 				}} );
121 			
122 			if( SoapUI.isStandalone())
123 			{
124 				editorForm.appendSeparator();
125 				editorForm.appendComboBox( DESKTOP_TYPE, DesktopRegistry.getInstance().getNames(), 
126 							"Select the type of desktop to use" );
127 				editorForm.appendCheckBox( NATIVE_LAF, "(use native Look & Feel - requires restart)", true );
128 			}
129 			
130 			editorForm.appendSeparator();
131 			editorForm.appendCheckBox( ENABLE_GROOVY_LOG_DURING_LOADTEST, "(do not disable the groovy log when running LoadTests)", true );
132 		}
133 		
134 		return editorForm;
135 	}
136 
137 	public void getFormValues(Settings settings)
138 	{
139 		StringToStringMap values = new StringToStringMap();
140 		editorForm.getValues( values );
141 		storeValues(values, settings);
142 	}
143 	
144 	public void storeValues(StringToStringMap values, Settings settings)
145 	{
146 		if( editorFontTextField != null )
147 			settings.setString( UISettings.EDITOR_FONT, editorFontTextField.getText() );
148 		
149 		settings.setBoolean( UISettings.ORDER_PROJECTS, values.getBoolean( ORDER_PROJECTS ));
150 		settings.setBoolean( UISettings.ORDER_REQUESTS, values.getBoolean( ORDER_REQUESTS ));
151 		settings.setBoolean( UISettings.ORDER_TESTCASES, values.getBoolean( ORDER_TESTCASES ));
152 		settings.setBoolean( UISettings.NO_RESIZE_REQUEST_EDITOR, values.getBoolean( NO_RESIZE_REQUEST_EDITOR ));
153 		settings.setBoolean( UISettings.START_WITH_REQUEST_TABS, values.getBoolean( START_WITH_REQUEST_TABS ));
154 		settings.setBoolean( UISettings.AUTO_VALIDATE_REQUEST, values.getBoolean( AUTO_VALIDATE_REQUEST ));
155 		settings.setBoolean( UISettings.ABORT_ON_INVALID_REQUEST, values.getBoolean( ABORT_ON_INVALID_REQUEST ));
156 		settings.setBoolean( UISettings.AUTO_VALIDATE_RESPONSE, values.getBoolean( AUTO_VALIDATE_RESPONSE ));
157 		settings.setBoolean( UISettings.CREATE_BACKUP, values.getBoolean( CREATE_BACKUP ));
158 		settings.setString( UISettings.BACKUP_FOLDER, values.get( BACKUP_FOLDER ));
159 		
160 		if( SoapUI.isStandalone())
161 		{
162 			settings.setString( UISettings.DESKTOP_TYPE, values.get( DESKTOP_TYPE ));
163 			settings.setBoolean( UISettings.NATIVE_LAF, values.getBoolean( NATIVE_LAF ));
164 		}
165 		
166 		settings.setBoolean( UISettings.DONT_DISABLE_GROOVY_LOG, values.getBoolean( ENABLE_GROOVY_LOG_DURING_LOADTEST ));
167 	}
168 
169 	public void setFormValues(Settings settings)
170 	{
171 		String editorFont = settings.getString( UISettings.EDITOR_FONT, UISettings.DEFAULT_EDITOR_FONT );
172 		if( editorFont == null || editorFont.length() == 0 )
173 			editorFont = UISettings.DEFAULT_EDITOR_FONT;
174 		
175 		editorFontTextField.setText( editorFont );
176 		editorForm.setValues( getValues(settings) );
177 		
178 		abortCheckBox.setEnabled( settings.getBoolean( UISettings.AUTO_VALIDATE_REQUEST ) );
179 		backupFolder.setEnabled( settings.getBoolean( UISettings.CREATE_BACKUP ) );
180 	}
181 
182 	public StringToStringMap getValues(Settings settings)
183 	{
184 		StringToStringMap values = new StringToStringMap();
185 		values.put( ORDER_PROJECTS, settings.getBoolean( UISettings.ORDER_PROJECTS ));
186 		values.put( ORDER_REQUESTS, settings.getBoolean( UISettings.ORDER_REQUESTS ));
187 		values.put( ORDER_TESTCASES, settings.getBoolean( UISettings.ORDER_TESTCASES ));
188 		values.put( NO_RESIZE_REQUEST_EDITOR, settings.getBoolean( UISettings.NO_RESIZE_REQUEST_EDITOR ));
189 		values.put( START_WITH_REQUEST_TABS, settings.getBoolean( UISettings.START_WITH_REQUEST_TABS ));
190 		values.put( AUTO_VALIDATE_REQUEST, settings.getBoolean( UISettings.AUTO_VALIDATE_REQUEST ));
191 		values.put( ABORT_ON_INVALID_REQUEST, settings.getBoolean( UISettings.ABORT_ON_INVALID_REQUEST ));
192 		values.put( AUTO_VALIDATE_RESPONSE, settings.getBoolean( UISettings.AUTO_VALIDATE_RESPONSE ));
193 		values.put( CREATE_BACKUP, settings.getBoolean( UISettings.CREATE_BACKUP ));
194 		values.put( BACKUP_FOLDER, settings.getString( UISettings.BACKUP_FOLDER, "" ));
195 		
196 		if( SoapUI.isStandalone())
197 		{
198 			values.put( DESKTOP_TYPE, settings.getString( UISettings.DESKTOP_TYPE, "Windows" ));
199 			values.put( NATIVE_LAF, settings.getBoolean( UISettings.NATIVE_LAF ));
200 		}
201 		
202 		values.put( ENABLE_GROOVY_LOG_DURING_LOADTEST, settings.getBoolean( UISettings.DONT_DISABLE_GROOVY_LOG ));
203 		
204 		return values;
205 	}
206 }