View Javadoc

1   /*
2    *  soapUI, copyright (C) 2004-2010 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.actions;
14  
15  import java.awt.event.ActionEvent;
16  import java.awt.event.ActionListener;
17  
18  import javax.swing.JCheckBox;
19  import javax.swing.JTextField;
20  import javax.swing.ToolTipManager;
21  
22  import com.eviware.soapui.SoapUI;
23  import com.eviware.soapui.model.settings.Settings;
24  import com.eviware.soapui.settings.UISettings;
25  import com.eviware.soapui.support.components.SimpleForm;
26  import com.eviware.soapui.support.types.StringToStringMap;
27  import com.eviware.soapui.ui.desktop.DesktopRegistry;
28  
29  /***
30   * Preferences class for UISettings
31   * 
32   * @author ole.matzura
33   */
34  
35  public class UIPrefs implements Prefs
36  {
37  	public static final String CLOSE_PROJECTS = "Close Projects";
38  	public static final String ORDER_PROJECTS = "Order Projects";
39  	public static final String ORDER_SERVICES = "Order Services";
40  	public static final String ORDER_REQUESTS = "Order Requests";
41  	public static final String SHOW_DESCRIPTIONS = "Show Descriptions";
42  	public static final String CREATE_BACKUP = "Create Backup";
43  	public static final String BACKUP_FOLDER = "Backup Folder";
44  	public static final String DESKTOP_TYPE = "Desktop Type";
45  	public static final String NATIVE_LAF = "Native LF";
46  	public static final String ENABLE_GROOVY_LOG_DURING_LOADTEST = "Do not disable Groovy Log";
47  	public static final String SHOW_LOGS_AT_STARTUP = "Show Log Tabs";
48  	public static final String AUTOSAVE_INTERVAL = "AutoSave Interval";
49  	public static final String AUTOSAVE_ONEXIT = "Save projects on exit";
50  	public static final String SHOW_STARTUP_PAGE = "Show Startup Page";
51  	public static final String LINEBREAK = "Normalize line-break";
52  	public static final String GC_INTERVAL = "Garbage Collection Interval";
53  	public static final String RAW_RESPONSE_MESSAGE_SIZE = "Size of Raw Response Message to Show";
54  	public static final String RAW_REQUEST_MESSAGE_SIZE = "Size of Raw Request Message to Show";
55  	public static final String WRAP_RAW_MESSAGES = "Wrap content in Raw Message Viewers";
56  	public static final String DISABLE_TOOLTIPS = "Disable Tooltips";
57  	public static final String DISABLE_BROWSER = "Disable Browser";
58  
59  	private SimpleForm editorForm;
60  	private final String title;
61  	private JCheckBox backupCheckBox;
62  	private JTextField backupFolder;
63  
64  	public UIPrefs( String title )
65  	{
66  		this.title = title;
67  	}
68  
69  	public String getTitle()
70  	{
71  		return title;
72  	}
73  
74  	public SimpleForm getForm()
75  	{
76  		if( editorForm == null )
77  		{
78  			editorForm = new SimpleForm();
79  			editorForm.addSpace( 5 );
80  			editorForm.appendCheckBox( CLOSE_PROJECTS, "Close all projects on startup", false );
81  			editorForm.appendSeparator();
82  			editorForm.appendCheckBox( ORDER_PROJECTS, "Order Projects alphabetically in tree", false );
83  			editorForm.appendCheckBox( ORDER_SERVICES, "Order Services alphabetically in tree", false );
84  			editorForm.appendCheckBox( ORDER_REQUESTS, "Order Requests alphabetically in tree", false );
85  			editorForm.appendCheckBox( SHOW_DESCRIPTIONS, "Show description content when available", false );
86  			editorForm.appendSeparator();
87  
88  			editorForm.appendCheckBox( AUTOSAVE_ONEXIT, "Automatically save all projects on exit", true );
89  			backupCheckBox = editorForm.appendCheckBox( CREATE_BACKUP, "Backup project files before they are saved", true );
90  			backupFolder = editorForm.appendTextField( BACKUP_FOLDER,
91  					"Folder to backup to (can be both relative or absolute)" );
92  			backupCheckBox.addActionListener( new ActionListener()
93  			{
94  				public void actionPerformed( ActionEvent e )
95  				{
96  					backupFolder.setEnabled( backupCheckBox.isSelected() );
97  				}
98  			} );
99  
100 			editorForm.appendTextField( AUTOSAVE_INTERVAL,
101 					"Sets the autosave interval in minutes (0 means autosave is off)" );
102 
103 			if( SoapUI.isStandalone() )
104 			{
105 				editorForm.appendSeparator();
106 				editorForm.appendComboBox( DESKTOP_TYPE, DesktopRegistry.getInstance().getNames(),
107 						"Select the type of desktop to use" );
108 				editorForm.appendCheckBox( NATIVE_LAF, "Use native Look & Feel (requires restart)", true );
109 			}
110 
111 			editorForm.appendSeparator();
112 			editorForm.appendCheckBox( ENABLE_GROOVY_LOG_DURING_LOADTEST,
113 					"Do not disable the groovy log when running LoadTests", true );
114 
115 			if( SoapUI.isStandalone() )
116 			{
117 				editorForm.appendCheckBox( SHOW_LOGS_AT_STARTUP, "Shows log tabs when starting soapUI", false );
118 				editorForm.appendCheckBox( SHOW_STARTUP_PAGE, "Opens startup web page when starting soapUI", false );
119 				editorForm.appendCheckBox( DISABLE_TOOLTIPS, "Disables all tooltips", false );
120 			}
121 
122 			editorForm.appendSeparator();
123 			editorForm.appendCheckBox( LINEBREAK, "Normalize line-breaks when saving project", false );
124 			editorForm.appendSeparator();
125 			editorForm.appendTextField( GC_INTERVAL,
126 					"Sets the Garbage Collector interval in seconds (0 means garbage collection is only performed by JRE)" );
127 			editorForm.appendSeparator();
128 			editorForm.appendTextField( RAW_RESPONSE_MESSAGE_SIZE, "Sets the size of raw response mesage to show." );
129 			editorForm.appendTextField( RAW_REQUEST_MESSAGE_SIZE, "Sets the size of raw request mesage to show." );
130 			editorForm.appendCheckBox( WRAP_RAW_MESSAGES, "Wraps content in Raw Message Viewers", false );
131 			editorForm.appendSeparator();
132 			editorForm.appendCheckBox( DISABLE_BROWSER, "Disables integrated Browser component", false );
133 		}
134 
135 		return editorForm;
136 	}
137 
138 	public void getFormValues( Settings settings )
139 	{
140 		StringToStringMap values = new StringToStringMap();
141 		editorForm.getValues( values );
142 		storeValues( values, settings );
143 	}
144 
145 	public void storeValues( StringToStringMap values, Settings settings )
146 	{
147 		settings.setBoolean( UISettings.CLOSE_PROJECTS, values.getBoolean( CLOSE_PROJECTS ) );
148 		settings.setBoolean( UISettings.ORDER_PROJECTS, values.getBoolean( ORDER_PROJECTS ) );
149 		settings.setBoolean( UISettings.ORDER_SERVICES, values.getBoolean( ORDER_SERVICES ) );
150 		settings.setBoolean( UISettings.ORDER_REQUESTS, values.getBoolean( ORDER_REQUESTS ) );
151 		settings.setBoolean( UISettings.SHOW_DESCRIPTIONS, values.getBoolean( SHOW_DESCRIPTIONS ) );
152 		settings.setBoolean( UISettings.CREATE_BACKUP, values.getBoolean( CREATE_BACKUP ) );
153 		settings.setString( UISettings.BACKUP_FOLDER, values.get( BACKUP_FOLDER ) );
154 		settings.setString( UISettings.AUTO_SAVE_INTERVAL, values.get( AUTOSAVE_INTERVAL ) );
155 		settings.setBoolean( UISettings.AUTO_SAVE_PROJECTS_ON_EXIT, values.getBoolean( AUTOSAVE_ONEXIT ) );
156 		settings.setBoolean( UISettings.LINEBREAK, values.getBoolean( LINEBREAK ) );
157 
158 		if( SoapUI.isStandalone() )
159 		{
160 			settings.setString( UISettings.DESKTOP_TYPE, values.get( DESKTOP_TYPE ) );
161 			settings.setBoolean( UISettings.NATIVE_LAF, values.getBoolean( NATIVE_LAF ) );
162 		}
163 
164 		settings.setBoolean( UISettings.DONT_DISABLE_GROOVY_LOG, values.getBoolean( ENABLE_GROOVY_LOG_DURING_LOADTEST ) );
165 		if( SoapUI.isStandalone() )
166 		{
167 			settings.setBoolean( UISettings.SHOW_LOGS_AT_STARTUP, values.getBoolean( SHOW_LOGS_AT_STARTUP ) );
168 			settings.setBoolean( UISettings.SHOW_STARTUP_PAGE, values.getBoolean( SHOW_STARTUP_PAGE ) );
169 			settings.setBoolean( UISettings.DISABLE_TOOLTIPS, values.getBoolean( DISABLE_TOOLTIPS ) );
170 
171 			ToolTipManager.sharedInstance().setEnabled( !values.getBoolean( DISABLE_TOOLTIPS ) );
172 		}
173 
174 		settings.setString( UISettings.GC_INTERVAL, values.get( GC_INTERVAL ) );
175 
176 		settings.setString( UISettings.RAW_RESPONSE_MESSAGE_SIZE, values.get( RAW_RESPONSE_MESSAGE_SIZE ) );
177 		settings.setString( UISettings.RAW_REQUEST_MESSAGE_SIZE, values.get( RAW_REQUEST_MESSAGE_SIZE ) );
178 		settings.setBoolean( UISettings.WRAP_RAW_MESSAGES, values.getBoolean( WRAP_RAW_MESSAGES ) );
179 		settings.setBoolean( UISettings.DISABLE_BROWSER, values.getBoolean( DISABLE_BROWSER ) );
180 
181 		SoapUI.initAutoSaveTimer();
182 		SoapUI.initGCTimer();
183 	}
184 
185 	public void setFormValues( Settings settings )
186 	{
187 		editorForm.setValues( getValues( settings ) );
188 		backupFolder.setEnabled( settings.getBoolean( UISettings.CREATE_BACKUP ) );
189 	}
190 
191 	public StringToStringMap getValues( Settings settings )
192 	{
193 		StringToStringMap values = new StringToStringMap();
194 		values.put( CLOSE_PROJECTS, settings.getBoolean( UISettings.CLOSE_PROJECTS ) );
195 		values.put( ORDER_PROJECTS, settings.getBoolean( UISettings.ORDER_PROJECTS ) );
196 		values.put( ORDER_SERVICES, settings.getBoolean( UISettings.ORDER_SERVICES ) );
197 		values.put( ORDER_REQUESTS, settings.getBoolean( UISettings.ORDER_REQUESTS ) );
198 		values.put( SHOW_DESCRIPTIONS, settings.getBoolean( UISettings.SHOW_DESCRIPTIONS ) );
199 		values.put( CREATE_BACKUP, settings.getBoolean( UISettings.CREATE_BACKUP ) );
200 		values.put( BACKUP_FOLDER, settings.getString( UISettings.BACKUP_FOLDER, "" ) );
201 		values.put( AUTOSAVE_INTERVAL, settings.getString( UISettings.AUTO_SAVE_INTERVAL, "0" ) );
202 		values.put( AUTOSAVE_ONEXIT, settings.getBoolean( UISettings.AUTO_SAVE_PROJECTS_ON_EXIT ) );
203 		values.put( LINEBREAK, settings.getBoolean( UISettings.LINEBREAK ) );
204 
205 		if( SoapUI.isStandalone() )
206 		{
207 			values.put( DESKTOP_TYPE, settings.getString( UISettings.DESKTOP_TYPE, SoapUI.DEFAULT_DESKTOP ) );
208 			values.put( NATIVE_LAF, settings.getBoolean( UISettings.NATIVE_LAF ) );
209 		}
210 
211 		values.put( ENABLE_GROOVY_LOG_DURING_LOADTEST, settings.getBoolean( UISettings.DONT_DISABLE_GROOVY_LOG ) );
212 		if( SoapUI.isStandalone() )
213 		{
214 			values.put( SHOW_LOGS_AT_STARTUP, settings.getBoolean( UISettings.SHOW_LOGS_AT_STARTUP ) );
215 			values.put( SHOW_STARTUP_PAGE, settings.getBoolean( UISettings.SHOW_STARTUP_PAGE ) );
216 			values.put( DISABLE_TOOLTIPS, settings.getBoolean( UISettings.DISABLE_TOOLTIPS ) );
217 		}
218 
219 		values.put( GC_INTERVAL, settings.getString( UISettings.GC_INTERVAL, "0" ) );
220 		values.put( RAW_RESPONSE_MESSAGE_SIZE, settings.getString( UISettings.RAW_RESPONSE_MESSAGE_SIZE, "10000" ) );
221 		values.put( RAW_REQUEST_MESSAGE_SIZE, settings.getString( UISettings.RAW_REQUEST_MESSAGE_SIZE, "10000" ) );
222 		values.put( WRAP_RAW_MESSAGES, settings.getBoolean( UISettings.WRAP_RAW_MESSAGES ) );
223 		values.put( DISABLE_BROWSER, settings.getBoolean( UISettings.DISABLE_BROWSER ) );
224 
225 		return values;
226 	}
227 }