mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-10-06 06:21:16 +07:00
DBE-6537 add db element to a favourites by dnd
This commit is contained in:
@@ -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<PsiElement> 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());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user