mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-67763, IDEA-133381 allow to drop files/tabs into tab row
This commit is contained in:
+21
@@ -31,6 +31,7 @@ import com.intellij.openapi.fileEditor.FileEditor;
|
|||||||
import com.intellij.openapi.fileEditor.FileEditorManager;
|
import com.intellij.openapi.fileEditor.FileEditorManager;
|
||||||
import com.intellij.openapi.fileEditor.ex.FileEditorManagerEx;
|
import com.intellij.openapi.fileEditor.ex.FileEditorManagerEx;
|
||||||
import com.intellij.openapi.fileEditor.ex.IdeDocumentHistory;
|
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.DumbAware;
|
||||||
import com.intellij.openapi.project.Project;
|
import com.intellij.openapi.project.Project;
|
||||||
import com.intellij.openapi.ui.Queryable;
|
import com.intellij.openapi.ui.Queryable;
|
||||||
@@ -61,6 +62,8 @@ import org.jetbrains.annotations.Nullable;
|
|||||||
|
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
|
import java.awt.datatransfer.DataFlavor;
|
||||||
|
import java.awt.datatransfer.Transferable;
|
||||||
import java.awt.event.InputEvent;
|
import java.awt.event.InputEvent;
|
||||||
import java.awt.event.MouseAdapter;
|
import java.awt.event.MouseAdapter;
|
||||||
import java.awt.event.MouseEvent;
|
import java.awt.event.MouseEvent;
|
||||||
@@ -86,6 +89,7 @@ public final class EditorTabbedContainer implements Disposable, CloseAction.Clos
|
|||||||
myProject = project;
|
myProject = project;
|
||||||
final ActionManager actionManager = ActionManager.getInstance();
|
final ActionManager actionManager = ActionManager.getInstance();
|
||||||
myTabs = new JBEditorTabs(project, actionManager, IdeFocusManager.getInstance(project), this);
|
myTabs = new JBEditorTabs(project, actionManager, IdeFocusManager.getInstance(project), this);
|
||||||
|
myTabs.setTransferHandler(new MyTransferHandler());
|
||||||
myTabs.setDataProvider(new MyDataProvider()).setPopupGroup(new Getter<ActionGroup>() {
|
myTabs.setDataProvider(new MyDataProvider()).setPopupGroup(new Getter<ActionGroup>() {
|
||||||
@Override
|
@Override
|
||||||
public ActionGroup get() {
|
public ActionGroup get() {
|
||||||
@@ -717,5 +721,22 @@ public final class EditorTabbedContainer implements Disposable, CloseAction.Clos
|
|||||||
return myPinned;
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -95,7 +95,6 @@ public class EditorsSplitters extends IdePanePanel implements UISettingsListener
|
|||||||
myManager = manager;
|
myManager = manager;
|
||||||
myFocusWatcher = new MyFocusWatcher();
|
myFocusWatcher = new MyFocusWatcher();
|
||||||
setFocusTraversalPolicy(new MyFocusTraversalPolicy());
|
setFocusTraversalPolicy(new MyFocusTraversalPolicy());
|
||||||
setTransferHandler(new MyTransferHandler());
|
|
||||||
clear();
|
clear();
|
||||||
|
|
||||||
if (createOwnDockableContainer) {
|
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<T> {
|
private abstract static class ConfigTreeReader<T> {
|
||||||
@Nullable
|
@Nullable
|
||||||
public T process(@Nullable Element element, @Nullable T context) {
|
public T process(@Nullable Element element, @Nullable T context) {
|
||||||
|
|||||||
Reference in New Issue
Block a user