blob: 89d3a9d70dee4ab84b1924e781b01ca1368ad43c [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 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.jdt.internal.ui.text;
/**
* Describes a run of similar typing changes.
* <p>
* XXX to be extended with further information, e.g. offset, length, and
* content of the run.
* </p>
*
* @since 3.0
*/
public final class TypingRun {
/**
* A change of type <code>DELETE</code> 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 <code>INSERT</code> inserts one single character
* (normal typing).
*/
public static final ChangeType INSERT= new ChangeType(true, "INSERT"); //$NON-NLS-1$
/**
* A change of type <code>NO_CHANGE</code> does not change anything.
*/
public static final ChangeType NO_CHANGE= new ChangeType(false, "NO_CHANGE"); //$NON-NLS-1$
/**
* A change of type <code>OVERTYPE</code> 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 <code>SELECTION</code> 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 <code>UNKNOWN</code> 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 <code>UNKNOWN</code>.
*/
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 <code>true</code> if changes of this type modify text.
*
* @return <code>true</code> if changes of this type modify text,
* <code>false</code> 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;
}