View Javadoc
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.logging.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.FieldEditor; 65 import org.eclipse.jface.preference.PreferencePage; 66 import org.eclipse.jface.preference.RadioGroupFieldEditor; 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.logging.LoggingPlugin; 79 import com.bonevich.eclipse.logging.LoggingPluginMessages; 80 import com.bonevich.eclipse.logging.LoggingPluginResources; 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 LoggingPreferencePage 90 extends PreferencePage 91 implements IWorkbenchPreferencePage, LoggingPluginResources 92 { 93 // field editor keys 94 private static final String FIELDEDITOR_API = "logging.impl"; 95 private static final String FIELDEDITOR_FIELD = "logging.field"; 96 private static final String FIELDEDITOR_AUTOSAVE = "logging.autosave"; 97 private static final String FIELDEDITOR_TRACE = "logging.trace"; 98 private static final String FIELDEDITOR_DEBUG = "logging.debug"; 99 private static final String FIELDEDITOR_INFO = "logging.info"; 100 private static final String FIELDEDITOR_WARN = "logging.warn"; 101 private static final String FIELDEDITOR_ERROR = "logging.error"; 102 private static final String FIELDEDITOR_FATAL = "logging.fatal"; 103 104 private Map _fieldEditors = new HashMap(); 105 106 public LoggingPreferencePage() 107 { 108 super("Logging"); 109 } 110 111 public void init(IWorkbench workbench) 112 { 113 setPreferenceStore(LoggingPlugin.getPlugin().getPreferenceStore()); 114 } 115 116 protected Control createContents(Composite parent) 117 { 118 Composite top = createContainerWithDescription(parent); 119 createLoggingImplementationRadioGroup(top); 120 createFieldNameStringField(top); 121 createAutoSaveCheckboxField(top); 122 createUseConditionalCheckboxGroup(top); 123 124 return top; 125 } 126 127 private void createAutoSaveCheckboxField(Composite top) 128 { 129 Composite autoSaveCmp = new Composite(top, SWT.LEFT); 130 autoSaveCmp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); 131 autoSaveCmp.setLayout(new GridLayout()); 132 133 BooleanFieldEditor autoSave = new BooleanFieldEditor( 134 LoggingPlugin.PREFERENCE_AUTOSAVE, 135 LoggingPluginMessages.bind(LOGGING_PREFS_AUTOSAVE_LABEL), 136 autoSaveCmp 137 ); 138 addFieldEditor(FIELDEDITOR_AUTOSAVE, autoSave); 139 } 140 141 private void createUseConditionalCheckboxGroup(Composite top) 142 { 143 Group group1 = new Group(top, SWT.LEFT); 144 group1.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); 145 GridLayout layout = new GridLayout(); 146 layout.marginWidth = 7; 147 group1.setLayout(layout); 148 group1.setText(LoggingPluginMessages.bind(LOGGING_PREFS_CONDITIONALS_LABEL)); 149 150 Composite group = new Composite(group1, SWT.NONE); 151 group.setLayoutData(new GridData(GridData.CENTER)); 152 group.setLayout(new GridLayout()); 153 154 BooleanFieldEditor useTraceConditionals = new BooleanFieldEditor( 155 LoggingPlugin.PREFERENCE_TRACE_CONDITIONALS, 156 LoggingPluginMessages.bind(LOGGING_PREFS_TRACE_CONDITIONALS_LABEL), 157 group 158 ); 159 BooleanFieldEditor useDebugConditionals = new BooleanFieldEditor( 160 LoggingPlugin.PREFERENCE_DEBUG_CONDITIONALS, 161 LoggingPluginMessages.bind(LOGGING_PREFS_DEBUG_CONDITIONALS_LABEL), 162 group 163 ); 164 BooleanFieldEditor useInfoConditionals = new BooleanFieldEditor( 165 LoggingPlugin.PREFERENCE_INFO_CONDITIONALS, 166 LoggingPluginMessages.bind(LOGGING_PREFS_INFO_CONDITIONALS_LABEL), 167 group 168 ); 169 BooleanFieldEditor useWarnConditionals = new BooleanFieldEditor( 170 LoggingPlugin.PREFERENCE_WARN_CONDITIONALS, 171 LoggingPluginMessages.bind(LOGGING_PREFS_WARN_CONDITIONALS_LABEL), 172 group 173 ); 174 BooleanFieldEditor useErrorConditionals = new BooleanFieldEditor( 175 LoggingPlugin.PREFERENCE_ERROR_CONDITIONALS, 176 LoggingPluginMessages.bind(LOGGING_PREFS_ERROR_CONDITIONALS_LABEL), 177 group 178 ); 179 BooleanFieldEditor useFatalConditionals = new BooleanFieldEditor( 180 LoggingPlugin.PREFERENCE_FATAL_CONDITIONALS, 181 LoggingPluginMessages.bind(LOGGING_PREFS_FATAL_CONDITIONALS_LABEL), 182 group 183 ); 184 185 addFieldEditor(FIELDEDITOR_TRACE, useTraceConditionals); 186 addFieldEditor(FIELDEDITOR_DEBUG, useDebugConditionals); 187 addFieldEditor(FIELDEDITOR_INFO, useInfoConditionals); 188 addFieldEditor(FIELDEDITOR_WARN, useWarnConditionals); 189 addFieldEditor(FIELDEDITOR_ERROR, useErrorConditionals); 190 addFieldEditor(FIELDEDITOR_FATAL, useFatalConditionals); 191 } 192 193 private void createFieldNameStringField(Composite top) 194 { 195 Composite fieldNameComp = new Composite(top, SWT.LEFT); 196 fieldNameComp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); 197 fieldNameComp.setLayout(new GridLayout()); 198 199 StringFieldEditor fieldName = new StringFieldEditor( 200 LoggingPlugin.PREFERENCE_FIELD, 201 LoggingPluginMessages.bind(LOGGING_PREFS_FIELD_LABEL), 202 15, 203 StringFieldEditor.VALIDATE_ON_FOCUS_LOST, 204 fieldNameComp 205 ); 206 fieldName.setEmptyStringAllowed(false); 207 addFieldEditor(FIELDEDITOR_FIELD, fieldName); 208 } 209 210 private void createLoggingImplementationRadioGroup(Composite top) 211 { 212 RadioGroupFieldEditor loggingImpl = new RadioGroupFieldEditor( 213 LoggingPlugin.PREFERENCE_API, 214 LoggingPluginMessages.bind(LOGGING_PREFS_API_LABEL), 215 1, 216 new String[][] { 217 {LoggingPluginMessages.bind(LOGGING_PREFS_API_COMMONS_LABEL), 218 LoggingPlugin.LOGGING_PREFS_API_COMMONS 219 }, 220 {LoggingPluginMessages.bind(LOGGING_PREFS_API_JDK_1_4_LABEL), 221 LoggingPlugin.LOGGING_PREFS_API_JDK_1_4 222 }, 223 {LoggingPluginMessages.bind(LOGGING_PREFS_API_LOG4J_LABEL), 224 LoggingPlugin.LOGGING_PREFS_API_LOG4J 225 }, 226 {LoggingPluginMessages.bind(LOGGING_PREFS_API_AVALON_LABEL), 227 LoggingPlugin.LOGGING_PREFS_API_AVALON 228 }, 229 }, 230 top, 231 true 232 ); 233 addFieldEditor(FIELDEDITOR_API, loggingImpl); 234 } 235 236 private Composite createContainerWithDescription(Composite parent) 237 { 238 Composite top = new Composite(parent, SWT.LEFT); 239 top.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); 240 top.setLayout(new GridLayout()); 241 242 Label description = new Label(top, SWT.NONE); 243 description.setText(LoggingPluginMessages.bind(LOGGING_PREFS_GENERAL)); 244 return top; 245 } 246 247 private void addFieldEditor(String name, FieldEditor editor) 248 { 249 _fieldEditors.put(name, editor); 250 editor.setPreferencePage(this); 251 editor.setPreferenceStore(getPreferenceStore()); 252 editor.load(); 253 } 254 255 private FieldEditor getFieldEditor(String name) 256 { 257 return (FieldEditor) _fieldEditors.get(name); 258 } 259 260 protected void performDefaults() 261 { 262 super.performDefaults(); 263 264 loadDefault(FIELDEDITOR_API); 265 loadDefault(FIELDEDITOR_FIELD); 266 loadDefault(FIELDEDITOR_AUTOSAVE); 267 268 loadDefault(FIELDEDITOR_TRACE); 269 loadDefault(FIELDEDITOR_DEBUG); 270 loadDefault(FIELDEDITOR_INFO); 271 loadDefault(FIELDEDITOR_WARN); 272 loadDefault(FIELDEDITOR_ERROR); 273 loadDefault(FIELDEDITOR_FATAL); 274 } 275 276 private void loadDefault(String field) 277 { 278 FieldEditor editor = getFieldEditor(field); 279 editor.loadDefault(); 280 } 281 282 public boolean performOk() 283 { 284 storeValue(FIELDEDITOR_API); 285 storeValue(FIELDEDITOR_FIELD); 286 storeValue(FIELDEDITOR_AUTOSAVE); 287 288 storeValue(FIELDEDITOR_TRACE); 289 storeValue(FIELDEDITOR_DEBUG); 290 storeValue(FIELDEDITOR_INFO); 291 storeValue(FIELDEDITOR_WARN); 292 storeValue(FIELDEDITOR_ERROR); 293 storeValue(FIELDEDITOR_FATAL); 294 295 return super.performOk(); 296 } 297 298 private void storeValue(String field) 299 { 300 FieldEditor editor = getFieldEditor(field); 301 editor.store(); 302 } 303 304 }

This page was automatically generated by Maven