View Javadoc

1   /*
2    *  soapUI, copyright (C) 2004-2007 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  
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_TESTSUITES = "Order TestSuites";
39  	public static final String ORDER_REQUESTS = "Order Requests";
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  	
48  	private SimpleForm editorForm;
49  	private final String title;
50  	private JCheckBox backupCheckBox;
51  	private JTextField backupFolder;
52  
53  	public UIPrefs(String title)
54  	{
55  		this.title = title;
56  	}
57  	
58  	public String getTitle()
59  	{
60  		return title;
61  	}
62  
63  	public SimpleForm getForm()
64  	{
65  		if( editorForm == null )
66  		{
67  			editorForm = new SimpleForm();
68  			editorForm.addSpace( 5 );
69  			editorForm.appendCheckBox( CLOSE_PROJECTS, "(close all projects on startup)", false );
70  			editorForm.appendSeparator();
71  			editorForm.appendCheckBox( ORDER_PROJECTS, "(orders Projects alphabetically in tree)", false );
72  			editorForm.appendCheckBox( ORDER_REQUESTS, "(orders Requests alphabetically in tree)", false );
73  			editorForm.appendCheckBox( ORDER_TESTSUITES, "(orders TestSuites alphabetically in tree)", false );
74  			editorForm.appendSeparator();
75  
76  			backupCheckBox = editorForm.appendCheckBox( CREATE_BACKUP, "(backup project files before they are saved)", true );
77  			backupFolder = editorForm.appendTextField( BACKUP_FOLDER, "(folder to backup to, can be both relative or absolut)" );
78  			backupCheckBox.addActionListener( new ActionListener() {
79  
80  				public void actionPerformed(ActionEvent e)
81  				{
82  					backupFolder.setEnabled( backupCheckBox.isSelected() );
83  				}} );
84  			
85  			editorForm.appendTextField( AUTOSAVE_INTERVAL, "Sets the autosave interval in minutes, 0 = off" );
86  			
87  			if( SoapUI.isStandalone())
88  			{
89  				editorForm.appendSeparator();
90  				editorForm.appendComboBox( DESKTOP_TYPE, DesktopRegistry.getInstance().getNames(), 
91  							"Select the type of desktop to use" );
92  				editorForm.appendCheckBox( NATIVE_LAF, "(use native Look & Feel - requires restart)", true );
93  			}
94  			
95  			editorForm.appendSeparator();
96  			editorForm.appendCheckBox( ENABLE_GROOVY_LOG_DURING_LOADTEST, "(do not disable the groovy log when running LoadTests)", true );
97  			
98  			if( SoapUI.isStandalone())
99  				editorForm.appendCheckBox( SHOW_LOGS_AT_STARTUP, "(shows log tabs when starting soapUI)", false );
100 		}
101 		
102 		return editorForm;
103 	}
104 
105 	public void getFormValues(Settings settings)
106 	{
107 		StringToStringMap values = new StringToStringMap();
108 		editorForm.getValues( values );
109 		storeValues(values, settings);
110 	}
111 	
112 	public void storeValues(StringToStringMap values, Settings settings)
113 	{
114 		settings.setBoolean( UISettings.CLOSE_PROJECTS, values.getBoolean( CLOSE_PROJECTS ));
115 		settings.setBoolean( UISettings.ORDER_PROJECTS, values.getBoolean( ORDER_PROJECTS ));
116 		settings.setBoolean( UISettings.ORDER_REQUESTS, values.getBoolean( ORDER_REQUESTS ));
117 		settings.setBoolean( UISettings.ORDER_TESTSUITES, values.getBoolean( ORDER_TESTSUITES ));
118 		settings.setBoolean( UISettings.CREATE_BACKUP, values.getBoolean( CREATE_BACKUP ));
119 		settings.setString( UISettings.BACKUP_FOLDER, values.get( BACKUP_FOLDER ));
120 		settings.setString( UISettings.AUTO_SAVE_INTERVAL, values.get( AUTOSAVE_INTERVAL ));
121 		
122 		if( SoapUI.isStandalone())
123 		{
124 			settings.setString( UISettings.DESKTOP_TYPE, values.get( DESKTOP_TYPE ));
125 			settings.setBoolean( UISettings.NATIVE_LAF, values.getBoolean( NATIVE_LAF ));
126 		}
127 		
128 		settings.setBoolean( UISettings.DONT_DISABLE_GROOVY_LOG, values.getBoolean( ENABLE_GROOVY_LOG_DURING_LOADTEST ));
129 		if( SoapUI.isStandalone())
130 			settings.setBoolean( UISettings.SHOW_LOGS_AT_STARTUP, values.getBoolean( SHOW_LOGS_AT_STARTUP ));
131 		
132 		SoapUI.initAutoSaveTimer();
133 	}
134 
135 	public void setFormValues(Settings settings)
136 	{
137 		editorForm.setValues( getValues(settings) );
138 		backupFolder.setEnabled( settings.getBoolean( UISettings.CREATE_BACKUP ) );
139 	}
140 
141 	public StringToStringMap getValues(Settings settings)
142 	{
143 		StringToStringMap values = new StringToStringMap();
144 		values.put( CLOSE_PROJECTS, settings.getBoolean( UISettings.CLOSE_PROJECTS ));
145 		values.put( ORDER_PROJECTS, settings.getBoolean( UISettings.ORDER_PROJECTS ));
146 		values.put( ORDER_REQUESTS, settings.getBoolean( UISettings.ORDER_REQUESTS ));
147 		values.put( ORDER_TESTSUITES, settings.getBoolean( UISettings.ORDER_TESTSUITES ));
148 		values.put( CREATE_BACKUP, settings.getBoolean( UISettings.CREATE_BACKUP ));
149 		values.put( BACKUP_FOLDER, settings.getString( UISettings.BACKUP_FOLDER, "" ));
150 		values.put( AUTOSAVE_INTERVAL, settings.getString( UISettings.AUTO_SAVE_INTERVAL, "0" ));
151 		
152 		if( SoapUI.isStandalone())
153 		{
154 			values.put( DESKTOP_TYPE, settings.getString( UISettings.DESKTOP_TYPE, SoapUI.DEFAULT_DESKTOP ));
155 			values.put( NATIVE_LAF, settings.getBoolean( UISettings.NATIVE_LAF ));
156 		}
157 		
158 		values.put( ENABLE_GROOVY_LOG_DURING_LOADTEST, settings.getBoolean( UISettings.DONT_DISABLE_GROOVY_LOG ));
159 		if( SoapUI.isStandalone())
160 			values.put( SHOW_LOGS_AT_STARTUP, settings.getBoolean( UISettings.SHOW_LOGS_AT_STARTUP ));
161 		
162 		return values;
163 	}
164 }