Java 类com.intellij.openapi.vfs.newvfs.events.VFileCreateEvent 实例源码

项目:intellij-ce-playground    文件:VirtualFilePointerTest.java   
public void testManyPointersUpdatePerformance() throws IOException {
  LoggingListener listener = new LoggingListener();
  final List<VFileEvent> events = new ArrayList<VFileEvent>();
  final File ioTempDir = createTempDirectory();
  final VirtualFile temp = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(ioTempDir);
  for (int i=0; i<100000; i++) {
    myVirtualFilePointerManager.create(VfsUtilCore.pathToUrl("/a/b/c/d/" + i), disposable, listener);
    events.add(new VFileCreateEvent(this, temp, "xxx" + i, false, true));
  }
  PlatformTestUtil.startPerformanceTest("vfp update", 10000, new ThrowableRunnable() {
    @Override
    public void run() throws Throwable {
      for (int i=0; i<100; i++) {
        // simulate VFS refresh events since launching the actual refresh is too slow
        myVirtualFilePointerManager.before(events);
        myVirtualFilePointerManager.after(events);
      }
    }
  }).assertTiming();
}
项目:tools-idea    文件:VirtualFilePointerTest.java   
public void testManyPointersUpdatePerformance() throws IOException {
  FilePointerPartNode.pushDebug(false, disposable);
  LoggingListener listener = new LoggingListener();
  final List<VFileEvent> events = new ArrayList<VFileEvent>();
  final File ioTempDir = createTempDirectory();
  final VirtualFile temp = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(ioTempDir);
  for (int i=0; i<100000; i++) {
    myVirtualFilePointerManager.create(VfsUtilCore.pathToUrl("/a/b/c/d/" + i), disposable, listener);
    events.add(new VFileCreateEvent(this, temp, "xxx" + i, false, true));
  }
  PlatformTestUtil.startPerformanceTest("vfp update", 10000, new ThrowableRunnable() {
    @Override
    public void run() throws Throwable {
      for (int i=0; i<100; i++) {
        // simulate VFS refresh events since launching the actual refresh is too slow
        myVirtualFilePointerManager.before(events);
        myVirtualFilePointerManager.after(events);
      }
    }
  }).assertTiming();
}
项目:buck    文件:HandlePackageCreation.java   
@Override
public void onFileCreate(VFileCreateEvent event, Facet facet) {
  String newFile = event.getPath();
  Module module = facet.getModule();
  ModifiableRootModel rootModel = ModuleRootManager.getInstance(module).getModifiableModel();
  VirtualFile virtualFile = LocalFileSystem.getInstance().refreshAndFindFileByPath(newFile);
  ContentEntry contentEntry = getContentRootFor(virtualFile, rootModel);
  if (contentEntry != null) {
    contentEntry.addSourceFolder(virtualFile.getUrl(), false);
    rootModel.commit();
  } else {
    ErrorDialog.showErrorDialog(
        module.getProject(),
        "Can't find Content Root",
        "Can't find Content Root for %s",
        virtualFile);
  }
}
项目:buck    文件:MoveResourceFiles.java   
@Override
public void onFileCreate(VFileCreateEvent event, Facet facet) {
  Project project = facet.getModule().getProject();

  FileEditorManager fileEditorManager = FileEditorManager.getInstance(project);
  VirtualFile[] selectedFiles = fileEditorManager.getSelectedFiles();
  if (selectedFiles.length != 1) {
    log(
        "Oh, dear. We have a new file in a Project View resource directory, but we have %d selected files",
        selectedFiles.length);
    ErrorDialog.showErrorDialog(
        project,
        "Error moving new file",
        "We have a new file in a Project View resource directory, but we have %d selected files and so don't know which BUCK file to examine",
        selectedFiles.length);
    return; // we are expecting a SINGLE file, here
  }
  VirtualFile selection = selectedFiles[0];

  Editor editor = fileEditorManager.getSelectedTextEditor();

  moveResourceFile(event.getPath(), project, selection, editor);
}
项目:consulo    文件:VirtualFilePointerTest.java   
public void testManyPointersUpdatePerformance() throws IOException {
  LoggingListener listener = new LoggingListener();
  final List<VFileEvent> events = new ArrayList<VFileEvent>();
  final File ioTempDir = createTempDirectory();
  final VirtualFile temp = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(ioTempDir);
  for (int i=0; i<100000; i++) {
    myVirtualFilePointerManager.create(VfsUtilCore.pathToUrl("/a/b/c/d/" + i), disposable, listener);
    events.add(new VFileCreateEvent(this, temp, "xxx" + i, false, true));
  }
  PlatformTestUtil.startPerformanceTest("vfp update", 10000, new ThrowableRunnable() {
    @Override
    public void run() throws Throwable {
      for (int i=0; i<100; i++) {
        // simulate VFS refresh events since launching the actual refresh is too slow
        myVirtualFilePointerManager.before(events);
        myVirtualFilePointerManager.after(events);
      }
    }
  }).assertTiming();
}
项目:manifold-ij    文件:FileModificationManager.java   
private void _after( final List<? extends VFileEvent> events )
{
  if( _project.isDisposed() )
  {
    return;
  }

  for( VFileEvent event : events )
  {
    final VirtualFile file = event.getFile();
    if( file != null )
    {
      if( event instanceof VFileCreateEvent )
      {
        fireCreatedEvent( file );
      }
      else if( event instanceof VFileDeleteEvent )
      {
        fireDeletedEvent( file );
      }
      else if( event instanceof VFileCopyEvent )
      {
        processFileCopyEvent( (VFileCopyEvent)event );
      }
      else if( isMoveOrRename( event ) )
      {
        processRenameAfter( event );
      }
      else // modified
      {
        ApplicationManager.getApplication().runReadAction( () -> fireModifiedEvent( file ) );
      }
    }
  }
}
项目:intellij-ce-playground    文件:VirtualDirectoryImpl.java   
@Nullable
private VirtualFileSystemEntry createAndFindChildWithEventFire(@NotNull String name, @NotNull NewVirtualFileSystem delegate) {
  final VirtualFile fake = new FakeVirtualFile(this, name);
  final FileAttributes attributes = delegate.getAttributes(fake);
  if (attributes == null) return null;
  final String realName = delegate.getCanonicallyCasedName(fake);
  final VFileCreateEvent event = new VFileCreateEvent(null, this, realName, attributes.isDirectory(), true);
  RefreshQueue.getInstance().processSingleEvent(event);
  return findChild(realName);
}
项目:intellij    文件:BulkSymbolTableBuildingChangeListener.java   
@Override
public void after(List<? extends VFileEvent> events) {
  if (!enabled) {
    return;
  }
  for (VFileEvent event : events) {
    VirtualFile modifiedFile = null;
    // Skip delete events.
    if (event instanceof VFileContentChangeEvent || event instanceof VFileCreateEvent) {
      modifiedFile = event.getFile();
    } else if (event instanceof VFileCopyEvent) {
      VFileCopyEvent copyEvent = (VFileCopyEvent) event;
      modifiedFile = copyEvent.getNewParent();
    } else if (event instanceof VFileMoveEvent) {
      VFileMoveEvent moveEvent = (VFileMoveEvent) event;
      modifiedFile = moveEvent.getNewParent();
    } else if (event instanceof VFilePropertyChangeEvent) {
      VFilePropertyChangeEvent propEvent = (VFilePropertyChangeEvent) event;
      // Check for file renames (sometimes we get property change events without the name
      // actually changing though)
      if (propEvent.getPropertyName().equals(VirtualFile.PROP_NAME)
          && !propEvent.getOldValue().equals(propEvent.getNewValue())) {
        modifiedFile = propEvent.getFile();
      }
    }
    if (SymbolTableProvider.isSourceFile(modifiedFile)) {
      queueChange(modifiedFile);
    }
  }
}
项目:tools-idea    文件:VirtualDirectoryImpl.java   
@Nullable
private VirtualFileSystemEntry createAndFindChildWithEventFire(@NotNull String name, @NotNull NewVirtualFileSystem delegate) {
  final VirtualFile fake = new FakeVirtualFile(this, name);
  final FileAttributes attributes = delegate.getAttributes(fake);
  if (attributes == null) return null;
  final String realName = delegate.getCanonicallyCasedName(fake);
  final VFileCreateEvent event = new VFileCreateEvent(null, this, realName, attributes.isDirectory(), true);
  RefreshQueue.getInstance().processSingleEvent(event);
  return findChild(realName);
}
项目:consulo    文件:VirtualDirectoryImpl.java   
@Nullable
private VirtualFileSystemEntry createAndFindChildWithEventFire(@Nonnull String name, @Nonnull NewVirtualFileSystem delegate) {
  final VirtualFile fake = new FakeVirtualFile(this, name);
  final FileAttributes attributes = delegate.getAttributes(fake);
  if (attributes == null) return null;
  final String realName = delegate.getCanonicallyCasedName(fake);
  final VFileCreateEvent event = new VFileCreateEvent(null, this, realName, attributes.isDirectory(), true);
  RefreshQueue.getInstance().processSingleEvent(event);
  return findChild(realName);
}
项目:intellij-ce-playground    文件:VfsImplUtil.java   
private static void checkSubscription() {
  if (ourSubscribed.getAndSet(true)) return;

  Application app = ApplicationManager.getApplication();
  app.getMessageBus().connect(app).subscribe(VirtualFileManager.VFS_CHANGES, new BulkFileListener.Adapter() {
    @Override
    public void after(@NotNull List<? extends VFileEvent> events) {
      InvalidationState state = null;

      synchronized (ourLock) {
        for (VFileEvent event : events) {
          if (!(event.getFileSystem() instanceof LocalFileSystem)) continue;

          if (event instanceof VFileCreateEvent) continue; // created file should not invalidate + getFile is costly

          if (event instanceof VFilePropertyChangeEvent &&
              !VirtualFile.PROP_NAME.equals(((VFilePropertyChangeEvent)event).getPropertyName())) {
            continue;
          }

          String path = event.getPath();
          if (event instanceof VFilePropertyChangeEvent) {
            path = ((VFilePropertyChangeEvent)event).getOldPath();
          }
          else if (event instanceof VFileMoveEvent) {
            path = ((VFileMoveEvent)event).getOldPath();
          }

          VirtualFile file = event.getFile();
          if (file == null || !file.isDirectory()) {
            state = InvalidationState.invalidate(state, path);
          }
          else {
            Collection<String> affectedPaths = ourDominatorsMap.get(path);
            if (affectedPaths != null) {
              affectedPaths = ContainerUtil.newArrayList(affectedPaths);  // defensive copying; original may be updated on invalidation
              for (String affectedPath : affectedPaths) {
                state = InvalidationState.invalidate(state, affectedPath);
              }
            }
          }
        }
      }

      if (state != null) state.scheduleRefresh();
    }
  });
}
项目:intellij-ce-playground    文件:PushedFilePropertiesUpdaterImpl.java   
public void processAfterVfsChanges(@NotNull List<? extends VFileEvent> events) {
  boolean pushedSomething = false;
  List<Runnable> delayedTasks = ContainerUtil.newArrayList();
  for (VFileEvent event : events) {
    final VirtualFile file = event.getFile();
    if (file == null) continue;

    final FilePropertyPusher[] pushers = file.isDirectory() ? myPushers : myFilePushers;
    if (pushers.length == 0) continue;

    if (event instanceof VFileCreateEvent) {
      if (!event.isFromRefresh() || !file.isDirectory()) {
        // push synchronously to avoid entering dumb mode in the middle of a meaningful write action
        // avoid dumb mode for just one file
        doPushRecursively(file, pushers, ProjectRootManager.getInstance(myProject).getFileIndex());
        pushedSomething = true;
      }
      else if (!ProjectCoreUtil.isProjectOrWorkspaceFile(file)) {
        ContainerUtil.addIfNotNull(delayedTasks, createRecursivePushTask(file, pushers));
      }
    } else if (event instanceof VFileMoveEvent) {
      for (FilePropertyPusher pusher : pushers) {
        file.putUserData(pusher.getFileDataKey(), null);
      }
      // push synchronously to avoid entering dumb mode in the middle of a meaningful write action
      doPushRecursively(file, pushers, ProjectRootManager.getInstance(myProject).getFileIndex());
      pushedSomething = true;
    }
  }
  if (!delayedTasks.isEmpty()) {
    queueTasks(delayedTasks);
  }
  if (pushedSomething) {
    Application application = ApplicationManager.getApplication();
    Runnable runnable = new Runnable() {
      @Override
      public void run() {
        scheduleDumbModeReindexingIfNeeded();
      }
    };
    if (application.isUnitTestMode()) {
      runnable.run();
    } else {
      application.invokeLater(runnable);
    }
  }
}
项目:consulo    文件:VfsImplUtil.java   
private static void checkSubscription() {
  if (ourSubscribed.getAndSet(true)) return;

  Application app = ApplicationManager.getApplication();
  app.getMessageBus().connect(app).subscribe(VirtualFileManager.VFS_CHANGES, new BulkFileListener.Adapter() {
    @Override
    public void after(@Nonnull List<? extends VFileEvent> events) {
      InvalidationState state = null;

      synchronized (ourLock) {
        for (VFileEvent event : events) {
          if (!(event.getFileSystem() instanceof LocalFileSystem)) continue;

          if (event instanceof VFileCreateEvent) continue; // created file should not invalidate + getFile is costly

          if (event instanceof VFilePropertyChangeEvent && !VirtualFile.PROP_NAME.equals(((VFilePropertyChangeEvent)event).getPropertyName())) {
            continue;
          }

          String path = event.getPath();
          if (event instanceof VFilePropertyChangeEvent) {
            path = ((VFilePropertyChangeEvent)event).getOldPath();
          }
          else if (event instanceof VFileMoveEvent) {
            path = ((VFileMoveEvent)event).getOldPath();
          }

          VirtualFile file = event.getFile();
          if (file == null || !file.isDirectory()) {
            state = InvalidationState.invalidate(state, path);
          }
          else {
            Collection<String> affectedPaths = ourDominatorsMap.get(path);
            if (affectedPaths != null) {
              affectedPaths = ContainerUtil.newArrayList(affectedPaths);  // defensive copying; original may be updated on invalidation
              for (String affectedPath : affectedPaths) {
                state = InvalidationState.invalidate(state, affectedPath);
              }
            }
          }
        }
      }

      if (state != null) state.scheduleRefresh();
    }
  });
}
项目:consulo    文件:PushedFilePropertiesUpdaterImpl.java   
public void processAfterVfsChanges(@Nonnull List<? extends VFileEvent> events) {
  boolean pushedSomething = false;
  List<Runnable> delayedTasks = ContainerUtil.newArrayList();
  for (VFileEvent event : events) {
    final VirtualFile file = event.getFile();
    if (file == null) continue;

    final FilePropertyPusher[] pushers = file.isDirectory() ? myPushers : myFilePushers;
    if (pushers.length == 0) continue;

    if (event instanceof VFileCreateEvent) {
      if (!event.isFromRefresh() || !file.isDirectory()) {
        // push synchronously to avoid entering dumb mode in the middle of a meaningful write action
        // avoid dumb mode for just one file
        doPushRecursively(file, pushers, ProjectRootManager.getInstance(myProject).getFileIndex());
        pushedSomething = true;
      }
      else if (!ProjectCoreUtil.isProjectOrWorkspaceFile(file)) {
        ContainerUtil.addIfNotNull(delayedTasks, createRecursivePushTask(file, pushers));
      }
    } else if (event instanceof VFileMoveEvent) {
      for (FilePropertyPusher pusher : pushers) {
        file.putUserData(pusher.getFileDataKey(), null);
      }
      // push synchronously to avoid entering dumb mode in the middle of a meaningful write action
      doPushRecursively(file, pushers, ProjectRootManager.getInstance(myProject).getFileIndex());
      pushedSomething = true;
    }
  }
  if (!delayedTasks.isEmpty()) {
    queueTasks(delayedTasks);
  }
  if (pushedSomething) {
    GuiUtils.invokeLaterIfNeeded(new Runnable() {
      @Override
      public void run() {
        PushedFilePropertiesUpdaterImpl.this.scheduleDumbModeReindexingIfNeeded();
      }
    }, ModalityState.defaultModalityState());
  }
}
项目:buck    文件:FileCreateHandler.java   
void onFileCreate(VFileCreateEvent event, Facet facet);