package org.freeplane.plugin.workspace.dnd; import java.util.LinkedHashSet; import java.util.Set; import org.freeplane.plugin.workspace.model.AWorkspaceTreeNode; public class DnDController { private static AClipboardController systemCBCtrl = null; private static Set<Class<? extends AWorkspaceTreeNode>> dropExcludeNodeTypes = new LinkedHashSet<Class<? extends AWorkspaceTreeNode>>(); public static AClipboardController getSystemClipboardController() { if(systemCBCtrl == null) { systemCBCtrl = new AClipboardController() { }; } return systemCBCtrl; } public static boolean isDropAllowed(AWorkspaceTreeNode node) { if(node == null) { return false; } synchronized (dropExcludeNodeTypes) { if(dropExcludeNodeTypes .contains(node.getClass())) { return false; } return true; } } public static void excludeFromDND(Class<? extends AWorkspaceTreeNode> clzz) { if(clzz == null) { return; } synchronized (dropExcludeNodeTypes) { dropExcludeNodeTypes.add(clzz); } } public static void resetExcludeDropSet() { synchronized (dropExcludeNodeTypes) { dropExcludeNodeTypes.clear(); } } }