From d363916737bf53d8795d053167525f3ac9eeada8 Mon Sep 17 00:00:00 2001 From: Dmitry Batrak Date: Mon, 8 Dec 2014 17:47:19 +0300 Subject: [PATCH] IDEA-67763, IDEA-133381 allow to drop files/tabs into tab row --- .../impl/EditorTabbedContainer.java | 21 +++++++++++++++++++ .../fileEditor/impl/EditorsSplitters.java | 19 ----------------- 2 files changed, 21 insertions(+), 19 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/EditorTabbedContainer.java b/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/EditorTabbedContainer.java index 3fa0f751e9cb..6b7583c945b3 100644 --- a/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/EditorTabbedContainer.java +++ b/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/EditorTabbedContainer.java @@ -31,6 +31,7 @@ import com.intellij.openapi.fileEditor.FileEditor; import com.intellij.openapi.fileEditor.FileEditorManager; import com.intellij.openapi.fileEditor.ex.FileEditorManagerEx; import com.intellij.openapi.fileEditor.ex.IdeDocumentHistory; +import com.intellij.openapi.fileEditor.impl.text.FileDropHandler; import com.intellij.openapi.project.DumbAware; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.Queryable; @@ -61,6 +62,8 @@ import org.jetbrains.annotations.Nullable; import javax.swing.*; import java.awt.*; +import java.awt.datatransfer.DataFlavor; +import java.awt.datatransfer.Transferable; import java.awt.event.InputEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; @@ -86,6 +89,7 @@ public final class EditorTabbedContainer implements Disposable, CloseAction.Clos myProject = project; final ActionManager actionManager = ActionManager.getInstance(); myTabs = new JBEditorTabs(project, actionManager, IdeFocusManager.getInstance(project), this); + myTabs.setTransferHandler(new MyTransferHandler()); myTabs.setDataProvider(new MyDataProvider()).setPopupGroup(new Getter() { @Override public ActionGroup get() { @@ -717,5 +721,22 @@ public final class EditorTabbedContainer implements Disposable, CloseAction.Clos return myPinned; } } + + private final class MyTransferHandler extends TransferHandler { + private final FileDropHandler myFileDropHandler = new FileDropHandler(null); + @Override + public boolean importData(JComponent comp, Transferable t) { + if (myFileDropHandler.canHandleDrop(t.getTransferDataFlavors())) { + myFileDropHandler.handleDrop(t, myProject, myWindow); + return true; + } + return false; + } + + @Override + public boolean canImport(JComponent comp, DataFlavor[] transferFlavors) { + return myFileDropHandler.canHandleDrop(transferFlavors); + } + } } diff --git a/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/EditorsSplitters.java b/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/EditorsSplitters.java index c380d38a5db9..5d43eb6b142b 100644 --- a/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/EditorsSplitters.java +++ b/platform/platform-impl/src/com/intellij/openapi/fileEditor/impl/EditorsSplitters.java @@ -95,7 +95,6 @@ public class EditorsSplitters extends IdePanePanel implements UISettingsListener myManager = manager; myFocusWatcher = new MyFocusWatcher(); setFocusTraversalPolicy(new MyFocusTraversalPolicy()); - setTransferHandler(new MyTransferHandler()); clear(); if (createOwnDockableContainer) { @@ -768,24 +767,6 @@ public class EditorsSplitters extends IdePanePanel implements UISettingsListener } } - private final class MyTransferHandler extends TransferHandler { - private final FileDropHandler myFileDropHandler = new FileDropHandler(null); - - @Override - public boolean importData(JComponent comp, Transferable t) { - if (myFileDropHandler.canHandleDrop(t.getTransferDataFlavors())) { - myFileDropHandler.handleDrop(t, myManager.getProject(), myCurrentWindow); - return true; - } - return false; - } - - @Override - public boolean canImport(JComponent comp, DataFlavor[] transferFlavors) { - return myFileDropHandler.canHandleDrop(transferFlavors); - } - } - private abstract static class ConfigTreeReader { @Nullable public T process(@Nullable Element element, @Nullable T context) {