1
2
3
4
5
6
7
8
9
10
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 }