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
21 import com.eviware.soapui.SoapUI;
22 import com.eviware.soapui.model.settings.Settings;
23 import com.eviware.soapui.settings.UISettings;
24 import com.eviware.soapui.support.components.SimpleForm;
25 import com.eviware.soapui.support.types.StringToStringMap;
26 import com.eviware.soapui.ui.desktop.DesktopRegistry;
27
28 /***
29 * Preferences class for UISettings
30 *
31 * @author ole.matzura
32 */
33
34 public class UIPrefs implements Prefs
35 {
36 public static final String CLOSE_PROJECTS = "Close Projects";
37 public static final String ORDER_PROJECTS = "Order Projects";
38 public static final String ORDER_REQUESTS = "Order Requests";
39 public static final String SHOW_DESCRIPTIONS = "Show Descriptions";
40 public static final String CREATE_BACKUP = "Create Backup";
41 public static final String BACKUP_FOLDER = "Backup Folder";
42 public static final String DESKTOP_TYPE = "Desktop Type";
43 public static final String NATIVE_LAF = "Native L&F";
44 public static final String ENABLE_GROOVY_LOG_DURING_LOADTEST = "Do not disable Groovy Log";
45 public static final String SHOW_LOGS_AT_STARTUP = "Show Log Tabs";
46 public static final String AUTOSAVE_INTERVAL = "AutoSave Interval";
47 public static final String AUTOSAVE_ONEXIT = "Save projects on exit";
48 public static final String SHOW_STARTUP_PAGE = "Show Startup Page";
49 public static final String LINEBRAK = "Normalize line-break";
50 public static final String GC_INTERVAL = "Garbage Collection Interval";
51
52 private SimpleForm editorForm;
53 private final String title;
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 editorForm = new SimpleForm();
72 editorForm.addSpace( 5 );
73 editorForm.appendCheckBox( CLOSE_PROJECTS, "Close all projects on startup", false );
74 editorForm.appendSeparator();
75 editorForm.appendCheckBox( ORDER_PROJECTS, "Order Projects alphabetically in tree", false );
76 editorForm.appendCheckBox( ORDER_REQUESTS, "Order Requests alphabetically in tree", false );
77 editorForm.appendCheckBox( SHOW_DESCRIPTIONS, "Show description content when available", false );
78 editorForm.appendSeparator();
79
80 editorForm.appendCheckBox( AUTOSAVE_ONEXIT, "Automatically save all projects on exit", true );
81 backupCheckBox = editorForm.appendCheckBox( CREATE_BACKUP, "Backup project files before they are saved", true );
82 backupFolder = editorForm.appendTextField( BACKUP_FOLDER,
83 "Folder to backup to (can be both relative or absolute)" );
84 backupCheckBox.addActionListener( new ActionListener()
85 {
86 public void actionPerformed( ActionEvent e )
87 {
88 backupFolder.setEnabled( backupCheckBox.isSelected() );
89 }
90 } );
91
92 editorForm.appendTextField( AUTOSAVE_INTERVAL,
93 "Sets the autosave interval in minutes (0 means autosave is off)" );
94
95 if( SoapUI.isStandalone() )
96 {
97 editorForm.appendSeparator();
98 editorForm.appendComboBox( DESKTOP_TYPE, DesktopRegistry.getInstance().getNames(),
99 "Select the type of desktop to use" );
100 editorForm.appendCheckBox( NATIVE_LAF, "Use native Look & Feel (requires restart)", true );
101 }
102
103 editorForm.appendSeparator();
104 editorForm.appendCheckBox( ENABLE_GROOVY_LOG_DURING_LOADTEST,
105 "Do not disable the groovy log when running LoadTests", true );
106
107 if( SoapUI.isStandalone() )
108 {
109 editorForm.appendCheckBox( SHOW_LOGS_AT_STARTUP, "Shows log tabs when starting soapUI", false );
110 editorForm.appendCheckBox( SHOW_STARTUP_PAGE, "Opens startup web page when starting soapUI", false );
111 }
112
113 editorForm.appendSeparator();
114 editorForm.appendCheckBox( LINEBRAK, "Normalize line-breaks when saving project", false );
115 editorForm.appendSeparator();
116 editorForm.appendTextField( GC_INTERVAL,
117 "Sets the Garbage Collector interval in seconds (0 means garbage collection is only performed by JRE)" );
118 }
119
120 return editorForm;
121 }
122
123 public void getFormValues( Settings settings )
124 {
125 StringToStringMap values = new StringToStringMap();
126 editorForm.getValues( values );
127 storeValues( values, settings );
128 }
129
130 public void storeValues( StringToStringMap values, Settings settings )
131 {
132 settings.setBoolean( UISettings.CLOSE_PROJECTS, values.getBoolean( CLOSE_PROJECTS ) );
133 settings.setBoolean( UISettings.ORDER_PROJECTS, values.getBoolean( ORDER_PROJECTS ) );
134 settings.setBoolean( UISettings.ORDER_REQUESTS, values.getBoolean( ORDER_REQUESTS ) );
135 settings.setBoolean( UISettings.SHOW_DESCRIPTIONS, values.getBoolean( SHOW_DESCRIPTIONS ) );
136 settings.setBoolean( UISettings.CREATE_BACKUP, values.getBoolean( CREATE_BACKUP ) );
137 settings.setString( UISettings.BACKUP_FOLDER, values.get( BACKUP_FOLDER ) );
138 settings.setString( UISettings.AUTO_SAVE_INTERVAL, values.get( AUTOSAVE_INTERVAL ) );
139 settings.setBoolean( UISettings.AUTO_SAVE_PROJECTS_ON_EXIT, values.getBoolean( AUTOSAVE_ONEXIT ) );
140 settings.setBoolean( UISettings.LINEBREAK, values.getBoolean( LINEBRAK ) );
141
142 if( SoapUI.isStandalone() )
143 {
144 settings.setString( UISettings.DESKTOP_TYPE, values.get( DESKTOP_TYPE ) );
145 settings.setBoolean( UISettings.NATIVE_LAF, values.getBoolean( NATIVE_LAF ) );
146 }
147
148 settings.setBoolean( UISettings.DONT_DISABLE_GROOVY_LOG, values.getBoolean( ENABLE_GROOVY_LOG_DURING_LOADTEST ) );
149 if( SoapUI.isStandalone() )
150 {
151 settings.setBoolean( UISettings.SHOW_LOGS_AT_STARTUP, values.getBoolean( SHOW_LOGS_AT_STARTUP ) );
152 settings.setBoolean( UISettings.SHOW_STARTUP_PAGE, values.getBoolean( SHOW_STARTUP_PAGE ) );
153 }
154
155 settings.setString( UISettings.GC_INTERVAL, values.get( GC_INTERVAL ) );
156
157 SoapUI.initAutoSaveTimer();
158 SoapUI.initGCTimer();
159 }
160
161 public void setFormValues( Settings settings )
162 {
163 editorForm.setValues( getValues( settings ) );
164 backupFolder.setEnabled( settings.getBoolean( UISettings.CREATE_BACKUP ) );
165 }
166
167 public StringToStringMap getValues( Settings settings )
168 {
169 StringToStringMap values = new StringToStringMap();
170 values.put( CLOSE_PROJECTS, settings.getBoolean( UISettings.CLOSE_PROJECTS ) );
171 values.put( ORDER_PROJECTS, settings.getBoolean( UISettings.ORDER_PROJECTS ) );
172 values.put( ORDER_REQUESTS, settings.getBoolean( UISettings.ORDER_REQUESTS ) );
173 values.put( SHOW_DESCRIPTIONS, settings.getBoolean( UISettings.SHOW_DESCRIPTIONS ) );
174 values.put( CREATE_BACKUP, settings.getBoolean( UISettings.CREATE_BACKUP ) );
175 values.put( BACKUP_FOLDER, settings.getString( UISettings.BACKUP_FOLDER, "" ) );
176 values.put( AUTOSAVE_INTERVAL, settings.getString( UISettings.AUTO_SAVE_INTERVAL, "0" ) );
177 values.put( AUTOSAVE_ONEXIT, settings.getBoolean( UISettings.AUTO_SAVE_PROJECTS_ON_EXIT ) );
178 values.put( LINEBRAK, settings.getBoolean( UISettings.LINEBREAK ) );
179
180 if( SoapUI.isStandalone() )
181 {
182 values.put( DESKTOP_TYPE, settings.getString( UISettings.DESKTOP_TYPE, SoapUI.DEFAULT_DESKTOP ) );
183 values.put( NATIVE_LAF, settings.getBoolean( UISettings.NATIVE_LAF ) );
184 }
185
186 values.put( ENABLE_GROOVY_LOG_DURING_LOADTEST, settings.getBoolean( UISettings.DONT_DISABLE_GROOVY_LOG ) );
187 if( SoapUI.isStandalone() )
188 {
189 values.put( SHOW_LOGS_AT_STARTUP, settings.getBoolean( UISettings.SHOW_LOGS_AT_STARTUP ) );
190 values.put( SHOW_STARTUP_PAGE, settings.getBoolean( UISettings.SHOW_STARTUP_PAGE ) );
191 }
192
193 values.put( GC_INTERVAL, settings.getString( UISettings.GC_INTERVAL, "0" ) );
194
195 return values;
196 }
197 }