Example usage for com.badlogic.gdx.scenes.scene2d.utils DragListener DragListener

List of usage examples for com.badlogic.gdx.scenes.scene2d.utils DragListener DragListener

Introduction

In this page you can find the example usage for com.badlogic.gdx.scenes.scene2d.utils DragListener DragListener.

Prototype

DragListener

Source Link

Usage

From source file:com.kotcrab.vis.editor.util.scene2d.VisDragAndDrop.java

License:Apache License

public void addSource(final Source source) {
    DragListener listener = new DragListener() {
        public void dragStart(InputEvent event, float x, float y, int pointer) {
            if (activePointer != -1) {
                event.stop();//from   www.ja  v a2  s.  co  m
                return;
            }

            activePointer = pointer;

            dragStartTime = System.currentTimeMillis();
            payload = source.dragStart(event, getTouchDownX(), getTouchDownY(), pointer);
            event.stop();

            if (cancelTouchFocus && payload != null)
                source.getActor().getStage().cancelTouchFocusExcept(this, source.getActor());
        }

        public void drag(InputEvent event, float x, float y, int pointer) {
            if (payload == null)
                return;
            if (pointer != activePointer)
                return;

            Stage stage = event.getStage();

            Touchable dragActorTouchable = null;
            if (dragActor != null) {
                dragActorTouchable = dragActor.getTouchable();
                dragActor.setTouchable(Touchable.disabled);
            }

            // Find target.
            Target newTarget = null;
            isValidTarget = false;
            float stageX = event.getStageX() + touchOffsetX, stageY = event.getStageY() + touchOffsetY;
            Actor hit = event.getStage().hit(stageX, stageY, true); // Prefer touchable actors.
            if (hit == null)
                hit = event.getStage().hit(stageX, stageY, false);
            if (hit != null) {
                for (int i = 0, n = targets.size; i < n; i++) {
                    Target target = targets.get(i);
                    if (!target.getActor().isAscendantOf(hit))
                        continue;
                    newTarget = target;
                    target.getActor().stageToLocalCoordinates(tmpVector.set(stageX, stageY));
                    break;
                }
            }
            //if over a new target, notify the former target that it's being left behind.
            if (newTarget != target) {
                if (target != null)
                    target.reset(source, payload);
                target = newTarget;
            }
            //with any reset out of the way, notify new targets of drag.
            if (newTarget != null) {
                isValidTarget = newTarget.drag(source, payload, tmpVector.x, tmpVector.y, pointer);
            }

            if (dragActor != null)
                dragActor.setTouchable(dragActorTouchable);

            // Add/remove and position the drag actor.
            Actor actor = null;
            if (target != null)
                actor = isValidTarget ? payload.getValidDragActor() : payload.getInvalidDragActor();
            if (actor == null)
                actor = payload.getDragActor();
            if (actor == null)
                return;
            if (dragActor != actor) {
                if (dragActor != null)
                    dragActor.remove();
                dragActor = actor;
                stage.addActor(actor);
            }
            float actorX = event.getStageX() + dragActorX;
            float actorY = event.getStageY() + dragActorY - actor.getHeight();
            if (keepWithinStage) {
                if (actorX < 0)
                    actorX = 0;
                if (actorY < 0)
                    actorY = 0;
                if (actorX + actor.getWidth() > stage.getWidth())
                    actorX = stage.getWidth() - actor.getWidth();
                if (actorY + actor.getHeight() > stage.getHeight())
                    actorY = stage.getHeight() - actor.getHeight();
            }

            actor.setPosition(actorX, actorY);

            if (currentSceneCamera != null && editingSettings.isSnapEnabledOrKeyPressed()) {
                float gridSize = gridSettings.config.gridSize;
                actor.setPosition(MathUtils.floor(currentSceneCamera.getInputX() / gridSize) * gridSize,
                        MathUtils.floor(currentSceneCamera.getInputY() / gridSize) * gridSize);

                Vector3 v = currentSceneCamera.project(tmpVector3.set(actor.getX(), actor.getY(), 0));
                actor.setPosition(v.x, v.y);
            }
        }

        public void dragStop(InputEvent event, float x, float y, int pointer) {
            if (pointer != activePointer)
                return;
            activePointer = -1;
            if (payload == null)
                return;

            if (System.currentTimeMillis() - dragStartTime < dragTime)
                isValidTarget = false;
            if (dragActor != null)
                dragActor.remove();
            if (isValidTarget) {
                float stageX = event.getStageX() + touchOffsetX, stageY = event.getStageY() + touchOffsetY;
                target.getActor().stageToLocalCoordinates(tmpVector.set(stageX, stageY));
                target.drop(source, payload, tmpVector.x, tmpVector.y, pointer);
            }
            source.dragStop(event, x, y, pointer, payload, isValidTarget ? target : null);
            if (target != null)
                target.reset(source, payload);
            payload = null;
            target = null;
            isValidTarget = false;
            dragActor = null;
        }
    };
    listener.setTapSquareSize(tapSquareSize);
    listener.setButton(button);
    source.getActor().addCaptureListener(listener);
    sourceListeners.put(source, listener);
}

From source file:com.ray3k.skincomposer.dialog.DialogColorPicker.java

License:Open Source License

public void populate() {
    content.clear();//from www.  j  av a2  s  .c  o  m
    content.defaults().padLeft(10.0f);

    Image cursor = new Image(skin.getDrawable("color-picker"));
    cursor.setTouchable(Touchable.enabled);
    Image hueKnob = new Image(skin, "color-scale");
    hueKnob.setTouchable(Touchable.enabled);
    Image hueKnob2 = new Image(skin, "color-scale-flipped");
    hueKnob2.setTouchable(Touchable.enabled);
    Image alphaKnob = new Image(skin, "color-scale");
    alphaKnob.setTouchable(Touchable.enabled);
    Image alphaKnob2 = new Image(skin, "color-scale-flipped");
    alphaKnob2.setTouchable(Touchable.enabled);

    Container selectedColorCont = new Container();
    selectedColorCont.setBackground(skin.getDrawable("white"));
    selectedColorCont.setColor(selectedColor);

    Vector3 v = rgbToHsb(selectedColor.r, selectedColor.g, selectedColor.b);

    Spinner greenSpinner, blueSpinner, alphaSpinner, hueSpinner, saturationSpinner, brightnessSpinner;

    hueSpinner = new Spinner(v.x * 359.0f, 1.0, true, Orientation.HORIZONTAL, spinnerStyle);
    hueSpinner.setMinimum(0.0);
    hueSpinner.setMaximum(359.0);
    hueSpinner.getTextField().addListener(main.getIbeamListener());
    hueSpinner.getButtonMinus().addListener(main.getHandListener());
    hueSpinner.getButtonPlus().addListener(main.getHandListener());

    saturationSpinner = new Spinner(v.y * 100.0f, 1.0, true, Orientation.HORIZONTAL, spinnerStyle);
    saturationSpinner.setMinimum(0.0);
    saturationSpinner.setMaximum(100.0);
    saturationSpinner.getTextField().addListener(main.getIbeamListener());
    saturationSpinner.getButtonMinus().addListener(main.getHandListener());
    saturationSpinner.getButtonPlus().addListener(main.getHandListener());

    brightnessSpinner = new Spinner(v.z * 100.0f, 1.0, true, Orientation.HORIZONTAL, spinnerStyle);
    brightnessSpinner.setMinimum(0.0);
    brightnessSpinner.setMaximum(100.0);
    brightnessSpinner.getTextField().addListener(main.getIbeamListener());
    brightnessSpinner.getButtonMinus().addListener(main.getHandListener());
    brightnessSpinner.getButtonPlus().addListener(main.getHandListener());

    redSpinner = new Spinner(selectedColor.r * 255.0f, 1.0, true, Orientation.HORIZONTAL, spinnerStyle);
    redSpinner.setMinimum(0.0);
    redSpinner.setMaximum(255.0);
    redSpinner.getTextField().addListener(main.getIbeamListener());
    redSpinner.getButtonMinus().addListener(main.getHandListener());
    redSpinner.getButtonPlus().addListener(main.getHandListener());

    greenSpinner = new Spinner(selectedColor.g * 255.0f, 1.0, true, Orientation.HORIZONTAL, spinnerStyle);
    greenSpinner.setMinimum(0.0);
    greenSpinner.setMaximum(255.0);
    greenSpinner.getTextField().addListener(main.getIbeamListener());
    greenSpinner.getButtonMinus().addListener(main.getHandListener());
    greenSpinner.getButtonPlus().addListener(main.getHandListener());

    blueSpinner = new Spinner(selectedColor.b * 255.0f, 1.0, true, Orientation.HORIZONTAL, spinnerStyle);
    blueSpinner.setMinimum(0.0);
    blueSpinner.setMaximum(255.0);
    blueSpinner.getTextField().addListener(main.getIbeamListener());
    blueSpinner.getButtonMinus().addListener(main.getHandListener());
    blueSpinner.getButtonPlus().addListener(main.getHandListener());

    alphaSpinner = new Spinner(selectedColor.a * 255.0f, 1.0, true, Orientation.HORIZONTAL, spinnerStyle);
    alphaSpinner.setMinimum(0.0);
    alphaSpinner.setMaximum(255.0);
    alphaSpinner.getTextField().addListener(main.getIbeamListener());
    alphaSpinner.getButtonMinus().addListener(main.getHandListener());
    alphaSpinner.getButtonPlus().addListener(main.getHandListener());

    redSpinner.setTransversalNext(greenSpinner.getTextField());
    greenSpinner.setTransversalNext(blueSpinner.getTextField());
    blueSpinner.setTransversalNext(alphaSpinner.getTextField());
    alphaSpinner.setTransversalNext(hueSpinner.getTextField());
    hueSpinner.setTransversalNext(saturationSpinner.getTextField());
    saturationSpinner.setTransversalNext(brightnessSpinner.getTextField());
    brightnessSpinner.setTransversalNext(redSpinner.getTextField());

    redSpinner.setTransversalPrevious(brightnessSpinner.getTextField());
    greenSpinner.setTransversalPrevious(redSpinner.getTextField());
    blueSpinner.setTransversalPrevious(greenSpinner.getTextField());
    alphaSpinner.setTransversalPrevious(blueSpinner.getTextField());
    hueSpinner.setTransversalPrevious(alphaSpinner.getTextField());
    saturationSpinner.setTransversalPrevious(hueSpinner.getTextField());
    brightnessSpinner.setTransversalPrevious(saturationSpinner.getTextField());

    ChangeListener rgbListener = new ChangeListener() {
        @Override
        public void changed(ChangeListener.ChangeEvent event, Actor actor) {
            selectedColor.set((float) redSpinner.getValue() / 255.0f, (float) greenSpinner.getValue() / 255.0f,
                    (float) blueSpinner.getValue() / 255.0f, (float) alphaSpinner.getValue() / 255.0f);
            Vector3 v = rgbToHsb(selectedColor.r, selectedColor.g, selectedColor.b);
            hueSpinner.setValue(v.x * 359.0f);
            saturationSpinner.setValue(v.y * 100.0f);
            brightnessSpinner.setValue(v.z * 100.0f);
            selectedColorCont.setColor(selectedColor);

            Color color = hsbToRgb((float) hueSpinner.getValue(), 1.0f, 1.0f);
            gradientS.setCol2(color);
            gradientS.setCol3(color);
            gradientAlpha.setCol3(color);
            gradientAlpha.setCol4(color);
            color = new Color(color);
            color.a = 0.0f;
            gradientAlpha.setCol1(color);
            gradientAlpha.setCol2(color);

            cursor.setX(v.y * SIZE - cursor.getWidth() / 2.0f);
            cursor.setY(v.z * SIZE - cursor.getHeight() / 2.0f);
            hueKnob.setY(v.x * SIZE - hueKnob.getHeight() / 2.0f);
            hueKnob2.setY(hueKnob.getY());
        }
    };
    redSpinner.addListener(rgbListener);
    greenSpinner.addListener(rgbListener);
    blueSpinner.addListener(rgbListener);

    ChangeListener hsbListener = new ChangeListener() {
        @Override
        public void changed(ChangeListener.ChangeEvent event, Actor actor) {
            Color color = hsbToRgb((float) hueSpinner.getValue(), (float) saturationSpinner.getValue() / 100.0f,
                    (float) brightnessSpinner.getValue() / 100.0f);
            color.a = (float) alphaSpinner.getValue() / 255.0f;
            redSpinner.setValue(color.r * 255.0f);
            greenSpinner.setValue(color.g * 255.0f);
            blueSpinner.setValue(color.b * 255.0f);
            selectedColor.set(color);
            selectedColorCont.setColor(selectedColor);

            color = hsbToRgb((float) hueSpinner.getValue(), 1.0f, 1.0f);
            gradientS.setCol2(color);
            gradientS.setCol3(color);
            gradientAlpha.setCol3(color);
            gradientAlpha.setCol4(color);
            color = new Color(color);
            color.a = 0.0f;
            gradientAlpha.setCol1(color);
            gradientAlpha.setCol2(color);

            cursor.setX((float) saturationSpinner.getValue() / 100.0f * SIZE - cursor.getWidth() / 2.0f);
            cursor.setY((float) brightnessSpinner.getValue() / 100.0f * SIZE - cursor.getHeight() / 2.0f);
            hueKnob.setY((float) hueSpinner.getValue() / 359.0f * SIZE - hueKnob.getHeight() / 2.0f);
            hueKnob2.setY(hueKnob.getY());
        }
    };
    hueSpinner.addListener(hsbListener);
    saturationSpinner.addListener(hsbListener);
    brightnessSpinner.addListener(hsbListener);

    alphaSpinner.addListener(new ChangeListener() {
        @Override
        public void changed(ChangeListener.ChangeEvent event, Actor actor) {
            selectedColor.set((float) redSpinner.getValue() / 255.0f, (float) greenSpinner.getValue() / 255.0f,
                    (float) blueSpinner.getValue() / 255.0f, (float) alphaSpinner.getValue() / 255.0f);
            selectedColorCont.setColor(selectedColor);

            alphaKnob.setY(selectedColor.a * SIZE - alphaKnob.getHeight() / 2.0f);
            alphaKnob2.setY(alphaKnob.getY());
        }
    });

    Table panel = new Table(skin);
    panel.setBackground("color-box");
    Table t = new Table(skin);
    t.setClip(true);
    t.setBackground(gradientSB);
    t.setTouchable(Touchable.enabled);
    cursor.setPosition(v.y * SIZE - cursor.getWidth() / 2.0f, v.z * SIZE - cursor.getHeight() / 2.0f);
    t.addActor(cursor);
    DragListener dragListener = new DragListener() {
        @Override
        public void drag(InputEvent event, float x, float y, int pointer) {
            saturationSpinner.setValue(MathUtils.clamp(x / SIZE * 100.0f, 0, 100));
            brightnessSpinner.setValue(MathUtils.clamp(y / SIZE * 100.0f, 0, 100));
            saturationSpinner.fire(new ChangeListener.ChangeEvent());
        }
    };
    dragListener.setTapSquareSize(1.0f);
    t.addListener(dragListener);

    t.addListener(new InputListener() {
        @Override
        public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
            saturationSpinner.setValue(MathUtils.clamp(x / SIZE * 100.0f, 0, 100));
            brightnessSpinner.setValue(MathUtils.clamp(y / SIZE * 100.0f, 0, 100));
            saturationSpinner.fire(new ChangeListener.ChangeEvent());

            return false;
        }
    });
    panel.add(t).size(SIZE, SIZE);
    content.add(panel);

    panel = new Table(skin);
    panel.setBackground("color-box");
    t = new Table(skin);
    t.setTouchable(Touchable.enabled);
    t.setClip(true);
    for (GradientDrawable gradient : hueGradient) {
        Container container = new Container();
        container.background(gradient);
        t.add(container).growX().height(50.0f);
        t.row();
    }
    t.addActor(hueKnob);
    t.addActor(hueKnob2);
    hueKnob.setY(v.x * SIZE - hueKnob.getHeight() / 2.0f);
    hueKnob2.setX(30.0f - hueKnob2.getWidth());
    hueKnob2.setY(v.x * SIZE - hueKnob2.getHeight() / 2.0f);
    dragListener = new DragListener() {
        @Override
        public void drag(InputEvent event, float x, float y, int pointer) {
            hueSpinner.setValue(MathUtils.clamp(y / SIZE * 359.0f, 0.0f, 359.0f));

            hueSpinner.fire(new ChangeListener.ChangeEvent());
        }
    };
    dragListener.setTapSquareSize(1.0f);
    t.addListener(dragListener);
    t.addListener(new InputListener() {
        @Override
        public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
            hueSpinner.setValue(MathUtils.clamp(y / SIZE * 359.0f, 0.0f, 359.0f));

            hueSpinner.fire(new ChangeListener.ChangeEvent());
            return false;
        }

    });
    panel.add(t).minWidth(30.0f).height(SIZE);
    content.add(panel);

    panel = new Table(skin);
    panel.setBackground("color-box");
    t = new Table();
    t.setTouchable(Touchable.enabled);
    t.setBackground(alphaStack);
    t.setClip(true);
    t.addActor(alphaKnob);
    t.addActor(alphaKnob2);
    alphaKnob.setY(selectedColor.a * SIZE - alphaKnob.getHeight() / 2.0f);
    alphaKnob2.setX(30.0f - alphaKnob2.getWidth());
    alphaKnob2.setY(selectedColor.a * SIZE - alphaKnob2.getHeight() / 2.0f);
    dragListener = new DragListener() {
        @Override
        public void drag(InputEvent event, float x, float y, int pointer) {
            alphaSpinner.setValue(MathUtils.clamp(y / SIZE * 255.0f, 0.0f, 255.0f));

            alphaSpinner.fire(new ChangeListener.ChangeEvent());
        }
    };
    dragListener.setTapSquareSize(1.0f);
    t.addListener(dragListener);
    t.addListener(new InputListener() {
        @Override
        public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
            alphaSpinner.setValue(MathUtils.clamp(y / SIZE * 255.0f, 0.0f, 255.0f));

            alphaSpinner.fire(new ChangeListener.ChangeEvent());
            return false;
        }

    });
    panel.add(t).minWidth(30.0f).height(SIZE);
    content.add(panel);

    t = new Table();
    t.defaults().pad(10.0f);

    Table table = new Table(skin);
    Label label = new Label("new", skin);
    label.setAlignment(Align.center);
    table.add(label).growX();
    table.row();
    Container bg = new Container();
    bg.setBackground(checker);
    Stack stack = new Stack(bg, selectedColorCont);
    panel = new Table(skin);
    panel.setBackground("color-box");
    panel.add(stack).grow();
    table.add(panel).grow();
    if (previousColor != null) {
        Container cont = new Container();
        cont.setBackground(skin.getDrawable("white"));
        cont.setColor(previousColor);
        bg = new Container();
        bg.setBackground(checker);
        stack = new Stack(bg, cont);
        panel.row();
        panel.add(stack).grow();
        table.row();
        label = new Label("current", skin);
        label.setAlignment(Align.center);
        table.add(label).growX();
        t.add(table).minWidth(80.0f).minHeight(150.0f);
    } else {
        t.add(table).minWidth(80.0f).minHeight(100.0f);
    }

    table = new Table();
    TextButton textButton = new TextButton("OK", skin);
    textButton.addListener(main.getHandListener());
    textButton.addListener(new ChangeListener() {
        @Override
        public void changed(ChangeListener.ChangeEvent event, Actor actor) {
            if (listener != null) {
                listener.handle(new ColorListener.ColorEvent(selectedColor));
            }
            hide();
        }
    });
    table.add(textButton).growX();
    table.row();
    textButton = new TextButton("Cancel", skin);
    textButton.addListener(main.getHandListener());
    textButton.addListener(new ChangeListener() {
        @Override
        public void changed(ChangeListener.ChangeEvent event, Actor actor) {
            if (listener != null) {
                listener.handle(new ColorListener.ColorEvent(null));
            }
            hide();
        }
    });
    table.add(textButton).growX().padTop(10.0f);
    t.add(table);

    t.row();
    table = new Table();
    label = new Label("R", skin, "required");
    table.add(label);
    table.add(redSpinner).padLeft(10.0f).minWidth(90.0f);
    t.add(table);

    table = new Table();
    label = new Label("H", skin, "required");
    table.add(label);
    table.add(hueSpinner).padLeft(10.0f).minWidth(90.0f);
    t.add(table);

    t.row();
    table = new Table();
    label = new Label("G", skin, "required");
    table.add(label);
    table.add(greenSpinner).padLeft(10.0f).minWidth(90.0f);
    t.add(table);

    table = new Table();
    label = new Label("S", skin, "required");
    table.add(label);
    table.add(saturationSpinner).padLeft(10.0f).minWidth(90.0f);
    t.add(table);

    t.row();
    table = new Table();
    label = new Label("B", skin, "required");
    table.add(label);
    table.add(blueSpinner).padLeft(10.0f).minWidth(90.0f);
    t.add(table);

    table = new Table();
    label = new Label("B", skin, "required");
    table.add(label);
    table.add(brightnessSpinner).padLeft(10.0f).minWidth(90.0f);
    t.add(table);

    t.row();
    table = new Table();
    label = new Label("A", skin, "required");
    table.add(label);
    t.add(table);
    table.add(alphaSpinner).padLeft(10.0f).minWidth(90.0f);
    content.add(t).growY();
}

From source file:com.ray3k.skincomposer.RootTable.java

License:Open Source License

public RootTable(Main main) {
    super(main.getSkin());
    this.stage = main.getStage();
    this.main = main;

    previewProperties = new ObjectMap<>();
    previewBgColor = new Color(Color.WHITE);

    spinnerStyle = new Spinner.SpinnerStyle(getSkin().get("spinner-minus-h", Button.ButtonStyle.class),
            getSkin().get("spinner-plus-h", Button.ButtonStyle.class),
            getSkin().get("spinner", TextField.TextFieldStyle.class));

    TextButtonStyle textButtonStyle = getSkin().get("file", TextButtonStyle.class);

    MenuButtonStyle menuButtonStyle = new MenuButton.MenuButtonStyle();
    menuButtonStyle.font = textButtonStyle.font;
    menuButtonStyle.up = textButtonStyle.up;
    menuButtonStyle.down = textButtonStyle.down;
    menuButtonStyle.over = textButtonStyle.over;
    menuButtonStyle.checked = textButtonStyle.checked;

    MenuListStyle menuListStyle = new MenuListStyle();
    menuListStyle.background = getSkin().getDrawable("list");
    menuListStyle.textButtonStyle = getSkin().get("menu-button", TextButtonStyle.class);
    menuListStyle.labelStyle = getSkin().get("white", LabelStyle.class);
    menuListStyle.disabledLabelStyle = getSkin().get("disabled", LabelStyle.class);

    menuButtonStyle.menuListStyle = menuListStyle;

    bfColorStyle = new BrowseFieldStyle(getSkin().get("color", ImageButtonStyle.class),
            getSkin().get("browse-field", TextButtonStyle.class), getSkin().get(LabelStyle.class));
    bfDrawableStyle = new BrowseFieldStyle(getSkin().get("drawable", ImageButtonStyle.class),
            getSkin().get("browse-field", TextButtonStyle.class), getSkin().get(LabelStyle.class));
    bfFontStyle = new BrowseFieldStyle(getSkin().get("font", ImageButtonStyle.class),
            getSkin().get("browse-field", TextButtonStyle.class), getSkin().get(LabelStyle.class));
    bfColorStyleR = new BrowseFieldStyle(getSkin().get("color", ImageButtonStyle.class),
            getSkin().get("browse-field", TextButtonStyle.class), getSkin().get("required", LabelStyle.class));
    bfDrawableStyleR = new BrowseFieldStyle(getSkin().get("drawable", ImageButtonStyle.class),
            getSkin().get("browse-field", TextButtonStyle.class), getSkin().get("required", LabelStyle.class));
    bfFontStyleR = new BrowseFieldStyle(getSkin().get("font", ImageButtonStyle.class),
            getSkin().get("browse-field", TextButtonStyle.class), getSkin().get("required", LabelStyle.class));

    getSkin().add("default", menuButtonStyle);
    getSkin().add("default", menuListStyle);

    hSplitPaneDragListener = new DragListener() {
        @Override/*w  w  w  .  j  ava2  s .com*/
        public void dragStop(InputEvent event, float x, float y, int pointer) {
            Gdx.graphics.setSystemCursor(Cursor.SystemCursor.Arrow);
            draggingCursor = false;
        }

        @Override
        public void dragStart(InputEvent event, float x, float y, int pointer) {
            if (!draggingCursor && event.getListenerActor().equals(event.getTarget())) {
                Gdx.graphics.setSystemCursor(Cursor.SystemCursor.HorizontalResize);
                draggingCursor = true;
            }
        }
    };

    vSplitPaneDragListener = new DragListener() {
        @Override
        public void dragStop(InputEvent event, float x, float y, int pointer) {
            Gdx.graphics.setSystemCursor(Cursor.SystemCursor.Arrow);
            draggingCursor = false;
        }

        @Override
        public void dragStart(InputEvent event, float x, float y, int pointer) {
            if (!draggingCursor && event.getListenerActor().equals(event.getTarget())) {
                Gdx.graphics.setSystemCursor(Cursor.SystemCursor.VerticalResize);
                draggingCursor = true;
            }
        }

    };

    hSplitPaneInputListener = new InputListener() {
        @Override
        public void exit(InputEvent event, float x, float y, int pointer, Actor toActor) {
            if (!draggingCursor && event.getListenerActor().equals(event.getTarget())) {
                Gdx.graphics.setSystemCursor(Cursor.SystemCursor.Arrow);
            }
        }

        @Override
        public void enter(InputEvent event, float x, float y, int pointer, Actor fromActor) {
            if (!draggingCursor && event.getListenerActor().equals(event.getTarget())) {
                Gdx.graphics.setSystemCursor(Cursor.SystemCursor.HorizontalResize);
            }
        }
    };

    vSplitPaneInputListener = new InputListener() {
        @Override
        public void exit(InputEvent event, float x, float y, int pointer, Actor toActor) {
            if (!draggingCursor && event.getListenerActor().equals(event.getTarget())) {
                Gdx.graphics.setSystemCursor(Cursor.SystemCursor.Arrow);
            }
        }

        @Override
        public void enter(InputEvent event, float x, float y, int pointer, Actor fromActor) {
            if (!draggingCursor && event.getListenerActor().equals(event.getTarget())) {
                Gdx.graphics.setSystemCursor(Cursor.SystemCursor.VerticalResize);
            }
        }
    };

    scrollPaneListener = new ScrollPaneListener();
    previewFonts = new Array<>();
    drawablePairs = new ObjectMap<>();

    produceAtlas();

    main.getStage().addListener(new ShortcutListener(this));
}

From source file:com.ray3k.skincomposer.RootTable.java

License:Open Source License

private void addStyleAndPreviewSplit() {
    stylePropertiesTable = new Table();
    stylePropertiesTable.setTouchable(Touchable.enabled);

    addStyleProperties(stylePropertiesTable);

    Table right = new Table();
    right.setTouchable(Touchable.enabled);

    addPreviewPreviewPropertiesSplit(right, scrollPaneListener);

    SplitPane splitPane = new SplitPane(stylePropertiesTable, right, false, getSkin());
    add(splitPane).grow();//from  w  ww. ja va 2  s .  c o m

    splitPane.addListener(new InputListener() {
        @Override
        public void exit(InputEvent event, float x, float y, int pointer, Actor toActor) {
            if (!draggingCursor && event.getListenerActor().equals(event.getTarget())) {
                Gdx.graphics.setSystemCursor(Cursor.SystemCursor.Arrow);
            }
        }

        @Override
        public void enter(InputEvent event, float x, float y, int pointer, Actor fromActor) {
            if (!draggingCursor && event.getListenerActor().equals(event.getTarget())) {
                Gdx.graphics.setSystemCursor(Cursor.SystemCursor.HorizontalResize);
            }
        }

    });

    splitPane.addListener(new DragListener() {
        @Override
        public void dragStop(InputEvent event, float x, float y, int pointer) {
            Gdx.graphics.setSystemCursor(Cursor.SystemCursor.Arrow);
            draggingCursor = false;
        }

        @Override
        public void dragStart(InputEvent event, float x, float y, int pointer) {
            if (!draggingCursor && event.getListenerActor().equals(event.getTarget())) {
                Gdx.graphics.setSystemCursor(Cursor.SystemCursor.HorizontalResize);
                draggingCursor = true;
            }
        }

    });
}

From source file:com.ray3k.skincomposer.RootTable.java

License:Open Source License

private void addPreviewPreviewPropertiesSplit(final Table right, InputListener scrollPaneListener) {
    Table bottom = new Table();
    bottom.setTouchable(Touchable.enabled);

    addPreviewProperties(bottom, scrollPaneListener);

    Table top = new Table();
    top.setTouchable(Touchable.enabled);

    addPreview(top, scrollPaneListener);

    SplitPane splitPane = new SplitPane(top, bottom, true, getSkin());
    right.add(splitPane).grow();//ww w .  j a v  a 2s .c om

    splitPane.addListener(new InputListener() {
        @Override
        public void exit(InputEvent event, float x, float y, int pointer, Actor toActor) {
            if (!draggingCursor && event.getListenerActor().equals(event.getTarget())) {
                Gdx.graphics.setSystemCursor(Cursor.SystemCursor.Arrow);
            }
        }

        @Override
        public void enter(InputEvent event, float x, float y, int pointer, Actor fromActor) {
            if (!draggingCursor && event.getListenerActor().equals(event.getTarget())) {
                Gdx.graphics.setSystemCursor(Cursor.SystemCursor.VerticalResize);
            }
        }
    });

    splitPane.addListener(new DragListener() {
        @Override
        public void dragStop(InputEvent event, float x, float y, int pointer) {
            Gdx.graphics.setSystemCursor(Cursor.SystemCursor.Arrow);
            draggingCursor = false;
        }

        @Override
        public void dragStart(InputEvent event, float x, float y, int pointer) {
            if (!draggingCursor && event.getListenerActor().equals(event.getTarget())) {
                Gdx.graphics.setSystemCursor(Cursor.SystemCursor.VerticalResize);
                draggingCursor = true;
            }
        }

    });
}

From source file:com.uwsoft.editor.gdx.actors.CustomDragAndDrop.java

License:Apache License

public void addSource(final Source source) {
    DragListener listener = new DragListener() {
        public void dragStart(InputEvent event, float x, float y, int pointer) {
            if (activePointer != -1) {
                event.stop();//from   w w  w .  ja v a2  s.  c  o  m
                return;
            }

            activePointer = pointer;

            dragStartTime = System.currentTimeMillis();
            payload = source.dragStart(event, getTouchDownX(), getTouchDownY(), pointer);
            event.stop();
        }

        public void drag(InputEvent event, float x, float y, int pointer) {
            if (payload == null)
                return;
            if (pointer != activePointer)
                return;

            Stage stage = event.getStage();

            Touchable dragActorTouchable = null;
            if (dragActor != null) {
                dragActorTouchable = dragActor.getTouchable();
                dragActor.setTouchable(Touchable.disabled);
            }

            // Find target.
            Target newTarget = null;
            isValidTarget = false;
            float stageX = event.getStageX() + touchOffsetX, stageY = event.getStageY() + touchOffsetY;
            Actor hit = event.getStage().hit(stageX, stageY, true); // Prefer touchable actors.
            if (hit == null)
                hit = event.getStage().hit(stageX, stageY, false);
            if (hit != null) {
                for (int i = 0, n = targets.size; i < n; i++) {
                    Target target = targets.get(i);
                    if (!target.actor.isAscendantOf(hit))
                        continue;
                    newTarget = target;
                    target.actor.stageToLocalCoordinates(tmpVector.set(stageX, stageY));
                    isValidTarget = target.drag(source, payload, tmpVector.x, tmpVector.y, pointer);
                    break;
                }
            }
            if (newTarget != target) {
                if (target != null)
                    target.reset(source, payload);
                target = newTarget;
            }

            if (dragActor != null)
                dragActor.setTouchable(dragActorTouchable);

            // Add/remove and position the drag actor.
            Actor actor = null;
            if (target != null)
                actor = isValidTarget ? payload.validDragActor : payload.invalidDragActor;
            if (actor == null)
                actor = payload.dragActor;
            if (actor == null)
                return;
            if (dragActor != actor) {
                if (dragActor != null)
                    dragActor.remove();
                dragActor = actor;
                stage.addActor(actor);
            }
            float actorX = event.getStageX() + dragActorX;
            float actorY = event.getStageY() + dragActorY - actor.getHeight();
            //            if (actorX < 0) actorX = 0;
            //            if (actorY < 0) actorY = 0;
            //            if (actorX + actor.getWidth() > stage.getWidth()) actorX = stage.getWidth() - actor.getWidth();
            //            if (actorY + actor.getHeight() > stage.getHeight()) actorY = stage.getHeight() - actor.getHeight();
            actor.setPosition(actorX, actorY);
        }

        public void dragStop(InputEvent event, float x, float y, int pointer) {
            if (pointer != activePointer)
                return;
            activePointer = -1;
            if (payload == null)
                return;

            if (System.currentTimeMillis() - dragStartTime < dragTime)
                isValidTarget = false;
            if (dragActor != null)
                dragActor.remove();
            if (isValidTarget) {
                float stageX = event.getStageX() + touchOffsetX, stageY = event.getStageY() + touchOffsetY;
                target.actor.stageToLocalCoordinates(tmpVector.set(stageX, stageY));
                target.drop(source, payload, tmpVector.x, tmpVector.y, pointer);
            }
            source.dragStop(event, x, y, pointer, payload, isValidTarget ? target : null);
            if (target != null)
                target.reset(source, payload);
            payload = null;
            target = null;
            isValidTarget = false;
            dragActor = null;
        }
    };
    listener.setTapSquareSize(tapSquareSize);
    listener.setButton(button);
    source.actor.addCaptureListener(listener);
    sourceListeners.put(source, listener);
}

From source file:com.vlaaad.dice.game.world.controllers.SpawnController.java

License:Open Source License

private DragListener createDragToSpawnListener(final WorldObjectView view, final Creature creature) {
    return new DragListener() {
        private float initialX;
        private float initialY;

        {/*from  w  w w .  java2s .com*/
            setTapSquareSize(4);
        }

        private boolean shouldHideOnDrag;
        private WorldObjectView draggedView = ViewController.createView(world.viewer, world.playerColors,
                creature);

        @Override
        public void touchUp(InputEvent event, float x, float y, int pointer, int button) {
            if (!isDragging()) {
                creatureInfoWindow.show(new CreatureInfoWindow.Params(creature, world));
            }

            if (shouldHideOnDrag) {
                table.clearActions();
                table.addAction(Actions.alpha(1, 0.3f));
            }
            super.touchUp(event, x, y, pointer, button);
        }

        @Override
        public void dragStart(InputEvent event, float x, float y, int pointer) {
            if (scrollingEnabled) {
                if (Math.abs(event.getStageX() - initialX) < Math.abs(event.getStageY() - initialY)) {
                    event.getStage().cancelTouchFocusExcept(this, event.getListenerActor());
                } else {
                    return;
                }
            }
            if (placed.contains(creature))
                return;

            //                event.getStage().cancelTouchFocus(this, event.getListenerActor());
            shouldHideOnDrag = shouldHideOnDrag();
            if (shouldHideOnDrag) {
                table.clearActions();
                table.addAction(Actions.alpha(0, 0.3f));
            }
            view.getColor().a = 0f;
            view.setTouchable(Touchable.disabled);
            world.stage.addActor(draggedView);
            drag(event, x, y, pointer);
            SoundManager.instance.playSound("ui-button-down");
        }

        @Override
        public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
            initialX = event.getStageX();
            initialY = event.getStageY();
            return super.touchDown(event, x, y, pointer, button);
        }

        @Override
        public void drag(InputEvent event, float x, float y, int pointer) {
            if (placed.contains(creature))
                return;
            draggedView.setPosition(event.getStageX() - view.getWidth() / 2,
                    event.getStageY() - view.getHeight() / 2);
        }

        @Override
        public void dragStop(InputEvent event, float x, float y, int pointer) {
            if (placed.contains(creature))
                return;
            draggedView.remove();
            Vector2 coordinate = world.getController(ViewController.class).root
                    .stageToLocalCoordinates(new Vector2(draggedView.getX() + draggedView.getWidth() / 2,
                            draggedView.getY() + draggedView.getHeight() / 2));
            coordinate.scl(1 / ViewController.CELL_SIZE);
            final int cellX = MathUtils.floor(coordinate.x);
            final int cellY = MathUtils.floor(coordinate.y);
            WorldObject w = world.get(cellX, cellY);
            if (cellX < 0 || cellY < 0 || cellX >= world.width || cellY >= world.height || (w != null
                    && !(w instanceof Creature && ((Creature) w).initialPlayer == world.viewer))) {
                view.getColor().a = 1f;
                view.setTouchable(Touchable.enabled);
                refreshStartButton();
                return;
            }
            if (world.level.getElement(LevelElementType.spawn, cellX, cellY) == world.viewer.fraction) {
                if (w != null) {
                    removeFromPlaced((Creature) w);
                }
                SoundManager.instance.playSound("ui-button-up");
                place(creature, cellX, cellY);
            } else {
                view.setTouchable(Touchable.enabled);
                view.getColor().a = 1f;
            }
        }
    };
}

From source file:com.vlaaad.dice.game.world.view.ViewScroller.java

License:Open Source License

public ViewScroller(ViewController viewController) {
    this.viewController = viewController;
    stage = viewController.world.stage;//from   w  ww.  j a  va2  s.co m
    root = viewController.root;

    hScrollEnabled = root.getWidth() > stage.getWidth() - LEFT - RIGHT;
    vScrollEnabled = root.getHeight() > stage.getHeight() - BOTTOM - TOP;

    minRootX = stage.getWidth() - RIGHT - root.getWidth();
    maxRootX = LEFT;
    minRootY = stage.getHeight() - TOP - root.getHeight();
    maxRootY = BOTTOM;

    stage.addListener(listener = new DragListener() {
        {
            setTapSquareSize(8);
        }

        @Override
        public void drag(InputEvent event, float x, float y, int pointer) {
            if (!enabled)
                return;
            if (!event.getTarget().isDescendantOf(root) && event.getTarget() != stage.getRoot())
                return;
            if (hScrollEnabled)
                root.setX(MathUtils.clamp(root.getX() - getDeltaX(), minRootX, maxRootX));
            if (vScrollEnabled)
                root.setY(MathUtils.clamp(root.getY() - getDeltaY(), minRootY, maxRootY));
        }
    });
}

From source file:de.bitbrain.craft.ui.widgets.CraftingWidget.java

License:Open Source License

private void registerEvents() {
    gestureManager.addListener(professionLogic.getCraftingGesture());
    gestureManager.addListener(new BasicGestureListener() {
        @Override/* ww w  .j a  va 2s .c  o m*/
        public boolean fling(float velocityX, float velocityY, int button) {
            return super.fling(velocityX, velocityY, button);
        }
    });
    addListener(new DragListener() {
        @Override
        public void dragStart(InputEvent event, float x, float y, int pointer) {
            professionLogic.fetch();
        }

        @Override
        public void dragStop(InputEvent event, float x, float y, int pointer) {
            MouseEvent<Item> mouseEvent = new MouseEvent<Item>(EventType.MOUSEDROP, dragItem,
                    Sizes.localMouseX(), Sizes.localMouseY());
            mouseEvent.setParam(Event.SENDER, CraftingWidget.this);
            mouseEvent.setParam(ItemEvent.AMOUNT, dragAmount);
            if (!collides(Sizes.localMouseX(), Sizes.localMouseY())) {
                mouseEvent.setParam(Event.SOURCE_X, 0f);
                mouseEvent.setParam(Event.SOURCE_Y, 0f);
            }
            eventBus.fireEvent(mouseEvent);
            dragItem = null;
            dragAmount = 0;
        }
    });
}

From source file:de.bitbrain.craft.ui.widgets.ElementWidget.java

License:Open Source License

private void registerEvents(Actor actor) {
    // Allow dragging for icons only
    icon.addListener(new DragListener() {
        @Override/*from w  w w  .  ja v  a  2s.  c  om*/
        public void dragStart(InputEvent event, float x, float y, int pointer) {
            if (data.getAmount() > 0) {
                eventBus.fireEvent(new MouseEvent<ElementData>(EventType.MOUSEDRAG, getData(), x, y));
            }
        }

        @Override
        public void dragStop(InputEvent event, float x, float y, int pointer) {
            if (data.getAmount() > 0) {
                eventBus.fireEvent(new MouseEvent<ElementData>(EventType.MOUSEDROP, getData(), x, y));
            }
        }
    });
    icon.addCaptureListener(new InputListener() {
        /* (non-Javadoc)
         * @see com.badlogic.gdx.scenes.scene2d.InputListener#touchDown(com.badlogic.gdx.scenes.scene2d.InputEvent, float, float, int, int)
         */
        @Override
        public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
            return true;
        }
    });
    actor.addListener(new ClickListener() {
        @Override
        public void clicked(InputEvent event, float x, float y) {
            if (craftable) {
                eventBus.fireEvent(new MouseEvent<ElementData>(EventType.CLICK, getData(), x, y));
            }
        }
    });
}