⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 scalefieldeditor.java

📁 jfa2ce 源码帮助开发人员更好的理解运用
💻 JAVA
字号:
/******************************************************************************* * Copyright (c) 2003, 2005 IBM Corporation and others. * 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: *     IBM Corporation - initial API and implementation *******************************************************************************/package org.eclipse.jface.preference;import org.eclipse.swt.SWT;import org.eclipse.swt.events.DisposeEvent;import org.eclipse.swt.events.DisposeListener;import org.eclipse.swt.events.SelectionAdapter;import org.eclipse.swt.events.SelectionEvent;import org.eclipse.swt.layout.GridData;import org.eclipse.swt.widgets.Composite;import org.eclipse.swt.widgets.Control;import org.eclipse.swt.widgets.Scale;/** * A field editor for an integer type preference. This class may be used as is, * or subclassed as required. *  * @since 3.0 */public class ScaleFieldEditor extends FieldEditor {    /**     * Value that will feed Scale.setIncrement(int).     */    private int incrementValue;    /**     * Value that will feed Scale.setMaximum(int).     */    private int maxValue;    /**     * Value that will feed Scale.setMinimum(int).     */    private int minValue;    /**     * Old integer value.     */    private int oldValue;    /**     * Value that will feed Scale.setPageIncrement(int).     */    private int pageIncrementValue;    /**     * The scale, or <code>null</code> if none.     */    protected Scale scale;    /**     * Creates a scale field editor.     *      * @param name     *            the name of the preference this field editor works on     * @param labelText     *            the label text of the field editor     * @param parent     *            the parent of the field editor's control     */    public ScaleFieldEditor(String name, String labelText, Composite parent) {        super(name, labelText, parent);        setDefaultValues();    }    /**     * Creates a scale field editor with particular scale values.     *      * @param name     *            the name of the preference this field editor works on     * @param labelText     *            the label text of the field editor     * @param parent     *            the parent of the field editor's control     * @param min     *            the value used for Scale.setMinimum(int).     * @param max     *            the value used for Scale.setMaximum(int).     * @param increment     *            the value used for Scale.setIncrement(int).     * @param pageIncrement     *            the value used for Scale.setPageIncrement(int).     */    public ScaleFieldEditor(String name, String labelText, Composite parent,            int min, int max, int increment, int pageIncrement) {        super(name, labelText, parent);        setValues(min, max, increment, pageIncrement);    }    /*     * (non-Javadoc)     *      * @see org.eclipse.jface.preference.FieldEditor#adjustForNumColumns(int)     */    protected void adjustForNumColumns(int numColumns) {        ((GridData) scale.getLayoutData()).horizontalSpan = numColumns - 1;    }    /*     * (non-Javadoc)     *      * @see org.eclipse.jface.preference.FieldEditor#doFillIntoGrid(org.eclipse.swt.widgets.Composite,     *      int)     */    protected void doFillIntoGrid(Composite parent, int numColumns) {        Control control = getLabelControl(parent);        GridData gd = new GridData();        control.setLayoutData(gd);        scale = getScaleControl(parent);        gd = new GridData(GridData.FILL_HORIZONTAL);        gd.verticalAlignment = GridData.FILL;        gd.horizontalSpan = numColumns - 1;        gd.grabExcessHorizontalSpace = true;        scale.setLayoutData(gd);        updateScale();    }    /*     * (non-Javadoc)     *      * @see org.eclipse.jface.preference.FieldEditor#doLoad()     */    protected void doLoad() {        if (scale != null) {            int value = getPreferenceStore().getInt(getPreferenceName());            scale.setSelection(value);            oldValue = value;        }    }    /*     * (non-Javadoc)     *      * @see org.eclipse.jface.preference.FieldEditor#doLoadDefault()     */    protected void doLoadDefault() {        if (scale != null) {            int value = getPreferenceStore().getDefaultInt(getPreferenceName());            scale.setSelection(value);        }        valueChanged();    }    /*     * (non-Javadoc)     *      * @see org.eclipse.jface.preference.FieldEditor#doStore()     */    protected void doStore() {        getPreferenceStore()                .setValue(getPreferenceName(), scale.getSelection());    }    /**     * Returns the value that will be used for Scale.setIncrement(int).     *      * @return the value.     * @see org.eclipse.swt.widgets.Scale#setIncrement(int)     */    public int getIncrement() {        return incrementValue;    }    /**     * Returns the value that will be used for Scale.setMaximum(int).     *      * @return the value.     * @see org.eclipse.swt.widgets.Scale#setMaximum(int)     */    public int getMaximum() {        return maxValue;    }    /**     * Returns the value that will be used for Scale.setMinimum(int).     *      * @return the value.     * @see org.eclipse.swt.widgets.Scale#setMinimum(int)     */    public int getMinimum() {        return minValue;    }    /*     * (non-Javadoc)     *      * @see org.eclipse.jface.preference.FieldEditor#getNumberOfControls()     */    public int getNumberOfControls() {        return 2;    }    /**     * Returns the value that will be used for Scale.setPageIncrement(int).     *      * @return the value.     * @see org.eclipse.swt.widgets.Scale#setPageIncrement(int)     */    public int getPageIncrement() {        return pageIncrementValue;    }    /**     * Returns this field editor's scale control.     *      * @return the scale control, or <code>null</code> if no scale field is     *         created yet     */    public Scale getScaleControl() {        return scale;    }    /**     * Returns this field editor's scale control. The control is created if it     * does not yet exist.     *      * @param parent     *            the parent     * @return the scale control     */    private Scale getScaleControl(Composite parent) {        if (scale == null) {            scale = new Scale(parent, SWT.HORIZONTAL);            scale.setFont(parent.getFont());            scale.addSelectionListener(new SelectionAdapter() {                public void widgetSelected(SelectionEvent event) {                    valueChanged();                }            });            scale.addDisposeListener(new DisposeListener() {                public void widgetDisposed(DisposeEvent event) {                    scale = null;                }            });        } else {            checkParent(scale, parent);        }        return scale;    }    /**     * Set default values for the various scale fields.  These defaults are:<br>     * <ul>     * <li>Minimum  = 0     * <li>Maximim = 10     * <li>Increment = 1     * <li>Page Increment = 1     * </ul>      */    private void setDefaultValues() {        setValues(0, 10, 1, 1);    }    /*     * (non-Javadoc)     *      * @see org.eclipse.jface.preference.FieldEditor#setFocus()     */    public void setFocus() {        if (scale != null && !scale.isDisposed()) {            scale.setFocus();        }    }    /**     * Set the value to be used for Scale.setIncrement(int) and update the     * scale.     *      * @param increment     *            a value greater than 0.     * @see org.eclipse.swt.widgets.Scale#setIncrement(int)     */    public void setIncrement(int increment) {        this.incrementValue = increment;        updateScale();    }    /**     * Set the value to be used for Scale.setMaximum(int) and update the     * scale.     *      * @param max     *            a value greater than 0.     * @see org.eclipse.swt.widgets.Scale#setMaximum(int)     */    public void setMaximum(int max) {        this.maxValue = max;        updateScale();    }    /**     * Set the value to be used for Scale.setMinumum(int) and update the     * scale.     *      * @param min     *            a value greater than 0.     * @see org.eclipse.swt.widgets.Scale#setMinimum(int)     */    public void setMinimum(int min) {        this.minValue = min;        updateScale();    }    /**     * Set the value to be used for Scale.setPageIncrement(int) and update the     * scale.     *      * @param pageIncrement     *            a value greater than 0.     * @see org.eclipse.swt.widgets.Scale#setPageIncrement(int)     */    public void setPageIncrement(int pageIncrement) {        this.pageIncrementValue = pageIncrement;        updateScale();    }    /**     * Set all Scale values.     *      * @param min     *            the value used for Scale.setMinimum(int).     * @param max     *            the value used for Scale.setMaximum(int).     * @param increment     *            the value used for Scale.setIncrement(int).     * @param pageIncrement     *            the value used for Scale.setPageIncrement(int).     */    private void setValues(int min, int max, int increment, int pageIncrement) {        this.incrementValue = increment;        this.maxValue = max;        this.minValue = min;        this.pageIncrementValue = pageIncrement;        updateScale();    }    /**     * Update the scale particulars with set values.     */    private void updateScale() {        if (scale != null && !scale.isDisposed()) {            scale.setMinimum(getMinimum());            scale.setMaximum(getMaximum());            scale.setIncrement(getIncrement());            scale.setPageIncrement(getPageIncrement());        }    }    /**     * Informs this field editor's listener, if it has one, about a change to     * the value (<code>VALUE</code> property) provided that the old and new     * values are different.     * <p>     * This hook is <em>not</em> called when the scale is initialized (or     * reset to the default value) from the preference store.     * </p>     */    protected void valueChanged() {        setPresentsDefaultValue(false);        int newValue = scale.getSelection();        if (newValue != oldValue) {            fireStateChanged(IS_VALID, false, true);            fireValueChanged(VALUE, new Integer(oldValue),                    new Integer(newValue));            oldValue = newValue;        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -