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