
package com.intellij.openapi.vfs.ex.http;

import com.intellij.openapi.Disposable;
import com.intellij.openapi.components.ApplicationComponent;
import com.intellij.openapi.vfs.DeprecatedVirtualFileSystem;
import com.intellij.openapi.vfs.StandardFileSystems;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.openapi.vfs.VirtualFileManager;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;

public abstract class HttpFileSystem extends DeprecatedVirtualFileSystem implements ApplicationComponent {
  @NonNls public static final String PROTOCOL = StandardFileSystems.HTTP_PROTOCOL;

  public static HttpFileSystem getInstance() {
    return (HttpFileSystem)VirtualFileManager.getInstance().getFileSystem(PROTOCOL);
  }

  public abstract boolean isFileDownloaded(@NotNull VirtualFile file);

  public abstract void addFileListener(@NotNull HttpVirtualFileListener listener);

  public abstract void addFileListener(@NotNull HttpVirtualFileListener listener, @NotNull Disposable parentDisposable);

  public abstract void removeFileListener(@NotNull HttpVirtualFileListener listener);

}