Search in sources :

Example 1 with TextTooltip

use of com.badlogic.gdx.scenes.scene2d.ui.TextTooltip in project skin-composer by raeleus.

the class RootTable method refreshPreview.

public void refreshPreview() {
    if (previewTable != null) {
        previewTable.clear();
        previewTable.setBackground("white");
        previewTable.setColor((Color) previewProperties.get("bgcolor"));
        for (BitmapFont font : previewFonts) {
            font.dispose();
        }
        if (classSelectBox.getSelectedIndex() >= 0 && classSelectBox.getSelectedIndex() < Main.BASIC_CLASSES.length) {
            StyleData styleData = getSelectedStyle();
            Class clazz = Main.BASIC_CLASSES[classSelectBox.getSelectedIndex()];
            if (!styleData.hasMandatoryFields()) {
                Label label;
                if (clazz.equals(SelectBox.class)) {
                    label = new Label("Please fill all mandatory fields\n(Highlighted on the left)\n\nscrollStyle and listStyle\nmust already be defined", getSkin());
                } else if (clazz.equals(TextTooltip.class)) {
                    label = new Label("Please fill all mandatory fields\n(Highlighted on the left)\n\nlabel must already be defined", getSkin());
                } else {
                    label = new Label("Please fill all mandatory fields\n(Highlighted on the left)", getSkin());
                }
                label.setAlignment(Align.center);
                previewTable.add(label);
            } else if (styleData.hasAllNullFields()) {
                Label label;
                label = new Label("All fields are empty!\nEmpty classes are not exported\nAdd style properties in the menu to the left", getSkin());
                label.setAlignment(Align.center);
                previewTable.add(label);
            } else {
                Actor widget = null;
                if (clazz.equals(Button.class)) {
                    Button.ButtonStyle style = createPreviewStyle(Button.ButtonStyle.class, styleData);
                    widget = new Button(style);
                    ((Button) widget).setDisabled((boolean) previewProperties.get("disabled"));
                    widget.addListener(main.getHandListener());
                } else if (clazz.equals(CheckBox.class)) {
                    CheckBox.CheckBoxStyle style = createPreviewStyle(CheckBox.CheckBoxStyle.class, styleData);
                    widget = new CheckBox("", style);
                    ((CheckBox) widget).setDisabled((boolean) previewProperties.get("disabled"));
                    ((CheckBox) widget).setText((String) previewProperties.get("text"));
                    widget.addListener(main.getHandListener());
                } else if (clazz.equals(ImageButton.class)) {
                    ImageButtonStyle style = createPreviewStyle(ImageButtonStyle.class, styleData);
                    widget = new ImageButton(style);
                    ((ImageButton) widget).setDisabled((boolean) previewProperties.get("disabled"));
                    widget.addListener(main.getHandListener());
                } else if (clazz.equals(ImageTextButton.class)) {
                    ImageTextButton.ImageTextButtonStyle style = createPreviewStyle(ImageTextButton.ImageTextButtonStyle.class, styleData);
                    widget = new ImageTextButton("", style);
                    ((ImageTextButton) widget).setDisabled((boolean) previewProperties.get("disabled"));
                    ((ImageTextButton) widget).setText((String) previewProperties.get("text"));
                    widget.addListener(main.getHandListener());
                } else if (clazz.equals(Label.class)) {
                    LabelStyle style = createPreviewStyle(LabelStyle.class, styleData);
                    widget = new Label("", style);
                    ((Label) widget).setText((String) previewProperties.get("text"));
                } else if (clazz.equals(List.class)) {
                    ListStyle style = createPreviewStyle(ListStyle.class, styleData);
                    widget = new List(style);
                    Array<String> items = new Array<>(((String) previewProperties.get("text")).split("\\n"));
                    ((List) widget).setItems(items);
                    widget.addListener(main.getHandListener());
                } else if (clazz.equals(ProgressBar.class)) {
                    ProgressBar.ProgressBarStyle style = createPreviewStyle(ProgressBar.ProgressBarStyle.class, styleData);
                    widget = new ProgressBar((float) (double) previewProperties.get("minimum"), (float) (double) previewProperties.get("maximum"), (float) (double) previewProperties.get("increment"), (boolean) previewProperties.get("orientation"), style);
                    ((ProgressBar) widget).setValue((float) (double) previewProperties.get("value"));
                    ((ProgressBar) widget).setDisabled((boolean) previewProperties.get("disabled"));
                } else if (clazz.equals(ScrollPane.class)) {
                    ScrollPaneStyle style = createPreviewStyle(ScrollPaneStyle.class, styleData);
                    Label label = new Label("", getSkin());
                    widget = new ScrollPane(label, style);
                    ((ScrollPane) widget).setScrollbarsOnTop((boolean) previewProperties.get("scrollbarsOnTop"));
                    ((ScrollPane) widget).setScrollBarPositions((boolean) previewProperties.get("hScrollBarPosition"), (boolean) previewProperties.get("vScrollBarPosition"));
                    ((ScrollPane) widget).setScrollingDisabled((boolean) previewProperties.get("hScrollDisabled"), (boolean) previewProperties.get("vScrollDisabled"));
                    ((ScrollPane) widget).setForceScroll((boolean) previewProperties.get("forceHscroll"), (boolean) previewProperties.get("forceVscroll"));
                    ((ScrollPane) widget).setVariableSizeKnobs((boolean) previewProperties.get("variableSizeKnobs"));
                    ((ScrollPane) widget).setOverscroll((boolean) previewProperties.get("hOverscroll"), (boolean) previewProperties.get("vOverscroll"));
                    ((ScrollPane) widget).setFadeScrollBars((boolean) previewProperties.get("fadeScroll"));
                    ((ScrollPane) widget).setSmoothScrolling((boolean) previewProperties.get("smoothScroll"));
                    ((ScrollPane) widget).setFlickScroll((boolean) previewProperties.get("flickScroll"));
                    ((ScrollPane) widget).setClamp((boolean) previewProperties.get("clamp"));
                    label.setText((String) previewProperties.get("text"));
                } else if (clazz.equals(SelectBox.class)) {
                    SelectBox.SelectBoxStyle style = createPreviewStyle(SelectBox.SelectBoxStyle.class, styleData);
                    widget = new SelectBox(style);
                    ((SelectBox) widget).setDisabled((boolean) previewProperties.get("disabled"));
                    Array<String> items = new Array<>(((String) previewProperties.get("text")).split("\\n"));
                    ((SelectBox) widget).setItems(items);
                    widget.addListener(main.getHandListener());
                    ((SelectBox) widget).getList().addListener(main.getHandListener());
                } else if (clazz.equals(Slider.class)) {
                    Slider.SliderStyle style = createPreviewStyle(Slider.SliderStyle.class, styleData);
                    widget = new Slider((float) (double) previewProperties.get("minimum"), (float) (double) previewProperties.get("maximum"), (float) (double) previewProperties.get("increment"), (boolean) previewProperties.get("orientation"), style);
                    ((Slider) widget).setDisabled((boolean) previewProperties.get("disabled"));
                    widget.addListener(main.getHandListener());
                } else if (clazz.equals(SplitPane.class)) {
                    SplitPane.SplitPaneStyle style = createPreviewStyle(SplitPane.SplitPaneStyle.class, styleData);
                    Label label1 = new Label("", getSkin());
                    Label label2 = new Label("", getSkin());
                    widget = new SplitPane(label1, label2, (boolean) previewProperties.get("orientation"), style);
                    label1.setText((String) previewProperties.get("text"));
                    label2.setText((String) previewProperties.get("text"));
                    if ((boolean) previewProperties.get("orientation")) {
                        widget.addListener(vSplitPaneDragListener);
                        widget.addListener(vSplitPaneInputListener);
                    } else {
                        widget.addListener(hSplitPaneDragListener);
                        widget.addListener(hSplitPaneInputListener);
                    }
                } else if (clazz.equals(TextButton.class)) {
                    TextButtonStyle style = createPreviewStyle(TextButtonStyle.class, styleData);
                    widget = new TextButton("", style);
                    ((TextButton) widget).setDisabled((boolean) previewProperties.get("disabled"));
                    ((TextButton) widget).setText((String) previewProperties.get("text"));
                    widget.addListener(main.getHandListener());
                } else if (clazz.equals(TextField.class)) {
                    TextFieldStyle style = createPreviewStyle(TextFieldStyle.class, styleData);
                    widget = new TextField("", style);
                    ((TextField) widget).setFocusTraversal(false);
                    ((TextField) widget).setDisabled((boolean) previewProperties.get("disabled"));
                    ((TextField) widget).setPasswordMode((boolean) previewProperties.get("passwordMode"));
                    ((TextField) widget).setAlignment((int) previewProperties.get("alignment"));
                    ((TextField) widget).setText((String) previewProperties.get("text"));
                    ((TextField) widget).setMessageText((String) previewProperties.get("message"));
                    String string = (String) previewProperties.get("password");
                    if (string.length() > 0) {
                        ((TextField) widget).setPasswordCharacter(string.charAt(0));
                    }
                    widget.addListener(main.getIbeamListener());
                } else if (clazz.equals(TextTooltip.class)) {
                    TextTooltip.TextTooltipStyle style = createPreviewStyle(TextTooltip.TextTooltipStyle.class, styleData);
                    TooltipManager manager = new TooltipManager();
                    manager.animations = false;
                    manager.initialTime = 0.0f;
                    manager.resetTime = 0.0f;
                    manager.subsequentTime = 0.0f;
                    manager.hideAll();
                    manager.instant();
                    TextTooltip toolTip = new TextTooltip((String) previewProperties.get("text"), manager, style);
                    widget = new Label("Hover over me", getSkin());
                    widget.addListener(toolTip);
                } else if (clazz.equals(Touchpad.class)) {
                    Touchpad.TouchpadStyle style = createPreviewStyle(Touchpad.TouchpadStyle.class, styleData);
                    widget = new Touchpad(0, style);
                    widget.addListener(main.getHandListener());
                } else if (clazz.equals(Tree.class)) {
                    Tree.TreeStyle style = createPreviewStyle(Tree.TreeStyle.class, styleData);
                    widget = new Tree(style);
                    String[] lines = { "this", "is", "a", "test" };
                    Tree.Node parentNode = null;
                    for (String line : lines) {
                        Label label = new Label(line, getSkin());
                        Tree.Node node = new Tree.Node(label);
                        if (parentNode == null) {
                            ((Tree) widget).add(node);
                        } else {
                            parentNode.add(node);
                        }
                        parentNode = node;
                    }
                    widget.addListener(main.getHandListener());
                } else if (clazz.equals(Window.class)) {
                    Window.WindowStyle style = createPreviewStyle(Window.WindowStyle.class, styleData);
                    if (style.stageBackground != null) {
                        previewTable.setBackground(style.stageBackground);
                        previewTable.setColor(Color.WHITE);
                        style.stageBackground = null;
                    }
                    Label sampleText = new Label("", getSkin());
                    sampleText.setText((String) previewProperties.get("text"));
                    widget = new Window((String) previewProperties.get("title"), style);
                    ((Window) widget).add(sampleText);
                }
                if (widget != null) {
                    switch((int) previewProperties.get("size")) {
                        case (0):
                            previewTable.add(widget).size(10.0f);
                            previewSizeSelectBox.setItems(DEFAULT_SIZES);
                            break;
                        case (1):
                            previewTable.add(widget);
                            previewSizeSelectBox.setItems(DEFAULT_SIZES);
                            break;
                        case (2):
                            previewTable.add(widget).size(200.0f);
                            previewSizeSelectBox.setItems(DEFAULT_SIZES);
                            break;
                        case (3):
                            previewTable.add(widget).growX();
                            previewSizeSelectBox.setItems(DEFAULT_SIZES);
                            break;
                        case (4):
                            previewTable.add(widget).growY();
                            previewSizeSelectBox.setItems(DEFAULT_SIZES);
                            break;
                        case (5):
                            previewTable.add(widget).grow();
                            previewSizeSelectBox.setItems(DEFAULT_SIZES);
                            break;
                        case (6):
                            Actor addWidget = widget;
                            TraversalTextField widthField = new TraversalTextField("", getSkin());
                            TraversalTextField heightField = new TraversalTextField("", getSkin());
                            widthField.setNextFocus(heightField);
                            heightField.setNextFocus(widthField);
                            Dialog dialog = new Dialog("Enter dimensions...", getSkin()) {

                                @Override
                                protected void result(Object object) {
                                    if ((boolean) object) {
                                        previewTable.add(addWidget).size(Integer.parseInt(widthField.getText()), Integer.parseInt(heightField.getText()));
                                        Array<String> items = new Array<>(DEFAULT_SIZES);
                                        items.add(widthField.getText() + "x" + heightField.getText());
                                        previewProperties.put("sizeX", Integer.parseInt(widthField.getText()));
                                        previewProperties.put("sizeY", Integer.parseInt(heightField.getText()));
                                        previewSizeSelectBox.setItems(items);
                                        previewSizeSelectBox.setSelectedIndex(7);
                                    } else {
                                        previewSizeSelectBox.setSelectedIndex(1);
                                    }
                                }
                            };
                            dialog.getTitleTable().getCells().first().padLeft(5.0f);
                            dialog.text("Enter the preview dimensions: ");
                            dialog.getContentTable().getCells().first().pad(10.0f);
                            dialog.getContentTable().row();
                            Table sizeTable = new Table();
                            sizeTable.add(widthField).padLeft(10.0f);
                            sizeTable.add(new Label(" x ", getSkin()));
                            sizeTable.add(heightField).padRight(10.0f);
                            dialog.getContentTable().add(sizeTable);
                            dialog.getButtonTable().defaults().padBottom(10.0f).minWidth(50.0f);
                            dialog.button("OK", true);
                            dialog.button("Cancel", false);
                            TextButton okButton = (TextButton) dialog.getButtonTable().getCells().first().getActor();
                            okButton.setDisabled(true);
                            okButton.addListener(main.getHandListener());
                            widthField.addListener(new ChangeListener() {

                                @Override
                                public void changed(ChangeListener.ChangeEvent event, Actor actor) {
                                    okButton.setDisabled(!widthField.getText().matches("^\\d+$") || !heightField.getText().matches("^\\d+$"));
                                }
                            });
                            heightField.addListener(new ChangeListener() {

                                @Override
                                public void changed(ChangeListener.ChangeEvent event, Actor actor) {
                                    okButton.setDisabled(!widthField.getText().matches("^\\d+$") || !heightField.getText().matches("^\\d+$"));
                                }
                            });
                            dialog.getButtonTable().getCells().get(1).getActor().addListener(main.getHandListener());
                            dialog.key(Input.Keys.ESCAPE, false);
                            dialog.show(stage);
                            stage.setKeyboardFocus(widthField);
                            break;
                        case (7):
                            previewTable.add(widget).size((int) previewProperties.get("sizeX"), (int) previewProperties.get("sizeY"));
                            break;
                    }
                }
            }
        } else {
            CustomStyle customStyle = (CustomStyle) styleSelectBox.getSelected();
            boolean showMessage = true;
            if (customStyle.getProperties().size == 0) {
                Label label = new Label("No style properties!\nEmpty classes are not exported\nAdd style properties in the menu to the left", getSkin());
                label.setAlignment(0);
                previewTable.add(label);
            } else {
                for (CustomProperty customProperty : customStyle.getProperties()) {
                    if (customProperty.getValue() != null && !(customProperty.getValue() instanceof String) || customProperty.getValue() != null && !((String) customProperty.getValue()).equals("")) {
                        showMessage = false;
                        break;
                    }
                }
                if (showMessage) {
                    Label label = new Label("All properties are empty!\nEmpty classes are not exported\nAdd style properties in the menu to the left", getSkin());
                    label.setAlignment(0);
                    previewTable.add(label);
                }
            }
            if (!showMessage) {
                HorizontalGroup horizontalGroup = new HorizontalGroup();
                horizontalGroup.wrap();
                // the following causes a crash. LibGDX bug.
                // horizontalGroup.space(10.0f);
                horizontalGroup.wrapSpace(10.0f);
                horizontalGroup.setTouchable(Touchable.disabled);
                previewTable.add(horizontalGroup).grow().pad(10.0f);
                for (CustomProperty customProperty : customStyle.getProperties()) {
                    if (customProperty.getValue() != null) {
                        Container container = new Container();
                        container.pad(5.0f);
                        horizontalGroup.addActor(container);
                        switch(customProperty.getType()) {
                            case TEXT:
                            case RAW_TEXT:
                                Label labelText = new Label((String) customProperty.getValue(), getSkin());
                                container.setActor(labelText);
                                break;
                            case NUMBER:
                                Label labelNumber = new Label(Double.toString((double) customProperty.getValue()), getSkin());
                                container.setActor(labelNumber);
                                break;
                            case BOOL:
                                Label labelBoolean = new Label(Boolean.toString((boolean) customProperty.getValue()), getSkin());
                                container.setActor(labelBoolean);
                                break;
                            case COLOR:
                                ColorData colorData = null;
                                String colorName = (String) customProperty.getValue();
                                for (ColorData cd : main.getJsonData().getColors()) {
                                    if (cd.getName().equals(colorName)) {
                                        colorData = cd;
                                        break;
                                    }
                                }
                                if (colorData != null) {
                                    Table colorTable = new Table(getSkin());
                                    colorTable.setBackground("white");
                                    colorTable.setColor(colorData.color);
                                    colorTable.add().size(25.0f);
                                    container.setActor(colorTable);
                                }
                                break;
                            case FONT:
                                BitmapFont font = null;
                                FontData fontData = null;
                                String fontName = (String) customProperty.getValue();
                                for (FontData fd : main.getJsonData().getFonts()) {
                                    if (fd.getName().equals(fontName)) {
                                        fontData = fd;
                                        font = new BitmapFont(fd.file);
                                        previewFonts.add(font);
                                        break;
                                    }
                                }
                                if (font != null) {
                                    Label labelFont = new Label(fontData.getName(), new LabelStyle(font, Color.WHITE));
                                    container.setActor(labelFont);
                                }
                                FreeTypeFontData freeTypeFontData = null;
                                for (FreeTypeFontData fd : main.getJsonData().getFreeTypeFonts()) {
                                    if (fd.name.equals(fontName)) {
                                        freeTypeFontData = fd;
                                        break;
                                    }
                                }
                                if (freeTypeFontData.bitmapFont != null) {
                                    Label labelFont = new Label(freeTypeFontData.name, new LabelStyle(freeTypeFontData.bitmapFont, Color.WHITE));
                                    container.setActor(labelFont);
                                }
                                break;
                            case DRAWABLE:
                                DrawableData drawable = null;
                                String drawableName = (String) customProperty.getValue();
                                for (DrawableData dd : main.getAtlasData().getDrawables()) {
                                    if (dd.name.equals(drawableName)) {
                                        drawable = dd;
                                        break;
                                    }
                                }
                                if (drawable != null) {
                                    Image image = new Image(drawablePairs.get(drawable.name));
                                    container.setActor(image);
                                }
                                break;
                        }
                    }
                }
            }
        }
    }
}
Also used : Label(com.badlogic.gdx.scenes.scene2d.ui.Label) SplitPane(com.badlogic.gdx.scenes.scene2d.ui.SplitPane) Image(com.badlogic.gdx.scenes.scene2d.ui.Image) Container(com.badlogic.gdx.scenes.scene2d.ui.Container) DrawableData(com.ray3k.skincomposer.data.DrawableData) TextTooltip(com.badlogic.gdx.scenes.scene2d.ui.TextTooltip) Button(com.badlogic.gdx.scenes.scene2d.ui.Button) ImageTextButton(com.badlogic.gdx.scenes.scene2d.ui.ImageTextButton) TextButton(com.badlogic.gdx.scenes.scene2d.ui.TextButton) ImageButton(com.badlogic.gdx.scenes.scene2d.ui.ImageButton) Touchpad(com.badlogic.gdx.scenes.scene2d.ui.Touchpad) Dialog(com.badlogic.gdx.scenes.scene2d.ui.Dialog) Actor(com.badlogic.gdx.scenes.scene2d.Actor) TextField(com.badlogic.gdx.scenes.scene2d.ui.TextField) Tree(com.badlogic.gdx.scenes.scene2d.ui.Tree) List(com.badlogic.gdx.scenes.scene2d.ui.List) HorizontalGroup(com.badlogic.gdx.scenes.scene2d.ui.HorizontalGroup) ImageButtonStyle(com.badlogic.gdx.scenes.scene2d.ui.ImageButton.ImageButtonStyle) TextButtonStyle(com.badlogic.gdx.scenes.scene2d.ui.TextButton.TextButtonStyle) SelectBox(com.badlogic.gdx.scenes.scene2d.ui.SelectBox) FreeTypeFontData(com.ray3k.skincomposer.data.FreeTypeFontData) FontData(com.ray3k.skincomposer.data.FontData) CheckBox(com.badlogic.gdx.scenes.scene2d.ui.CheckBox) ScrollPane(com.badlogic.gdx.scenes.scene2d.ui.ScrollPane) TooltipManager(com.badlogic.gdx.scenes.scene2d.ui.TooltipManager) ScrollPaneStyle(com.badlogic.gdx.scenes.scene2d.ui.ScrollPane.ScrollPaneStyle) ListStyle(com.badlogic.gdx.scenes.scene2d.ui.List.ListStyle) ImageTextButton(com.badlogic.gdx.scenes.scene2d.ui.ImageTextButton) Slider(com.badlogic.gdx.scenes.scene2d.ui.Slider) ImageButton(com.badlogic.gdx.scenes.scene2d.ui.ImageButton) TextButtonStyle(com.badlogic.gdx.scenes.scene2d.ui.TextButton.TextButtonStyle) ImageButtonStyle(com.badlogic.gdx.scenes.scene2d.ui.ImageButton.ImageButtonStyle) ChangeListener(com.badlogic.gdx.scenes.scene2d.utils.ChangeListener) BitmapFont(com.badlogic.gdx.graphics.g2d.BitmapFont) ProgressBar(com.badlogic.gdx.scenes.scene2d.ui.ProgressBar) StyleData(com.ray3k.skincomposer.data.StyleData) ImageTextButton(com.badlogic.gdx.scenes.scene2d.ui.ImageTextButton) TextButton(com.badlogic.gdx.scenes.scene2d.ui.TextButton) Window(com.badlogic.gdx.scenes.scene2d.ui.Window) Table(com.badlogic.gdx.scenes.scene2d.ui.Table) LabelStyle(com.badlogic.gdx.scenes.scene2d.ui.Label.LabelStyle) TextFieldStyle(com.badlogic.gdx.scenes.scene2d.ui.TextField.TextFieldStyle) CustomStyle(com.ray3k.skincomposer.data.CustomStyle) Array(com.badlogic.gdx.utils.Array) ColorData(com.ray3k.skincomposer.data.ColorData) FreeTypeFontData(com.ray3k.skincomposer.data.FreeTypeFontData) CustomProperty(com.ray3k.skincomposer.data.CustomProperty)

Example 2 with TextTooltip

use of com.badlogic.gdx.scenes.scene2d.ui.TextTooltip in project skin-composer by raeleus.

the class RootTable method addClassBar.

private void addClassBar() {
    Table table = new Table();
    table.setBackground(getSkin().getDrawable("class-bar"));
    add(table).expandX().left().growX();
    Label label = new Label("Class:", getSkin());
    table.add(label).padRight(10.0f).padLeft(10.0f);
    classSelectBox = new SelectBox(getSkin());
    classSelectBox.addListener(main.getHandListener());
    classSelectBox.getList().addListener(main.getHandListener());
    table.add(classSelectBox).padRight(5.0f).minWidth(150.0f);
    classSelectBox.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeListener.ChangeEvent event, Actor actor) {
            fire(new RootTableEvent(RootTableEnum.CLASS_SELECTED));
            fire(new LoadStylesEvent(classSelectBox, styleSelectBox));
        }
    });
    Button button = new Button(getSkin(), "new");
    button.addListener(main.getHandListener());
    table.add(button);
    button.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeListener.ChangeEvent event, Actor actor) {
            fire(new RootTableEvent(RootTableEnum.NEW_CLASS));
        }
    });
    // Tooltip
    TextTooltip toolTip = new TextTooltip("New Class", main.getTooltipManager(), getSkin());
    button.addListener(toolTip);
    classDuplicateButton = new Button(getSkin(), "duplicate");
    classDuplicateButton.setDisabled(true);
    classDuplicateButton.addListener(main.getHandListener());
    table.add(classDuplicateButton);
    classDuplicateButton.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeListener.ChangeEvent event, Actor actor) {
            fire(new RootTableEvent(RootTableEnum.DUPLICATE_CLASS));
        }
    });
    toolTip = new TextTooltip("Duplicate Class", main.getTooltipManager(), getSkin());
    classDuplicateButton.addListener(toolTip);
    classDeleteButton = new Button(getSkin(), "delete");
    classDeleteButton.setDisabled(true);
    table.add(classDeleteButton);
    classDeleteButton.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeListener.ChangeEvent event, Actor actor) {
            fire(new RootTableEvent(RootTableEnum.DELETE_CLASS));
        }
    });
    toolTip = new TextTooltip("Delete Class", main.getTooltipManager(), getSkin());
    classDeleteButton.addListener(toolTip);
    classRenameButton = new Button(getSkin(), "settings");
    classRenameButton.setDisabled(true);
    table.add(classRenameButton).padRight(30.0f);
    classRenameButton.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeListener.ChangeEvent event, Actor actor) {
            fire(new RootTableEvent(RootTableEnum.RENAME_CLASS));
        }
    });
    toolTip = new TextTooltip("Rename Class", main.getTooltipManager(), getSkin());
    classRenameButton.addListener(toolTip);
    label = new Label("Style:", getSkin());
    table.add(label).padRight(10.0f);
    styleSelectBox = new SelectBox(getSkin());
    table.add(styleSelectBox).padRight(5.0f).minWidth(150.0f);
    styleSelectBox.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeListener.ChangeEvent event, Actor actor) {
            fire(new RootTable.RootTableEvent(RootTable.RootTableEnum.STYLE_SELECTED));
        }
    });
    styleSelectBox.addListener(main.getHandListener());
    styleSelectBox.getList().addListener(main.getHandListener());
    button = new Button(getSkin(), "new");
    button.addListener(main.getHandListener());
    table.add(button);
    button.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeListener.ChangeEvent event, Actor actor) {
            fire(new RootTableEvent(RootTableEnum.NEW_STYLE));
        }
    });
    toolTip = new TextTooltip("New Style", main.getTooltipManager(), getSkin());
    button.addListener(toolTip);
    button = new Button(getSkin(), "duplicate");
    button.addListener(main.getHandListener());
    table.add(button);
    button.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeListener.ChangeEvent event, Actor actor) {
            fire(new RootTableEvent(RootTableEnum.DUPLICATE_STYLE));
        }
    });
    toolTip = new TextTooltip("Duplicate Style", main.getTooltipManager(), getSkin());
    button.addListener(toolTip);
    styleDeleteButton = new Button(getSkin(), "delete");
    styleDeleteButton.addListener(main.getHandListener());
    table.add(styleDeleteButton);
    styleDeleteButton.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeListener.ChangeEvent event, Actor actor) {
            fire(new RootTableEvent(RootTableEnum.DELETE_STYLE));
        }
    });
    toolTip = new TextTooltip("Delete Style", main.getTooltipManager(), getSkin());
    styleDeleteButton.addListener(toolTip);
    styleRenameButton = new Button(getSkin(), "settings");
    table.add(styleRenameButton).expandX().left();
    styleRenameButton.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeListener.ChangeEvent event, Actor actor) {
            fire(new RootTableEvent(RootTableEnum.RENAME_STYLE));
        }
    });
    toolTip = new TextTooltip("Rename Style", main.getTooltipManager(), getSkin());
    styleRenameButton.addListener(toolTip);
    fire(new LoadClassesEvent(classSelectBox));
    fire(new LoadStylesEvent(classSelectBox, styleSelectBox));
}
Also used : Table(com.badlogic.gdx.scenes.scene2d.ui.Table) TextTooltip(com.badlogic.gdx.scenes.scene2d.ui.TextTooltip) Button(com.badlogic.gdx.scenes.scene2d.ui.Button) ImageTextButton(com.badlogic.gdx.scenes.scene2d.ui.ImageTextButton) TextButton(com.badlogic.gdx.scenes.scene2d.ui.TextButton) ImageButton(com.badlogic.gdx.scenes.scene2d.ui.ImageButton) SelectBox(com.badlogic.gdx.scenes.scene2d.ui.SelectBox) Actor(com.badlogic.gdx.scenes.scene2d.Actor) Label(com.badlogic.gdx.scenes.scene2d.ui.Label) ChangeListener(com.badlogic.gdx.scenes.scene2d.utils.ChangeListener)

Example 3 with TextTooltip

use of com.badlogic.gdx.scenes.scene2d.ui.TextTooltip in project skin-composer by raeleus.

the class RootTable method addStyleProperties.

private void addStyleProperties(final Table left) {
    Label label = new Label("Style Properties", getSkin(), "title");
    left.add(label);
    left.row();
    Table table = new Table();
    table.defaults().padLeft(10.0f).padRight(10.0f).growX();
    stylePropertiesScrollPane = new ScrollPane(table, getSkin());
    stylePropertiesScrollPane.setFadeScrollBars(false);
    stylePropertiesScrollPane.setFlickScroll(false);
    stylePropertiesScrollPane.addListener(scrollPaneListener);
    stage.setScrollFocus(stylePropertiesScrollPane);
    left.add(stylePropertiesScrollPane).grow().padTop(10.0f).padBottom(10.0f);
    // gather all scrollPaneStyles
    Array<StyleData> scrollPaneStyles = main.getProjectData().getJsonData().getClassStyleMap().get(ScrollPane.class);
    // gather all listStyles
    Array<StyleData> listStyles = main.getProjectData().getJsonData().getClassStyleMap().get(List.class);
    // gather all labelStyles
    Array<StyleData> labelStyles = main.getProjectData().getJsonData().getClassStyleMap().get(Label.class);
    if (styleProperties != null) {
        for (StyleProperty styleProperty : styleProperties) {
            table.row();
            if (styleProperty.type == Color.class) {
                BrowseField browseField;
                if (styleProperty.optional) {
                    browseField = new BrowseField((String) styleProperty.value, styleProperty.name, getSkin(), "color");
                } else {
                    browseField = new BrowseField((String) styleProperty.value, styleProperty.name, getSkin(), "color-required");
                }
                browseField.addListener(main.getHandListener());
                table.add(browseField).padTop(20.0f);
                browseField.addListener(new StylePropertyChangeListener(styleProperty, browseField));
            } else if (styleProperty.type == BitmapFont.class) {
                BrowseField browseField;
                if (styleProperty.optional) {
                    browseField = new BrowseField((String) styleProperty.value, styleProperty.name, getSkin(), "font");
                } else {
                    browseField = new BrowseField((String) styleProperty.value, styleProperty.name, getSkin(), "font-required");
                }
                browseField.addListener(main.getHandListener());
                table.add(browseField).padTop(20.0f);
                browseField.addListener(new StylePropertyChangeListener(styleProperty, browseField));
            } else if (styleProperty.type == Drawable.class) {
                BrowseField browseField;
                if (styleProperty.optional) {
                    browseField = new BrowseField((String) styleProperty.value, styleProperty.name, getSkin(), "drawable");
                } else {
                    browseField = new BrowseField((String) styleProperty.value, styleProperty.name, getSkin(), "drawable-required");
                }
                browseField.addListener(main.getHandListener());
                table.add(browseField).padTop(20.0f);
                browseField.addListener(new StylePropertyChangeListener(styleProperty, browseField));
            } else if (styleProperty.type == Float.TYPE) {
                if (styleProperty.optional) {
                    label = new Label(styleProperty.name, getSkin());
                } else {
                    label = new Label(styleProperty.name, getSkin(), "required");
                }
                table.add(label).padTop(20.0f).fill(false).expand(false, false);
                table.row();
                Spinner spinner = new Spinner((Double) styleProperty.value, 1.0, false, Spinner.Orientation.HORIZONTAL, getSkin());
                spinner.getTextField().addListener(main.getIbeamListener());
                spinner.getButtonMinus().addListener(main.getHandListener());
                spinner.getButtonPlus().addListener(main.getHandListener());
                table.add(spinner);
                spinner.addListener(new StylePropertyChangeListener(styleProperty, spinner));
            } else if (styleProperty.type == ScrollPaneStyle.class) {
                if (styleProperty.optional) {
                    label = new Label(styleProperty.name, getSkin());
                } else {
                    label = new Label(styleProperty.name, getSkin(), "required");
                }
                table.add(label).padTop(20.0f).fill(false).expand(false, false);
                table.row();
                SelectBox<StyleData> selectBox = new SelectBox<>(getSkin());
                selectBox.setItems(scrollPaneStyles);
                selectBox.addListener(main.getHandListener());
                selectBox.getList().addListener(main.getHandListener());
                if (styleProperty.value != null) {
                    String name = ((String) styleProperty.value);
                    int index = 0;
                    for (StyleData styleData : scrollPaneStyles) {
                        if (styleData.name.equals(name)) {
                            break;
                        } else {
                            index++;
                        }
                    }
                    if (index < scrollPaneStyles.size) {
                        selectBox.setSelectedIndex(index);
                    }
                }
                table.add(selectBox);
                selectBox.addListener(new StylePropertyChangeListener(styleProperty, selectBox));
            } else if (styleProperty.type == ListStyle.class) {
                if (styleProperty.optional) {
                    label = new Label(styleProperty.name, getSkin());
                } else {
                    label = new Label(styleProperty.name, getSkin(), "required");
                }
                table.add(label).padTop(20.0f).fill(false).expand(false, false);
                table.row();
                SelectBox<StyleData> selectBox = new SelectBox<>(getSkin());
                selectBox.setItems(listStyles);
                selectBox.addListener(main.getHandListener());
                selectBox.getList().addListener(main.getHandListener());
                if (styleProperty.value != null) {
                    String name = ((String) styleProperty.value);
                    int index = 0;
                    for (StyleData styleData : listStyles) {
                        if (styleData.name.equals(name)) {
                            break;
                        } else {
                            index++;
                        }
                    }
                    if (index < listStyles.size) {
                        selectBox.setSelectedIndex(index);
                    }
                }
                table.add(selectBox);
                selectBox.addListener(new StylePropertyChangeListener(styleProperty, selectBox));
            } else if (styleProperty.type == LabelStyle.class) {
                if (styleProperty.optional) {
                    label = new Label(styleProperty.name, getSkin());
                } else {
                    label = new Label(styleProperty.name, getSkin(), "required");
                }
                table.add(label).padTop(20.0f).fill(false).expand(false, false);
                table.row();
                SelectBox<StyleData> selectBox = new SelectBox<>(getSkin());
                selectBox.setItems(labelStyles);
                selectBox.addListener(main.getHandListener());
                selectBox.getList().addListener(main.getHandListener());
                if (styleProperty.value != null) {
                    String name = ((String) styleProperty.value);
                    int index = 0;
                    for (StyleData styleData : labelStyles) {
                        if (styleData.name.equals(name)) {
                            break;
                        } else {
                            index++;
                        }
                    }
                    if (index < labelStyles.size) {
                        selectBox.setSelectedIndex(index);
                    }
                }
                table.add(selectBox);
                selectBox.addListener(new StylePropertyChangeListener(styleProperty, selectBox));
            }
            table.row();
        }
    } else if (customProperties != null) {
        for (CustomProperty styleProperty : customProperties) {
            if (styleProperty.getType() == PropertyType.COLOR) {
                String value = "";
                if (styleProperty.getValue() instanceof String) {
                    for (ColorData color : main.getJsonData().getColors()) {
                        if (color.getName().equals(styleProperty.getValue())) {
                            value = (String) styleProperty.getValue();
                            break;
                        }
                    }
                }
                BrowseField browseField = new BrowseField(value, styleProperty.getName(), getSkin(), "color");
                browseField.addListener(main.getHandListener());
                table.add(browseField).padTop(20.0f);
                browseField.addListener(new CustomPropertyChangeListener(styleProperty, browseField));
            } else if (styleProperty.getType() == PropertyType.FONT) {
                String value = "";
                if (styleProperty.getValue() instanceof String) {
                    for (FontData font : main.getJsonData().getFonts()) {
                        if (font.getName().equals(styleProperty.getValue())) {
                            value = (String) styleProperty.getValue();
                            break;
                        }
                    }
                    for (FreeTypeFontData font : main.getJsonData().getFreeTypeFonts()) {
                        System.out.println("hit");
                        if (font.name.equals(styleProperty.getValue())) {
                            value = (String) styleProperty.getValue();
                        }
                    }
                }
                BrowseField browseField = new BrowseField(value, styleProperty.getName(), getSkin(), "font");
                browseField.addListener(main.getHandListener());
                table.add(browseField).padTop(20.0f);
                browseField.addListener(new CustomPropertyChangeListener(styleProperty, browseField));
            } else if (styleProperty.getType() == PropertyType.DRAWABLE) {
                String value = "";
                if (styleProperty.getValue() instanceof String) {
                    for (DrawableData drawable : main.getAtlasData().getDrawables()) {
                        if (drawable.name.equals(styleProperty.getValue())) {
                            value = (String) styleProperty.getValue();
                            break;
                        }
                    }
                }
                BrowseField browseField = new BrowseField(value, styleProperty.getName(), getSkin(), "drawable");
                browseField.addListener(main.getHandListener());
                table.add(browseField).padTop(20.0f);
                browseField.addListener(new CustomPropertyChangeListener(styleProperty, browseField));
            } else if (styleProperty.getType() == PropertyType.NUMBER) {
                label = new Label(styleProperty.getName(), getSkin());
                table.add(label).padTop(20.0f).fill(false).expand(false, false);
                table.row();
                if (styleProperty.getValue() instanceof Float) {
                    styleProperty.setValue((double) (float) styleProperty.getValue());
                }
                Double value = 0.0;
                if (styleProperty.getValue() instanceof Double) {
                    value = (Double) styleProperty.getValue();
                }
                Spinner spinner = new Spinner(value, 1.0, false, Spinner.Orientation.HORIZONTAL, getSkin());
                spinner.setRound(false);
                spinner.getTextField().addListener(main.getIbeamListener());
                spinner.getButtonMinus().addListener(main.getHandListener());
                spinner.getButtonPlus().addListener(main.getHandListener());
                table.add(spinner);
                spinner.addListener(new CustomPropertyChangeListener(styleProperty, spinner));
            } else if (styleProperty.getType() == PropertyType.TEXT || styleProperty.getType() == PropertyType.RAW_TEXT) {
                label = new Label(styleProperty.getName(), getSkin());
                table.add(label).padTop(20.0f).fill(false).expand(false, false);
                table.row();
                String value = "";
                if (styleProperty.getValue() instanceof String) {
                    value = (String) styleProperty.getValue();
                }
                TextField textField = new TextField(value, getSkin());
                textField.setAlignment(Align.center);
                textField.addListener(main.getIbeamListener());
                table.add(textField);
                textField.addListener(new CustomPropertyChangeListener(styleProperty, textField));
            } else if (styleProperty.getType() == PropertyType.BOOL) {
                label = new Label(styleProperty.getName(), getSkin());
                table.add(label).padTop(20.0f).fill(false).expand(false, false);
                table.row();
                Button button = new Button(getSkin(), "switch");
                boolean value = false;
                if (styleProperty.getValue() instanceof Boolean) {
                    value = (boolean) styleProperty.getValue();
                }
                button.setChecked(value);
                table.add(button).fill(false);
                button.addListener(new CustomPropertyChangeListener(styleProperty, button));
            }
            Button duplicateButton = new Button(getSkin(), "duplicate");
            table.add(duplicateButton).fill(false).expand(false, false).pad(0).bottom();
            duplicateButton.addListener(new ChangeListener() {

                @Override
                public void changed(ChangeListener.ChangeEvent event, Actor actor) {
                    fire(new CustomPropertyEvent(styleProperty, duplicateButton, CustomPropertyEnum.DUPLICATE));
                }
            });
            TextTooltip toolTip = new TextTooltip("Duplicate Style Property", main.getTooltipManager(), getSkin());
            duplicateButton.addListener(toolTip);
            Button deleteButton = new Button(getSkin(), "delete");
            table.add(deleteButton).fill(false).expand(false, false).pad(0).bottom();
            deleteButton.addListener(new ChangeListener() {

                @Override
                public void changed(ChangeListener.ChangeEvent event, Actor actor) {
                    fire(new CustomPropertyEvent(styleProperty, duplicateButton, CustomPropertyEnum.DELETE));
                }
            });
            toolTip = new TextTooltip("Delete Style Property", main.getTooltipManager(), getSkin());
            deleteButton.addListener(toolTip);
            Button renameButton = new Button(getSkin(), "settings");
            table.add(renameButton).fill(false).expand(false, false).pad(0).bottom();
            renameButton.addListener(new ChangeListener() {

                @Override
                public void changed(ChangeListener.ChangeEvent event, Actor actor) {
                    fire(new CustomPropertyEvent(styleProperty, duplicateButton, CustomPropertyEnum.RENAME));
                }
            });
            toolTip = new TextTooltip("Rename Style Property", main.getTooltipManager(), getSkin());
            renameButton.addListener(toolTip);
            table.row();
        }
        left.row();
        table = new Table();
        left.add(table).right().padBottom(10.0f);
        Button button = new Button(getSkin(), "new");
        button.addListener(new ChangeListener() {

            @Override
            public void changed(ChangeListener.ChangeEvent event, Actor actor) {
                fire(new CustomPropertyEvent(null, null, CustomPropertyEnum.NEW));
            }
        });
        table.add(button);
        TextTooltip toolTip = new TextTooltip("New Style Property", main.getTooltipManager(), getSkin());
        button.addListener(toolTip);
    }
}
Also used : ListStyle(com.badlogic.gdx.scenes.scene2d.ui.List.ListStyle) Label(com.badlogic.gdx.scenes.scene2d.ui.Label) DrawableData(com.ray3k.skincomposer.data.DrawableData) TextTooltip(com.badlogic.gdx.scenes.scene2d.ui.TextTooltip) Button(com.badlogic.gdx.scenes.scene2d.ui.Button) ImageTextButton(com.badlogic.gdx.scenes.scene2d.ui.ImageTextButton) TextButton(com.badlogic.gdx.scenes.scene2d.ui.TextButton) ImageButton(com.badlogic.gdx.scenes.scene2d.ui.ImageButton) Actor(com.badlogic.gdx.scenes.scene2d.Actor) TextField(com.badlogic.gdx.scenes.scene2d.ui.TextField) ChangeListener(com.badlogic.gdx.scenes.scene2d.utils.ChangeListener) BitmapFont(com.badlogic.gdx.graphics.g2d.BitmapFont) StyleData(com.ray3k.skincomposer.data.StyleData) Table(com.badlogic.gdx.scenes.scene2d.ui.Table) SelectBox(com.badlogic.gdx.scenes.scene2d.ui.SelectBox) FreeTypeFontData(com.ray3k.skincomposer.data.FreeTypeFontData) FontData(com.ray3k.skincomposer.data.FontData) StyleProperty(com.ray3k.skincomposer.data.StyleProperty) ColorData(com.ray3k.skincomposer.data.ColorData) FreeTypeFontData(com.ray3k.skincomposer.data.FreeTypeFontData) ScrollPane(com.badlogic.gdx.scenes.scene2d.ui.ScrollPane) CustomProperty(com.ray3k.skincomposer.data.CustomProperty)

Example 4 with TextTooltip

use of com.badlogic.gdx.scenes.scene2d.ui.TextTooltip in project skin-composer by raeleus.

the class DialogFreeTypeFont method populate.

private void populate() {
    root.pad(15.0f);
    Label label = new Label(mode == Mode.NEW ? "Create a new FreeType Font placeholder." : "Edit FreeType Font placeholder.", skin, "required");
    root.add(label);
    root.row();
    Table table = new Table();
    root.add(table).growX();
    table.defaults().space(5.0f);
    label = new Label("Font Name:", skin);
    table.add(label);
    TextField textField = new TextField(data.name, skin);
    textField.setName("fontName");
    table.add(textField);
    TextTooltip toolTip = new TextTooltip("The name used in skin JSON", main.getTooltipManager(), getSkin());
    textField.addListener(toolTip);
    textField.addListener(main.getIbeamListener());
    textField.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeListener.ChangeEvent event, Actor actor) {
            TextField textField = (TextField) actor;
            data.name = textField.getText();
            updateDisabledFields();
        }
    });
    label = new Label("Preview TTF:", skin);
    table.add(label).spaceLeft(15.0f);
    SelectBox<String> selectBox = new SelectBox(skin);
    selectBox.setName("previewSelectBox");
    Array<String> previewFontNames = new Array<>();
    FileHandle previewFontsPath = Gdx.files.local("preview fonts");
    if (previewFontsPath.exists()) {
        Array<FileHandle> files = new Array<>(previewFontsPath.list("ttf"));
        for (FileHandle file : files) {
            previewFontNames.add(file.nameWithoutExtension());
        }
    }
    selectBox.setItems(previewFontNames);
    selectBox.setSelected(data.previewTTF);
    table.add(selectBox);
    toolTip = new TextTooltip("The TTF font for preview use in Skin Composer only", main.getTooltipManager(), getSkin());
    selectBox.addListener(toolTip);
    selectBox.addListener(main.getHandListener());
    selectBox.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeListener.ChangeEvent event, Actor actor) {
            SelectBox<String> selectBox = (SelectBox) actor;
            data.previewTTF = selectBox.getSelected();
            updateDisabledFields();
        }
    });
    TextButton textButton = new TextButton("Open Preview Folder", skin);
    table.add(textButton);
    toolTip = new TextTooltip("Add new preview fonts here", main.getTooltipManager(), getSkin());
    textButton.addListener(toolTip);
    textButton.addListener(main.getHandListener());
    textButton.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeListener.ChangeEvent event, Actor actor) {
            try {
                Utils.openFileExplorer(Gdx.files.local("preview fonts/"));
            } catch (Exception e) {
            }
        }
    });
    root.row();
    Image image = new Image(skin, "welcome-separator");
    image.setScaling(Scaling.stretch);
    root.add(image).growX().space(15.0f);
    root.row();
    textField = new TextField(previewText, previewStyle);
    textField.setName("previewField");
    textField.setAlignment(Align.center);
    root.add(textField).growX();
    textField.addListener(main.getIbeamListener());
    textField.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeListener.ChangeEvent event, Actor actor) {
            previewText = ((TextField) actor).getText();
        }
    });
    root.row();
    image = new Image(skin, "welcome-separator");
    image.setScaling(Scaling.stretch);
    root.add(image).growX().space(15.0f);
    root.row();
    table = new Table();
    root.add(table);
    table.defaults().space(5.0f);
    CheckBox checkBox = new CheckBox("Use custom serializer and integrate TTF in Skin JSON", skin);
    checkBox.setName("serializerCheckBox");
    checkBox.setChecked(data.useCustomSerializer);
    table.add(checkBox);
    checkBox.addListener(main.getHandListener());
    checkBox.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeListener.ChangeEvent event, Actor actor) {
            CheckBox checkBox = (CheckBox) actor;
            ScrollPane scrollPane = findActor("scrollPane");
            SelectBox selectBox = findActor("previewSelectBox");
            if (checkBox.isChecked()) {
                scrollPane.addAction(Actions.sequence(Actions.fadeIn(.25f), Actions.touchable(Touchable.enabled)));
                selectBox.addAction(Actions.sequence(Actions.alpha(.25f, .25f), Actions.touchable(Touchable.disabled)));
            } else {
                scrollPane.addAction(Actions.sequence(Actions.alpha(.25f, .25f), Actions.touchable(Touchable.disabled)));
                selectBox.addAction(Actions.sequence(Actions.fadeIn(.25f), Actions.touchable(Touchable.enabled)));
            }
            data.useCustomSerializer = checkBox.isChecked();
            updateDisabledFields();
        }
    });
    textButton = new TextButton("More Info...", skin);
    table.add(textButton);
    textButton.addListener(main.getHandListener());
    textButton.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeListener.ChangeEvent event, Actor actor) {
            showMoreInfoDialog();
        }
    });
    root.row();
    Table bottom = new Table();
    ScrollPane scrollPane = new ScrollPane(bottom, skin);
    scrollPane.setName("scrollPane");
    scrollPane.setFadeScrollBars(false);
    scrollPane.setFlickScroll(false);
    root.add(scrollPane).padTop(10.0f);
    if (!data.useCustomSerializer) {
        scrollPane.setColor(1, 1, 1, .25f);
        scrollPane.setTouchable(Touchable.disabled);
    } else {
        selectBox.setColor(1, 1, 1, .25f);
        selectBox.setTouchable(Touchable.disabled);
    }
    bottom.defaults().space(5.0f);
    table = new Table();
    bottom.add(table).growX().colspan(4).spaceBottom(15.0f);
    table.defaults().space(5.0f);
    label = new Label("TTF Path:", skin);
    table.add(label);
    textField = new TextField(data.file == null ? "" : data.file.path(), skin);
    textField.setName("fileField");
    textField.setDisabled(true);
    table.add(textField).growX();
    toolTip = new TextTooltip("Path to TTF font to be distributed with skin", main.getTooltipManager(), getSkin());
    textField.addListener(toolTip);
    textButton = new TextButton("Browse...", skin);
    table.add(textButton);
    textButton.addListener(main.getHandListener());
    textButton.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeListener.ChangeEvent event, Actor actor) {
            Runnable runnable = () -> {
                String defaultPath = main.getProjectData().getLastFontPath();
                String[] filterPatterns = null;
                if (!Utils.isMac()) {
                    filterPatterns = new String[] { "*.ttf" };
                }
                File file = main.getDesktopWorker().openDialog("Select TTF file...", defaultPath, filterPatterns, "True Type Font files");
                if (file != null) {
                    FileHandle fileHandle = new FileHandle(file);
                    data.file = fileHandle;
                    updateDisabledFields();
                    ((TextField) DialogFreeTypeFont.this.findActor("fileField")).setText(fileHandle.path());
                    main.getProjectData().setLastFontPath(fileHandle.parent().path() + "/");
                }
            };
            main.getDialogFactory().showDialogLoading(runnable);
        }
    });
    bottom.row();
    label = new Label("Size:", skin);
    bottom.add(label).right();
    Spinner spinner = new Spinner(data.size, 1.0, true, Spinner.Orientation.HORIZONTAL, skin);
    bottom.add(spinner).left().minWidth(100.0f);
    toolTip = new TextTooltip("The size in pixels", main.getTooltipManager(), getSkin());
    spinner.addListener(toolTip);
    spinner.getButtonMinus().addListener(main.getHandListener());
    spinner.getButtonPlus().addListener(main.getHandListener());
    spinner.getTextField().addListener(main.getIbeamListener());
    spinner.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeListener.ChangeEvent event, Actor actor) {
            Spinner spinner = (Spinner) actor;
            data.size = (int) spinner.getValue();
            updateDisabledFields();
        }
    });
    label = new Label("Mono:", skin);
    bottom.add(label).right();
    Button button = new Button(skin, "switch");
    button.setChecked(data.mono);
    bottom.add(button).left();
    toolTip = new TextTooltip("If on, font smoothing is disabled", main.getTooltipManager(), getSkin());
    button.addListener(toolTip);
    button.addListener(main.getHandListener());
    button.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeListener.ChangeEvent event, Actor actor) {
            Button button = (Button) actor;
            data.mono = button.isChecked();
            updateDisabledFields();
        }
    });
    bottom.row();
    label = new Label("Hinting:", skin);
    bottom.add(label).right();
    selectBox = new SelectBox(skin);
    selectBox.setItems("None", "Slight", "Medium", "Full", "AutoSlight", "AutoMedium", "AutoFull");
    selectBox.setSelected(data.hinting);
    bottom.add(selectBox).fillX().left();
    toolTip = new TextTooltip("Strength of hinting", main.getTooltipManager(), getSkin());
    selectBox.addListener(toolTip);
    selectBox.addListener(main.getHandListener());
    selectBox.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeListener.ChangeEvent event, Actor actor) {
            SelectBox<String> selectBox = (SelectBox) actor;
            data.hinting = selectBox.getSelected();
            updateDisabledFields();
        }
    });
    label = new Label("Color:", skin);
    bottom.add(label).right();
    textButton = new TextButton(data.color, skin);
    textButton.setName("colorTextButton");
    image = new Image(skin, "icon-colorwheel-over");
    textButton.add(image).space(10.0f);
    bottom.add(textButton).left();
    toolTip = new TextTooltip("Foreground color (Required)", main.getTooltipManager(), getSkin());
    textButton.addListener(toolTip);
    textButton.addListener(main.getHandListener());
    textButton.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeListener.ChangeEvent event, Actor actor) {
            TextButton textButton = (TextButton) actor;
            main.getDialogFactory().showDialogColors(new StyleProperty(), (ColorData colorData) -> {
                if (colorData != null) {
                    textButton.setText(colorData.getName());
                    textButton.setUserObject(colorData);
                    data.color = colorData.getName();
                } else {
                    textButton.setText("");
                    textButton.setUserObject(null);
                    data.color = null;
                }
                updateColors();
                updateDisabledFields();
            });
        }
    });
    bottom.row();
    label = new Label("Gamma:", skin);
    bottom.add(label).right();
    spinner = new Spinner(Double.parseDouble(df.format(data.gamma)), 1.0, false, Spinner.Orientation.HORIZONTAL, skin);
    bottom.add(spinner).left().minWidth(100.0f);
    toolTip = new TextTooltip("Glyph gamma. Values > 1 reduce antialiasing.", main.getTooltipManager(), getSkin());
    spinner.addListener(toolTip);
    spinner.getButtonMinus().addListener(main.getHandListener());
    spinner.getButtonPlus().addListener(main.getHandListener());
    spinner.getTextField().addListener(main.getIbeamListener());
    spinner.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeListener.ChangeEvent event, Actor actor) {
            Spinner spinner = (Spinner) actor;
            data.gamma = (float) spinner.getValue();
            updateDisabledFields();
        }
    });
    label = new Label("Render Count:", skin);
    bottom.add(label).right();
    spinner = new Spinner(data.renderCount, 1.0, true, Spinner.Orientation.HORIZONTAL, skin);
    bottom.add(spinner).left().minWidth(100.0f);
    toolTip = new TextTooltip("Number of times to render the glyph. Useful with a shadow or border, so it doesn't show through the glyph.", main.getTooltipManager(), getSkin());
    spinner.addListener(toolTip);
    spinner.getButtonMinus().addListener(main.getHandListener());
    spinner.getButtonPlus().addListener(main.getHandListener());
    spinner.getTextField().addListener(main.getIbeamListener());
    spinner.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeListener.ChangeEvent event, Actor actor) {
            Spinner spinner = (Spinner) actor;
            data.renderCount = (int) spinner.getValue();
            updateDisabledFields();
        }
    });
    bottom.row();
    label = new Label("Border Width:", skin);
    bottom.add(label).right();
    spinner = new Spinner(data.borderWidth, 1.0, false, Spinner.Orientation.HORIZONTAL, skin);
    bottom.add(spinner).left().minWidth(100.0f);
    toolTip = new TextTooltip("Border width in pixels, 0 to disable", main.getTooltipManager(), getSkin());
    spinner.addListener(toolTip);
    spinner.getButtonMinus().addListener(main.getHandListener());
    spinner.getButtonPlus().addListener(main.getHandListener());
    spinner.getTextField().addListener(main.getIbeamListener());
    spinner.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeListener.ChangeEvent event, Actor actor) {
            Spinner spinner = (Spinner) actor;
            data.borderWidth = (float) spinner.getValue();
            updateDisabledFields();
        }
    });
    label = new Label("Border Color:", skin);
    bottom.add(label).right();
    textButton = new TextButton(data.borderColor, skin);
    textButton.setName("borderColorTextButton");
    image = new Image(skin, "icon-colorwheel-over");
    textButton.add(image).space(10.0f);
    bottom.add(textButton).left();
    toolTip = new TextTooltip("Border color; Required if borderWidth > 0", main.getTooltipManager(), getSkin());
    textButton.addListener(toolTip);
    textButton.addListener(main.getHandListener());
    textButton.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeListener.ChangeEvent event, Actor actor) {
            TextButton textButton = (TextButton) actor;
            main.getDialogFactory().showDialogColors(new StyleProperty(), (ColorData colorData) -> {
                if (colorData != null) {
                    textButton.setText(colorData.getName());
                    textButton.setUserObject(colorData);
                    data.borderColor = colorData.getName();
                } else {
                    textButton.setText("");
                    textButton.setUserObject(null);
                    data.borderColor = null;
                }
                updateColors();
                updateDisabledFields();
            });
        }
    });
    bottom.row();
    label = new Label("Border Straight:", skin);
    bottom.add(label).right();
    button = new Button(skin, "switch");
    button.setChecked(data.borderStraight);
    bottom.add(button).left();
    toolTip = new TextTooltip("On for straight (mitered), off for rounded borders", main.getTooltipManager(), getSkin());
    button.addListener(toolTip);
    button.addListener(main.getHandListener());
    button.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeListener.ChangeEvent event, Actor actor) {
            Button button = (Button) actor;
            data.borderStraight = button.isChecked();
            updateDisabledFields();
        }
    });
    label = new Label("Border Gamma:", skin);
    bottom.add(label).right();
    spinner = new Spinner(Double.parseDouble(df.format(data.borderGamma)), 1.0, false, Spinner.Orientation.HORIZONTAL, skin);
    bottom.add(spinner).left().minWidth(100.0f);
    toolTip = new TextTooltip("Values < 1 increase the border size.", main.getTooltipManager(), getSkin());
    spinner.addListener(toolTip);
    spinner.getButtonMinus().addListener(main.getHandListener());
    spinner.getButtonPlus().addListener(main.getHandListener());
    spinner.getTextField().addListener(main.getIbeamListener());
    spinner.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeListener.ChangeEvent event, Actor actor) {
            Spinner spinner = (Spinner) actor;
            data.borderGamma = (float) spinner.getValue();
            updateDisabledFields();
        }
    });
    bottom.row();
    label = new Label("Shadow Offset X:", skin);
    bottom.add(label).right();
    spinner = new Spinner(data.shadowOffsetX, 1.0, true, Spinner.Orientation.HORIZONTAL, skin);
    bottom.add(spinner).left().minWidth(100.0f);
    toolTip = new TextTooltip("Offset of text shadow on X axis in pixels, 0 to disable", main.getTooltipManager(), getSkin());
    spinner.addListener(toolTip);
    spinner.getButtonMinus().addListener(main.getHandListener());
    spinner.getButtonPlus().addListener(main.getHandListener());
    spinner.getTextField().addListener(main.getIbeamListener());
    spinner.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeListener.ChangeEvent event, Actor actor) {
            Spinner spinner = (Spinner) actor;
            data.shadowOffsetX = (int) spinner.getValue();
            updateDisabledFields();
        }
    });
    label = new Label("Shadow Offset Y:", skin);
    bottom.add(label).right();
    spinner = new Spinner(data.shadowOffsetY, 1.0, true, Spinner.Orientation.HORIZONTAL, skin);
    bottom.add(spinner).left().minWidth(100.0f);
    toolTip = new TextTooltip("Offset of text shadow on Y axis in pixels, 0 to disable", main.getTooltipManager(), getSkin());
    spinner.addListener(toolTip);
    spinner.getButtonMinus().addListener(main.getHandListener());
    spinner.getButtonPlus().addListener(main.getHandListener());
    spinner.getTextField().addListener(main.getIbeamListener());
    spinner.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeListener.ChangeEvent event, Actor actor) {
            Spinner spinner = (Spinner) actor;
            data.shadowOffsetY = (int) spinner.getValue();
            updateDisabledFields();
        }
    });
    bottom.row();
    label = new Label("Shadow Color:", skin);
    bottom.add(label).right();
    textButton = new TextButton(data.shadowColor, skin);
    textButton.setName("shadowColorTextButton");
    image = new Image(skin, "icon-colorwheel-over");
    textButton.add(image).space(10.0f);
    bottom.add(textButton).left();
    toolTip = new TextTooltip("Shadow color; required if shadowOffset > 0.", main.getTooltipManager(), getSkin());
    textButton.addListener(toolTip);
    textButton.addListener(main.getHandListener());
    textButton.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeListener.ChangeEvent event, Actor actor) {
            TextButton textButton = (TextButton) actor;
            main.getDialogFactory().showDialogColors(new StyleProperty(), (ColorData colorData) -> {
                if (colorData != null) {
                    textButton.setText(colorData.getName());
                    textButton.setUserObject(colorData);
                    data.shadowColor = colorData.getName();
                } else {
                    textButton.setText("");
                    textButton.setUserObject(null);
                    data.shadowColor = null;
                }
                updateColors();
                updateDisabledFields();
            });
        }
    });
    label = new Label("Incremental:", skin);
    bottom.add(label).right();
    button = new Button(skin, "switch");
    button.setChecked(data.incremental);
    bottom.add(button).left();
    toolTip = new TextTooltip("When true, glyphs are rendered on the fly to the \n" + "font's glyph page textures as they are needed.", main.getTooltipManager(), getSkin());
    button.addListener(toolTip);
    button.addListener(main.getHandListener());
    button.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeListener.ChangeEvent event, Actor actor) {
            Button button = (Button) actor;
            data.incremental = button.isChecked();
            updateDisabledFields();
        }
    });
    bottom.row();
    label = new Label("Space X:", skin);
    bottom.add(label).right();
    spinner = new Spinner(data.spaceX, 1.0, true, Spinner.Orientation.HORIZONTAL, skin);
    bottom.add(spinner).left().minWidth(100.0f);
    toolTip = new TextTooltip("Pixels to add to glyph spacing. Can be negative.", main.getTooltipManager(), getSkin());
    spinner.addListener(toolTip);
    spinner.getButtonMinus().addListener(main.getHandListener());
    spinner.getButtonPlus().addListener(main.getHandListener());
    spinner.getTextField().addListener(main.getIbeamListener());
    spinner.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeListener.ChangeEvent event, Actor actor) {
            Spinner spinner = (Spinner) actor;
            data.spaceX = (int) spinner.getValue();
            updateDisabledFields();
        }
    });
    label = new Label("Space Y:", skin);
    bottom.add(label).right();
    spinner = new Spinner(data.spaceY, 1.0, true, Spinner.Orientation.HORIZONTAL, skin);
    bottom.add(spinner).left().minWidth(100.0f);
    toolTip = new TextTooltip("Pixels to add to glyph spacing. Can be negative.", main.getTooltipManager(), getSkin());
    spinner.addListener(toolTip);
    spinner.getButtonMinus().addListener(main.getHandListener());
    spinner.getButtonPlus().addListener(main.getHandListener());
    spinner.getTextField().addListener(main.getIbeamListener());
    spinner.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeListener.ChangeEvent event, Actor actor) {
            Spinner spinner = (Spinner) actor;
            data.spaceY = (int) spinner.getValue();
            updateDisabledFields();
        }
    });
    bottom.row();
    label = new Label("Characters:", skin);
    bottom.add(label).right();
    textField = new TextField(data.characters, skin);
    bottom.add(textField).left().growX();
    toolTip = new TextTooltip("The characters the font should contain. Leave blank for defaults.", main.getTooltipManager(), getSkin());
    textField.addListener(toolTip);
    textField.addListener(main.getIbeamListener());
    textField.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeListener.ChangeEvent event, Actor actor) {
            TextField textField = (TextField) actor;
            data.characters = textField.getText();
            updateDisabledFields();
        }
    });
    label = new Label("Kerning:", skin);
    bottom.add(label).right();
    button = new Button(skin, "switch");
    button.setChecked(data.kerning);
    bottom.add(button).left();
    toolTip = new TextTooltip("Whether the font should include kerning", main.getTooltipManager(), getSkin());
    button.addListener(toolTip);
    button.addListener(main.getHandListener());
    button.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeListener.ChangeEvent event, Actor actor) {
            Button button = (Button) actor;
            data.kerning = button.isChecked();
            updateDisabledFields();
        }
    });
    bottom.row();
    label = new Label("Flip:", skin);
    bottom.add(label).right();
    button = new Button(skin, "switch");
    button.setChecked(data.flip);
    bottom.add(button).left();
    toolTip = new TextTooltip("Whether to flip the font vertically", main.getTooltipManager(), getSkin());
    button.addListener(toolTip);
    button.addListener(main.getHandListener());
    button.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeListener.ChangeEvent event, Actor actor) {
            Button button = (Button) actor;
            data.flip = button.isChecked();
            updateDisabledFields();
        }
    });
    label = new Label("GenMipMaps:", skin);
    bottom.add(label).right();
    button = new Button(skin, "switch");
    button.setChecked(data.genMipMaps);
    bottom.add(button).left();
    toolTip = new TextTooltip("Whether to generate mip maps for the resulting texture", main.getTooltipManager(), getSkin());
    button.addListener(toolTip);
    button.addListener(main.getHandListener());
    button.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeListener.ChangeEvent event, Actor actor) {
            Button button = (Button) actor;
            data.genMipMaps = button.isChecked();
            updateDisabledFields();
        }
    });
    bottom.row();
    label = new Label("Min Filter:", skin);
    bottom.add(label).right();
    selectBox = new SelectBox(skin);
    selectBox.setItems("Nearest", "Linear", "MipMap", "MipMapNearestNearest", "MipMapLinearNearest", "MipMapNearestLinear", "MipMapLinearLinear");
    selectBox.setSelected(data.minFilter);
    bottom.add(selectBox).left();
    toolTip = new TextTooltip("Minification filter", main.getTooltipManager(), getSkin());
    selectBox.addListener(toolTip);
    selectBox.addListener(main.getHandListener());
    selectBox.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeListener.ChangeEvent event, Actor actor) {
            SelectBox<String> selectBox = (SelectBox) actor;
            data.minFilter = selectBox.getSelected();
            updateDisabledFields();
        }
    });
    label = new Label("Mag Filter:", skin);
    bottom.add(label).right();
    selectBox = new SelectBox(skin);
    selectBox.setItems("Nearest", "Linear", "MipMap", "MipMapNearestNearest", "MipMapLinearNearest", "MipMapNearestLinear", "MipMapLinearLinear");
    selectBox.setSelected(data.magFilter);
    bottom.add(selectBox).left();
    toolTip = new TextTooltip("Magnification filter", main.getTooltipManager(), getSkin());
    selectBox.addListener(toolTip);
    selectBox.addListener(main.getHandListener());
    selectBox.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeListener.ChangeEvent event, Actor actor) {
            SelectBox<String> selectBox = (SelectBox) actor;
            data.magFilter = selectBox.getSelected();
            updateDisabledFields();
        }
    });
    buttons.pad(10.0f);
    buttons.defaults().minWidth(75.0f).space(25.0f);
    textButton = new TextButton("OK", skin);
    textButton.setName("okButton");
    textButton.addListener(main.getHandListener());
    button(textButton, true);
    textButton = new TextButton("Cancel", skin);
    textButton.setName("cancelButton");
    textButton.addListener(main.getHandListener());
    button(textButton, false);
}
Also used : FileHandle(com.badlogic.gdx.files.FileHandle) Spinner(com.ray3k.skincomposer.Spinner) Label(com.badlogic.gdx.scenes.scene2d.ui.Label) Image(com.badlogic.gdx.scenes.scene2d.ui.Image) TextTooltip(com.badlogic.gdx.scenes.scene2d.ui.TextTooltip) TextButton(com.badlogic.gdx.scenes.scene2d.ui.TextButton) 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) TextButton(com.badlogic.gdx.scenes.scene2d.ui.TextButton) Table(com.badlogic.gdx.scenes.scene2d.ui.Table) SelectBox(com.badlogic.gdx.scenes.scene2d.ui.SelectBox) Array(com.badlogic.gdx.utils.Array) StyleProperty(com.ray3k.skincomposer.data.StyleProperty) ColorData(com.ray3k.skincomposer.data.ColorData) CheckBox(com.badlogic.gdx.scenes.scene2d.ui.CheckBox) ScrollPane(com.badlogic.gdx.scenes.scene2d.ui.ScrollPane) File(java.io.File)

Example 5 with TextTooltip

use of com.badlogic.gdx.scenes.scene2d.ui.TextTooltip in project bladecoder-adventure-engine by bladecoder.

the class InputPanel method init.

protected void init(Skin skin, String title, String desc, Actor c, boolean mandatory, String defaultValue) {
    // debug();
    this.mandatory = mandatory;
    this.setSkin(skin);
    LabelStyle style = new LabelStyle(skin.get(LabelStyle.class));
    this.title = new Label(title, style);
    this.desc = new Label(desc, skin, "subtitle");
    this.desc.setWrap(false);
    this.field = c;
    // row().expand();
    float titleWidth = this.title.getStyle().font.getSpaceWidth() * 35;
    add(this.title).width(titleWidth).left().top();
    this.title.setWidth(titleWidth);
    this.title.setWrap(true);
    // row().expand();
    add(field).expandX().left().top();
    if (USE_TOOLTIPS) {
        TextTooltip t = new TextTooltip(desc, skin);
        this.title.addListener(t);
        this.field.addListener(t);
    } else {
        row().expand();
        add(this.desc).colspan(2).left();
    }
    if (defaultValue != null)
        setText(defaultValue);
}
Also used : TextTooltip(com.badlogic.gdx.scenes.scene2d.ui.TextTooltip) Label(com.badlogic.gdx.scenes.scene2d.ui.Label) LabelStyle(com.badlogic.gdx.scenes.scene2d.ui.Label.LabelStyle)

Aggregations

TextTooltip (com.badlogic.gdx.scenes.scene2d.ui.TextTooltip)11 Label (com.badlogic.gdx.scenes.scene2d.ui.Label)9 Actor (com.badlogic.gdx.scenes.scene2d.Actor)8 Button (com.badlogic.gdx.scenes.scene2d.ui.Button)8 Table (com.badlogic.gdx.scenes.scene2d.ui.Table)8 TextButton (com.badlogic.gdx.scenes.scene2d.ui.TextButton)8 ChangeListener (com.badlogic.gdx.scenes.scene2d.utils.ChangeListener)8 SelectBox (com.badlogic.gdx.scenes.scene2d.ui.SelectBox)5 DrawableData (com.ray3k.skincomposer.data.DrawableData)5 Image (com.badlogic.gdx.scenes.scene2d.ui.Image)4 ImageButton (com.badlogic.gdx.scenes.scene2d.ui.ImageButton)4 ImageButtonStyle (com.badlogic.gdx.scenes.scene2d.ui.ImageButton.ImageButtonStyle)4 ScrollPane (com.badlogic.gdx.scenes.scene2d.ui.ScrollPane)4 TextField (com.badlogic.gdx.scenes.scene2d.ui.TextField)4 Array (com.badlogic.gdx.utils.Array)4 ColorData (com.ray3k.skincomposer.data.ColorData)4 StyleData (com.ray3k.skincomposer.data.StyleData)4 StyleProperty (com.ray3k.skincomposer.data.StyleProperty)4 TextureRegion (com.badlogic.gdx.graphics.g2d.TextureRegion)3 InputEvent (com.badlogic.gdx.scenes.scene2d.InputEvent)3