X-Git-Url: http://secure.phpeclipse.com diff --git a/net.sourceforge.phpeclipse.ui/src/net/sourceforge/phpdt/internal/ui/text/TypingRun.java b/net.sourceforge.phpeclipse.ui/src/net/sourceforge/phpdt/internal/ui/text/TypingRun.java new file mode 100644 index 0000000..6a2cd02 --- /dev/null +++ b/net.sourceforge.phpeclipse.ui/src/net/sourceforge/phpdt/internal/ui/text/TypingRun.java @@ -0,0 +1,109 @@ +/******************************************************************************* + * Copyright (c) 2000, 2003 IBM Corporation and others. + * 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 - initial API and implementation + *******************************************************************************/ +package net.sourceforge.phpdt.internal.ui.text; + +/** + * Describes a run of similar typing changes. + *

+ * XXX to be extended with further information, e.g. offset, length, and content + * of the run. + *

+ * + * @since 3.0 + */ +public final class TypingRun { + /** + * A change of type DELETE deletes one single character + * (through delete or backspace or empty paste). + */ + public static final ChangeType DELETE = new ChangeType(true, "DELETE"); //$NON-NLS-1$ + + /** + * A change of type INSERT inserts one single character + * (normal typing). + */ + public static final ChangeType INSERT = new ChangeType(true, "INSERT"); //$NON-NLS-1$ + + /** + * A change of type NO_CHANGE does not change anything. + */ + public static final ChangeType NO_CHANGE = new ChangeType(false, + "NO_CHANGE"); //$NON-NLS-1$ + + /** + * A change of type OVERTYPE replaces one single character + * (overwrite mode, pasting a single character). + */ + public static final ChangeType OVERTYPE = new ChangeType(true, "OVERTYPE"); //$NON-NLS-1$ + + /** + * A change of type SELECTION does not change text, but + * changes the focus, or selection. Such a change ends all typing runs. + */ + public static final ChangeType SELECTION = new ChangeType(false, + "SELECTION"); //$NON-NLS-1$ + + /** + * A change of type UNKNOWN modifies text in an unspecified + * way. An example is pasting more than one character, or deleting an entire + * selection, or reverting a file. Such a change ends all typing runs and + * cannot form a typing run with any other change, including a change of + * type UNKNOWN. + */ + public static final ChangeType UNKNOWN = new ChangeType(true, "UNKNOWN"); //$NON-NLS-1$ + + /** + * Enumeration of change types. + * + * @since 3.0 + */ + public static final class ChangeType { + private final boolean fIsModification; + + private final String fName; + + /** Private ctor for type safe enumeration. */ + private ChangeType(boolean isRunPart, String name) { + fIsModification = isRunPart; + fName = name; + } + + /** + * Returns true if changes of this type modify text. + * + * @return true if changes of this type modify text, + * false otherwise + */ + boolean isModification() { + return fIsModification; + } + + /* + * @see java.lang.Object#toString() + */ + public String toString() { + return fName; + } + } + + /** + * Creates a new run. + * + * @param type + * the type of the run + */ + TypingRun(ChangeType type) { + this.type = type; + } + + /** The change type of this run. */ + public final ChangeType type; +} \ No newline at end of file