183 lines · 5.5 KB · Java
RawDownload
/* * Copyright (c) 1997, 2000, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation.  Oracle designates this * particular file as subject to the "Classpath" exception as provided * by Oracle in the LICENSE file that accompanied this code. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions. */package javax.swing.event; import javax.swing.undo.*;import javax.swing.text.*; /** * Interface for document change notifications.  This provides * detailed information to Document observers about how the * Document changed.  It provides high level information such * as type of change and where it occurred, as well as the more * detailed structural changes (What Elements were inserted and * removed). * * @author  Timothy Prinzing * @see javax.swing.text.Document * @see DocumentListener */public interface DocumentEvent {     /**     * Returns the offset within the document of the start     * of the change.     *     * @return the offset >= 0     */    public int getOffset();     /**     * Returns the length of the change.     *     * @return the length >= 0     */    public int getLength();     /**     * Gets the document that sourced the change event.     *     * @return the document     */    public Document getDocument();     /**     * Gets the type of event.     *     * @return the type     */    public EventType getType();     /**     * Gets the change information for the given element.     * The change information describes what elements were     * added and removed and the location.  If there were     * no changes, null is returned.     * <p>     * This method is for observers to discover the structural     * changes that were made.  This means that only elements     * that existed prior to the mutation (and still exist after     * the mutatino) need to have ElementChange records.     * The changes made available need not be recursive.     * <p>     * For example, if the an element is removed from it's     * parent, this method should report that the parent     * changed and provide an ElementChange implementation     * that describes the change to the parent.  If the     * child element removed had children, these elements     * do not need to be reported as removed.     * <p>     * If an child element is insert into a parent element,     * the parent element should report a change.  If the     * child element also had elements inserted into it     * (grandchildren to the parent) these elements need     * not report change.     *     * @param elem the element     * @return the change information, or null if the     *   element was not modified     */    public ElementChange getChange(Element elem);     /**     * Enumeration for document event types     */    public static final class EventType {         private EventType(String s) {            typeString = s;        }         /**         * Insert type.         */        public static final EventType INSERT = new EventType("INSERT");         /**         * Remove type.         */        public static final EventType REMOVE = new EventType("REMOVE");         /**         * Change type.         */        public static final EventType CHANGE = new EventType("CHANGE");         /**         * Converts the type to a string.         *         * @return the string         */        public String toString() {            return typeString;        }         private String typeString;    }     /**     * Describes changes made to a specific element.     */    public interface ElementChange {         /**         * Returns the element represented.  This is the element         * that was changed.         *         * @return the element         */        public Element getElement();         /**         * Fetches the index within the element represented.         * This is the location that children were added         * and/or removed.         *         * @return the index >= 0         */        public int getIndex();         /**         * Gets the child elements that were removed from the         * given parent element.  The element array returned is         * sorted in the order that the elements used to lie in         * the document, and must be contiguous.         *         * @return the child elements         */        public Element[] getChildrenRemoved();         /**         * Gets the child elements that were added to the given         * parent element.  The element array returned is in the         * order that the elements lie in the document, and must         * be contiguous.         *         * @return the child elements         */        public Element[] getChildrenAdded();     }}