001: /*
002: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
003: *
004: * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
005: *
006: * The contents of this file are subject to the terms of either the GNU
007: * General Public License Version 2 only ("GPL") or the Common
008: * Development and Distribution License("CDDL") (collectively, the
009: * "License"). You may not use this file except in compliance with the
010: * License. You can obtain a copy of the License at
011: * http://www.netbeans.org/cddl-gplv2.html
012: * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
013: * specific language governing permissions and limitations under the
014: * License. When distributing the software, include this License Header
015: * Notice in each file and include the License file at
016: * nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this
017: * particular file as subject to the "Classpath" exception as provided
018: * by Sun in the GPL Version 2 section of the License file that
019: * accompanied this code. If applicable, add the following below the
020: * License Header, with the fields enclosed by brackets [] replaced by
021: * your own identifying information:
022: * "Portions Copyrighted [year] [name of copyright owner]"
023: *
024: * Contributor(s):
025: *
026: * The Original Software is NetBeans. The Initial Developer of the Original
027: * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
028: * Microsystems, Inc. All Rights Reserved.
029: *
030: * If you wish your version of this file to be governed by only the CDDL
031: * or only the GPL Version 2, indicate your decision by adding
032: * "[Contributor] elects to include this software in this distribution
033: * under the [CDDL or GPL Version 2] license." If you do not indicate a
034: * single choice of license, a recipient has the option to distribute
035: * your version of this file under either the CDDL, the GPL Version 2 or
036: * to extend the choice of license to its licensees as provided above.
037: * However, if you add GPL Version 2 code and therefore, elected the GPL
038: * Version 2 license, then the option applies only if the new code is
039: * made subject to such option by the copyright holder.
040: */
041: package org.openide.filesystems;
042:
043: import java.util.EventObject;
044:
045: /** Event describing a change in annotation of files.
046: *
047: * @author Jaroslav Tulach
048: */
049: public final class FileStatusEvent extends EventObject {
050: static final long serialVersionUID = -6428208118782405291L;
051:
052: /** changed files */
053: private java.util.Set files;
054:
055: /** icon changed? */
056: private boolean icon;
057:
058: /** name changed? */
059: private boolean name;
060:
061: /** Creates new FileStatusEvent
062: * @param fs filesystem that causes the event
063: * @param files set of FileObjects that has been changed
064: * @param icon has icon changed?
065: * @param name has name changed?
066: */
067: public FileStatusEvent(FileSystem fs, java.util.Set files,
068: boolean icon, boolean name) {
069: super (fs);
070: this .files = files;
071: this .icon = icon;
072: this .name = name;
073: }
074:
075: /** Creates new FileStatusEvent
076: * @param fs filesystem that causes the event
077: * @param file file object that has been changed
078: * @param icon has icon changed?
079: * @param name has name changed?
080: */
081: public FileStatusEvent(FileSystem fs, FileObject file,
082: boolean icon, boolean name) {
083: this (fs, java.util.Collections.singleton(file), icon, name);
084: }
085:
086: /** Creates new FileStatusEvent. This does not specify the
087: * file that changed annotation, assuming that everyone should update
088: * its annotation. Please notice that this can be time consuming
089: * and should be fired only when really necessary.
090: *
091: * @param fs filesystem that causes the event
092: * @param icon has icon changed?
093: * @param name has name changed?
094: */
095: public FileStatusEvent(FileSystem fs, boolean icon, boolean name) {
096: this (fs, (java.util.Set) null, icon, name);
097: }
098:
099: /** Getter for filesystem that caused the change.
100: * @return filesystem
101: */
102: public FileSystem getFileSystem() {
103: return (FileSystem) getSource();
104: }
105:
106: /** Is the change change of name?
107: */
108: public boolean isNameChange() {
109: return name;
110: }
111:
112: /** Do the files changed their icons?
113: */
114: public boolean isIconChange() {
115: return icon;
116: }
117:
118: /** Check whether the given file has been changed.
119: * @param file file to check
120: * @return true if the file has been affected by the change
121: */
122: public boolean hasChanged(FileObject file) {
123: if (files == null) {
124: // all files on source filesystem are said to change
125: try {
126: return file.getFileSystem() == getSource();
127: } catch (FileStateInvalidException ex) {
128: // invalid files should not be changed
129: return false;
130: }
131: } else {
132: // specified set of files, so check it
133: return files.contains(file);
134: }
135: }
136: }
|