TypingRun.java :  » IDE-Eclipse » jdt » org » eclipse » jdt » internal » ui » text » Java Open Source

Java Open Source » IDE Eclipse » jdt 
jdt » org » eclipse » jdt » internal » ui » text » TypingRun.java
/*******************************************************************************
 * 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;
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.