Java tutorial
/******************************************************************************* * Copyright 2014 United States Government as represented by the * Administrator of the National Aeronautics and Space Administration. * All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. ******************************************************************************/ package gov.nasa.ensemble.common.ui.preferences; import org.eclipse.jface.preference.StringFieldEditor; import org.eclipse.jface.resource.JFaceResources; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Text; /** * A field editor for a long type preference. */ public class LongFieldEditor extends StringFieldEditor { private long minValidValue = 0; private long maxValidValue = Long.MAX_VALUE; private static final int DEFAULT_TEXT_LIMIT = 10; /** * Creates a new long field editor */ protected LongFieldEditor() { // } /** * Creates an long 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 LongFieldEditor(String name, String labelText, Composite parent) { this(name, labelText, parent, DEFAULT_TEXT_LIMIT); } /** * Creates an long 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 * @param textLimit the maximum number of characters in the text. */ public LongFieldEditor(String name, String labelText, Composite parent, int textLimit) { init(name, labelText); setTextLimit(textLimit); setEmptyStringAllowed(false); setErrorMessage(JFaceResources.getString("LongFieldEditor.errorMessage"));//$NON-NLS-1$ createControl(parent); } /** * Sets the range of valid values for this field. * * @param min the minimum allowed value (inclusive) * @param max the maximum allowed value (inclusive) */ public void setValidRange(long min, long max) { minValidValue = min; maxValidValue = max; setErrorMessage(JFaceResources.format("LongFieldEditor.errorMessageRange", //$NON-NLS-1$ new Object[] { new Long(min), new Long(max) })); } /* (non-Javadoc) * Method declared on StringFieldEditor. * Checks whether the entered String is a valid long or not. */ @Override protected boolean checkState() { Text text = getTextControl(); if (text == null) { return false; } String numberString = text.getText(); try { long number = Long.valueOf(numberString).longValue(); if (number >= minValidValue && number <= maxValidValue) { clearErrorMessage(); return true; } showErrorMessage(); return false; } catch (NumberFormatException e1) { showErrorMessage(); } return false; } /* (non-Javadoc) * Method declared on FieldEditor. */ @Override protected void doLoad() { Text text = getTextControl(); if (text != null) { long value = getPreferenceStore().getLong(getPreferenceName()); text.setText("" + value);//$NON-NLS-1$ oldValue = "" + value; //$NON-NLS-1$ } } /* (non-Javadoc) * Method declared on FieldEditor. */ @Override protected void doLoadDefault() { Text text = getTextControl(); if (text != null) { long value = getPreferenceStore().getDefaultLong(getPreferenceName()); text.setText("" + value);//$NON-NLS-1$ } valueChanged(); } /* (non-Javadoc) * Method declared on FieldEditor. */ @Override protected void doStore() { Text text = getTextControl(); if (text != null) { Long i = new Long(text.getText()); getPreferenceStore().setValue(getPreferenceName(), i.longValue()); } } /** * Returns this field editor's current value as an long. * * @return the value * @exception NumberFormatException if the <code>String</code> does not * contain a parsable long */ public long getLongValue() throws NumberFormatException { return new Long(getStringValue()).longValue(); } }