mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-211518: Open Project View and special files on first project opening
GitOrigin-RevId: 47823cd089e62df96acfb311dddfb1f00c1dbe1f
This commit is contained in:
committed by
intellij-monorepo-bot
parent
fdd99901db
commit
3bdc36e172
+25
@@ -2,15 +2,23 @@
|
||||
package com.intellij.ide.projectView.impl;
|
||||
|
||||
import com.intellij.ide.projectView.ProjectView;
|
||||
import com.intellij.ide.util.RunOnceUtil;
|
||||
import com.intellij.openapi.application.ex.ApplicationInfoEx;
|
||||
import com.intellij.openapi.fileEditor.impl.FileEditorManagerImpl;
|
||||
import com.intellij.openapi.project.DumbAware;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.IconLoader;
|
||||
import com.intellij.openapi.util.registry.Registry;
|
||||
import com.intellij.openapi.wm.ToolWindow;
|
||||
import com.intellij.openapi.wm.ToolWindowFactory;
|
||||
import com.intellij.openapi.wm.ToolWindowManager;
|
||||
import com.intellij.openapi.wm.ex.ToolWindowEx;
|
||||
import com.intellij.ui.IdeUICustomization;
|
||||
import com.intellij.util.ui.tree.TreeUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import javax.swing.JTree;
|
||||
|
||||
public final class ProjectViewToolWindowFactory implements ToolWindowFactory, DumbAware {
|
||||
@Override
|
||||
public void createToolWindowContent(@NotNull Project project, @NotNull ToolWindow toolWindow) {
|
||||
@@ -21,5 +29,22 @@ public final class ProjectViewToolWindowFactory implements ToolWindowFactory, Du
|
||||
public void init(@NotNull ToolWindow window) {
|
||||
window.setIcon(IconLoader.getIcon(ApplicationInfoEx.getInstanceEx().getToolWindowIconUrl(), ProjectViewToolWindowFactory.class));
|
||||
window.setStripeTitle(IdeUICustomization.getInstance().getProjectViewTitle());
|
||||
if (window instanceof ToolWindowEx && Registry.is("ide.open.project.view.on.startup")) {
|
||||
Project project = ((ToolWindowEx)window).getProject();
|
||||
if (Boolean.TRUE.equals(project.getUserData(FileEditorManagerImpl.NOTHING_WAS_OPENED_ON_START))) {
|
||||
RunOnceUtil.runOnceForProject(project, "OpenProjectViewOnStart", () -> {
|
||||
ToolWindowManager manager = ToolWindowManager.getInstance(project);
|
||||
manager.invokeLater(() -> {
|
||||
if (null == manager.getActiveToolWindowId()) {
|
||||
window.activate(() -> {
|
||||
AbstractProjectViewPane pane = ProjectView.getInstance(project).getCurrentProjectViewPane();
|
||||
JTree tree = pane == null ? null : pane.getTree();
|
||||
if (tree != null) TreeUtil.promiseSelectFirst(tree).onSuccess(tree::expandPath);
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1
@@ -107,6 +107,7 @@ import static com.intellij.openapi.actionSystem.IdeActions.ACTION_OPEN_IN_RIGHT_
|
||||
public class FileEditorManagerImpl extends FileEditorManagerEx implements PersistentStateComponent<Element>, Disposable {
|
||||
private static final Logger LOG = Logger.getInstance(FileEditorManagerImpl.class);
|
||||
protected static final Key<Boolean> DUMB_AWARE = Key.create("DUMB_AWARE");
|
||||
public static final Key<Boolean> NOTHING_WAS_OPENED_ON_START = Key.create("NOTHING_WAS_OPENED_ON_START");
|
||||
|
||||
private static final FileEditorProvider[] EMPTY_PROVIDER_ARRAY = {};
|
||||
public static final Key<Boolean> CLOSING_TO_REOPEN = Key.create("CLOSING_TO_REOPEN");
|
||||
|
||||
+1
-23
@@ -14,16 +14,10 @@ import com.intellij.openapi.startup.StartupActivity;
|
||||
import com.intellij.openapi.util.Ref;
|
||||
import com.intellij.openapi.util.registry.Registry;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.openapi.wm.ToolWindow;
|
||||
import com.intellij.openapi.wm.ToolWindowManager;
|
||||
import com.intellij.util.PlatformUtils;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import javax.swing.*;
|
||||
|
||||
import static com.intellij.openapi.wm.ToolWindowId.DATABASE_VIEW;
|
||||
import static com.intellij.openapi.wm.ToolWindowId.PROJECT_VIEW;
|
||||
|
||||
final class OpenFilesActivity implements StartupActivity {
|
||||
@Override
|
||||
public void runActivity(@NotNull Project project) {
|
||||
@@ -48,12 +42,10 @@ final class OpenFilesActivity implements StartupActivity {
|
||||
manager.initDockableContentFactory();
|
||||
EditorsSplitters.stopOpenFilesActivity(project);
|
||||
if (!manager.hasOpenFiles() && !ApplicationManager.getApplication().isHeadlessEnvironment()) {
|
||||
project.putUserData(FileEditorManagerImpl.NOTHING_WAS_OPENED_ON_START, true);
|
||||
if (Registry.is("ide.open.readme.md.on.startup")) {
|
||||
RunOnceUtil.runOnceForProject(project, "ShowReadmeOnStart", () -> findAndOpenReadme(project, manager));
|
||||
}
|
||||
if (Registry.is("ide.open.project.view.on.startup")) {
|
||||
RunOnceUtil.runOnceForProject(project, "OpenProjectViewOnStart", () -> openProjectView(project));
|
||||
}
|
||||
}
|
||||
}, project.getDisposed());
|
||||
}
|
||||
@@ -68,18 +60,4 @@ final class OpenFilesActivity implements StartupActivity {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static void openProjectView(@NotNull Project project) {
|
||||
ToolWindowManager manager = ToolWindowManager.getInstance(project);
|
||||
manager.invokeLater(() -> {
|
||||
if (null == manager.getActiveToolWindowId()) {
|
||||
ToolWindow window = manager.getToolWindow(PROJECT_VIEW);
|
||||
if (window != null) window.activate(null);
|
||||
if (PlatformUtils.isDataGrip()) {
|
||||
ToolWindow databaseView = manager.getToolWindow(DATABASE_VIEW);
|
||||
if (databaseView != null) databaseView.activate(null);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user