blob: da08a924cbeaeb0976fc6dbefa53a8495636a838 [file] [log] [blame]
/*
* Copyright 2000-2012 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.intellij.openapi.vfs;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.NotNull;
import java.util.EventObject;
/**
* Provides data for a virtual file system change event.
*
* @see com.intellij.openapi.vfs.VirtualFileListener
*/
public class VirtualFileEvent extends EventObject {
private final VirtualFile myFile;
private final VirtualFile myParent;
private final Object myRequestor;
private final String myFileName;
private final long myOldModificationStamp;
private final long myNewModificationStamp;
public VirtualFileEvent(@Nullable Object requestor, @NotNull VirtualFile file, @NotNull String fileName, @Nullable VirtualFile parent) {
this(requestor, file, fileName, parent,0,0);
}
public VirtualFileEvent(@Nullable Object requestor,
@NotNull VirtualFile file,
@Nullable VirtualFile parent,
long oldModificationStamp,
long newModificationStamp) {
this(requestor, file, file.getName(), parent, oldModificationStamp, newModificationStamp);
}
private VirtualFileEvent(@Nullable Object requestor,
@NotNull VirtualFile file,
@NotNull String fileName,
@Nullable VirtualFile parent,
long oldModificationStamp,
long newModificationStamp) {
super(file);
myFile = file;
myFileName = fileName;
myParent = parent;
myRequestor = requestor == null ? file.getUserData(VirtualFile.REQUESTOR_MARKER) : requestor;
myOldModificationStamp = oldModificationStamp;
myNewModificationStamp = newModificationStamp;
}
/**
* Returns the file to which the change happened.
*
* @return the changed file.
*/
@NotNull
public VirtualFile getFile() {
return myFile;
}
/**
* Returns the name of the changed file.
*
* @return the name of the changed file.
*/
@NotNull
public String getFileName() {
return myFileName;
}
/**
* Returns the parent of the virtual file.
*
* @return the parent, or null if the file is a root directory or it was not possible to determine the parent
* (depends on the specific VFS implementation).
*/
@Nullable
public VirtualFile getParent() {
return myParent;
}
/**
* Returns the object which performed the operation changing the VFS, or null if the change was
* caused by an external process and detected during VFS refresh.
*
* @return the refresh initiating object, or null if it was not specified.
*/
@Nullable
public Object getRequestor() {
return myRequestor;
}
/**
* Returns the modification stamp of the file before the event.
*
* @return the modification stamp of the file before the event.
* @see com.intellij.openapi.vfs.VirtualFile#getModificationStamp()
*/
public long getOldModificationStamp() {
return myOldModificationStamp;
}
/**
* Returns the modification stamp of the file after the event.
*
* @return the modification stamp of the file after the event.
* @see com.intellij.openapi.vfs.VirtualFile#getModificationStamp()
*/
public long getNewModificationStamp() {
return myNewModificationStamp;
}
public boolean isFromRefresh() {
return myRequestor == null;
}
/**
* Returns true if the VFS change described by the event is the save of a document.
*
* @return true if the VFS change described by the event is the save of a document, false otherwise.
*/
public boolean isFromSave() {
return myRequestor instanceof SavingRequestor;
}
}