diff --git a/python/ipnb/src/org/jetbrains/plugins/ipnb/editor/IpnbEditorProvider.java b/python/ipnb/src/org/jetbrains/plugins/ipnb/editor/IpnbEditorProvider.java index 6b17ce0c1bc7..5eae76c5509f 100644 --- a/python/ipnb/src/org/jetbrains/plugins/ipnb/editor/IpnbEditorProvider.java +++ b/python/ipnb/src/org/jetbrains/plugins/ipnb/editor/IpnbEditorProvider.java @@ -67,6 +67,6 @@ public class IpnbEditorProvider implements FileEditorProvider, DumbAware { @NotNull @Override public FileEditorPolicy getPolicy() { - return FileEditorPolicy.PLACE_BEFORE_DEFAULT_EDITOR; + return FileEditorPolicy.HIDE_DEFAULT_EDITOR; } } diff --git a/python/ipnb/src/org/jetbrains/plugins/ipnb/editor/IpnbFileEditor.java b/python/ipnb/src/org/jetbrains/plugins/ipnb/editor/IpnbFileEditor.java index ad82df9d56b5..685ea9d27620 100644 --- a/python/ipnb/src/org/jetbrains/plugins/ipnb/editor/IpnbFileEditor.java +++ b/python/ipnb/src/org/jetbrains/plugins/ipnb/editor/IpnbFileEditor.java @@ -6,19 +6,15 @@ import com.intellij.icons.AllIcons; import com.intellij.ide.structureView.StructureViewBuilder; import com.intellij.openapi.actionSystem.CustomShortcutSet; import com.intellij.openapi.editor.Document; -import com.intellij.openapi.editor.Editor; import com.intellij.openapi.fileEditor.*; -import com.intellij.openapi.fileEditor.ex.FileEditorProviderManager; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.ComboBox; import com.intellij.openapi.util.Disposer; import com.intellij.openapi.util.UserDataHolderBase; import com.intellij.openapi.vfs.VirtualFile; -import com.intellij.pom.Navigatable; import com.intellij.ui.JBColor; import com.intellij.ui.ScrollPaneFactory; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; import org.jetbrains.plugins.ipnb.editor.actions.*; import org.jetbrains.plugins.ipnb.editor.panels.*; import org.jetbrains.plugins.ipnb.editor.panels.code.IpnbCodePanel; @@ -41,15 +37,15 @@ import java.util.List; /** * @author traff */ -public class IpnbFileEditor extends UserDataHolderBase implements FileEditor, TextEditor { +public class IpnbFileEditor extends UserDataHolderBase implements FileEditor { private final VirtualFile myFile; private final String myName; private final JComponent myEditorPanel; - private final TextEditor myEditor; private final IpnbFilePanel myIpnbFilePanel; + private final Document myDocument; private ComboBox myCellTypeCombo; private static final String codeCellType = "Code"; private static final String markdownCellType = "Markdown"; @@ -63,12 +59,14 @@ public class IpnbFileEditor extends UserDataHolderBase implements FileEditor, Te public IpnbFileEditor(Project project, final VirtualFile vFile) { + myDocument = FileDocumentManager.getInstance().getDocument(vFile); project.getMessageBus().connect(this).subscribe(FileEditorManagerListener.Before.FILE_EDITOR_MANAGER, new FileEditorManagerListener.Before.Adapter() { @Override public void beforeFileClosed(@NotNull FileEditorManager source, @NotNull VirtualFile file) { if (!new File(file.getPath()).exists()) return; - final Document document = getEditor().getDocument(); - FileDocumentManager.getInstance().saveDocument(document); + + if (myDocument == null) return; + FileDocumentManager.getInstance().saveDocument(myDocument); IpnbParser.saveIpnbFile(myIpnbFilePanel); file.refresh(false, false); } @@ -78,8 +76,6 @@ public class IpnbFileEditor extends UserDataHolderBase implements FileEditor, Te myName = vFile.getName(); - myEditor = createEditor(project, vFile); - myEditorPanel = new JPanel(new BorderLayout()); myEditorPanel.setBackground(IpnbEditorUtil.getBackground()); @@ -94,6 +90,10 @@ public class IpnbFileEditor extends UserDataHolderBase implements FileEditor, Te registerHeadingActions(); } + public Document getDocument() { + return myDocument; + } + private void registerHeadingActions() { new IpnbHeading1CellAction().registerCustomShortcutSet(new CustomShortcutSet(KeyStroke.getKeyStroke("ctrl shift 1")), myIpnbFilePanel); new IpnbHeading2CellAction().registerCustomShortcutSet(new CustomShortcutSet(KeyStroke.getKeyStroke("ctrl shift 2")), myIpnbFilePanel); @@ -417,46 +417,6 @@ public class IpnbFileEditor extends UserDataHolderBase implements FileEditor, Te @Override public void dispose() { - Disposer.dispose(myEditor); - } - - @NotNull - @Override - public Editor getEditor() { - return myEditor.getEditor(); - } - - @Override - public boolean canNavigateTo(@NotNull Navigatable navigatable) { - return true; - } - - @Override - public void navigateTo(@NotNull Navigatable navigatable) { - } - - @Nullable - private static TextEditor createEditor(@NotNull Project project, @NotNull VirtualFile vFile) { - FileEditorProvider provider = getProvider(project, vFile); - - if (provider != null) { - FileEditor editor = provider.createEditor(project, vFile); - if (editor instanceof TextEditor) { - return (TextEditor)editor; - } - } - return null; - } - - @Nullable - private static FileEditorProvider getProvider(Project project, VirtualFile vFile) { - FileEditorProvider[] providers = FileEditorProviderManager.getInstance().getProviders(project, vFile); - for (FileEditorProvider provider : providers) { - if (!(provider instanceof IpnbEditorProvider)) { - return provider; - } - } - return null; } public abstract static class CellSelectionListener { diff --git a/python/ipnb/src/org/jetbrains/plugins/ipnb/editor/panels/IpnbFilePanel.java b/python/ipnb/src/org/jetbrains/plugins/ipnb/editor/panels/IpnbFilePanel.java index 5017073ebf15..0de2d5795688 100644 --- a/python/ipnb/src/org/jetbrains/plugins/ipnb/editor/panels/IpnbFilePanel.java +++ b/python/ipnb/src/org/jetbrains/plugins/ipnb/editor/panels/IpnbFilePanel.java @@ -78,7 +78,7 @@ public class IpnbFilePanel extends JPanel implements Scrollable, DataProvider, D alarm.addRequest(new MySynchronizeRequest(), 10, ModalityState.stateForComponent(IpnbFilePanel.this)); } }; - myDocument = myParent.getEditor().getDocument(); + myDocument = myParent.getDocument(); myDocument.addDocumentListener(myDocumentListener); alarm.addRequest(new Runnable() {