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