Java源码示例:com.intellij.ide.projectView.impl.ProjectViewPane

示例1
@Override
public void selectElement(final PsiElement element) {
  if (element != null) {
    final PackageSet packageSet = getCurrentScope().getValue();
    final PsiFile psiFile = element.getContainingFile();
    if (packageSet == null) return;
    final VirtualFile virtualFile = psiFile != null ? psiFile.getVirtualFile() : (element instanceof PsiDirectory ? ((PsiDirectory)element).getVirtualFile() : null);
    if (virtualFile != null) {
      final ProjectView projectView = ProjectView.getInstance(myProject);
      final NamedScopesHolder holder = NamedScopesHolder.getHolder(myProject, CURRENT_SCOPE_NAME, myDependencyValidationManager);
      if (packageSet instanceof PackageSetBase && !((PackageSetBase)packageSet).contains(virtualFile, holder) || psiFile != null && !packageSet.contains(psiFile, holder)) {
        projectView.changeView(ProjectViewPane.ID);
      }
      projectView.select(element, virtualFile, false);
    }
    Editor editor = EditorHelper.openInEditor(element);
    if (editor != null) {
      ToolWindowManager.getInstance(myProject).activateEditorComponent();
    }
  }
}
 
示例2
@Override
@RequiredUIAccess
public void addToolbarActions(@Nonnull AbstractProjectViewPane pane, @Nonnull DefaultActionGroup actionGroup)
{
	if(pane instanceof ProjectViewPane)
	{
		actionGroup.addAction(new ShowMetaFilesAction(pane)).setAsSecondary(true);
	}
}
 
示例3
public ScratchTreeStructureProvider(Project project) {
  registerUpdaters(project, project, new Runnable() {
    AbstractProjectViewPane updateTarget;

    @Override
    public void run() {
      if (updateTarget == null) {
        updateTarget = ProjectView.getInstance(project).getProjectViewPaneById(ProjectViewPane.ID);
      }
      if (updateTarget != null) updateTarget.updateFromRoot(true);
    }
  });
}
 
示例4
@Nonnull
public static ActionCallback select(@Nonnull Project project,
                                    final Object toSelect,
                                    @Nullable final String viewId,
                                    @Nullable final String subviewId,
                                    final VirtualFile virtualFile,
                                    final boolean requestFocus) {
  final ActionCallback result = new ActionCallback();

  final ProjectView projectView = ProjectView.getInstance(project);
  if (ApplicationManager.getApplication().isUnitTestMode()) {
    AbstractProjectViewPane pane = projectView.getProjectViewPaneById(ProjectViewPane.ID);
    pane.select(toSelect, virtualFile, requestFocus);
    return result;
  }

  ToolWindowManager windowManager = ToolWindowManager.getInstance(project);
  final ToolWindow projectViewToolWindow = windowManager.getToolWindow(ToolWindowId.PROJECT_VIEW);
  final Runnable runnable = () -> {
    Runnable r = () -> projectView.selectCB(toSelect, virtualFile, requestFocus).notify(result);
    projectView.changeViewCB(ObjectUtils.chooseNotNull(viewId, ProjectViewPane.ID), subviewId).doWhenProcessed(r);
  };

  if (requestFocus) {
    projectViewToolWindow.activate(runnable, true);
  }
  else {
    projectViewToolWindow.show(runnable);
  }

  return result;
}
 
示例5
public void createProject() {
  IdeFrame frame = IdeFocusManager.getGlobalInstance().getLastFocusedFrame();
  final Project projectToClose = frame != null ? frame.getProject() : null;

  VirtualFile baseDir = getLocationFromModel(projectToClose, true);
  if (baseDir == null) {
    return;
  }
  //noinspection ConstantConditions (Keep this refresh even if the converter is removed.)
  VfsUtil.markDirtyAndRefresh(false, true, true, baseDir);

  // Create the project files using 'flutter create'.
  FlutterSdk sdk = FlutterSdk.forPath(myModel.flutterSdk().get());
  if (sdk == null) {
    FlutterMessages.showError("Error creating project", myModel.flutterSdk().get() + " is not a valid Flutter SDK");
    return;
  }
  final OutputListener listener = new OutputListener();
  // TODO(messick,pq): Refactor createFiles() to accept a logging interface instead of module, and display it in the wizard.
  ProgressManager progress = ProgressManager.getInstance();
  AtomicReference<PubRoot> result = new AtomicReference<>(null);
  progress.runProcessWithProgressSynchronously(() -> {
    progress.getProgressIndicator().setIndeterminate(true);
    sdk.createFiles(baseDir, null, listener, makeAdditionalSettings());
    VfsUtil.markDirtyAndRefresh(false, true, true, baseDir);
    result.set(PubRoot.forDirectory(baseDir));
  }, "Creating Flutter Project", false, null);
  PubRoot root = result.get();
  if (root == null) {
    String stderr = listener.getOutput().getStderr();
    FlutterMessages.showError("Error creating project", stderr.isEmpty() ? "Flutter create command was unsuccessful" : stderr);
    return;
  }

  Project project = null;
  if (myModel.shouldOpenNewWindow()) {
    // Open the project window.
    EnumSet<PlatformProjectOpenProcessor.Option> options = EnumSet.noneOf(PlatformProjectOpenProcessor.Option.class);
    project = PlatformProjectOpenProcessor.doOpenProject(baseDir, projectToClose, -1, null, options);
  }

  if (project != null) {
    // Android Studio changes the default project type, so we need to set it.
    ProjectTypeService.setProjectType(project, ProjectOpenActivity.FLUTTER_PROJECT_TYPE);
    disableGradleProjectMigrationNotification(project);
    disableUserConfig(project);
    Project proj = project;
    StartupManager.getInstance(project).registerPostStartupActivity(
      () -> ApplicationManager.getApplication().invokeLater(
        () -> {
          // We want to show the Project view, not the Android view since it doesn't make the Dart code visible.
          DumbService.getInstance(proj).runWhenSmart(
            () -> {
              ToolWindowManager.getInstance(proj).getToolWindow(ToolWindowId.PROJECT_VIEW).activate(null);
              ProjectView.getInstance(proj).changeView(ProjectViewPane.ID);
            });
        }, ModalityState.defaultModalityState()));
  }
}
 
示例6
public void createProject() {
  IdeFrame frame = IdeFocusManager.getGlobalInstance().getLastFocusedFrame();
  final Project projectToClose = frame != null ? frame.getProject() : null;

  VirtualFile baseDir = getLocationFromModel(projectToClose, true);
  if (baseDir == null) {
    return;
  }
  //noinspection ConstantConditions (Keep this refresh even if the converter is removed.)
  VfsUtil.markDirtyAndRefresh(false, true, true, baseDir);

  // Create the project files using 'flutter create'.
  FlutterSdk sdk = FlutterSdk.forPath(myModel.flutterSdk().get());
  if (sdk == null) {
    FlutterMessages.showError("Error creating project", myModel.flutterSdk().get() + " is not a valid Flutter SDK");
    return;
  }
  final OutputListener listener = new OutputListener();
  // TODO(messick,pq): Refactor createFiles() to accept a logging interface instead of module, and display it in the wizard.
  ProgressManager progress = ProgressManager.getInstance();
  AtomicReference<PubRoot> result = new AtomicReference<>(null);
  progress.runProcessWithProgressSynchronously(() -> {
    progress.getProgressIndicator().setIndeterminate(true);
    sdk.createFiles(baseDir, null, listener, makeAdditionalSettings());
    VfsUtil.markDirtyAndRefresh(false, true, true, baseDir);
    result.set(PubRoot.forDirectory(baseDir));
  }, "Creating Flutter Project", false, null);
  PubRoot root = result.get();
  if (root == null) {
    String stderr = listener.getOutput().getStderr();
    FlutterMessages.showError("Error creating project", stderr.isEmpty() ? "Flutter create command was unsuccessful" : stderr);
    return;
  }

  Project project = null;
  if (myModel.shouldOpenNewWindow()) {
    // Open the project window.
    EnumSet<PlatformProjectOpenProcessor.Option> options = EnumSet.noneOf(PlatformProjectOpenProcessor.Option.class);
    project = PlatformProjectOpenProcessor.doOpenProject(baseDir, projectToClose, -1, null, options);
  }

  if (project != null) {
    // Android Studio changes the default project type, so we need to set it.
    ProjectTypeService.setProjectType(project, ProjectOpenActivity.FLUTTER_PROJECT_TYPE);
    disableGradleProjectMigrationNotification(project);
    disableUserConfig(project);
    Project proj = project;
    StartupManager.getInstance(project).registerPostStartupActivity(
      () -> ApplicationManager.getApplication().invokeLater(
        () -> {
          // We want to show the Project view, not the Android view since it doesn't make the Dart code visible.
          DumbService.getInstance(proj).runWhenSmart(
            () -> {
              ToolWindowManager.getInstance(proj).getToolWindow(ToolWindowId.PROJECT_VIEW).activate(null);
              ProjectView.getInstance(proj).changeView(ProjectViewPane.ID);
            });
        }, ModalityState.defaultModalityState()));
  }
}
 
示例7
@Override
public void addToolbarActions(@Nonnull AbstractProjectViewPane pane, @Nonnull DefaultActionGroup actionGroup) {
  if (pane instanceof ProjectViewPane) {
    actionGroup.addAction(new ShowExcludedFilesAction(pane)).setAsSecondary(true);
  }
}
 
示例8
@Override
public boolean contains(@Nonnull VirtualFile file) {
  return ProjectViewPane.canBeSelectedInProjectView(myProject, file);
}
 
示例9
@Override
public void navigateToDirectory(@Nonnull PsiDirectory psiDirectory, boolean requestFocus) {
  ProjectViewSelectInTarget.select(psiDirectory.getProject(), this, ProjectViewPane.ID, null, psiDirectory.getVirtualFile(), requestFocus);
}
 
示例10
public boolean canSelect(PsiFileSystemItem file) {
  if (!super.canSelect(file)) return false;
  final VirtualFile vFile = file.getVirtualFile();
  return vFile != null && ProjectViewPane.canBeSelectedInProjectView(myProject, vFile);
}
 
示例11
public String getMinorViewId() {
  return ProjectViewPane.ID;
}