Search in sources :

Example 56 with ChangeListener

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

the class DialogPathErrors method resetDrawableTable.

private void resetDrawableTable(Main main, Skin skin, Array<DrawableData> drawables, Array<FontData> fonts) {
    dataTable.clear();
    if (drawables.size > 0) {
        Label label = new Label("Drawable Name", skin, "black");
        dataTable.add(label);
        label = new Label("Path", skin, "black");
        dataTable.add(label);
        dataTable.add();
        label = new Label("Found?", skin, "black");
        dataTable.add(label);
        dataTable.row();
        Image image = new Image(skin, "welcome-separator");
        dataTable.add(image).colspan(4).pad(5.0f).padLeft(0.0f).padRight(0.0f).growX();
        for (DrawableData drawable : drawables) {
            dataTable.row();
            label = new Label(drawable.name, skin);
            dataTable.add(label);
            label = new Label(drawable.file.path(), skin);
            label.setWrap(true);
            label.setAlignment(Align.left);
            dataTable.add(label).growX();
            TextButton textButton = new TextButton("browse...", skin);
            textButton.addListener(main.getHandListener());
            dataTable.add(textButton).padLeft(10.0f);
            textButton.addListener(new ChangeListener() {

                @Override
                public void changed(ChangeListener.ChangeEvent event, Actor actor) {
                    DesktopWorker desktopWorker = main.getDesktopWorker();
                    String[] filterPatterns = null;
                    if (!Utils.isMac()) {
                        filterPatterns = new String[] { "*.png", "*.jpg", "*.jpeg", "*.bmp", "*.gif" };
                    }
                    File file = desktopWorker.openDialog("Locate " + drawable.file.name() + "...", drawable.file.path(), filterPatterns, "Image files");
                    if (file != null) {
                        FileHandle fileHandle = new FileHandle(file);
                        drawable.file = fileHandle;
                        if (!foundDrawables.contains(drawable, true)) {
                            foundDrawables.add(drawable);
                        }
                        resolveAssetsFromFolder(fileHandle.parent(), drawables, fonts);
                        resetDrawableTable(main, skin, drawables, fonts);
                    }
                }
            });
            if (foundDrawables.contains(drawable, true)) {
                label = new Label("YES", skin, "white");
                label.setColor(Color.GREEN);
                dataTable.add(label);
            } else {
                label = new Label("NO", skin, "white");
                label.setColor(Color.RED);
                dataTable.add(label);
            }
            dataTable.row();
            image = new Image(skin, "welcome-separator");
            dataTable.add(image).colspan(4).pad(5.0f).padLeft(0.0f).padRight(0.0f).growX();
        }
    }
    if (fonts.size > 0) {
        dataTable.row();
        dataTable.defaults().padTop(20.0f);
        Label label = new Label("Font Name", skin, "black");
        dataTable.add(label);
        label = new Label("Path", skin, "black");
        dataTable.add(label);
        dataTable.add();
        label = new Label("Found?", skin, "black");
        dataTable.add(label);
        dataTable.defaults().reset();
        dataTable.row();
        Image image = new Image(skin, "welcome-separator");
        dataTable.add(image).colspan(4).pad(5.0f).padLeft(0.0f).padRight(0.0f).growX();
        for (FontData font : fonts) {
            dataTable.row();
            label = new Label(font.getName(), skin);
            dataTable.add(label);
            label = new Label(font.file.path(), skin);
            label.setWrap(true);
            label.setAlignment(Align.left);
            dataTable.add(label).growX();
            TextButton textButton = new TextButton("browse...", skin);
            textButton.addListener(main.getHandListener());
            dataTable.add(textButton);
            textButton.addListener(new ChangeListener() {

                @Override
                public void changed(ChangeListener.ChangeEvent event, Actor actor) {
                    DesktopWorker desktopWorker = main.getDesktopWorker();
                    String[] filterPatterns = null;
                    if (!Utils.isMac()) {
                        filterPatterns = new String[] { "*.fnt" };
                    }
                    File file = desktopWorker.openDialog("Locate " + font.file.name() + "...", font.file.path(), filterPatterns, "Font files");
                    if (file != null) {
                        FileHandle fileHandle = new FileHandle(file);
                        font.file = fileHandle;
                        if (!foundFonts.contains(font, true)) {
                            foundFonts.add(font);
                        }
                        resolveAssetsFromFolder(fileHandle.parent(), drawables, fonts);
                        resetDrawableTable(main, skin, drawables, fonts);
                    }
                }
            });
            if (foundFonts.contains(font, true)) {
                label = new Label("YES", skin, "white");
                label.setColor(Color.GREEN);
                dataTable.add(label);
            } else {
                label = new Label("NO", skin, "white");
                label.setColor(Color.RED);
                dataTable.add(label);
            }
            dataTable.row();
            image = new Image(skin, "welcome-separator");
            dataTable.add(image).colspan(4).pad(5.0f).padLeft(0.0f).padRight(0.0f).growX();
        }
    }
}
Also used : TextButton(com.badlogic.gdx.scenes.scene2d.ui.TextButton) DesktopWorker(com.ray3k.skincomposer.DesktopWorker) FileHandle(com.badlogic.gdx.files.FileHandle) FontData(com.ray3k.skincomposer.data.FontData) Label(com.badlogic.gdx.scenes.scene2d.ui.Label) Image(com.badlogic.gdx.scenes.scene2d.ui.Image) DrawableData(com.ray3k.skincomposer.data.DrawableData) Actor(com.badlogic.gdx.scenes.scene2d.Actor) ChangeListener(com.badlogic.gdx.scenes.scene2d.utils.ChangeListener) File(java.io.File)

Example 57 with ChangeListener

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

the class DialogSettings method populate.

public void populate() {
    Table t = getContentTable();
    getButtonTable().padBottom(15.0f);
    Label label = new Label("Settings", main.getSkin(), "title");
    t.add(label).colspan(2);
    t.row();
    TextButton textButton = new TextButton("Open temp/log directory", main.getSkin());
    textButton.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeListener.ChangeEvent event, Actor actor) {
            try {
                Utils.openFileExplorer(Gdx.files.local("temp/"));
            } catch (Exception e) {
                Gdx.app.error(getClass().getName(), "Error opening temp folder", e);
                main.getDialogFactory().showDialogError("Folder Error...", "Error opening temp folder.\n\nOpen log?");
            }
        }
    });
    textButton.addListener(main.getHandListener());
    t.add(textButton).colspan(2).padTop(15.0f);
    t.row();
    textButton = new TextButton("Open preferences directory", main.getSkin());
    textButton.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeListener.ChangeEvent event, Actor actor) {
            try {
                Utils.openFileExplorer(Gdx.files.external(".prefs/"));
            } catch (Exception e) {
                Gdx.app.error(getClass().getName(), "Error opening preferences folder", e);
                main.getDialogFactory().showDialogError("Folder Error...", "Error opening preferences folder.\n\nOpen log?");
            }
        }
    });
    textButton.addListener(main.getHandListener());
    t.add(textButton).colspan(2);
    if (main.getProjectData().areChangesSaved() && main.getProjectData().getSaveFile().exists()) {
        t.row();
        textButton = new TextButton("Open project/import directory", main.getSkin());
        textButton.addListener(new ChangeListener() {

            @Override
            public void changed(ChangeListener.ChangeEvent event, Actor actor) {
                try {
                    Utils.openFileExplorer(main.getProjectData().getSaveFile().sibling(main.getProjectData().getSaveFile().nameWithoutExtension() + "_data"));
                } catch (Exception e) {
                    Gdx.app.error(getClass().getName(), "Error opening project folder", e);
                    main.getDialogFactory().showDialogError("Folder Error...", "Error opening project folder\n\nOpen log?");
                }
            }
        });
        textButton.addListener(main.getHandListener());
        t.add(textButton).colspan(2);
    }
    t.row();
    textButton = new TextButton("Open texture packer settings file", main.getSkin());
    textButton.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeListener.ChangeEvent event, Actor actor) {
            try {
                Utils.openFileExplorer(Gdx.files.local("texturepacker/defaults.json"));
            } catch (Exception e) {
                Gdx.app.error(getClass().getName(), "Error opening defaults.json", e);
                main.getDialogFactory().showDialogError("File Error...", "Error opening defaults.json\n\nOpen log?");
            }
        }
    });
    textButton.addListener(main.getHandListener());
    t.add(textButton).colspan(2);
    t.row();
    label = new Label("Max Number of Undos: ", main.getSkin());
    t.add(label).right().padTop(10.0f);
    Spinner spinner3 = new Spinner(main.getProjectData().getMaxUndos(), 1.0, true, Orientation.HORIZONTAL, getSkin());
    spinner3.setMinimum(1.0);
    spinner3.setMaximum(100.0);
    spinner3.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeListener.ChangeEvent event, Actor actor) {
            maxUndos = (int) spinner3.getValue();
        }
    });
    spinner3.addListener(new FocusListener() {

        @Override
        public void keyboardFocusChanged(FocusListener.FocusEvent event, Actor actor, boolean focused) {
            maxUndos = (int) spinner3.getValue();
        }
    });
    spinner3.getTextField().addListener(main.getIbeamListener());
    spinner3.getButtonMinus().addListener(main.getHandListener());
    spinner3.getButtonPlus().addListener(main.getHandListener());
    t.add(spinner3).minWidth(150.0f).left().padTop(10.0f);
    t.row();
    final ImageTextButton checkBox = new ImageTextButton("Keep resources relative?", getSkin(), "checkbox");
    checkBox.setChecked(resourcesRelative);
    checkBox.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeListener.ChangeEvent event, Actor actor) {
            resourcesRelative = checkBox.isChecked();
        }
    });
    t.add(checkBox).padTop(10.0f).colspan(2);
    t.row();
    final ImageTextButton welcomeCheckBox = new ImageTextButton("Show welcome screen?", getSkin(), "checkbox");
    welcomeCheckBox.setChecked(allowingWelcome);
    welcomeCheckBox.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeListener.ChangeEvent event, Actor actor) {
            allowingWelcome = welcomeCheckBox.isChecked();
        }
    });
    t.add(welcomeCheckBox).padTop(10.0f).colspan(2);
    t.row();
    label = new Label("Exported JSON Format:", getSkin());
    t.add(label).right().padTop(10.0f);
    final SelectBox<ExportFormat> exportFormatSelectBox = new SelectBox(getSkin());
    exportFormatSelectBox.setItems(ExportFormat.MINIMAL, ExportFormat.JAVASCRIPT, ExportFormat.JSON);
    exportFormatSelectBox.setSelected(exportFormat);
    exportFormatSelectBox.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeListener.ChangeEvent event, Actor actor) {
            exportFormat = exportFormatSelectBox.getSelected();
        }
    });
    t.add(exportFormatSelectBox).left().padTop(10.0f);
    ;
    button("OK", true);
    button("Cancel", false);
    getButtonTable().getCells().first().getActor().addListener(main.getHandListener());
    getButtonTable().getCells().get(1).getActor().addListener(main.getHandListener());
    key(Keys.ESCAPE, false);
}
Also used : ImageTextButton(com.badlogic.gdx.scenes.scene2d.ui.ImageTextButton) TextButton(com.badlogic.gdx.scenes.scene2d.ui.TextButton) Table(com.badlogic.gdx.scenes.scene2d.ui.Table) ImageTextButton(com.badlogic.gdx.scenes.scene2d.ui.ImageTextButton) Spinner(com.ray3k.skincomposer.Spinner) SelectBox(com.badlogic.gdx.scenes.scene2d.ui.SelectBox) Label(com.badlogic.gdx.scenes.scene2d.ui.Label) Actor(com.badlogic.gdx.scenes.scene2d.Actor) ChangeListener(com.badlogic.gdx.scenes.scene2d.utils.ChangeListener) FocusListener(com.badlogic.gdx.scenes.scene2d.utils.FocusListener)

Example 58 with ChangeListener

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

the class MenuList method updateContents.

public void updateContents() {
    setSize(0.0f, 0.0f);
    clearChildren();
    buttons.clear();
    int index = 0;
    for (T item : items) {
        TextButton textButton = new TextButton(item.toString(), style.textButtonStyle);
        textButton.getLabel().setAlignment(Align.left);
        if (getCells().size > 0) {
            row();
        }
        add(textButton);
        if (index < shortcuts.size && shortcuts.get(index) != null && style.labelStyle != null) {
            Label label = new Label(shortcuts.get(index), style.labelStyle);
            textButton.add(label).padLeft(5.0f);
        }
        int i = index++;
        textButton.addListener(new ChangeListener() {

            @Override
            public void changed(ChangeListener.ChangeEvent event, Actor actor) {
                selectedIndex = i;
                selectedItem = item;
                fire(new MenuListEvent());
            }
        });
        buttons.add(textButton);
    }
    validate();
    float width = style.background.getLeftWidth() + style.background.getRightWidth();
    for (int i = 0; i < getColumns(); i++) {
        width += getColumnWidth(i);
    }
    float height = style.background.getLeftWidth() + style.background.getRightWidth();
    for (int i = 0; i < getRows(); i++) {
        height += getRowHeight(i);
    }
    for (Cell cell : getCells()) {
        cell.growX();
    }
    setSize(width, height);
}
Also used : TextButton(com.badlogic.gdx.scenes.scene2d.ui.TextButton) Actor(com.badlogic.gdx.scenes.scene2d.Actor) Label(com.badlogic.gdx.scenes.scene2d.ui.Label) ChangeListener(com.badlogic.gdx.scenes.scene2d.utils.ChangeListener) Cell(com.badlogic.gdx.scenes.scene2d.ui.Cell)

Example 59 with ChangeListener

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

the class Spinner method addWidgets.

private void addWidgets() {
    buttonMinus = new Button(style.buttonMinusStyle);
    buttonPlus = new Button(style.buttonPlusStyle);
    textField = new TextField("", style.textFieldStyle) {

        @Override
        public void next(boolean up) {
            if (up) {
                if (transversalPrevious != null) {
                    getStage().setKeyboardFocus(transversalPrevious);
                    if (transversalPrevious instanceof TextField) {
                        ((TextField) transversalPrevious).selectAll();
                    }
                } else {
                    super.next(up);
                }
            } else {
                if (transversalNext != null) {
                    getStage().setKeyboardFocus(transversalNext);
                    if (transversalNext instanceof TextField) {
                        ((TextField) transversalNext).selectAll();
                    }
                } else {
                    super.next(up);
                }
            }
        }
    };
    textField.setAlignment(Align.center);
    textField.addListener(new InputListener() {

        @Override
        public boolean keyDown(InputEvent event, int keycode) {
            if (keycode == Keys.UP) {
                addValue();
                fire(new ChangeListener.ChangeEvent());
            } else if (keycode == Keys.DOWN) {
                subtractValue();
                fire(new ChangeListener.ChangeEvent());
            }
            return false;
        }
    });
    textField.setTextFieldFilter(new TextField.TextFieldFilter() {

        @Override
        public boolean acceptChar(TextField textField1, char c) {
            boolean returnValue = false;
            if ((c >= 48 && c <= 57) || c == 45 || (!rounding && c == 46)) {
                String text = textField1.getText();
                if (textField1.getCursorPosition() <= text.length()) {
                    text = text.substring(0, textField1.getCursorPosition());
                    text += c + textField1.getText().substring(textField1.getCursorPosition());
                }
                if (text.matches("-?\\d*\\.?\\d*")) {
                    returnValue = true;
                }
            }
            return returnValue;
        }
    });
    updateText();
    if (null != orientation)
        switch(orientation) {
            case HORIZONTAL:
                add(buttonMinus);
                add(textField).prefWidth(35.0f).minWidth(35.0f).growX();
                add(buttonPlus);
                break;
            case HORIZONTAL_FLIPPED:
                add(buttonPlus);
                add(textField).prefWidth(35.0f).minWidth(35.0f).growX();
                add(buttonMinus);
                break;
            case VERTICAL:
                add(buttonPlus);
                row();
                add(textField).prefWidth(35.0f).minWidth(35.0f).growX();
                row();
                add(buttonMinus);
                break;
            case VERTICAL_FLIPPED:
                add(buttonMinus);
                row();
                add(textField).prefWidth(35.0f).minWidth(35.0f).growX();
                row();
                add(buttonPlus);
                break;
            case RIGHT_STACK:
                {
                    add(textField).prefWidth(35.0f).minWidth(35.0f).growX();
                    VerticalGroup group = new VerticalGroup();
                    add(group);
                    group.addActor(buttonPlus);
                    group.addActor(buttonMinus);
                    break;
                }
            case LEFT_STACK:
                {
                    VerticalGroup group = new VerticalGroup();
                    add(group);
                    group.addActor(buttonPlus);
                    group.addActor(buttonMinus);
                    add(textField).prefWidth(35.0f).minWidth(35.0f).growX();
                    break;
                }
            default:
                break;
        }
    buttonMinus.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeListener.ChangeEvent event, Actor actor) {
            subtractValue();
        }
    });
    buttonPlus.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeListener.ChangeEvent event, Actor actor) {
            addValue();
        }
    });
    textField.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeListener.ChangeEvent event, Actor actor) {
            Spinner parent = (Spinner) actor;
            String text = textField.getText();
            if (text.matches("\\-?(\\d+\\.?\\d*)|(\\.\\d+)")) {
                double value = Double.parseDouble(text);
                if (usingMinimum && value < parent.minimum) {
                    value = parent.minimum;
                } else if (usingMaximum && value > parent.maximum) {
                    value = parent.maximum;
                }
                parent.value = BigDecimal.valueOf(value);
            } else {
                parent.value = BigDecimal.valueOf(usingMinimum ? parent.minimum : 0);
            }
        }
    });
    textField.addListener(new FocusListener() {

        @Override
        public void keyboardFocusChanged(FocusListener.FocusEvent event, Actor actor, boolean focused) {
            Spinner parent = (Spinner) textField.getParent();
            if (usingMinimum && parent.value.doubleValue() < parent.minimum) {
                parent.value = BigDecimal.valueOf(parent.minimum);
            }
            if (usingMaximum && parent.value.doubleValue() > parent.maximum) {
                parent.value = BigDecimal.valueOf(parent.maximum);
            }
            parent.updateText();
        }
    });
    final Spinner spinner = this;
    addCaptureListener(new ChangeListener() {

        @Override
        public void changed(ChangeListener.ChangeEvent event, Actor actor) {
            event.setTarget(spinner);
        }
    });
}
Also used : VerticalGroup(com.badlogic.gdx.scenes.scene2d.ui.VerticalGroup) InputListener(com.badlogic.gdx.scenes.scene2d.InputListener) Button(com.badlogic.gdx.scenes.scene2d.ui.Button) Actor(com.badlogic.gdx.scenes.scene2d.Actor) TextField(com.badlogic.gdx.scenes.scene2d.ui.TextField) ChangeListener(com.badlogic.gdx.scenes.scene2d.utils.ChangeListener) InputEvent(com.badlogic.gdx.scenes.scene2d.InputEvent) FocusListener(com.badlogic.gdx.scenes.scene2d.utils.FocusListener)

Example 60 with ChangeListener

use of com.badlogic.gdx.scenes.scene2d.utils.ChangeListener in project bladecoder-adventure-engine by bladecoder.

the class OptionList method create.

@Override
protected void create() {
    EditOptionDialog dialog = (EditOptionDialog) getEditElementDialogInstance(null);
    dialog.show(getStage());
    dialog.setListener(new ChangeListener() {

        @Override
        public void changed(ChangeEvent event, Actor actor) {
            int pos = list.getSelectedIndex() + 1;
            DialogOption e = ((EditOptionDialog) actor).getElement();
            list.getItems().insert(pos, e);
            list.setSelectedIndex(pos);
            list.invalidateHierarchy();
        }
    });
}
Also used : PropertyChangeEvent(java.beans.PropertyChangeEvent) Actor(com.badlogic.gdx.scenes.scene2d.Actor) PropertyChangeListener(java.beans.PropertyChangeListener) ChangeListener(com.badlogic.gdx.scenes.scene2d.utils.ChangeListener) DialogOption(com.bladecoder.engine.model.DialogOption)

Aggregations

Actor (com.badlogic.gdx.scenes.scene2d.Actor)71 ChangeListener (com.badlogic.gdx.scenes.scene2d.utils.ChangeListener)71 TextButton (com.badlogic.gdx.scenes.scene2d.ui.TextButton)51 Label (com.badlogic.gdx.scenes.scene2d.ui.Label)43 Table (com.badlogic.gdx.scenes.scene2d.ui.Table)38 TextField (com.badlogic.gdx.scenes.scene2d.ui.TextField)25 Stage (com.badlogic.gdx.scenes.scene2d.Stage)22 Dialog (com.badlogic.gdx.scenes.scene2d.ui.Dialog)21 InputEvent (com.badlogic.gdx.scenes.scene2d.InputEvent)15 ScrollPane (com.badlogic.gdx.scenes.scene2d.ui.ScrollPane)14 SelectBox (com.badlogic.gdx.scenes.scene2d.ui.SelectBox)12 Skin (com.badlogic.gdx.scenes.scene2d.ui.Skin)12 InputListener (com.badlogic.gdx.scenes.scene2d.InputListener)11 Button (com.badlogic.gdx.scenes.scene2d.ui.Button)11 Image (com.badlogic.gdx.scenes.scene2d.ui.Image)11 DrawableData (com.ray3k.skincomposer.data.DrawableData)11 ColorData (com.ray3k.skincomposer.data.ColorData)10 Color (com.badlogic.gdx.graphics.Color)9 BitmapFont (com.badlogic.gdx.graphics.g2d.BitmapFont)9 Slider (com.badlogic.gdx.scenes.scene2d.ui.Slider)9