org.eclipse.papyrus.infra.gmfdiag.preferences.ui.AbstractGroup.java Source code

Java tutorial

Introduction

Here is the source code for org.eclipse.papyrus.infra.gmfdiag.preferences.ui.AbstractGroup.java

Source

/*****************************************************************************
 * Copyright (c) 2009 CEA LIST.
 *
 *    
 * 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:
 *  Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr 
 *  Thibault Landre (Atos Origin) 
 *****************************************************************************/
package org.eclipse.papyrus.infra.gmfdiag.preferences.ui;

import java.util.HashSet;
import java.util.Set;

import org.eclipse.jface.dialogs.DialogPage;
import org.eclipse.jface.preference.FieldEditor;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.papyrus.infra.gmfdiag.preferences.utils.PreferenceConstantHelper;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;

/**
 * The Class AbstractGroupComposite.
 */
public abstract class AbstractGroup extends Composite {

    /** The key to find preference */
    private String key;

    /**
     * The fieldsEditor : a set that will contain all editor in the composite. It is in charge of
     * loading / storing / setting the preference store / loading default of all its contained field
     * editor
     */
    private Set<FieldEditor> fieldsEditor;

    /**
     * Gets the dialog page.
     * 
     * @return the dialogPage
     */
    protected DialogPage getDialogPage() {
        return dialogPage;
    }

    /** The dialog page. */
    protected DialogPage dialogPage;

    /**
     * Gets the title.
     * 
     * @return the title
     */
    public String getKey() {
        return key;
    }

    /**
     * Sets the title.
     * 
     * @param title
     *        the title to set
     */
    protected void setKey(String title) {
        this.key = title;
    }

    /**
     * Instantiates a new abstract group.
     * 
     * @param parent
     *        the parent of the composite
     * @param String
     *        the title of the page
     * @param dialogPage
     *        to set the page in field editor
     */
    public AbstractGroup(Composite parent, String key, DialogPage dialogPage) {
        super(parent, SWT.None);
        this.key = key;
        this.dialogPage = dialogPage;
        this.setLayout(new GridLayout());
        fieldsEditor = new HashSet<FieldEditor>();
    }

    /**
     * Get the specified preference type associated with this preference page.
     * 
     * @param preferenceType
     *        an int representing the preference type to retrieve. It must be a value defined in {@link PreferenceConstantHelper}
     * 
     * @return the preference constant used to store the given preference type.
     */
    protected String getPreferenceConstant(int preferenceType) {
        return PreferenceConstantHelper.getElementConstant(key, preferenceType);
    }

    /**
     * Gets an encapsulated compo. This composite is used to contain a FieldEditor and to allow
     * developers to work with a FieldEditor like Composite element.
     * 
     * @param parent
     *        the parent
     * 
     * @return the encapsulated compo
     */
    protected final Composite getEncapsulatedCompo(Composite parent) {
        Composite compo = new Composite(parent, SWT.NONE);
        compo.setLayout(new GridLayout());
        return compo;
    }

    /**
     * Register field editor. It will add the fieldEditor to a map that will be used to
     * store/load/loadDefault/set the PreferenceStore of contained fieldEditor
     * 
     * @param fieldEditor
     *        the fieldEditor to add.
     */
    protected void addFieldEditor(FieldEditor fieldEditor) {
        fieldsEditor.add(fieldEditor);
    }

    /**
     * Load preferences of all registered fieldEditors.
     * 
     * @see org.eclipse.papyrus.infra.gmfdiag.preferences.ui.AbstractGroup#addFieldEditor(FieldEditor)
     */
    public void load() {
        for (FieldEditor fe : fieldsEditor) {
            fe.load();
        }
    }

    /**
     * Set the preference store of all registered fieldEditors.
     * 
     * @see org.eclipse.papyrus.infra.gmfdiag.preferences.ui.AbstractGroup#addFieldEditor(FieldEditor)
     */
    public final void setPreferenceStore(IPreferenceStore store) {
        for (FieldEditor fe : fieldsEditor) {
            fe.setPreferenceStore(store);
        }
    }

    /**
     * Load default preferences of all registered fieldEditors.
     * 
     * @see org.eclipse.papyrus.infra.gmfdiag.preferences.ui.AbstractGroup#addFieldEditor(FieldEditor)
     */
    public final void loadDefault() {
        for (FieldEditor fe : fieldsEditor) {
            fe.loadDefault();
        }
    }

    /**
     * Store preferences of the registered fieldEditors.
     * 
     * @see org.eclipse.papyrus.infra.gmfdiag.preferences.ui.AbstractGroup#addFieldEditor(FieldEditor)
     */
    public final void storePreferences() {
        for (FieldEditor fe : fieldsEditor) {
            fe.store();
        }
    }

}