void () { if (!ApplicationManager.getApplication().isHeadlessEnvironment()) { myDropTarget = new ProjectViewDropTarget(myTree, myProject) { @Nullable @Override protected PsiElement getPsiElement(@NotNull TreePath path) { return getFirstElementFromNode(path.getLastPathComponent()); } @Nullable @Override protected Module getModule(@NotNull PsiElement element) { return getNodeModule(element); } @Override public void cleanUpOnLeave() { beforeDnDLeave(); super.cleanUpOnLeave(); } @Override public boolean update(DnDEvent event) { beforeDnDUpdate(event); return super.update(event); } }; myDragSource = new MyDragSource(); DnDManager dndManager = DnDManager.getInstance(); dndManager.registerSource(myDragSource, myTree); dndManager.registerTarget(myDropTarget, myTree); } }