private DragElement createNewDragElement() { DragElement e = new DragElement( screen, new Vector2f( screen.getMouseXY().x - (iconSize / 2), screen.getHeight() - (screen.getMouseXY().y + (iconSize / 2))), new Vector2f(iconSize, iconSize), Vector4f.ZERO, screen.getStyle("Window").getString("defaultImg")) { @Override public void onDragStart(MouseButtonEvent evt) { if (getElementParent() != null) { if (getElementParent() != this.getScreen()) { getParentDroppable().bringToFront(); } } } @Override public boolean onDragEnd(MouseButtonEvent evt, Element dropElement) { if (dropElement != null) { setLockToParentBounds(false); if (!dropElement.getDraggableChildren().isEmpty()) { if (!dropElement.getDraggableChildren().contains(this)) { DragElement de1 = (DragElement) dropElement.getDraggableChildren().get(0); Element drop1 = null; if (getParentDroppable() != null) { drop1 = getParentDroppable(); getParentDroppable().removeChild(this); clearParentDroppable(); } if (de1 != null) { de1.getParentDroppable().removeChild(de1); de1.clearParentDroppable(); } if (drop1 != null && de1 != null) { de1.bindToDroppable(drop1); } else { Node n = de1.getUserData("worldObject"); Node n1 = getUserData("worldObject"); if (n != n1) { main.getRootNode().attachChild(n); ((InteractiveNode) n).setIsInScene(true); } } evt.setConsumed(); return true; } else { return true; } } else { return true; } } else { if (getParentDroppable() != null) { getParentDroppable().removeChild(this); clearParentDroppable(); } Node n = getUserData("worldObject"); main.getRootNode().attachChild(n); screen.removeElement(this); ((InteractiveNode) n).onLoseFocus(null); ((InteractiveNode) n).setIsInScene(true); ((Screen) screen).forceFocusElementRefresh(); return false; } } }; e.setDocking(Docking.SW); e.setEffectZOrder(false); e.setLockToParentBounds(true); e.setUseLockToDropElementCenter(true); e.setUseSpringBack(true); e.setUseSpringBackEffect(true); screen.addElement(e); return e; }