package org.mt4jx.input.gestureAction; import org.mt4j.components.MTComponent; import org.mt4j.components.interfaces.IMTComponent3D; import org.mt4j.input.inputProcessors.IGestureEventListener; import org.mt4j.input.inputProcessors.MTGestureEvent; import org.mt4j.input.inputProcessors.componentProcessors.dragProcessor.DragEvent; public class HelperDragAction implements IGestureEventListener { private IMTComponent3D dragObject; private IMTComponent3D parentObject; public HelperDragAction(IMTComponent3D dragObject,IMTComponent3D parentObject) { this.dragObject = dragObject; this.parentObject = parentObject; } public boolean processGestureEvent(MTGestureEvent ge) { DragEvent dragEv; if(ge instanceof DragEvent) { dragEv = (DragEvent)ge; } else { return false; } switch(dragEv.getId()) { case MTGestureEvent.GESTURE_STARTED: { if (dragObject instanceof MTComponent){ MTComponent baseComp = (MTComponent)dragObject; baseComp.sendToFront(); } MTComponent parentComp = (MTComponent)parentObject; //if you click on one part of a composite the //whole composite object is picked //here the composite does not have a dragprocessor,only one children //so you cant drag it //so we have to composite the helper only //in this moment where it should be dragged //to drag all children parentComp.setComposite(true); parentObject.translateGlobal(dragEv.getTranslationVect()); parentComp.sendToFront(); parentComp.setComposite(false); break; } case MTGestureEvent.GESTURE_UPDATED: { MTComponent parentComp = (MTComponent)parentObject; parentComp.setComposite(true); parentObject.translateGlobal(dragEv.getTranslationVect()); parentComp.sendToFront(); parentComp.setComposite(false); break; } case MTGestureEvent.GESTURE_ENDED: break; default: break; } return true; } }