1 /* ====================================================================
2 * The Apache Software License, Version 1.1
3 *
4 * Copyright (c) 2000 The Apache Software Foundation. All rights
5 * reserved.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
9 * are met:
10 *
11 * 1. Redistributions of source code must retain the above copyright
12 * notice, this list of conditions and the following disclaimer.
13 *
14 * 2. Redistributions in binary form must reproduce the above copyright
15 * notice, this list of conditions and the following disclaimer in
16 * the documentation and/or other materials provided with the
17 * distribution.
18 *
19 * 3. The end-user documentation included with the redistribution,
20 * if any, must include the following acknowledgment:
21 * "This product includes software developed by the
22 * Apache Software Foundation (http://www.apache.org/)."
23 * Alternately, this acknowledgment may appear in the software itself,
24 * if and wherever such third-party acknowledgments normally appear.
25 *
26 * 4. The names "Apache" and "Apache Software Foundation" must
27 * not be used to endorse or promote products derived from this
28 * software without prior written permission. For written
29 * permission, please contact apache@apache.org.
30 *
31 * 5. Products derived from this software may not be called "Apache",
32 * nor may "Apache" appear in their name, without prior written
33 * permission of the Apache Software Foundation.
34 *
35 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
36 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
37 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
38 * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
39 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
40 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
41 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
42 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
43 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
44 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
45 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
46 * SUCH DAMAGE.
47 * ====================================================================
48 *
49 * This software consists of voluntary contributions made by many
50 * individuals on behalf of the Apache Software Foundation. For more
51 * information on the Apache Software Foundation, please see
52 * <http://www.apache.org/>.
53 *
54 * Portions of this software are based upon public domain software
55 * originally written at the National Center for Supercomputing Applications,
56 * University of Illinois, Urbana-Champaign.
57 */
58 package com.bonevich.eclipse.cvsgrapher.prefs;
59
60 import java.util.HashMap;
61 import java.util.Map;
62
63 import org.eclipse.jface.preference.BooleanFieldEditor;
64 import org.eclipse.jface.preference.ColorFieldEditor;
65 import org.eclipse.jface.preference.FieldEditor;
66 import org.eclipse.jface.preference.PreferencePage;
67 import org.eclipse.jface.preference.StringFieldEditor;
68 import org.eclipse.swt.SWT;
69 import org.eclipse.swt.layout.GridData;
70 import org.eclipse.swt.layout.GridLayout;
71 import org.eclipse.swt.widgets.Composite;
72 import org.eclipse.swt.widgets.Control;
73 import org.eclipse.swt.widgets.Group;
74 import org.eclipse.swt.widgets.Label;
75 import org.eclipse.ui.IWorkbench;
76 import org.eclipse.ui.IWorkbenchPreferencePage;
77
78 import com.bonevich.eclipse.cvsgrapher.CvsGraphPlugin;
79 import com.bonevich.eclipse.cvsgrapher.CvsGraphPluginMessages;
80 import com.bonevich.eclipse.cvsgrapher.CvsGraphPluginResources;
81
82 /***
83 * Preference page for the Boneclipse Logging Plugin. Allows the user
84 * to specify which logging API to use and the default name for the logging
85 * field to be used.
86 *
87 * @author jbonevic
88 */
89 public class CvsGrapherPreferencePage
90 extends PreferencePage
91 implements IWorkbenchPreferencePage, CvsGraphPluginResources
92 {
93 private static final String PREFERENCE_PAGE_TITLE = "CVSGrapher";
94
95 // field editor keys
96 private static final String FIELDEDITOR_COLOR_VERSION = "cvsgrapher.color.version";
97 private static final String FIELDEDITOR_COLOR_BRANCH = "cvsgrapher.color.branch";
98
99 private static final String FIELDEDITOR_MERGETAG_SOURCE = "cvsgrapher.mergetag.pattern.source";
100 private static final String FIELDEDITOR_MERGETAG_DEST = "cvsgrapher.mergetag.pattern.destination";
101
102 private static final String FIELDEDITOR_SHOW_AUTHOR = "cvsgrapher.show.author";
103 private static final String FIELDEDITOR_SHOW_TIMESTAMP = "cvsgrapher.show.timestamp";
104 private static final String FIELDEDITOR_SHOW_TAGS = "cvsgrapher.show.tags";
105
106 private Map _fieldEditors = new HashMap();
107
108 public CvsGrapherPreferencePage()
109 {
110 super(PREFERENCE_PAGE_TITLE);
111 }
112
113 public void init(IWorkbench workbench)
114 {
115 setPreferenceStore(CvsGraphPlugin.getPlugin().getPreferenceStore());
116 }
117
118 protected Control createContents(Composite parent)
119 {
120 Composite top = createContainerWithDescription(parent);
121
122 createColorFieldEditors(top);
123 createMergeTagPatternFields(top);
124 createShowAttributesCheckboxGroup(top);
125
126 return top;
127 }
128
129 private void createColorFieldEditors(Composite top)
130 {
131 Composite colorFieldCmp = new Composite(top, SWT.LEFT);
132 colorFieldCmp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
133 colorFieldCmp.setLayout(new GridLayout());
134
135 ColorFieldEditor versionColorField = new ColorFieldEditor(
136 CvsGraphPlugin.PREFERENCE_COLOR_VERSION,
137 CvsGraphPluginMessages.bind(CVSGRAPHER_PREFS_COLOR_VERSION_LABEL),
138 colorFieldCmp
139 );
140
141 ColorFieldEditor branchColorField = new ColorFieldEditor(
142 CvsGraphPlugin.PREFERENCE_COLOR_BRANCH,
143 CvsGraphPluginMessages.bind(CVSGRAPHER_PREFS_COLOR_BRANCH_LABEL),
144 colorFieldCmp
145 );
146 addFieldEditor(FIELDEDITOR_COLOR_BRANCH, branchColorField);
147 addFieldEditor(FIELDEDITOR_COLOR_VERSION, versionColorField);
148 }
149
150 private void createShowAttributesCheckboxGroup(Composite top)
151 {
152 Group group1 = new Group(top, SWT.LEFT);
153 group1.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
154 GridLayout layout = new GridLayout();
155 layout.marginWidth = 7;
156 group1.setLayout(layout);
157 group1.setText(CvsGraphPluginMessages.bind(CVSGRAPHER_PREFS_SHOW_LABEL));
158
159 Composite group = new Composite(group1, SWT.NONE);
160 group.setLayoutData(new GridData(GridData.CENTER));
161 group.setLayout(new GridLayout());
162
163 BooleanFieldEditor useTraceConditionals = new BooleanFieldEditor(
164 CvsGraphPlugin.PREFERENCE_SHOW_AUTHOR,
165 CvsGraphPluginMessages.bind(CVSGRAPHER_PREFS_SHOW_AUTHOR_LABEL),
166 group
167 );
168 BooleanFieldEditor useDebugConditionals = new BooleanFieldEditor(
169 CvsGraphPlugin.PREFERENCE_SHOW_TIMESTAMP,
170 CvsGraphPluginMessages.bind(CVSGRAPHER_PREFS_SHOW_TIMESTAMP_LABEL),
171 group
172 );
173 BooleanFieldEditor useInfoConditionals = new BooleanFieldEditor(
174 CvsGraphPlugin.PREFERENCE_SHOW_TAGS,
175 CvsGraphPluginMessages.bind(CVSGRAPHER_PREFS_SHOW_TAGS_LABEL),
176 group
177 );
178
179 addFieldEditor(FIELDEDITOR_SHOW_AUTHOR, useTraceConditionals);
180 addFieldEditor(FIELDEDITOR_SHOW_TIMESTAMP, useDebugConditionals);
181 addFieldEditor(FIELDEDITOR_SHOW_TAGS, useInfoConditionals);
182 }
183
184 private void createMergeTagPatternFields(Composite top)
185 {
186 Group group1 = new Group(top, SWT.LEFT);
187 group1.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
188 GridLayout layout = new GridLayout();
189 layout.marginWidth = 7;
190 group1.setLayout(layout);
191 group1.setText(CvsGraphPluginMessages.bind(CVSGRAPHER_PREFS_MERGETAGS_LABEL));
192
193 Composite mergeTagPatternComp = new Composite(group1, SWT.LEFT);
194 mergeTagPatternComp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
195 mergeTagPatternComp.setLayout(new GridLayout());
196
197 StringFieldEditor sourceMergeTagPattern = new StringFieldEditor(
198 CvsGraphPlugin.PREFERENCE_MERGETAG_SOURCE,
199 CvsGraphPluginMessages.bind(CVSGRAPHER_PREFS_MERGETAG_SOURCE_LABEL),
200 15,
201 StringFieldEditor.VALIDATE_ON_FOCUS_LOST,
202 mergeTagPatternComp
203 );
204 sourceMergeTagPattern.setEmptyStringAllowed(true);
205
206 StringFieldEditor destMergeTagPattern = new StringFieldEditor(
207 CvsGraphPlugin.PREFERENCE_MERGETAG_DEST,
208 CvsGraphPluginMessages.bind(CVSGRAPHER_PREFS_MERGETAG_DEST_LABEL),
209 15,
210 StringFieldEditor.VALIDATE_ON_FOCUS_LOST,
211 mergeTagPatternComp
212 );
213 destMergeTagPattern.setEmptyStringAllowed(true);
214
215 addFieldEditor(FIELDEDITOR_MERGETAG_SOURCE, sourceMergeTagPattern);
216 addFieldEditor(FIELDEDITOR_MERGETAG_DEST, destMergeTagPattern);
217 }
218
219 private Composite createContainerWithDescription(Composite parent)
220 {
221 Composite top = new Composite(parent, SWT.LEFT);
222 top.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
223 top.setLayout(new GridLayout());
224
225 Label description = new Label(top, SWT.NONE);
226 description.setText(CvsGraphPluginMessages.bind(CVSGRAPHER_PREFS_GENERAL));
227 return top;
228 }
229
230 private void addFieldEditor(String name, FieldEditor editor)
231 {
232 _fieldEditors.put(name, editor);
233 editor.setPreferencePage(this);
234 editor.setPreferenceStore(getPreferenceStore());
235 editor.load();
236 }
237
238 private FieldEditor getFieldEditor(String name)
239 {
240 return (FieldEditor) _fieldEditors.get(name);
241 }
242
243 protected void performDefaults()
244 {
245 super.performDefaults();
246
247 loadDefault(FIELDEDITOR_COLOR_VERSION);
248 loadDefault(FIELDEDITOR_COLOR_BRANCH);
249 loadDefault(FIELDEDITOR_MERGETAG_SOURCE);
250 loadDefault(FIELDEDITOR_MERGETAG_DEST);
251 loadDefault(FIELDEDITOR_SHOW_AUTHOR);
252 loadDefault(FIELDEDITOR_SHOW_TIMESTAMP);
253 loadDefault(FIELDEDITOR_SHOW_TAGS);
254 }
255
256 private void loadDefault(String field)
257 {
258 FieldEditor editor = getFieldEditor(field);
259 editor.loadDefault();
260 }
261
262 public boolean performOk()
263 {
264 storeValue(FIELDEDITOR_COLOR_VERSION);
265 storeValue(FIELDEDITOR_COLOR_BRANCH);
266 storeValue(FIELDEDITOR_MERGETAG_SOURCE);
267 storeValue(FIELDEDITOR_MERGETAG_DEST);
268 storeValue(FIELDEDITOR_SHOW_AUTHOR);
269 storeValue(FIELDEDITOR_SHOW_TIMESTAMP);
270 storeValue(FIELDEDITOR_SHOW_TAGS);
271
272 return super.performOk();
273 }
274
275 private void storeValue(String field)
276 {
277 FieldEditor editor = getFieldEditor(field);
278 editor.store();
279 }
280
281 }
This page was automatically generated by Maven