diff options
Diffstat (limited to 'build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/MultiLineTextFieldEditor.java')
-rw-r--r-- | build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/MultiLineTextFieldEditor.java | 552 |
1 files changed, 0 insertions, 552 deletions
diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/MultiLineTextFieldEditor.java b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/MultiLineTextFieldEditor.java deleted file mode 100644 index d1e2c641ecf..00000000000 --- a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/MultiLineTextFieldEditor.java +++ /dev/null @@ -1,552 +0,0 @@ -package org.eclipse.cdt.managedbuilder.ui.properties; - -/********************************************************************** - * Copyright (c) 2004 BitMethods Inc and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Common Public License v0.5 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/cpl-v05.html - * - * Contributors: - * BitMethods Inc - Initial API and implementation - ***********************************************************************/ - -import org.eclipse.cdt.managedbuilder.internal.ui.ManagedBuilderUIMessages; -import org.eclipse.jface.preference.FieldEditor; -import org.eclipse.jface.util.Assert; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.DisposeEvent; -import org.eclipse.swt.events.DisposeListener; -import org.eclipse.swt.events.FocusAdapter; -import org.eclipse.swt.events.FocusEvent; -import org.eclipse.swt.events.KeyAdapter; -import org.eclipse.swt.events.KeyEvent; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Label; -import org.eclipse.swt.widgets.Text; - -/** - * MultiLineTextFieldEditor. - * Field editor that is same as string field editor but - * will have the multi line text field for user input. - */ -public class MultiLineTextFieldEditor extends FieldEditor { - - private static final String ERROR_MESSAGE = "Multiline.error.message"; //$NON-NLS-1$ - - /** - * Validation strategy constant (value <code>0</code>) indicating that - * the editor should perform validation after every key stroke. - * - * @see #setValidateStrategy - */ - public static final int VALIDATE_ON_KEY_STROKE = 0; - - /** - * Validation strategy constant (value <code>1</code>) indicating that - * the editor should perform validation only when the text widget - * loses focus. - * - * @see #setValidateStrategy - */ - public static final int VALIDATE_ON_FOCUS_LOST = 1; - - /** - * Text limit constant (value <code>-1</code>) indicating unlimited - * text limit and width. - */ - public static int UNLIMITED = -1; - - /** - * Cached valid state. - */ - private boolean isValid; - - /** - * Old text value. - */ - private String oldValue; - private String compTitle; - private Label title; - - /** - * The text field, or <code>null</code> if none. - */ - private Text textField; - - /** - * Width of text field in characters; initially unlimited. - */ - private int widthInChars = UNLIMITED; - - /** - * Text limit of text field in characters; initially unlimited. - */ - private int textLimit = UNLIMITED; - - /** - * The error message, or <code>null</code> if none. - */ - private String errorMessage; - - /** - * Indicates whether the empty string is legal; - * <code>true</code> by default. - */ - private boolean emptyStringAllowed = true; - - /** - * The validation strategy; - * <code>VALIDATE_ON_KEY_STROKE</code> by default. - */ - private int validateStrategy = VALIDATE_ON_KEY_STROKE; - /** - * Creates a new string field editor - */ - protected MultiLineTextFieldEditor() { - } - /** - * Creates a string field editor. - * Use the method <code>setTextLimit</code> to limit the text. - * - * @param name the name of the preference this field editor works on - * @param labelText the label text of the field editor - * @param width the width of the text input field in characters, - * or <code>UNLIMITED</code> for no limit - * @param strategy either <code>VALIDATE_ON_KEY_STROKE</code> to perform - * on the fly checking (the default), or <code>VALIDATE_ON_FOCUS_LOST</code> to - * perform validation only after the text has been typed in - * @param parent the parent of the field editor's control - * @since 2.0 - */ - public MultiLineTextFieldEditor( - String name, - String labelText, - int width, - int strategy, - Composite parent) { - init(name, labelText); - widthInChars = width; - setValidateStrategy(strategy); - isValid = false; - errorMessage = ManagedBuilderUIMessages.getResourceString(ERROR_MESSAGE); - createControl(parent); - } - - /** - * Creates a string field editor. - * Use the method <code>setTextLimit</code> to limit the text. - * - * @param name the name of the preference this field editor works on - * @param labelText the label text of the field editor - * @param width the width of the text input field in characters, - * or <code>UNLIMITED</code> for no limit - * @param parent the parent of the field editor's control - */ - public MultiLineTextFieldEditor(String name, String labelText, int width, Composite parent) { - this(name, labelText, width, VALIDATE_ON_KEY_STROKE, parent); - this.compTitle = labelText; - } - /** - * Creates a string field editor of unlimited width. - * Use the method <code>setTextLimit</code> to limit the text. - * - * @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 MultiLineTextFieldEditor(String name, String labelText, Composite parent) { - this(name, labelText, UNLIMITED, parent); - } - - /** - * Adjusts the horizontal span of this field editor's basic controls - * <p> - * Subclasses must implement this method to adjust the horizontal span - * of controls so they appear correct in the given number of columns. - * </p> - * <p> - * The number of columns will always be equal to or greater than the - * value returned by this editor's <code>getNumberOfControls</code> method. - * - * @param numColumns the number of columns - */ - protected void adjustForNumColumns(int numColumns) { - GridData gd = (GridData) textField.getLayoutData(); - gd.horizontalSpan = numColumns - 1; - // We only grab excess space if we have to - // If another field editor has more columns then - // we assume it is setting the width. - gd.grabExcessHorizontalSpace = gd.horizontalSpan == 1; - } - /** - * Checks whether the text input field contains a valid value or not. - * - * @return <code>true</code> if the field value is valid, - * and <code>false</code> if invalid - */ - protected boolean checkState() { - boolean result = false; - if (emptyStringAllowed) - result = true; - - if (textField == null) - result = false; - - String txt = textField.getText(); - - if (txt == null) - result = false; - - result = (txt.trim().length() > 0) || emptyStringAllowed; - - // call hook for subclasses - result = result && doCheckState(); - - if (result) - clearErrorMessage(); - else - showErrorMessage(errorMessage); - - return result; - } - /** - * Hook for subclasses to do specific state checks. - * <p> - * The default implementation of this framework method does - * nothing and returns <code>true</code>. Subclasses should - * override this method to specific state checks. - * </p> - * - * @return <code>true</code> if the field value is valid, - * and <code>false</code> if invalid - */ - protected boolean doCheckState() { - return true; - } - /** - * Fills this field editor's basic controls into the given parent. - * <p> - * The string field implementation of this <code>FieldEditor</code> - * framework method contributes the text field. Subclasses may override - * but must call <code>super.doFillIntoGrid</code>. - * </p> - */ - protected void doFillIntoGrid(Composite parent, int numColumns) { - - title = new Label(parent, SWT.UP); - title.setFont(parent.getFont()); - this.compTitle = getLabelText(); - title.setText(this.compTitle); - title.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING)); - - textField = getTextControl(parent); - GridData gd = new GridData(GridData.FILL_HORIZONTAL); - gd.widthHint = 100; - gd.heightHint = 70; - textField.setLayoutData(gd); - - } - - /** - * Initializes this field editor with the preference value from - * the preference store. - * <p> - * Subclasses must implement this method to properly initialize - * the field editor. - * </p> - */ - protected void doLoad() { - if (textField != null) { - String value = getPreferenceStore().getString(getPreferenceName()); - textField.setText(value); - oldValue = value; - } - } - - /** - * Initializes this field editor with the default preference value from - * the preference store. - * <p> - * Subclasses must implement this method to properly initialize - * the field editor. - * </p> - */ - protected void doLoadDefault() { - if (textField != null) { - String value = - getPreferenceStore().getDefaultString(getPreferenceName()); - textField.setText(value); - } - valueChanged(); - } - - /* (non-Javadoc) - * @see org.eclipse.jface.preference.FieldEditor#doStore() - */ - protected void doStore() { - getPreferenceStore().setValue(getPreferenceName(), textField.getText()); - } - - /** - * Returns the error message that will be displayed when and if - * an error occurs. - * - * @return the error message, or <code>null</code> if none - */ - public String getErrorMessage() { - return errorMessage; - } - /** - * Returns the number of basic controls this field editor consists of. - * - * @return the number of controls - */ - public int getNumberOfControls() { - return 2; - } - /** - * Returns the field editor's value. - * - * @return the current value - */ - public String getStringValue() { - if (textField != null) - return textField.getText(); - else - return getPreferenceStore().getString(getPreferenceName()); - } - - /** - * Returns this field editor's text control. - * - * @param parent the parent - * @return the text control, or <code>null</code> if no - * text field is created yet - */ - protected Text getTextControl() { - return textField; - } - - /** - * Returns this field editor's text control. - * <p> - * The control is created if it does not yet exist - * </p> - * - * @param parent the parent - * @return the text control - */ - public Text getTextControl(Composite parent) { - if (textField == null) { - textField = - new Text( - parent, - SWT.MULTI | SWT.V_SCROLL | SWT.BORDER | SWT.WRAP); - textField.setFont(parent.getFont()); - switch (validateStrategy) { - case VALIDATE_ON_KEY_STROKE : - textField.addKeyListener(new KeyAdapter() { - public void keyPressed(KeyEvent e) { - valueChanged(); - } - }); - - textField.addFocusListener(new FocusAdapter() { - public void focusGained(FocusEvent e) { - refreshValidState(); - } - public void focusLost(FocusEvent e) { - clearErrorMessage(); - } - }); - break; - case VALIDATE_ON_FOCUS_LOST : - textField.addKeyListener(new KeyAdapter() { - public void keyPressed(KeyEvent e) { - clearErrorMessage(); - } - }); - textField.addFocusListener(new FocusAdapter() { - public void focusGained(FocusEvent e) { - refreshValidState(); - } - public void focusLost(FocusEvent e) { - valueChanged(); - clearErrorMessage(); - } - }); - break; - default : - Assert.isTrue(false, "Unknown validate strategy"); //$NON-NLS-1$ - } - textField.addDisposeListener(new DisposeListener() { - public void widgetDisposed(DisposeEvent event) { - textField = null; - } - }); - if (textLimit > 0) { //Only set limits above 0 - see SWT spec - textField.setTextLimit(textLimit); - } - } else { - checkParent(textField, parent); - } - return textField; - } - - /** - * Returns whether an empty string is a valid value. - * - * @return <code>true</code> if an empty string is a valid value, and - * <code>false</code> if an empty string is invalid - * @see #setEmptyStringAllowed - */ - public boolean isEmptyStringAllowed() { - return emptyStringAllowed; - } - - /** - * Returns whether this field editor contains a valid value. - * <p> - * The default implementation of this framework method - * returns <code>true</code>. Subclasses wishing to perform - * validation should override both this method and - * <code>refreshValidState</code>. - * </p> - * - * @return <code>true</code> if the field value is valid, - * and <code>false</code> if invalid - * @see #refreshValidState - */ - public boolean isValid() { - return isValid; - } - - /** - * Refreshes this field editor's valid state after a value change - * and fires an <code>IS_VALID</code> property change event if - * warranted. - * <p> - * The default implementation of this framework method does - * nothing. Subclasses wishing to perform validation should override - * both this method and <code>isValid</code>. - * </p> - * @see #isValid - */ - protected void refreshValidState() { - isValid = checkState(); - } - - /** - * Sets whether the empty string is a valid value or not. - * - * @param b <code>true</code> if the empty string is allowed, - * and <code>false</code> if it is considered invalid - */ - public void setEmptyStringAllowed(boolean b) { - emptyStringAllowed = b; - } - - /** - * Sets the error message that will be displayed when and if - * an error occurs. - * - * @param message the error message - */ - public void setErrorMessage(String message) { - errorMessage = message; - } - - /** - * Sets the focus to this field editor. - * <p> - * The default implementation of this framework method - * does nothing. Subclasses may reimplement. - * </p> - */ - public void setFocus() { - if (textField != null) { - textField.setFocus(); - } - } - - /** - * Sets this field editor's value. - * - * @param value the new value, or <code>null</code> meaning the empty string - */ - public void setStringValue(String value) { - if (textField != null) { - if (value == null) - value = ""; //$NON-NLS-1$ - oldValue = textField.getText(); - if (!oldValue.equals(value)) { - textField.setText(value); - valueChanged(); - } - } - } - - /** - * Sets this text field's text limit. - * - * @param limit the limit on the number of character in the text - * input field, or <code>UNLIMITED</code> for no limit - */ - public void setTextLimit(int limit) { - textLimit = limit; - if (textField != null) - textField.setTextLimit(limit); - } - - /** - * Sets the strategy for validating the text. - * <p> - * Calling this method has no effect after <code>createPartControl</code> - * is called. Thus this method is really only useful for subclasses to call - * in their constructor. However, it has public visibility for backward - * compatibility. - * </p> - * - * @param value either <code>VALIDATE_ON_KEY_STROKE</code> to perform - * on the fly checking (the default), or <code>VALIDATE_ON_FOCUS_LOST</code> to - * perform validation only after the text has been typed in - */ - public void setValidateStrategy(int value) { - Assert.isTrue( - value == VALIDATE_ON_FOCUS_LOST || value == VALIDATE_ON_KEY_STROKE); - validateStrategy = value; - } - - /** - * Shows the error message set via <code>setErrorMessage</code>. - */ - public void showErrorMessage() { - showErrorMessage(errorMessage); - } - - /** - * 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 text is initialized - * (or reset to the default value) from the preference store. - * </p> - */ - protected void valueChanged() { - setPresentsDefaultValue(false); - boolean oldState = isValid; - refreshValidState(); - - if (isValid != oldState) - fireStateChanged(IS_VALID, oldState, isValid); - - String newValue = textField.getText(); - if (!newValue.equals(oldValue)) { - fireValueChanged(VALUE, oldValue, newValue); - oldValue = newValue; - } - } -} |