View Javadoc

1   /*
2    *  soapUI, copyright (C) 2004-2008 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 com.eviware.soapui.SoapUI;
16  import com.eviware.soapui.model.settings.Settings;
17  import com.eviware.soapui.settings.UISettings;
18  import com.eviware.soapui.support.components.SimpleForm;
19  import com.eviware.soapui.support.types.StringToStringMap;
20  import com.eviware.soapui.ui.desktop.DesktopRegistry;
21  
22  import javax.swing.*;
23  import java.awt.event.ActionEvent;
24  import java.awt.event.ActionListener;
25  
26  /***
27   * Preferences class for UISettings
28   *
29   * @author ole.matzura
30   */
31  
32  public class UIPrefs implements Prefs
33  {
34     public static final String CLOSE_PROJECTS = "Close Projects";
35     public static final String ORDER_PROJECTS = "Order Projects";
36     public static final String ORDER_TESTSUITES = "Order TestSuites";
37     public static final String ORDER_REQUESTS = "Order Requests";
38     public static final String SHOW_DESCRIPTIONS = "Show Descriptions";
39     public static final String CREATE_BACKUP = "Create Backup";
40     public static final String BACKUP_FOLDER = "Backup Folder";
41     public static final String DESKTOP_TYPE = "Desktop Type";
42     public static final String NATIVE_LAF = "Native L&F";
43     public static final String ENABLE_GROOVY_LOG_DURING_LOADTEST = "Do not disable Groovy Log";
44     public static final String SHOW_LOGS_AT_STARTUP = "Show Log Tabs";
45     public static final String AUTOSAVE_INTERVAL = "AutoSave Interval";
46     public static final String AUTOSAVE_ONEXIT = "Save projects on exit";
47     public static final String SHOW_STARTUP_PAGE = "Show Startup Page";
48  
49     private SimpleForm editorForm;
50     private final String title;
51     private JCheckBox backupCheckBox;
52     private JTextField backupFolder;
53  
54     public UIPrefs( String title )
55     {
56        this.title = title;
57     }
58  
59     public String getTitle()
60     {
61        return title;
62     }
63  
64     public SimpleForm getForm()
65     {
66        if( editorForm == null )
67        {
68           editorForm = new SimpleForm();
69           editorForm.addSpace( 5 );
70           editorForm.appendCheckBox( CLOSE_PROJECTS, "(close all projects on startup)", false );
71           editorForm.appendSeparator();
72           editorForm.appendCheckBox( ORDER_PROJECTS, "(orders Projects alphabetically in tree)", false );
73           editorForm.appendCheckBox( ORDER_REQUESTS, "(orders Requests alphabetically in tree)", false );
74           editorForm.appendCheckBox( ORDER_TESTSUITES, "(orders TestSuites alphabetically in tree)", false );
75           editorForm.appendCheckBox( SHOW_DESCRIPTIONS, "(show description content when available)", false );
76           editorForm.appendSeparator();
77  
78           editorForm.appendCheckBox( AUTOSAVE_ONEXIT, "(automatically save all projects on exit)", true );
79           backupCheckBox = editorForm.appendCheckBox( CREATE_BACKUP, "(backup project files before they are saved)", true );
80           backupFolder = editorForm.appendTextField( BACKUP_FOLDER, "(folder to backup to, can be both relative or absolut)" );
81           backupCheckBox.addActionListener( new ActionListener()
82           {
83  
84              public void actionPerformed( ActionEvent e )
85              {
86                 backupFolder.setEnabled( backupCheckBox.isSelected() );
87              }
88           } );
89  
90           editorForm.appendTextField( AUTOSAVE_INTERVAL, "Sets the autosave interval in minutes, 0 = off" );
91  
92           if( SoapUI.isStandalone() )
93           {
94              editorForm.appendSeparator();
95              editorForm.appendComboBox( DESKTOP_TYPE, DesktopRegistry.getInstance().getNames(),
96                      "Select the type of desktop to use" );
97              editorForm.appendCheckBox( NATIVE_LAF, "(use native Look & Feel - requires restart)", true );
98           }
99  
100          editorForm.appendSeparator();
101          editorForm.appendCheckBox( ENABLE_GROOVY_LOG_DURING_LOADTEST, "(do not disable the groovy log when running LoadTests)", true );
102 
103          if( SoapUI.isStandalone() )
104          {
105             editorForm.appendCheckBox( SHOW_LOGS_AT_STARTUP, "(shows log tabs when starting soapUI)", false );
106             editorForm.appendCheckBox( SHOW_STARTUP_PAGE, "(opens startup webpage when starting soapUI)", false );
107          }
108       }
109 
110       return editorForm;
111    }
112 
113    public void getFormValues( Settings settings )
114    {
115       StringToStringMap values = new StringToStringMap();
116       editorForm.getValues( values );
117       storeValues( values, settings );
118    }
119 
120    public void storeValues( StringToStringMap values, Settings settings )
121    {
122       settings.setBoolean( UISettings.CLOSE_PROJECTS, values.getBoolean( CLOSE_PROJECTS ) );
123       settings.setBoolean( UISettings.ORDER_PROJECTS, values.getBoolean( ORDER_PROJECTS ) );
124       settings.setBoolean( UISettings.ORDER_REQUESTS, values.getBoolean( ORDER_REQUESTS ) );
125       settings.setBoolean( UISettings.ORDER_TESTSUITES, values.getBoolean( ORDER_TESTSUITES ) );
126       settings.setBoolean( UISettings.SHOW_DESCRIPTIONS, values.getBoolean( SHOW_DESCRIPTIONS ));
127       settings.setBoolean( UISettings.CREATE_BACKUP, values.getBoolean( CREATE_BACKUP ) );
128       settings.setString( UISettings.BACKUP_FOLDER, values.get( BACKUP_FOLDER ) );
129       settings.setString( UISettings.AUTO_SAVE_INTERVAL, values.get( AUTOSAVE_INTERVAL ) );
130       settings.setBoolean( UISettings.AUTO_SAVE_PROJECTS_ON_EXIT, values.getBoolean( AUTOSAVE_ONEXIT ) );
131 
132       if( SoapUI.isStandalone() )
133       {
134          settings.setString( UISettings.DESKTOP_TYPE, values.get( DESKTOP_TYPE ) );
135          settings.setBoolean( UISettings.NATIVE_LAF, values.getBoolean( NATIVE_LAF ) );
136       }
137 
138       settings.setBoolean( UISettings.DONT_DISABLE_GROOVY_LOG, values.getBoolean( ENABLE_GROOVY_LOG_DURING_LOADTEST ) );
139       if( SoapUI.isStandalone() ) 
140       {
141          settings.setBoolean( UISettings.SHOW_LOGS_AT_STARTUP, values.getBoolean( SHOW_LOGS_AT_STARTUP ) );
142          settings.setBoolean( UISettings.SHOW_STARTUP_PAGE, values.getBoolean( SHOW_STARTUP_PAGE ) );
143       }
144 
145       SoapUI.initAutoSaveTimer();
146    }
147 
148    public void setFormValues( Settings settings )
149    {
150       editorForm.setValues( getValues( settings ) );
151       backupFolder.setEnabled( settings.getBoolean( UISettings.CREATE_BACKUP ) );
152    }
153 
154    public StringToStringMap getValues( Settings settings )
155    {
156       StringToStringMap values = new StringToStringMap();
157       values.put( CLOSE_PROJECTS, settings.getBoolean( UISettings.CLOSE_PROJECTS ) );
158       values.put( ORDER_PROJECTS, settings.getBoolean( UISettings.ORDER_PROJECTS ) );
159       values.put( ORDER_REQUESTS, settings.getBoolean( UISettings.ORDER_REQUESTS ) );
160       values.put( ORDER_TESTSUITES, settings.getBoolean( UISettings.ORDER_TESTSUITES ) );
161       values.put( SHOW_DESCRIPTIONS, settings.getBoolean( UISettings.SHOW_DESCRIPTIONS ) );
162       values.put( CREATE_BACKUP, settings.getBoolean( UISettings.CREATE_BACKUP ) );
163       values.put( BACKUP_FOLDER, settings.getString( UISettings.BACKUP_FOLDER, "" ) );
164       values.put( AUTOSAVE_INTERVAL, settings.getString( UISettings.AUTO_SAVE_INTERVAL, "0" ) );
165       values.put( AUTOSAVE_ONEXIT, settings.getBoolean( UISettings.AUTO_SAVE_PROJECTS_ON_EXIT ) );
166 
167       if( SoapUI.isStandalone() )
168       {
169          values.put( DESKTOP_TYPE, settings.getString( UISettings.DESKTOP_TYPE, SoapUI.DEFAULT_DESKTOP ) );
170          values.put( NATIVE_LAF, settings.getBoolean( UISettings.NATIVE_LAF ) );
171       }
172 
173       values.put( ENABLE_GROOVY_LOG_DURING_LOADTEST, settings.getBoolean( UISettings.DONT_DISABLE_GROOVY_LOG ) );
174       if( SoapUI.isStandalone() )
175       {
176          values.put( SHOW_LOGS_AT_STARTUP, settings.getBoolean( UISettings.SHOW_LOGS_AT_STARTUP ) );
177          values.put( SHOW_STARTUP_PAGE, settings.getBoolean( UISettings.SHOW_STARTUP_PAGE ) );
178       }
179 
180       return values;
181    }
182 }