From 363794b8723cd216b1112cb53faf807002f35cb5 Mon Sep 17 00:00:00 2001 From: "Gregory.Shrago" Date: Mon, 4 Jun 2018 19:19:11 +0300 Subject: [PATCH] DBE-6537 add db element to a favourites by dnd --- .../ide/favoritesTreeView/FavoritesPanel.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/platform/lang-impl/src/com/intellij/ide/favoritesTreeView/FavoritesPanel.java b/platform/lang-impl/src/com/intellij/ide/favoritesTreeView/FavoritesPanel.java index bd493a33e1fa..1709bfb18a77 100644 --- a/platform/lang-impl/src/com/intellij/ide/favoritesTreeView/FavoritesPanel.java +++ b/platform/lang-impl/src/com/intellij/ide/favoritesTreeView/FavoritesPanel.java @@ -24,17 +24,22 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Disposer; import com.intellij.openapi.vfs.LocalFileSystem; import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFileSystemItem; import com.intellij.psi.PsiManager; import com.intellij.psi.SmartPsiElementPointer; import com.intellij.ui.awt.RelativeRectangle; import com.intellij.util.IconUtil; +import com.intellij.util.containers.JBIterable; import org.jetbrains.annotations.Nullable; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.TreePath; import java.awt.*; +import java.awt.datatransfer.Transferable; +import java.awt.datatransfer.UnsupportedFlavorException; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -172,6 +177,17 @@ public class FavoritesPanel { } } } + else if (obj instanceof Transferable && ((Transferable)obj).isDataFlavorSupported(DnDEventImpl.ourDataFlavor)) { + List elements = Collections.emptyList(); + try { + Object data = ((Transferable)obj).getTransferData(DnDEventImpl.ourDataFlavor); + if (data instanceof Object[]) elements = JBIterable.of((Object[])data).filter(PsiElement.class).toList(); + } + catch (IOException | UnsupportedFlavorException ignored) {} + if (!elements.isEmpty()) { + myViewPanel.dropPsiElements(mgr, node, elements.toArray(PsiElement.EMPTY_ARRAY)); + } + } else if (obj instanceof TransferableWrapper) { myViewPanel.dropPsiElements(mgr, node, ((TransferableWrapper)obj).getPsiElements()); }