net.sourceforge.eclipseccase.ui.preferences.MasterBooleanFieldEditor.java Source code

Java tutorial

Introduction

Here is the source code for net.sourceforge.eclipseccase.ui.preferences.MasterBooleanFieldEditor.java

Source

/*******************************************************************************
 * Copyright (c) 2002, 2004 eclipse-ccase.sourceforge.net.
 * All rights reserved. This program and the accompanying materials 
 * are made available under the terms of the Common Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/cpl-v10.html
 * 
 * Contributors:
 *     IBM Corporation - concepts and ideas taken from Eclipse code
 *     Roel De Meester - extended the simple Editor 
 *******************************************************************************/
package net.sourceforge.eclipseccase.ui.preferences;

import java.util.ArrayList;
import org.eclipse.jface.preference.*;
import org.eclipse.swt.widgets.Composite;

/**
 * Upgrade of BooleanFieldEditor.
 * <p>
 * When this fieldeditor is unchecked/checked all slave Components get
 * disabled/enabled You just have to {@link #addSlave(FieldEditor) add}some
 * slaves during control setup and don't forget to activate the
 * {@link #listen() listener}when the component gets initialized
 * </p>
 */
public class MasterBooleanFieldEditor extends BooleanFieldEditor {

    /** the parent */
    final Composite parent;

    /** the slaves */
    ArrayList slaves = new ArrayList();

    /** the enabled state */
    boolean enabled = true;

    /**
     * @param text_prefix_decoration
     * @param string
     * @param fieldEditorParent
     */
    public MasterBooleanFieldEditor(String text_prefix_decoration, String string, Composite fieldEditorParent) {
        super(text_prefix_decoration, string, fieldEditorParent);
        parent = fieldEditorParent;
    }

    /**
     * Adds a slave editor to control.
     * 
     * @param slave
     */
    public void addSlave(FieldEditor slave) {
        slaves.add(slave);
        slave.setEnabled(getBooleanValue(), parent);
    }

    /*
     * (non-Javadoc)
     * 
     * @see org.eclipse.jface.preference.BooleanFieldEditor#doLoad()
     */
    @Override
    protected void doLoad() {

        // call super
        super.doLoad();

        updateSlaves();
    }

    /*
     * (non-Javadoc)
     * 
     * @see org.eclipse.jface.preference.BooleanFieldEditor#doLoadDefault()
     */
    @Override
    protected void doLoadDefault() {

        // call super
        super.doLoadDefault();

        updateSlaves();
    }

    /*
     * (non-Javadoc)
     * 
     * @see
     * org.eclipse.jface.preference.FieldEditor#fireValueChanged(java.lang.String
     * , java.lang.Object, java.lang.Object)
     */
    @Override
    protected void fireValueChanged(String property, Object oldValue, Object newValue) {
        if (VALUE.equals(property)) {
            updateSlaves();
        }
        super.fireValueChanged(property, oldValue, newValue);
    }

    /*
     * (non-Javadoc)
     * 
     * @see org.eclipse.jface.preference.BooleanFieldEditor#setEnabled(boolean,
     * org.eclipse.swt.widgets.Composite)
     */
    @Override
    public void setEnabled(boolean enabled, Composite parent) {

        // call super
        super.setEnabled(enabled, parent);

        this.enabled = enabled;
        updateSlaves();
    }

    private void updateSlaves() {
        boolean enable = enabled && getBooleanValue();
        for (int i = 0; i < slaves.size(); i++) {

            Object e = slaves.get(i);
            FieldEditor fe = (FieldEditor) e;
            String name = fe.getPreferenceName();
            String imageccelelmentback = ClearCaseUIPreferences.IMAGE_CLEARCASE_ELEMENTS_BACKGROUND;
            if (name.equals(imageccelelmentback) && enable) {
                FileFieldEditor fed = ((FileFieldEditor) fe);
                fed.setEmptyStringAllowed(false);

            } else if (name.equals(imageccelelmentback) && !enable) {
                FileFieldEditor fed = ((FileFieldEditor) fe);
                fed.setEmptyStringAllowed(true);
            }
            fe.setEnabled(enable, parent);
        }
    }
}