/* * 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; } }