ch.elexis.core.ui.preferences.UserTextPref.java Source code

Java tutorial

Introduction

Here is the source code for ch.elexis.core.ui.preferences.UserTextPref.java

Source

/*******************************************************************************
 * 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();
    }
}