Search in sources :

Example 31 with ChangeListener

use of com.badlogic.gdx.scenes.scene2d.utils.ChangeListener in project skin-composer by raeleus.

the class DialogFonts method renameDialog.

private void renameDialog(FontData font) {
    TextField textField = new TextField("", getSkin());
    TextButton okButton;
    Dialog dialog = new Dialog("Rename Font?", getSkin(), "bg") {

        @Override
        protected void result(Object object) {
            if ((boolean) object) {
                renameFont(font, textField.getText());
            }
        }

        @Override
        public Dialog show(Stage stage) {
            Dialog dialog = super.show(stage);
            stage.setKeyboardFocus(textField);
            return dialog;
        }
    };
    dialog.getContentTable().padLeft(10.0f).padRight(10.0f);
    dialog.getTitleTable().padLeft(5.0f);
    Table bg = new Table(getSkin());
    bg.setBackground("white");
    bg.setColor(Color.WHITE);
    dialog.getContentTable().add(bg);
    Label label = new Label(font.getName(), getSkin(), "white");
    label.setColor(Color.BLACK);
    bg.add(label).pad(10);
    dialog.getContentTable().row();
    label = new Label("What do you want to rename the font to?", getSkin());
    dialog.getContentTable().add(label);
    dialog.getContentTable().row();
    textField.setText(font.getName());
    textField.selectAll();
    textField.addListener(ibeamListener);
    dialog.getContentTable().add(textField);
    dialog.button("OK", true);
    dialog.button("Cancel", false).key(Keys.ESCAPE, false);
    okButton = (TextButton) dialog.getButtonTable().getCells().first().getActor();
    okButton.setDisabled(true);
    okButton.addListener(handListener);
    dialog.getButtonTable().getCells().get(1).getActor().addListener(handListener);
    dialog.getButtonTable().padBottom(15.0f);
    textField.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeListener.ChangeEvent event, Actor actor) {
            boolean disable = !FontData.validate(textField.getText());
            if (!disable) {
                for (ColorData data : jsonData.getColors()) {
                    if (data.getName().equals(textField.getText())) {
                        disable = true;
                        break;
                    }
                }
            }
            okButton.setDisabled(disable);
        }
    });
    textField.setTextFieldListener((TextField textField1, char c) -> {
        if (c == '\n') {
            if (!okButton.isDisabled()) {
                renameFont(font, textField1.getText());
                dialog.hide();
            }
        }
    });
    textField.setFocusTraversal(false);
    dialog.show(getStage());
}
Also used : ChangeListener(com.badlogic.gdx.scenes.scene2d.utils.ChangeListener)

Example 32 with ChangeListener

use of com.badlogic.gdx.scenes.scene2d.utils.ChangeListener in project skin-composer by raeleus.

the class DialogImport method populate.

private void populate() {
    desktopWorker.addFilesDroppedListener(filesDroppedListener);
    getTitleTable().padLeft(5);
    var t = getContentTable();
    t.pad(15);
    var table = new Table();
    t.add(table);
    table.defaults().space(5);
    var label = new Label("Import Path:", getSkin());
    table.add(label);
    var textField = new TextField("", getSkin());
    textField.setName("path");
    textField.setText(projectData.getLastImportExportPath());
    textField.setCursorPosition(Math.max(0, textField.getText().length() - 1));
    table.add(textField).minWidth(400);
    textField.addListener(ibeamListener);
    textField.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeListener.ChangeEvent event, Actor actor) {
            TextButton textButton = findActor("new");
            textButton.setDisabled(!checkPath());
            textButton = findActor("current");
            textButton.setDisabled(!checkPath());
        }
    });
    var textButton = new TextButton("Browse...", skin);
    table.add(textButton);
    textButton.addListener(handListener);
    textButton.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeListener.ChangeEvent event, Actor actor) {
            showFileBrowser();
        }
    });
    t = getButtonTable();
    t.pad(5.0f);
    t.add().expandX();
    t.defaults().minWidth(75);
    textButton = new TextButton("Import to New Project", skin);
    textButton.setName("new");
    textButton.setDisabled(!checkPath());
    button(textButton, Result.NEW);
    textButton.addListener(handListener);
    textButton = new TextButton("Import into Current Project", skin);
    textButton.setName("current");
    textButton.setDisabled(!checkPath());
    button(textButton, Result.CURRENT);
    textButton.addListener(handListener);
    textButton = new TextButton("Cancel", skin);
    button(textButton, Result.CANCEL);
    textButton.addListener(handListener);
    key(Keys.ENTER, Result.CURRENT).key(Keys.NUMPAD_ENTER, Result.CURRENT).key(Keys.ESCAPE, Result.CANCEL);
}
Also used : Actor(com.badlogic.gdx.scenes.scene2d.Actor) ChangeListener(com.badlogic.gdx.scenes.scene2d.utils.ChangeListener)

Example 33 with ChangeListener

use of com.badlogic.gdx.scenes.scene2d.utils.ChangeListener in project skin-composer by raeleus.

the class DialogTenPatch method populate.

private void populate() {
    setSize(stage.getWidth(), stage.getHeight());
    var root = getContentTable();
    root.pad(10);
    root.clear();
    var top = new Table();
    top.setTouchable(Touchable.enabled);
    var bottom = new Table();
    bottom.setBackground(skin.getDrawable("white"));
    bottom.setTouchable(Touchable.enabled);
    var splitPane = new SplitPane(top, bottom, true, skin);
    splitPane.setSplitAmount(splitValue);
    root.add(splitPane).grow();
    splitPane.addListener(verticalResizeArrowListener);
    splitPane.addListener(new DragListener() {

        {
            setTapSquareSize(0f);
        }

        @Override
        public void drag(InputEvent event, float x, float y, int pointer) {
            super.drag(event, x, y, pointer);
            if (event.getListenerActor().equals(event.getTarget())) {
                tenPatchWidget.center();
            }
            splitValue = splitPane.getSplitAmount();
        }
    });
    var label = new Label("Ten Patch Editor", skin, "title-no-line");
    top.add(label);
    top.row();
    var table = new Table();
    top.add(table).growX().space(5);
    table.defaults().space(5);
    label = new Label("Name:", skin, "white");
    label.setName("nameLabel");
    table.add(label);
    var textField = new TextField(drawableData.name, skin);
    textField.setName("nameField");
    table.add(textField).growX();
    textField.addListener(ibeamListener);
    textField.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeEvent event, Actor actor) {
            drawableData.name = textField.getText();
            validateName();
        }
    });
    table.defaults().uniform().fill();
    var textButton = new TextButton("Save to File", skin);
    table.add(textButton);
    textButton.addListener(handListener);
    textButton.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeEvent event, Actor actor) {
            Runnable runnable = () -> {
                String[] filterPatterns = null;
                if (!Utils.isMac()) {
                    filterPatterns = new String[] { "*.png" };
                }
                var file = desktopWorker.saveDialog("Save as 9patch...", projectData.getLastDrawablePath(), filterPatterns, "Image files");
                if (file != null) {
                    Gdx.app.postRunnable(() -> {
                        var fileHandle = new FileHandle(file);
                        if (!fileHandle.name().toLowerCase(Locale.ROOT).endsWith(".9.png")) {
                            fileHandle = fileHandle.sibling(fileHandle.nameWithoutExtension() + ".9.png");
                        }
                        saveToImageFile(fileHandle);
                    });
                }
            };
            dialogFactory.showDialogLoading(runnable);
        }
    });
    textButton = new TextButton("Clear", skin);
    table.add(textButton);
    textButton.addListener(handListener);
    textButton.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeEvent event, Actor actor) {
            drawableData.tenPatchData.clear();
        }
    });
    textButton = new TextButton("More info...", skin);
    table.add(textButton);
    textButton.addListener(handListener);
    textButton.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeEvent event, Actor actor) {
            showAboutDialog();
        }
    });
    top.row();
    tenPatchWidget = new TenPatchWidget(skin);
    tenPatchWidget.setTenPatchData(drawableData.tenPatchData);
    tenPatchWidget.setTextureRegion(loadTextureFile(drawableData.file));
    top.add(tenPatchWidget).grow();
    tenPatchWidget.getStretchSwitchButton().addListener(handListener);
    tenPatchWidget.getModeSwitchButton().addListener(handListener);
    tenPatchWidget.addListener(new InputListener() {

        @Override
        public void enter(InputEvent event, float x, float y, int pointer, Actor fromActor) {
            getStage().setScrollFocus(tenPatchWidget);
        }

        @Override
        public void exit(InputEvent event, float x, float y, int pointer, Actor toActor) {
            zoomToMouse = false;
            if (pointer == -1) {
                if (getStage() != null) {
                    getStage().setScrollFocus(null);
                }
            }
        }

        @Override
        public boolean scrolled(InputEvent event, float x, float y, float amountX, float amountY) {
            zoomToMouse = true;
            Slider slider = findActor("ten-patch-zoom");
            slider.setValue(slider.getValue() - SCROLL_AMOUNT * amountY);
            return true;
        }
    });
    tenPatchWidget.addListener(new TenPatchWidget.TenPatchListener() {

        @Override
        public void valueChanged(TenPatchData tenPatchData) {
            updatePreview();
        }
    });
    top.row();
    table = new Table();
    table.pad(5);
    top.add(table).growX();
    table.defaults().space(5);
    var imageButton = new ImageButton(skin, "grid-light");
    imageButton.setName("grid-light");
    imageButton.setProgrammaticChangeEvents(false);
    table.add(imageButton);
    imageButton.addListener(handListener);
    imageButton.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeEvent event, Actor actor) {
            var imageButton = (ImageButton) actor;
            if (imageButton.isChecked()) {
                tenPatchWidget.setGridMode(TenPatchWidget.GridMode.LIGHT);
            } else {
                tenPatchWidget.setGridMode(TenPatchWidget.GridMode.NONE);
            }
            imageButton = findActor("grid-dark");
            imageButton.setChecked(false);
        }
    });
    imageButton = new ImageButton(skin, "grid-dark");
    imageButton.setName("grid-dark");
    imageButton.setProgrammaticChangeEvents(false);
    table.add(imageButton);
    imageButton.addListener(handListener);
    imageButton.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeEvent event, Actor actor) {
            var imageButton = (ImageButton) actor;
            if (imageButton.isChecked()) {
                tenPatchWidget.setGridMode(TenPatchWidget.GridMode.DARK);
            } else {
                tenPatchWidget.setGridMode(TenPatchWidget.GridMode.NONE);
            }
            imageButton = findActor("grid-light");
            imageButton.setChecked(false);
        }
    });
    imageButton = new ImageButton(skin, "resize");
    table.add(imageButton).expandX().right();
    imageButton.addListener(handListener);
    imageButton.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeListener.ChangeEvent event, Actor actor) {
            tenPatchWidget.zoomAndCenter();
            Slider slider = findActor("ten-patch-zoom");
            slider.setValue(tenPatchWidget.getZoomScale());
        }
    });
    var slider = new Slider(1, 100, 1f, false, skin, "zoom-horizontal");
    slider.setName("ten-patch-zoom");
    slider.setValue(1);
    table.add(slider);
    slider.addListener(handListener);
    slider.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeListener.ChangeEvent event, Actor actor) {
            var slider = (Slider) actor;
            if (!zoomToMouse) {
                tenPatchWidget.setZoomScale(slider.getValue());
            } else {
                temp.set(Gdx.input.getX(), Gdx.input.getY());
                tenPatchWidget.screenToLocalCoordinates(temp);
                tenPatchWidget.setZoomScale(temp.x, temp.y, slider.getValue());
            }
        }
    });
    top.row();
    table = new Table();
    top.add(table).growX();
    table.defaults().space(3);
    table.pad(5);
    var imageTextButton = new ImageTextButton("Animation...", skin, "ten-patch-animation");
    table.add(imageTextButton);
    imageTextButton.addListener(handListener);
    imageTextButton.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeEvent event, Actor actor) {
            var dialog = new DialogTenPatchAnimation(drawableData);
            dialog.addListener(new DialogTenPatchAnimation.DialogTenPatchAnimationListener() {

                @Override
                public void animationUpdated(DialogTenPatchAnimation.DialogTenPatchAnimationEvent event) {
                    updatePreview();
                }
            });
            dialog.show(getStage());
        }
    });
    textButton = new TextButton("Load Patches", skin);
    table.add(textButton);
    textButton.addListener(handListener);
    textButton.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeEvent event, Actor actor) {
            Runnable runnable = () -> {
                String[] filterPatterns = null;
                if (!Utils.isMac()) {
                    filterPatterns = new String[] { "*.9.png" };
                }
                var file = desktopWorker.openDialog("Load patches from file...", projectData.getLastDrawablePath(), filterPatterns, "Nine patch files");
                if (file != null) {
                    Gdx.app.postRunnable(() -> {
                        var fileHandle = new FileHandle(file);
                        if (fileHandle.name().toLowerCase(Locale.ROOT).endsWith(".9.png")) {
                            loadPatchesFromFile(fileHandle);
                        }
                    });
                }
            };
            dialogFactory.showDialogLoading(runnable);
        }
    });
    textButton = new TextButton("Auto Patches", skin);
    table.add(textButton);
    textButton.addListener(handListener);
    textButton.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeEvent event, Actor actor) {
            var pixmap = new Pixmap(fileHandle);
            if (fileHandle.path().toLowerCase(Locale.ROOT).endsWith(".9.png")) {
                var cropped = new Pixmap(pixmap.getWidth() - 2, pixmap.getHeight() - 2, Pixmap.Format.RGBA8888);
                cropped.setBlending(Pixmap.Blending.None);
                cropped.drawPixmap(pixmap, 0, 0, 1, 1, pixmap.getWidth() - 2, pixmap.getHeight() - 2);
                pixmap.dispose();
                pixmap = cropped;
            }
            var patches = Utils.calculatePatches(pixmap);
            drawableData.tenPatchData.horizontalStretchAreas.clear();
            drawableData.tenPatchData.horizontalStretchAreas.add(patches.left);
            drawableData.tenPatchData.horizontalStretchAreas.add(pixmap.getWidth() - patches.right - 1);
            drawableData.tenPatchData.verticalStretchAreas.clear();
            drawableData.tenPatchData.verticalStretchAreas.add(patches.bottom);
            drawableData.tenPatchData.verticalStretchAreas.add(pixmap.getHeight() - patches.top - 1);
            drawableData.tenPatchData.combineContiguousSretchAreas(true);
            drawableData.tenPatchData.removeInvalidStretchAreas(true);
            drawableData.tenPatchData.combineContiguousSretchAreas(false);
            drawableData.tenPatchData.removeInvalidStretchAreas(false);
            updatePreview();
            pixmap.dispose();
        }
    });
    imageTextButton = new ImageTextButton("More settings...", skin, "ten-patch-scrolling");
    table.add(imageTextButton);
    imageTextButton.addListener(handListener);
    imageTextButton.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeEvent event, Actor actor) {
            var dialog = new DialogTenPatchSettings(drawableData, tenPatchDrawable);
            dialog.addListener(new DialogTenPatchSettings.DialogTenPatchSettingsListener() {

                @Override
                public void settingsUpdated(DialogTenPatchSettings.DialogTenPatchSettingsEvent event) {
                    updatePreview();
                }
            });
            dialog.show(getStage());
        }
    });
    label = new Label("Preview", skin, "title-no-line");
    bottom.add(label);
    bottom.row();
    table = new Table();
    bottom.add(table).grow();
    var resizer = new ResizeWidget(null, skin);
    resizer.setName("resizer");
    resizer.setTouchable(Touchable.enabled);
    resizer.setResizingFromCenter(true);
    resizer.setAllowDragging(false);
    var cursor = Utils.textureRegionToCursor(skin.getRegion("cursor_resize_ne"), 16, 16);
    var resizeFourArrowListener = new ResizeFourArrowListener(cursor);
    resizer.getBottomLeftHandle().addListener(resizeFourArrowListener);
    resizer.getTopRightHandle().addListener(resizeFourArrowListener);
    cursor = Utils.textureRegionToCursor(skin.getRegion("cursor_resize_nw"), 16, 16);
    resizeFourArrowListener = new ResizeFourArrowListener(cursor);
    resizer.getTopLeftHandle().addListener(resizeFourArrowListener);
    resizer.getBottomRightHandle().addListener(resizeFourArrowListener);
    cursor = Utils.textureRegionToCursor(skin.getRegion("cursor_resize_vertical"), 16, 16);
    resizeFourArrowListener = new ResizeFourArrowListener(cursor);
    resizer.getBottomHandle().addListener(resizeFourArrowListener);
    resizer.getTopHandle().addListener(resizeFourArrowListener);
    cursor = Utils.textureRegionToCursor(skin.getRegion("cursor_resize_horizontal"), 16, 16);
    resizeFourArrowListener = new ResizeFourArrowListener(cursor);
    resizer.getLeftHandle().addListener(resizeFourArrowListener);
    resizer.getRightHandle().addListener(resizeFourArrowListener);
    table.add(resizer).grow();
    String name = drawableData.file.nameWithoutExtension();
    var matcher = Pattern.compile(".*(?=\\.9$)").matcher(name);
    if (matcher.find()) {
        name = matcher.group();
    }
    originalRegion = atlasData.getAtlas().findRegion(name);
    tenPatchDrawable = new TenPatchDrawable(new int[0], new int[0], false, originalRegion);
    if (drawableData.tenPatchData.colorName != null) {
        tenPatchDrawable.getColor().set(jsonData.getColorByName(drawableData.tenPatchData.colorName).color);
    }
    tenPatchDrawable.setTiling(drawableData.tenPatchData.tile);
    table = new Table();
    table.setName("tenPatchTable");
    table.setBackground(tenPatchDrawable);
    resizer.setActor(table);
    layout();
    resizer.getStack().setSize(100, 100);
    bottom.row();
    table = new Table();
    table.setBackground(skin.getDrawable("white"));
    table.pad(5);
    bottom.add(table).growX();
    table.defaults().space(5);
    label = new Label("Content:", skin);
    table.add(label).right();
    var selectBox = new SelectBox<String>(skin);
    selectBox.setName("contentSelectBox");
    selectBox.setItems("None", "Text", "Color", "Drawable");
    table.add(selectBox);
    selectBox.addListener(handListener);
    selectBox.getList().addListener(handListener);
    selectBox.getList().addListener(new ClickListener() {

        @Override
        public void clicked(InputEvent event, float x, float y) {
            selectBox.fire(new ChangeListener.ChangeEvent());
        }
    });
    selectBox.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeEvent event, Actor actor) {
            createPreview();
        }
    });
    imageButton = new ImageButton(skin, "color");
    table.add(imageButton);
    imageButton.addListener(handListener);
    imageButton.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeEvent event, Actor actor) {
            dialogFactory.showDialogColors(new StyleProperty(), (colorData, pressedCancel) -> {
                if (colorData == null) {
                    previewColor.set(DEFAULT_PREVIEW_COLOR);
                } else {
                    previewColor.set(colorData.color);
                }
                updatePreview();
            }, null);
        }
    });
    label = new Label("Background:", skin);
    table.add(label).padLeft(15);
    imageButton = new ImageButton(skin, "color");
    table.add(imageButton);
    imageButton.addListener(handListener);
    imageButton.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeEvent event, Actor actor) {
            dialogFactory.showDialogColors(new StyleProperty(), (colorData, pressedCancel) -> {
                if (colorData == null) {
                    bottom.setColor(Color.WHITE);
                } else {
                    bottom.setColor(colorData.color);
                }
                updatePreview();
            }, null);
        }
    });
    table.add().expandX();
    root = getButtonTable();
    root.pad(10);
    root.clearChildren();
    root.defaults().uniform().fill();
    textButton = new TextButton("OK", skin);
    textButton.setName("okayButton");
    button(textButton, true);
    validateName();
    textButton.addListener(handListener);
    textButton = new TextButton("Cancel", skin);
    button(textButton, false);
    textButton.addListener(handListener);
    updatePreview();
    layout();
    tenPatchWidget.zoomAndCenter();
}
Also used : FileHandle(com.badlogic.gdx.files.FileHandle) Array(com.badlogic.gdx.utils.Array) Scaling(com.badlogic.gdx.utils.Scaling) Utils(com.ray3k.skincomposer.utils.Utils) Gdx(com.badlogic.gdx.Gdx) Texture(com.badlogic.gdx.graphics.Texture) TenPatchDrawable(com.ray3k.tenpatch.TenPatchDrawable) ChangeListener(com.badlogic.gdx.scenes.scene2d.utils.ChangeListener) ResizeWidget(com.ray3k.stripe.ResizeWidget) Vector2(com.badlogic.gdx.math.Vector2) Locale(java.util.Locale) IntArray(com.badlogic.gdx.utils.IntArray) TenPatchWidget(com.ray3k.skincomposer.TenPatchWidget) Actions(com.badlogic.gdx.scenes.scene2d.actions.Actions) TextureRegion(com.badlogic.gdx.graphics.g2d.TextureRegion) Input(com.badlogic.gdx.Input) PixmapIO(com.badlogic.gdx.graphics.PixmapIO) CrushMode(com.ray3k.tenpatch.TenPatchDrawable.CrushMode) com.badlogic.gdx.scenes.scene2d(com.badlogic.gdx.scenes.scene2d) ClickListener(com.badlogic.gdx.scenes.scene2d.utils.ClickListener) DrawableData(com.ray3k.skincomposer.data.DrawableData) com.badlogic.gdx.scenes.scene2d.ui(com.badlogic.gdx.scenes.scene2d.ui) Pixmap(com.badlogic.gdx.graphics.Pixmap) FilesDroppedListener(com.ray3k.skincomposer.FilesDroppedListener) Align(com.badlogic.gdx.utils.Align) Color(com.badlogic.gdx.graphics.Color) PopTable(com.ray3k.stripe.PopTable) DragListener(com.badlogic.gdx.scenes.scene2d.utils.DragListener) Keys(com.badlogic.gdx.Input.Keys) ResizeFourArrowListener(com.ray3k.skincomposer.ResizeFourArrowListener) Main(com.ray3k.skincomposer.Main) Pattern(java.util.regex.Pattern) LabelStyle(com.badlogic.gdx.scenes.scene2d.ui.Label.LabelStyle) StageResizeListener(com.ray3k.skincomposer.StageResizeListener) StyleProperty(com.ray3k.skincomposer.data.StyleProperty) FileHandle(com.badlogic.gdx.files.FileHandle) TenPatchWidget(com.ray3k.skincomposer.TenPatchWidget) ResizeFourArrowListener(com.ray3k.skincomposer.ResizeFourArrowListener) DragListener(com.badlogic.gdx.scenes.scene2d.utils.DragListener) ChangeListener(com.badlogic.gdx.scenes.scene2d.utils.ChangeListener) ClickListener(com.badlogic.gdx.scenes.scene2d.utils.ClickListener) PopTable(com.ray3k.stripe.PopTable) TenPatchDrawable(com.ray3k.tenpatch.TenPatchDrawable) StyleProperty(com.ray3k.skincomposer.data.StyleProperty) ResizeWidget(com.ray3k.stripe.ResizeWidget) Pixmap(com.badlogic.gdx.graphics.Pixmap)

Example 34 with ChangeListener

use of com.badlogic.gdx.scenes.scene2d.utils.ChangeListener in project skin-composer by raeleus.

the class DialogColors method populate.

private void populate(Main main, boolean selectingForTintedDrawable, DialogColorsListener listener) {
    this.main = main;
    this.listener = listener;
    this.selectingForTintedDrawable = selectingForTintedDrawable;
    colors = jsonData.getColors();
    getContentTable().defaults().expandX();
    if (styleProperty != null || customProperty != null) {
        Label label = new Label("Select a color...", getSkin(), "title");
        label.setAlignment(Align.center);
        getContentTable().add(label);
        getContentTable().row();
    } else if (selectingForTintedDrawable) {
        Label label = new Label("Select a color for tinted drawable...", getSkin(), "title");
        label.setAlignment(Align.center);
        getContentTable().add(label);
        getContentTable().row();
    } else {
        Label label = new Label("Colors", getSkin(), "title");
        label.setAlignment(Align.center);
        getContentTable().add(label);
        getContentTable().row();
    }
    Table table = new Table();
    table.defaults().pad(2.0f);
    table.add(new Label("Sort by: ", getSkin())).padLeft(20.0f);
    selectBox = new SelectBox<String>(getSkin());
    selectBox.setItems(new String[] { "A-Z", "Z-A" });
    selectBox.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeListener.ChangeEvent event, Actor actor) {
            sortBySelectedMode();
        }
    });
    selectBox.addListener(handListener);
    selectBox.getList().addListener(handListener);
    table.add(selectBox);
    TextButton imageButton = new TextButton("New Color", getSkin(), "new");
    imageButton.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeListener.ChangeEvent event, Actor actor) {
            showColorPicker();
        }
    });
    imageButton.addListener(handListener);
    table.add(imageButton).expandX().left();
    getContentTable().add(table).left().expandX();
    getContentTable().row();
    colorTable = new Table();
    refreshTable();
    table = new Table();
    table.add(colorTable).pad(5.0f);
    scrollPane = new ScrollPane(table, getSkin());
    scrollPane.setFadeScrollBars(false);
    getContentTable().add(scrollPane).grow();
    if (styleProperty != null || customProperty != null) {
        button("Clear Color", true);
        button("Cancel", false);
        getButtonTable().getCells().get(0).getActor().addListener(handListener);
        getButtonTable().getCells().get(1).getActor().addListener(handListener);
    } else if (selectingForTintedDrawable) {
        button("Cancel", false);
        getButtonTable().getCells().get(0).getActor().addListener(handListener);
    } else {
        button("Close", false);
        getButtonTable().getCells().get(0).getActor().addListener(handListener);
    }
    getButtonTable().padBottom(15.0f);
    key(Keys.ESCAPE, false);
}
Also used : ChangeListener(com.badlogic.gdx.scenes.scene2d.utils.ChangeListener)

Example 35 with ChangeListener

use of com.badlogic.gdx.scenes.scene2d.utils.ChangeListener in project skin-composer by raeleus.

the class TenPatchWidget method populate.

public void populate() {
    clearChildren();
    var bgTable = new Table();
    bgTable.setBackground(style.border);
    bgTable.setClip(true);
    add(bgTable);
    // display
    var display = new TenPatchDisplay(this, style);
    bgTable.add(display).grow();
    // switch button
    var table = new Table();
    table.pad(15);
    add(table);
    var subTable = new Table();
    table.add(subTable).expand().top().left();
    subTable.defaults().space(5);
    var buttonStyle = new ButtonStyle();
    buttonStyle.up = style.stretchSwitchOff;
    buttonStyle.over = style.stretchSwitchOffOver;
    buttonStyle.checked = style.stretchSwitchOn;
    buttonStyle.checkedOver = style.stretchSwitchOnOver;
    stretchSwitchButton = new Button(buttonStyle);
    subTable.add(stretchSwitchButton);
    stretchSwitchButton.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeEvent event, Actor actor) {
            stretchMode = !stretchSwitchButton.isChecked();
        }
    });
    subTable.row();
    buttonStyle = new ButtonStyle();
    buttonStyle.up = style.modeSwitchOff;
    buttonStyle.over = style.modeSwitchOffOver;
    buttonStyle.checked = style.modeSwitchOn;
    buttonStyle.checkedOver = style.modeSwitchOnOver;
    modeSwitchButton = new Button(buttonStyle);
    subTable.add(modeSwitchButton);
    modeSwitchButton.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeEvent event, Actor actor) {
            horizontalMode = !modeSwitchButton.isChecked();
        }
    });
    numberLabel = new Label("52", skin, "filter");
    numberLabel.setTouchable(Touchable.disabled);
    numberLabel.setColor(1, 1, 1, 0);
    numberLabel.setAlignment(Align.center);
    table.addActor(numberLabel);
    var dragListener = new DragListener() {

        @Override
        public void drag(InputEvent event, float x, float y, int pointer) {
            super.drag(event, x, y, pointer);
            numberLabel.pack();
            numberLabel.setPosition(x, y, Align.bottom);
        }

        @Override
        public boolean mouseMoved(InputEvent event, float x, float y) {
            numberLabel.pack();
            numberLabel.setPosition(x, y, Align.bottom);
            return super.mouseMoved(event, x, y);
        }
    };
    dragListener.setButton(-1);
    addListener(dragListener);
}
Also used : DragListener(com.badlogic.gdx.scenes.scene2d.utils.DragListener) ChangeListener(com.badlogic.gdx.scenes.scene2d.utils.ChangeListener) ButtonStyle(com.badlogic.gdx.scenes.scene2d.ui.Button.ButtonStyle)

Aggregations

ChangeListener (com.badlogic.gdx.scenes.scene2d.utils.ChangeListener)263 Actor (com.badlogic.gdx.scenes.scene2d.Actor)218 InputEvent (com.badlogic.gdx.scenes.scene2d.InputEvent)144 PopTableClickListener (com.ray3k.stripe.PopTableClickListener)128 SimActor (com.ray3k.skincomposer.dialog.scenecomposer.DialogSceneComposerModel.SimActor)126 InputListener (com.badlogic.gdx.scenes.scene2d.InputListener)49 Spinner (com.ray3k.stripe.Spinner)40 PopTable (com.ray3k.stripe.PopTable)38 Label (com.badlogic.gdx.scenes.scene2d.ui.Label)37 ClickListener (com.badlogic.gdx.scenes.scene2d.utils.ClickListener)35 TextButton (com.badlogic.gdx.scenes.scene2d.ui.TextButton)34 Stage (com.badlogic.gdx.scenes.scene2d.Stage)28 StyleSelectorPopTable (com.ray3k.skincomposer.dialog.scenecomposer.StyleSelectorPopTable)28 Table (com.badlogic.gdx.scenes.scene2d.ui.Table)26 Color (com.badlogic.gdx.graphics.Color)23 Skin (com.badlogic.gdx.scenes.scene2d.ui.Skin)19 ValueBeginChangeEvent (com.ray3k.stripe.RangeSlider.ValueBeginChangeEvent)19 ValueBeginChangeListener (com.ray3k.stripe.RangeSlider.ValueBeginChangeListener)19 ValueEndChangeEvent (com.ray3k.stripe.RangeSlider.ValueEndChangeEvent)19 ValueEndChangeListener (com.ray3k.stripe.RangeSlider.ValueEndChangeListener)19