GroupDrawing(String title) throws Exception { super(title); QTCanvas myQTCanvas = new QTCanvas(QTCanvas.kAspectResize, 0, 0); add("Center", myQTCanvas); addWindowListener( new WindowAdapter() { public void windowClosing(WindowEvent e) { QTSession.close(); dispose(); } public void windowClosed(WindowEvent e) { System.exit(0); } }); // setupGroup int kWidth = 300, kHeight = 300; DirectGroup drawer = new DirectGroup(new QDDimension(kWidth, kHeight), QDColor.gray); QTPlayer qtPlayer = makePlayer(new QTFile(QTFactory.findAbsolutePath("jumps.mov"))); drawer.addMember(qtPlayer, 1, 0.1F, 0.2F); Compositor shipAnimation = new Compositor(new QDGraphics(new QDRect(200, 200)), QDColor.lightGray, 20, 1); addSprites(shipAnimation); shipAnimation.setLocation(kWidth - 160, kHeight - 160); drawer.addMember(shipAnimation, 2); QTFile imageFile = new QTFile(QTFactory.findAbsolutePath("pics/house.jpg")); GraphicsImporterDrawer gid1 = new GraphicsImporterDrawer(imageFile); gid1.setDisplayBounds(new QDRect(kWidth, kHeight)); // we use an ImagePresenter for this member as the dragging is much quicker ImagePresenter ip = ImagePresenter.fromGraphicsImporterDrawer(gid1); drawer.addMember(ip, 3); /*Dragger dragger = new Dragger (MouseResponder.kNoModifiersMask); dragger.setConstrained(Dragger.kConstrainNone); GroupController controller1 = new GroupController (dragger, false); controller1.addMember (qtPlayer); controller1.addMember (shipAnimation); //drawer.addController (controller1); */ QTMouseTargetController qtmc = new QTMouseTargetController(false); qtmc.addMember(qtPlayer); qtmc.addMember(shipAnimation); drawer.addController(qtmc); TransformMatrix transMatrix = new TranslateMatrix(); transMatrix.setConstraint(TransformMatrix.kConstraintSpecifiedAll); qtmc.addQTMouseListener( new DragAction(transMatrix) { // only activates when NO modifiers are pressed public boolean matchModifierFilter(int mods) { if ((mods & 0xF) == 0) return true; return false; } public void mouseDragged(QTMouseEvent event) { super.mouseDragged(event); } }); /*Dragger dragger2 = new Dragger (MouseResponder.kNoModifiersMask); GroupController controller2 = new GroupController (dragger2, false); controller2.addMember (ip); drawer.addController (controller2);*/ QTMouseTargetController qtmc2 = new QTMouseTargetController(false); qtmc2.addMember(ip); drawer.addController(qtmc2); qtmc2.addQTMouseListener( new DragAction(new TranslateMatrix()) { // only activates when NO modifiers are pressed public boolean matchModifierFilter(int mods) { if ((mods & 0xF) == 0) return true; return false; } public void mouseDragged(QTMouseEvent event) { super.mouseDragged(event); } }); /* LayerChanger mouseTargetCntrl = new LayerChanger (InputEvent.ALT_MASK); GroupController controller3 = new GroupController (mouseTargetCntrl, true); drawer.addController (controller3);*/ mouseTargetCntrl = new QTMouseTargetController(true); drawer.addController(mouseTargetCntrl); mouseTargetCntrl.addQTMouseListener( new DragAction(new TranslateMatrix()) { // only activates when kJavaAltMask modifiers are pressed public boolean matchModifierFilter(int mods) { if ((mods & 0xF) == QTConstants.kJavaAltMask) return true; return false; } public void mouseClicked(QTMouseEvent event) { super.mouseClicked(event); Object target = event.getTarget(); Object source = event.getSource(); GroupDrawable groupdrawer = (GroupDrawable) mouseTargetCntrl.getSpace(); int layer = groupdrawer.getBackLayer(); if (source instanceof DirectGroup && target instanceof QTDrawable && // make sure source and target are correct types ((DirectGroup) source).isAppropriate(target)) { try { ((DirectGroup) source).setMemberLayer((QTDrawable) target, layer + 1); } catch (QTException e) { QTRuntimeException.handleOrThrow(new QTRuntimeException(e), this, "mousePressed"); } } } }); myQTCanvas.setClient(drawer, true); shipAnimation.getTimer().setRate(1); drawer.getTimer().setRate(1); }
private static ImagePresenter makeImagePresenter(QTFile file, QDRect size) throws Exception { GraphicsImporterDrawer gid = new GraphicsImporterDrawer(file); gid.setDisplayBounds(size); return ImagePresenter.fromGraphicsImporterDrawer(gid); }