summaryrefslogtreecommitdiff
path: root/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/FileEditorManagerImpl.java
diff options
context:
space:
mode:
Diffstat (limited to 'platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/FileEditorManagerImpl.java')
-rw-r--r--platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/FileEditorManagerImpl.java69
1 files changed, 29 insertions, 40 deletions
diff --git a/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/FileEditorManagerImpl.java b/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/FileEditorManagerImpl.java
index 65adf52041b9..abf16d54c43d 100644
--- a/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/FileEditorManagerImpl.java
+++ b/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/FileEditorManagerImpl.java
@@ -58,7 +58,6 @@ import com.intellij.openapi.vcs.FileStatusListener;
import com.intellij.openapi.vcs.FileStatusManager;
import com.intellij.openapi.vfs.*;
import com.intellij.openapi.wm.IdeFocusManager;
-import com.intellij.openapi.wm.ToolWindowId;
import com.intellij.openapi.wm.ToolWindowManager;
import com.intellij.openapi.wm.WindowManager;
import com.intellij.openapi.wm.ex.StatusBarEx;
@@ -91,7 +90,6 @@ import java.beans.PropertyChangeListener;
import java.lang.ref.WeakReference;
import java.util.*;
import java.util.List;
-import java.util.concurrent.atomic.AtomicBoolean;
/**
* @author Anton Katilin
@@ -113,7 +111,6 @@ public class FileEditorManagerImpl extends FileEditorManagerEx implements Projec
private final Project myProject;
private final List<Pair<VirtualFile, EditorWindow>> mySelectionHistory = new ArrayList<Pair<VirtualFile, EditorWindow>>();
private WeakReference<EditorComposite> myLastSelectedComposite = new WeakReference<EditorComposite>(null);
- private final AtomicBoolean myPreviewBlocker = new AtomicBoolean(false);
private final MergingUpdateQueue myQueue = new MergingUpdateQueue("FileEditorManagerUpdateQueue", 50, true, null);
@@ -179,9 +176,9 @@ public class FileEditorManagerImpl extends FileEditorManagerEx implements Projec
public Set<EditorsSplitters> getAllSplitters() {
HashSet<EditorsSplitters> all = new LinkedHashSet<EditorsSplitters>();
- if (Registry.is("editor.use.preview")) {
- initUI();
- all.add(myPreviewPanel.getWindow().getOwner());
+ EditorWindow previewWindow = getPreviewWindow();
+ if (previewWindow != null) {
+ all.add(previewWindow.getOwner());
}
all.add(getMainSplitters());
Set<DockContainer> dockContainers = myDockManager.getContainers();
@@ -255,16 +252,23 @@ public class FileEditorManagerImpl extends FileEditorManagerEx implements Projec
}
}
}
- if (myPreviewPanel == null && Registry.is("editor.use.preview")) {
+ if (myPreviewPanel == null && PreviewPanel.isAvailable()) {
synchronized (myInitLock) {
myPreviewPanel = new PreviewPanel(myProject, this, myDockManager);
}
}
}
+ @Nullable
+ private EditorWindow getPreviewWindow() {
+ if (!PreviewPanel.isAvailable()) return null;
+ initUI();
+ return myPreviewPanel.getWindow();
+ }
+
private static class MyBorder implements Border {
@Override
- public void paintBorder(Component c, Graphics g, int x, int y, int width, int height) {
+ public void paintBorder(@NotNull Component c, @NotNull Graphics g, int x, int y, int width, int height) {
if (UIUtil.isUnderAquaLookAndFeel()) {
g.setColor(JBTabsImpl.MAC_AQUA_BG_COLOR);
final Insets insets = getBorderInsets(c);
@@ -274,6 +278,7 @@ public class FileEditorManagerImpl extends FileEditorManagerEx implements Projec
}
}
+ @NotNull
@Override
public Insets getBorderInsets(Component c) {
return JBInsets.NONE;
@@ -607,7 +612,7 @@ public class FileEditorManagerImpl extends FileEditorManagerEx implements Projec
@Override
@NotNull
public Pair<FileEditor[], FileEditorProvider[]> openFileWithProviders(@NotNull final VirtualFile file,
- final boolean focusEditor,
+ boolean focusEditor,
final boolean searchForSplitter) {
if (!file.isValid()) {
throw new IllegalArgumentException("file is not valid: " + file);
@@ -642,9 +647,10 @@ public class FileEditorManagerImpl extends FileEditorManagerEx implements Projec
}
if (wndToOpenIn == null || !wndToOpenIn.isFileOpen(file)) {
- EditorWindow previewWindow = getPreviewWindow(file, focusEditor, searchForSplitter);
+ EditorWindow previewWindow = getPreviewWindow();
if (previewWindow != null) {
wndToOpenIn = previewWindow;
+ focusEditor = true;
}
}
@@ -658,31 +664,6 @@ public class FileEditorManagerImpl extends FileEditorManagerEx implements Projec
return openFileImpl2(wndToOpenIn, file, focusEditor);
}
- @Nullable
- private EditorWindow getPreviewWindow(@NotNull VirtualFile virtualFile, final boolean focusEditor, final boolean searchForSplitter) {
- EditorWindow wndToOpenIn = null;
- if (Registry.is("editor.use.preview") && !myPreviewBlocker.get()) {
- wndToOpenIn = myPreviewPanel.getWindow();
- if (virtualFile.equals(myPreviewPanel.getCurrentFile())) return wndToOpenIn;
- final VirtualFile modifiedFile = myPreviewPanel.closeCurrentFile();
- ToolWindowManager.getInstance(myProject).getToolWindow(ToolWindowId.PREVIEW).activate(null, false);
- if (modifiedFile != null) {
- CommandProcessor.getInstance().executeCommand(myProject, new Runnable() {
- @Override
- public void run() {
- myPreviewBlocker.set(true);
- try {
- openFileWithProviders(modifiedFile, focusEditor, searchForSplitter);
- } finally {
- myPreviewBlocker.set(false);
- }
- }
- }, "", null);
- }
- }
- return wndToOpenIn;
- }
-
public Pair<FileEditor[], FileEditorProvider[]> openFileInNewWindow(@NotNull VirtualFile file) {
return ((DockManagerImpl)DockManager.getInstance(getProject())).createNewDockContainerFor(file, this);
}
@@ -805,7 +786,7 @@ public class FileEditorManagerImpl extends FileEditorManagerEx implements Projec
final FileEditorProvider provider = newProviders[i];
LOG.assertTrue(provider != null, "Provider for file "+file+" is null. All providers: "+Arrays.asList(newProviders));
LOG.assertTrue(provider.accept(myProject, file), "Provider " + provider + " doesn't accept file " + file);
- if ((provider instanceof AsyncFileEditorProvider)) {
+ if (provider instanceof AsyncFileEditorProvider) {
builders[i] = ((AsyncFileEditorProvider)provider).createEditorAsync(myProject, file);
}
}
@@ -944,7 +925,7 @@ public class FileEditorManagerImpl extends FileEditorManagerEx implements Projec
return Pair.create(compositeRef.get().getEditors(), compositeRef.get().getProviders());
}
- private void clearWindowIfNeeded(EditorWindow window) {
+ private static void clearWindowIfNeeded(EditorWindow window) {
if (UISettings.getInstance().EDITOR_TAB_PLACEMENT == UISettings.TABS_NONE || UISettings.getInstance().PRESENTATION_MODE) {
for (EditorWithProviderComposite composite : window.getEditors()) {
Disposer.dispose(composite);
@@ -1177,9 +1158,15 @@ public class FileEditorManagerImpl extends FileEditorManagerEx implements Projec
@Override
public Editor getSelectedTextEditor() {
- assertReadAccess();
+ return getSelectedTextEditor(false);
+ }
- final EditorWindow currentWindow = getSplitters().getCurrentWindow();
+ public Editor getSelectedTextEditor(boolean lockfree) {
+ if (!lockfree) {
+ assertDispatchThread();
+ }
+
+ final EditorWindow currentWindow = lockfree ? getMainSplitters().getCurrentWindow() : getSplitters().getCurrentWindow();
if (currentWindow != null) {
final EditorWithProviderComposite selectedEditor = currentWindow.getSelectedEditor();
if (selectedEditor != null && selectedEditor.getSelectedEditor() instanceof TextEditor) {
@@ -1191,6 +1178,7 @@ public class FileEditorManagerImpl extends FileEditorManagerEx implements Projec
}
+
@Override
public boolean isFileOpen(@NotNull final VirtualFile file) {
return !getEditorComposites(file).isEmpty();
@@ -1760,7 +1748,7 @@ public class FileEditorManagerImpl extends FileEditorManagerEx implements Projec
private final class MyEditorPropertyChangeListener implements PropertyChangeListener {
@Override
- public void propertyChange(final PropertyChangeEvent e) {
+ public void propertyChange(@NotNull final PropertyChangeEvent e) {
assertDispatchThread();
final String propertyName = e.getPropertyName();
@@ -1999,6 +1987,7 @@ public class FileEditorManagerImpl extends FileEditorManagerEx implements Projec
mySelectionHistory.remove(Pair.create(file, window));
}
+ @NotNull
@Override
public ActionCallback getReady(@NotNull Object requestor) {
return myBusyObject.getReady(requestor);