2
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
4
* Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
6
* The contents of this file are subject to the terms of either the GNU
7
* General Public License Version 2 only ("GPL") or the Common
8
* Development and Distribution License("CDDL") (collectively, the
9
* "License"). You may not use this file except in compliance with the
10
* License. You can obtain a copy of the License at
11
* http://www.netbeans.org/cddl-gplv2.html
12
* or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
13
* specific language governing permissions and limitations under the
14
* License. When distributing the software, include this License Header
15
* Notice in each file and include the License file at
16
* nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this
17
* particular file as subject to the "Classpath" exception as provided
18
* by Sun in the GPL Version 2 section of the License file that
19
* accompanied this code. If applicable, add the following below the
20
* License Header, with the fields enclosed by brackets [] replaced by
21
* your own identifying information:
22
* "Portions Copyrighted [year] [name of copyright owner]"
26
* The Original Software is NetBeans. The Initial Developer of the Original
27
* Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
28
* Microsystems, Inc. All Rights Reserved.
30
* If you wish your version of this file to be governed by only the CDDL
31
* or only the GPL Version 2, indicate your decision by adding
32
* "[Contributor] elects to include this software in this distribution
33
* under the [CDDL or GPL Version 2] license." If you do not indicate a
34
* single choice of license, a recipient has the option to distribute
35
* your version of this file under either the CDDL, the GPL Version 2 or
36
* to extend the choice of license to its licensees as provided above.
37
* However, if you add GPL Version 2 code and therefore, elected the GPL
38
* Version 2 license, then the option applies only if the new code is
39
* made subject to such option by the copyright holder.
42
package org.netbeans.api.editor.fold;
45
* Event describing the changes done in the hierarchy.
47
* The structural changes are described by the lists of added and removed folds.
49
* State changes are described by a list of {@link FoldStateChange}s.
51
* In addition there is a description of the offset range that was
52
* affected by the change. This is useful for the editor
53
* to recreate the affected views and repaint the affected area.
55
* Added folds can have either collapsed or expanded initial state.
57
* @author Miloslav Metelka
61
public final class FoldHierarchyEvent extends java.util.EventObject {
63
private Fold[] removedFolds;
65
private Fold[] addedFolds;
67
private FoldStateChange[] foldStateChanges;
69
private int affectedStartOffset;
71
private int affectedEndOffset;
74
* Create new FoldHierarchyEvent.
76
* It's guaranteed that no passed arrays contents will be modified.
78
* @param source FoldHierarchy for which this event gets created.
79
* @param removedFolds non-null array of removed folds.
80
* @param addedFolds non-null array of added folds.
81
* @param foldStateChanges changes describing changes in the state
82
* of particular folds.
83
* @param affectedStartOffset first offset in the document affected by this change.
84
* @param affectedEndOffset end of the offset area affected by this change.
86
FoldHierarchyEvent(FoldHierarchy source,
87
Fold[] removedFolds, Fold[] addedFolds,
88
FoldStateChange[] foldStateChanges, int affectedStartOffset, int affectedEndOffset) {
92
this.removedFolds = removedFolds;
93
this.addedFolds = addedFolds;
94
this.foldStateChanges = foldStateChanges;
95
this.affectedStartOffset = affectedStartOffset;
96
this.affectedEndOffset = affectedEndOffset;
100
* Get the number of folds removed from the hierarchy.
102
* @return >=0 number of removed folds.
104
public int getRemovedFoldCount() {
105
return removedFolds.length;
109
* Get the fold with the given index removed
110
* from the fold hierarchy.
112
* @param removedFoldIndex >=0 and <{@link #getRemovedFoldCount()}
113
* index of the removed fold.
115
public Fold getRemovedFold(int removedFoldIndex) {
116
return removedFolds[removedFoldIndex];
120
* Get the number of folds that were added to the hierarchy.
122
* @return >=0 number of added folds.
124
public int getAddedFoldCount() {
125
return addedFolds.length;
129
* Get the fold with the given index added
132
* @param addedFoldIndex >=0 and <{@link #getAddedFoldCount()}
133
* index of the added fold.
135
public Fold getAddedFold(int addedFoldIndex) {
136
return addedFolds[addedFoldIndex];
140
* Get the number of the fold state changes contained in this event.
142
* @return >=0 number of fold state changes.
144
public int getFoldStateChangeCount() {
145
return foldStateChanges.length;
149
* Get the fold state change at the given index.
151
* @param index >=0 and <{@link #getFoldStateChangeCount()}
152
* index of the fold state change.
154
public FoldStateChange getFoldStateChange(int index) {
155
return foldStateChanges[index];
159
* Get the first offset in the underlying document affected
162
* @return >=0 first offset affected by the change.
164
public int getAffectedStartOffset() {
165
return affectedStartOffset;
169
* Get the ending offset in the offset area affected
172
* @return >={@link #getAffectedStartOffset()}
173
* end of the offset area affected by the change.
175
public int getAffectedEndOffset() {
176
return affectedEndOffset;
179
public String toString() {
180
return org.netbeans.modules.editor.fold.FoldUtilitiesImpl.foldHierarchyEventToString(this);