/******************************************************************************* * Copyright (c) 2006-2010, Daniel Lutz and Elexis * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Daniel Lutz - initial implementation * *******************************************************************************/ package ch.elexis.core.ui.preferences; import java.util.HashMap; import java.util.List; import java.util.Set; import org.eclipse.core.runtime.IConfigurationElement; import org.eclipse.jface.preference.BooleanFieldEditor; import org.eclipse.jface.preference.FieldEditorPreferencePage; import org.eclipse.jface.preference.StringFieldEditor; import org.eclipse.ui.IWorkbench; import org.eclipse.ui.IWorkbenchPreferencePage; import ch.elexis.core.data.activator.CoreHub; import ch.elexis.core.data.util.Extensions; import ch.elexis.core.ui.constants.ExtensionPointConstantsUi; import ch.elexis.core.ui.text.EnhancedTextField; /** * Benutzerspezifische Einstellungen */ public class UserTextPref extends FieldEditorPreferencePage implements IWorkbenchPreferencePage { public static final String ID = "ch.elexis.preferences.UserPreferences"; //$NON-NLS-1$ private static final String[] fields = { EnhancedTextField.MACRO_KEY }; private static final String[] texte = { Messages.UserTextPref_MacroKey }; private HashMap<String, String> makros = new HashMap<String, String>(); public UserTextPref(){ super(GRID); setPreferenceStore(new SettingsPreferenceStore(CoreHub.userCfg)); setDescription(Messages.UserTextPref_UserPreferences); } @Override protected void createFieldEditors(){ for (int i = 0; i < fields.length; i++) { addField(new StringFieldEditor(fields[i], texte[i], getFieldEditorParent())); } Set<String> makroNames = makros.keySet(); for (String name : makroNames) { addField(new BooleanFieldEditor(EnhancedTextField.MACRO_ENABLED + "/" + makros.get(name), name, getFieldEditorParent())); } } @Override public void init(IWorkbench workbench){ for (String field : fields) { String value = CoreHub.userCfg.get(field, EnhancedTextField.MACRO_KEY_DEFAULT); getPreferenceStore().setValue(field, value); } setMakroEnabledDefaults(); List<IConfigurationElement> makroExtensions = Extensions.getExtensions(ExtensionPointConstantsUi.KONSEXTENSION); for (IConfigurationElement iConfigurationElement : makroExtensions) { String name = iConfigurationElement.getAttribute("name"); String clazz = iConfigurationElement.getAttribute("KonsMakro"); if (clazz != null && !clazz.isEmpty() && !name.equals("enabled")) { makros.put(name, clazz); } } } /** * Set default enabled preferences to false for the makro extensions. * * @since 3.1 */ public static void setMakroEnabledDefaults(){ List<IConfigurationElement> makroExtensions = Extensions.getExtensions(ExtensionPointConstantsUi.KONSEXTENSION); for (IConfigurationElement iConfigurationElement : makroExtensions) { String name = iConfigurationElement.getAttribute("name"); String clazz = iConfigurationElement.getAttribute("KonsMakro"); if (clazz != null && !clazz.isEmpty() && !name.equals("enabled")) { boolean enabled = CoreHub.userCfg.get(EnhancedTextField.MACRO_ENABLED + "/" + clazz, false); // set disabled as default ... if (!enabled) { CoreHub.userCfg.set(EnhancedTextField.MACRO_ENABLED + "/" + clazz, false); } } else if (clazz != null && !clazz.isEmpty() && name.equals("enabled")) { // set enabled for makros with name enabled CoreHub.userCfg.set(EnhancedTextField.MACRO_ENABLED + "/" + clazz, true); } } } @Override protected void performDefaults(){ this.initialize(); } }