Search in sources :

Example 1 with Event

use of playn.core.Pointer.Event in project playn by threerings.

the class PointerMouseTouchTest method init.

@Override
public void init() {
    float y = 20, x = 20;
    preventDefault = new Toggle("Prevent Default");
    graphics().rootLayer().addAt(preventDefault.layer, x, y);
    x += preventDefault.layer.image().width() + 5;
    capture = new Toggle("Capture");
    graphics().rootLayer().addAt(capture.layer, x, y);
    x += capture.layer.image().width() + 5;
    propagate = new NToggle<String>("Propagation", "Off", "On", "On (stop)") {

        @Override
        public void set(int value) {
            super.set(value);
            platform().setPropagateEvents(value != 0);
        }
    };
    graphics().rootLayer().addAt(propagate.layer, x, y);
    y += propagate.layer.image().height() + 5;
    x = 20;
    float boxWidth = 300, boxHeight = 110;
    final Box mouse = new Box("Mouse", 0xffff8080, boxWidth, boxHeight);
    graphics().rootLayer().addAt(mouse.layer, x, y);
    y += mouse.layer.height() + 5;
    final Box pointer = new Box("Pointer", 0xff80ff80, boxWidth, boxHeight);
    graphics().rootLayer().addAt(pointer.layer, x, y);
    y += pointer.layer.height() + 5;
    final Box touch = new Box("Touch", 0xff8080ff, boxWidth, boxHeight);
    graphics().rootLayer().addAt(touch.layer, x, y);
    y = mouse.layer.ty();
    x += touch.layer.width() + 5;
    // setup the logger and its layer
    y += createLabel("Event Log", 0, x, y).height();
    logger = new TextLogger(375, 15, logFormat);
    logger.layer.setTranslation(x, y);
    graphics().rootLayer().add(logger.layer);
    y += logger.layer.height() + 5;
    // setup the motion logger and its layer
    y += createLabel("Motion Log", 0, x, y).height();
    motionLabel = new TextMapper(375, 6, logFormat);
    motionLabel.layer.setTranslation(x, y);
    graphics().rootLayer().add(motionLabel.layer);
    // add mouse layer listener
    mouse.label.addListener(new Mouse.LayerListener() {

        ImageLayer label = mouse.label;

        @Override
        public void onMouseDown(ButtonEvent event) {
            _lstart = label.transform().translation();
            _pstart = new Vector(event.x(), event.y());
            label.setAlpha(0.5f);
            modify(event);
            logger.log(describe(event, "mouse down"));
        }

        @Override
        public void onMouseDrag(MotionEvent event) {
            Vector delta = new Vector(event.x(), event.y()).subtractLocal(_pstart);
            label.setTranslation(_lstart.x + delta.x, _lstart.y + delta.y);
            modify(event);
            motionLabel.set("mouse drag", describe(event, ""));
        }

        @Override
        public void onMouseUp(ButtonEvent event) {
            label.setAlpha(1.0f);
            modify(event);
            logger.log(describe(event, "mouse up"));
        }

        @Override
        public void onMouseMove(MotionEvent event) {
            modify(event);
            motionLabel.set("mouse move", describe(event, ""));
        }

        @Override
        public void onMouseOver(MotionEvent event) {
            modify(event);
            logger.log(describe(event, "mouse over"));
        }

        @Override
        public void onMouseOut(MotionEvent event) {
            modify(event);
            logger.log(describe(event, "mouse out"));
        }

        @Override
        public void onMouseWheelScroll(WheelEvent event) {
            modify(event);
            logger.log(describe(event, "mouse wheel"));
        }

        protected Vector _lstart, _pstart;
    });
    // add mouse layer listener to parent
    mouse.layer.addListener(new Mouse.LayerListener() {

        @Override
        public void onMouseDown(ButtonEvent event) {
            logger.log(describe(event, "parent mouse down"));
        }

        @Override
        public void onMouseDrag(MotionEvent event) {
            motionLabel.set("parent mouse drag", describe(event, ""));
        }

        @Override
        public void onMouseUp(ButtonEvent event) {
            logger.log(describe(event, "parent mouse up"));
        }

        @Override
        public void onMouseMove(MotionEvent event) {
            motionLabel.set("parent mouse move", describe(event, ""));
        }

        @Override
        public void onMouseOver(MotionEvent event) {
            logger.log(describe(event, "parent mouse over"));
        }

        @Override
        public void onMouseOut(MotionEvent event) {
            logger.log(describe(event, "parent mouse out"));
        }

        @Override
        public void onMouseWheelScroll(WheelEvent event) {
            logger.log(describe(event, "parent mouse wheel"));
        }
    });
    // add pointer layer listener
    pointer.label.addListener(new Pointer.Listener() {

        ImageLayer label = pointer.label;

        @Override
        public void onPointerStart(Event event) {
            _lstart = label.transform().translation();
            _pstart = new Vector(event.x(), event.y());
            label.setAlpha(0.5f);
            modify(event);
            logger.log(describe(event, "pointer start"));
        }

        @Override
        public void onPointerDrag(Event event) {
            Vector delta = new Vector(event.x(), event.y()).subtractLocal(_pstart);
            label.setTranslation(_lstart.x + delta.x, _lstart.y + delta.y);
            modify(event);
            motionLabel.set("pointer drag", describe(event, ""));
        }

        @Override
        public void onPointerEnd(Event event) {
            label.setAlpha(1.0f);
            modify(event);
            logger.log(describe(event, "pointer end"));
        }

        @Override
        public void onPointerCancel(Event event) {
            label.setAlpha(1.0f);
            modify(event);
            logger.log(describe(event, "pointer cancel"));
        }

        protected Vector _lstart, _pstart;
    });
    // add pointer listener for parent layer
    pointer.layer.addListener(new Pointer.Listener() {

        double start;

        @Override
        public void onPointerStart(Event event) {
            logger.log(describe(event, "parent pointer start"));
            start = event.time();
        }

        @Override
        public void onPointerDrag(Event event) {
            motionLabel.set("parent pointer drag", describe(event, ""));
            if (capture.value() && event.time() - start > 2000) {
                event.capture();
            }
        }

        @Override
        public void onPointerEnd(Event event) {
            logger.log(describe(event, "parent pointer end"));
        }

        @Override
        public void onPointerCancel(Event event) {
            logger.log(describe(event, "parent pointer cancel"));
        }
    });
    // add touch layer listener
    touch.label.addListener(new Touch.LayerListener() {

        ImageLayer label = touch.label;

        @Override
        public void onTouchStart(Touch.Event event) {
            _lstart = label.transform().translation();
            _pstart = new Vector(event.x(), event.y());
            label.setAlpha(0.5f);
            modify(event);
            logger.log(describe(event, "touch start"));
        }

        @Override
        public void onTouchMove(Touch.Event event) {
            Vector delta = new Vector(event.x(), event.y()).subtractLocal(_pstart);
            label.setTranslation(_lstart.x + delta.x, _lstart.y + delta.y);
            modify(event);
            motionLabel.set("touch move", describe(event, ""));
        }

        @Override
        public void onTouchEnd(Touch.Event event) {
            label.setAlpha(1.0f);
            modify(event);
            logger.log(describe(event, "touch end"));
        }

        @Override
        public void onTouchCancel(Touch.Event event) {
            label.setAlpha(1.0f);
            modify(event);
            logger.log(describe(event, "touch cancel"));
        }

        protected Vector _lstart, _pstart;
    });
    // add touch parent layer listener
    touch.layer.addListener(new Touch.LayerListener() {

        @Override
        public void onTouchStart(Touch.Event event) {
            logger.log(describe(event, "parent touch start"));
        }

        @Override
        public void onTouchMove(Touch.Event event) {
            motionLabel.set("parent touch move", describe(event, ""));
        }

        @Override
        public void onTouchEnd(Touch.Event event) {
            logger.log(describe(event, "parent touch end"));
        }

        @Override
        public void onTouchCancel(Touch.Event event) {
            logger.log(describe(event, "parent touch cancel"));
        }
    });
}
Also used : WheelEvent(playn.core.Mouse.WheelEvent) ImageLayer(playn.core.ImageLayer) Pointer(playn.core.Pointer) Touch(playn.core.Touch) Point(pythagoras.f.Point) MotionEvent(playn.core.Mouse.MotionEvent) Mouse(playn.core.Mouse) ButtonEvent(playn.core.Mouse.ButtonEvent) NToggle(playn.tests.core.TestsGame.NToggle) Toggle(playn.tests.core.TestsGame.Toggle) ButtonEvent(playn.core.Mouse.ButtonEvent) WheelEvent(playn.core.Mouse.WheelEvent) Event(playn.core.Pointer.Event) MotionEvent(playn.core.Mouse.MotionEvent) Vector(pythagoras.f.Vector)

Example 2 with Event

use of playn.core.Pointer.Event in project playn by threerings.

the class TextTest method init.

@Override
public void init() {
    row = new Rectangle(5, 5, 0, 0);
    addToRow((style = new NToggle<Style>("Style", Style.PLAIN, Style.BOLD, Style.ITALIC, Style.BOLD_ITALIC)).layer);
    addToRow((draw = new NToggle<String>("Draw", "Fill", "Stroke")).layer);
    addToRow((effect = new NToggle<String>("Effect", "None", "ShadowUL", "ShadowLR", "Outline")).layer);
    addToRow((wrap = new NToggle<Integer>("Wrap", 0, 20, 50, 100)).layer);
    addToRow((align = new NToggle<TextBlock.Align>("Align", TextBlock.Align.LEFT, TextBlock.Align.CENTER, TextBlock.Align.RIGHT)).layer);
    addToRow((font = new NToggle<String>("Font", "Times New Roman", "Helvetica")).layer);
    class SetText extends Pointer.Adapter implements Callback<String> {

        final ImageLayer layer = graphics().createImageLayer(TestsGame.makeButtonImage("Set Text"));

        {
            layer.addListener(this);
        }

        @Override
        public void onPointerEnd(Event event) {
            keyboard().getText(TextType.DEFAULT, "Test text", sample.replace("\n", "\\n"), this);
        }

        public void onSuccess(String result) {
            if (result == null)
                return;
            // parse \n to allow testing line breaks
            sample = result.replace("\\n", "\n");
            update();
        }

        public void onFailure(Throwable cause) {
        }
    }
    addToRow(new SetText().layer);
    addToRow((lineBounds = new Toggle("Lines")).layer);
    // test laying out the empty string
    TextLayout layout = graphics().layoutText("", new TextFormat());
    ImageLayer empty = graphics().createImageLayer(makeLabel("Empty string size " + layout.width() + "x" + layout.height()));
    newRow();
    addToRow(empty);
    newRow();
    addToRow((text = graphics().createImageLayer(makeTextImage())));
}
Also used : Rectangle(pythagoras.f.Rectangle) IRectangle(pythagoras.f.IRectangle) ImageLayer(playn.core.ImageLayer) TextLayout(playn.core.TextLayout) Callback(playn.core.util.Callback) Event(playn.core.Pointer.Event) TextFormat(playn.core.TextFormat) TextBlock(playn.core.util.TextBlock)

Example 3 with Event

use of playn.core.Pointer.Event in project playn by threerings.

the class PointerMouseTouchTest method describe.

protected String describe(Events.Position event, String handler) {
    String time = "@" + (int) (event.time() % 10000);
    String pd = event.flags().getPreventDefault() ? "pd " : "";
    String msg = time + " " + pd + handler + " (" + event.x() + "," + event.y() + ")";
    if (event instanceof Pointer.Event) {
        msg += " isTouch(" + ((Pointer.Event) event).isTouch() + ")";
    }
    if (event instanceof Mouse.ButtonEvent) {
        msg += " button(" + ((Mouse.ButtonEvent) event).button() + ")";
    }
    if (event instanceof Mouse.MotionEvent) {
        Mouse.MotionEvent me = (Mouse.MotionEvent) event;
        msg += " d(" + me.dx() + "," + me.dy() + ")";
    }
    return msg;
}
Also used : MotionEvent(playn.core.Mouse.MotionEvent) Mouse(playn.core.Mouse) ButtonEvent(playn.core.Mouse.ButtonEvent) ButtonEvent(playn.core.Mouse.ButtonEvent) WheelEvent(playn.core.Mouse.WheelEvent) Event(playn.core.Pointer.Event) MotionEvent(playn.core.Mouse.MotionEvent) Pointer(playn.core.Pointer) MotionEvent(playn.core.Mouse.MotionEvent)

Aggregations

Event (playn.core.Pointer.Event)3 ImageLayer (playn.core.ImageLayer)2 Mouse (playn.core.Mouse)2 ButtonEvent (playn.core.Mouse.ButtonEvent)2 MotionEvent (playn.core.Mouse.MotionEvent)2 WheelEvent (playn.core.Mouse.WheelEvent)2 Pointer (playn.core.Pointer)2 TextFormat (playn.core.TextFormat)1 TextLayout (playn.core.TextLayout)1 Touch (playn.core.Touch)1 Callback (playn.core.util.Callback)1 TextBlock (playn.core.util.TextBlock)1 NToggle (playn.tests.core.TestsGame.NToggle)1 Toggle (playn.tests.core.TestsGame.Toggle)1 IRectangle (pythagoras.f.IRectangle)1 Point (pythagoras.f.Point)1 Rectangle (pythagoras.f.Rectangle)1 Vector (pythagoras.f.Vector)1