Search in sources :

Example 6 with TextTooltip

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

the class EditToolbar method addToolBarButton.

public void addToolBarButton(ImageButton button, String icon, String text, String tooltip) {
    TextureRegion image = Ctx.assetManager.getIcon(icon);
    TextureRegion imageDisabled = Ctx.assetManager.getIcon(icon + "_disabled");
    ImageButtonStyle style = new ImageButtonStyle(skin.get("plain", ButtonStyle.class));
    style.imageUp = new TextureRegionDrawable(image);
    if (imageDisabled != null)
        style.imageDisabled = new TextureRegionDrawable(imageDisabled);
    button.setStyle(style);
    button.pad(6, 3, 6, 3);
    addActor(button);
    button.setDisabled(true);
    TextTooltip t = new TextTooltip(tooltip, skin);
    button.addListener(t);
}
Also used : TextureRegion(com.badlogic.gdx.graphics.g2d.TextureRegion) TextTooltip(com.badlogic.gdx.scenes.scene2d.ui.TextTooltip) TextureRegionDrawable(com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable) ImageButtonStyle(com.badlogic.gdx.scenes.scene2d.ui.ImageButton.ImageButtonStyle) ButtonStyle(com.badlogic.gdx.scenes.scene2d.ui.Button.ButtonStyle) ImageButtonStyle(com.badlogic.gdx.scenes.scene2d.ui.ImageButton.ImageButtonStyle)

Example 7 with TextTooltip

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

the class DialogDrawables method refreshDrawableDisplay.

private void refreshDrawableDisplay() {
    contentGroup.clear();
    if (drawables.size == 0) {
        Label label = new Label("No drawables have been added!", getSkin());
        contentGroup.addActor(label);
    }
    for (DrawableData drawable : drawables) {
        Button drawableButton;
        if (property != null || customProperty != null) {
            drawableButton = new Button(getSkin(), "color-base");
            drawableButton.addListener(new ChangeListener() {

                @Override
                public void changed(ChangeListener.ChangeEvent event, Actor actor) {
                    result(drawable);
                    hide();
                }
            });
            drawableButton.addListener(main.getHandListener());
        } else {
            drawableButton = new Button(getSkin(), "color-base-static");
        }
        contentGroup.addActor(drawableButton);
        Table table = new Table();
        drawableButton.add(table).width(sizes[MathUtils.floor(zoomSlider.getValue())]).height(sizes[MathUtils.floor(zoomSlider.getValue())]);
        ClickListener fixDuplicateTouchListener = new ClickListener() {

            @Override
            public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
                event.setBubbles(false);
                return super.touchDown(event, x, y, pointer, button);
            }
        };
        // color wheel
        if (!drawable.customized && !drawable.tiled) {
            Button button = new Button(getSkin(), "colorwheel");
            button.addListener(new ChangeListener() {

                @Override
                public void changed(ChangeListener.ChangeEvent event, Actor actor) {
                    newTintedDrawable(drawable);
                    event.setBubbles(false);
                }
            });
            button.addListener(fixDuplicateTouchListener);
            if (property == null && customProperty == null) {
                button.addListener(main.getHandListener());
            }
            table.add(button);
            TextTooltip toolTip = new TextTooltip("New Tinted Drawable", main.getTooltipManager(), getSkin());
            button.addListener(toolTip);
        } else {
            table.add();
        }
        // swatches
        if (!drawable.customized && !drawable.tiled) {
            Button button = new Button(getSkin(), "swatches");
            button.addListener(new ChangeListener() {

                @Override
                public void changed(ChangeListener.ChangeEvent event, Actor actor) {
                    colorSwatchesDialog(drawable);
                    event.setBubbles(false);
                }
            });
            button.addListener(fixDuplicateTouchListener);
            if (property == null && customProperty == null) {
                button.addListener(main.getHandListener());
            }
            table.add(button);
            TextTooltip toolTip = new TextTooltip("Tinted Drawable from Colors", main.getTooltipManager(), getSkin());
            button.addListener(toolTip);
        } else {
            table.add();
        }
        // tiles button (NOT FOR TINTS OR CUSTOM DRAWABLES)
        if (!drawable.customized && drawable.tint == null && drawable.tintName == null) {
            ;
            Button button = new Button(getSkin(), "tiles");
            button.addListener(new ChangeListener() {

                @Override
                public void changed(ChangeListener.ChangeEvent event, Actor actor) {
                    tiledDrawableDialog(drawable);
                    event.setBubbles(false);
                }
            });
            button.addListener(fixDuplicateTouchListener);
            if (property == null && customProperty == null) {
                button.addListener(main.getHandListener());
            }
            table.add(button);
            TextTooltip toolTip = new TextTooltip("Tiled Drawable", main.getTooltipManager(), getSkin());
            button.addListener(toolTip);
        } else {
            table.add();
        }
        // tiled settings
        if (drawable.tiled) {
            Button button = new Button(getSkin(), "settings-small");
            button.addListener(new ChangeListener() {

                @Override
                public void changed(ChangeListener.ChangeEvent event, Actor actor) {
                    tiledDrawableSettingsDialog(drawable);
                    event.setBubbles(false);
                }
            });
            button.addListener(fixDuplicateTouchListener);
            if (property == null && customProperty == null) {
                button.addListener(main.getHandListener());
            }
            table.add(button);
            TextTooltip toolTip = new TextTooltip("Tiled Drawable Settings", main.getTooltipManager(), getSkin());
            button.addListener(toolTip);
        } else // rename (ONLY FOR TINTS)
        if (drawable.tint != null || drawable.tintName != null) {
            Button button = new Button(getSkin(), "settings-small");
            button.addListener(new ChangeListener() {

                @Override
                public void changed(ChangeListener.ChangeEvent event, Actor actor) {
                    renameDrawableDialog(drawable);
                    event.setBubbles(false);
                }
            });
            button.addListener(fixDuplicateTouchListener);
            if (property == null && customProperty == null) {
                button.addListener(main.getHandListener());
            }
            table.add(button);
            TextTooltip toolTip = new TextTooltip("Rename Tinted Drawable", main.getTooltipManager(), getSkin());
            button.addListener(toolTip);
        } else // settings for custom drawables
        if (drawable.customized) {
            Button button = new Button(getSkin(), "settings-small");
            button.addListener(new ChangeListener() {

                @Override
                public void changed(ChangeListener.ChangeEvent event, Actor actor) {
                    renameCustomDrawableDialog(drawable);
                    event.setBubbles(false);
                }
            });
            button.addListener(fixDuplicateTouchListener);
            if (property == null && customProperty == null) {
                button.addListener(main.getHandListener());
            }
            table.add(button);
            TextTooltip toolTip = new TextTooltip("Rename Custom Drawable", main.getTooltipManager(), getSkin());
            button.addListener(toolTip);
        } else {
            table.add();
        }
        // delete
        Button button = new Button(getSkin(), "delete-small");
        button.addListener(new ChangeListener() {

            @Override
            public void changed(ChangeListener.ChangeEvent event, Actor actor) {
                deleteDrawable(drawable);
                event.setBubbles(false);
            }
        });
        button.addListener(fixDuplicateTouchListener);
        if (property == null && customProperty == null) {
            button.addListener(main.getHandListener());
        }
        table.add(button).expandX().right();
        TextTooltip toolTip = new TextTooltip("Delete Drawable", main.getTooltipManager(), getSkin());
        button.addListener(toolTip);
        // preview
        table.row();
        Container bg = new Container();
        bg.setClip(true);
        bg.setBackground(getSkin().getDrawable("white"));
        bg.setColor(drawable.bgColor);
        Image image = new Image(drawablePairs.get(drawable));
        if (MathUtils.isZero(zoomSlider.getValue())) {
            image.setScaling(Scaling.fit);
            bg.fill(false);
        } else {
            image.setScaling(Scaling.stretch);
            bg.fill();
        }
        bg.setActor(image);
        table.add(bg).colspan(5).grow();
        // name
        table.row();
        Label label = new Label(drawable.name, getSkin());
        label.setEllipsis("...");
        label.setEllipsis(true);
        label.setAlignment(Align.center);
        table.add(label).colspan(5).growX().width(sizes[MathUtils.floor(zoomSlider.getValue())]);
        // Tooltip
        toolTip = new TextTooltip(drawable.name, main.getTooltipManager(), getSkin());
        label.addListener(toolTip);
    }
}
Also used : Table(com.badlogic.gdx.scenes.scene2d.ui.Table) Label(com.badlogic.gdx.scenes.scene2d.ui.Label) Image(com.badlogic.gdx.scenes.scene2d.ui.Image) DrawableData(com.ray3k.skincomposer.data.DrawableData) Container(com.badlogic.gdx.scenes.scene2d.ui.Container) TextTooltip(com.badlogic.gdx.scenes.scene2d.ui.TextTooltip) Button(com.badlogic.gdx.scenes.scene2d.ui.Button) TextButton(com.badlogic.gdx.scenes.scene2d.ui.TextButton) Actor(com.badlogic.gdx.scenes.scene2d.Actor) ChangeListener(com.badlogic.gdx.scenes.scene2d.utils.ChangeListener) InputEvent(com.badlogic.gdx.scenes.scene2d.InputEvent) ClickListener(com.badlogic.gdx.scenes.scene2d.utils.ClickListener)

Example 8 with TextTooltip

use of com.badlogic.gdx.scenes.scene2d.ui.TextTooltip in project libgdx by libgdx.

the class UITest method create.

@Override
public void create() {
    skin = new Skin(Gdx.files.internal("data/uiskin.json"));
    texture1 = new Texture(Gdx.files.internal("data/badlogicsmall.jpg"));
    texture2 = new Texture(Gdx.files.internal("data/badlogic.jpg"));
    TextureRegion image = new TextureRegion(texture1);
    TextureRegion imageFlipped = new TextureRegion(image);
    imageFlipped.flip(true, true);
    TextureRegion image2 = new TextureRegion(texture2);
    // stage = new Stage(Gdx.graphics.getWidth(), Gdx.graphics.getHeight(), false, new PolygonSpriteBatch());
    stage = new Stage(new ScreenViewport());
    Gdx.input.setInputProcessor(stage);
    // Group.debug = true;
    ImageButtonStyle style = new ImageButtonStyle(skin.get(ButtonStyle.class));
    style.imageUp = new TextureRegionDrawable(image);
    style.imageDown = new TextureRegionDrawable(imageFlipped);
    ImageButton iconButton = new ImageButton(style);
    Button buttonMulti = new TextButton("Multi\nLine\nToggle", skin, "toggle");
    Button imgButton = new Button(new Image(image), skin);
    Button imgToggleButton = new Button(new Image(image), skin, "toggle");
    Label myLabel = new Label("this is some text.", skin);
    myLabel.setWrap(true);
    Table t = new Table();
    t.row();
    t.add(myLabel);
    t.layout();
    final CheckBox checkBox = new CheckBox(" Continuous rendering", skin);
    checkBox.setChecked(true);
    final Slider slider = new Slider(0, 10, 1, false, skin);
    slider.setAnimateDuration(0.3f);
    TextField textfield = new TextField("", skin);
    textfield.setMessageText("Click here!");
    textfield.setAlignment(Align.center);
    final SelectBox selectBox = new SelectBox(skin);
    selectBox.addListener(new ChangeListener() {

        public void changed(ChangeEvent event, Actor actor) {
            System.out.println(selectBox.getSelected());
        }
    });
    selectBox.setItems("Android1", "Windows1 long text in item", "Linux1", "OSX1", "Android2", "Windows2", "Linux2", "OSX2", "Android3", "Windows3", "Linux3", "OSX3", "Android4", "Windows4", "Linux4", "OSX4", "Android5", "Windows5", "Linux5", "OSX5", "Android6", "Windows6", "Linux6", "OSX6", "Android7", "Windows7", "Linux7", "OSX7");
    selectBox.setSelected("Linux6");
    Image imageActor = new Image(image2);
    ScrollPane scrollPane = new ScrollPane(imageActor);
    List list = new List(skin);
    list.setItems(listEntries);
    list.getSelection().setMultiple(true);
    list.getSelection().setRequired(false);
    // list.getSelection().setToggle(true);
    ScrollPane scrollPane2 = new ScrollPane(list, skin);
    scrollPane2.setFlickScroll(false);
    SplitPane splitPane = new SplitPane(scrollPane, scrollPane2, false, skin, "default-horizontal");
    fpsLabel = new Label("fps:", skin);
    // configures an example of a TextField in password mode.
    final Label passwordLabel = new Label("Textfield in password mode: ", skin);
    final TextField passwordTextField = new TextField("", skin);
    passwordTextField.setMessageText("password");
    passwordTextField.setPasswordCharacter('*');
    passwordTextField.setPasswordMode(true);
    buttonMulti.addListener(new TextTooltip("This is a tooltip! This is a tooltip! This is a tooltip! This is a tooltip! This is a tooltip! This is a tooltip!", skin));
    Table tooltipTable = new Table(skin);
    tooltipTable.pad(10).background("default-round");
    tooltipTable.add(new TextButton("Fancy tooltip!", skin));
    imgButton.addListener(new Tooltip(tooltipTable));
    // window.debug();
    Window window = new Window("Dialog", skin);
    window.getTitleTable().add(new TextButton("X", skin)).height(window.getPadTop());
    window.setPosition(0, 0);
    window.defaults().spaceBottom(10);
    window.row().fill().expandX();
    window.add(iconButton);
    window.add(buttonMulti);
    window.add(imgButton);
    window.add(imgToggleButton);
    window.row();
    window.add(checkBox);
    window.add(slider).minWidth(100).fillX().colspan(3);
    window.row();
    window.add(selectBox).maxWidth(100);
    window.add(textfield).minWidth(100).expandX().fillX().colspan(3);
    window.row();
    window.add(splitPane).fill().expand().colspan(4).maxHeight(200);
    window.row();
    window.add(passwordLabel).colspan(2);
    window.add(passwordTextField).minWidth(100).expandX().fillX().colspan(2);
    window.row();
    window.add(fpsLabel).colspan(4);
    window.pack();
    // stage.addActor(new Button("Behind Window", skin));
    stage.addActor(window);
    textfield.setTextFieldListener(new TextFieldListener() {

        public void keyTyped(TextField textField, char key) {
            if (key == '\n')
                textField.getOnscreenKeyboard().show(false);
        }
    });
    slider.addListener(new ChangeListener() {

        public void changed(ChangeEvent event, Actor actor) {
            Gdx.app.log("UITest", "slider: " + slider.getValue());
        }
    });
    iconButton.addListener(new ChangeListener() {

        public void changed(ChangeEvent event, Actor actor) {
            new Dialog("Some Dialog", skin, "dialog") {

                protected void result(Object object) {
                    System.out.println("Chosen: " + object);
                }
            }.text("Are you enjoying this demo?").button("Yes", true).button("No", false).key(Keys.ENTER, true).key(Keys.ESCAPE, false).show(stage);
        }
    });
    checkBox.addListener(new ChangeListener() {

        public void changed(ChangeEvent event, Actor actor) {
            Gdx.graphics.setContinuousRendering(checkBox.isChecked());
        }
    });
}
Also used : Slider(com.badlogic.gdx.scenes.scene2d.ui.Slider) Label(com.badlogic.gdx.scenes.scene2d.ui.Label) TextureRegionDrawable(com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable) SplitPane(com.badlogic.gdx.scenes.scene2d.ui.SplitPane) Image(com.badlogic.gdx.scenes.scene2d.ui.Image) Texture(com.badlogic.gdx.graphics.Texture) TextureRegion(com.badlogic.gdx.graphics.g2d.TextureRegion) ImageButton(com.badlogic.gdx.scenes.scene2d.ui.ImageButton) TextTooltip(com.badlogic.gdx.scenes.scene2d.ui.TextTooltip) TextButton(com.badlogic.gdx.scenes.scene2d.ui.TextButton) Button(com.badlogic.gdx.scenes.scene2d.ui.Button) ImageButton(com.badlogic.gdx.scenes.scene2d.ui.ImageButton) Dialog(com.badlogic.gdx.scenes.scene2d.ui.Dialog) Actor(com.badlogic.gdx.scenes.scene2d.Actor) Stage(com.badlogic.gdx.scenes.scene2d.Stage) TextField(com.badlogic.gdx.scenes.scene2d.ui.TextField) ImageButtonStyle(com.badlogic.gdx.scenes.scene2d.ui.ImageButton.ImageButtonStyle) ChangeListener(com.badlogic.gdx.scenes.scene2d.utils.ChangeListener) List(com.badlogic.gdx.scenes.scene2d.ui.List) TextFieldListener(com.badlogic.gdx.scenes.scene2d.ui.TextField.TextFieldListener) ImageButtonStyle(com.badlogic.gdx.scenes.scene2d.ui.ImageButton.ImageButtonStyle) ButtonStyle(com.badlogic.gdx.scenes.scene2d.ui.Button.ButtonStyle) TextButton(com.badlogic.gdx.scenes.scene2d.ui.TextButton) Window(com.badlogic.gdx.scenes.scene2d.ui.Window) Table(com.badlogic.gdx.scenes.scene2d.ui.Table) SelectBox(com.badlogic.gdx.scenes.scene2d.ui.SelectBox) TextTooltip(com.badlogic.gdx.scenes.scene2d.ui.TextTooltip) Tooltip(com.badlogic.gdx.scenes.scene2d.ui.Tooltip) ScreenViewport(com.badlogic.gdx.utils.viewport.ScreenViewport) CheckBox(com.badlogic.gdx.scenes.scene2d.ui.CheckBox) ScrollPane(com.badlogic.gdx.scenes.scene2d.ui.ScrollPane) Skin(com.badlogic.gdx.scenes.scene2d.ui.Skin)

Example 9 with TextTooltip

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

the class DialogColors method refreshTable.

public void refreshTable() {
    colorTable.clear();
    if (colors.size > 0) {
        colorTable.defaults().padTop(5.0f);
        for (ColorData color : colors) {
            Button button = new Button(getSkin(), "color-base");
            button.addListener(main.getHandListener());
            Label label = new Label(color.toString(), getSkin(), "white");
            label.setTouchable(Touchable.disabled);
            float brightness = Utils.brightness(color.color);
            Color borderColor;
            if (brightness > .35f) {
                borderColor = Color.BLACK;
                label.setColor(borderColor);
            } else {
                borderColor = Color.WHITE;
                label.setColor(borderColor);
            }
            Color bgColor = new Color(color.color.r, color.color.g, color.color.b, 1.0f);
            Table table = new Table(getSkin());
            table.setBackground("white");
            table.setColor(bgColor);
            table.add(label).pad(3.0f);
            if (styleProperty == null && customProperty == null && !selectingForTintedDrawable) {
                table.addCaptureListener(new ChangeListener() {

                    @Override
                    public void changed(ChangeListener.ChangeEvent event, Actor actor) {
                        event.setBubbles(false);
                        refreshTable();
                    }
                });
                table.addCaptureListener(new InputListener() {

                    @Override
                    public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
                        event.setBubbles(false);
                        return true;
                    }
                });
            }
            Table borderTable = new Table(getSkin());
            borderTable.setBackground("white");
            borderTable.setColor(borderColor);
            borderTable.add(table).growX().pad(1.0f);
            button.add(borderTable).growX();
            // rename button
            Button renameButton = new Button(getSkin(), "settings-small");
            renameButton.addListener(new ChangeListener() {

                @Override
                public void changed(ChangeListener.ChangeEvent event, Actor actor) {
                    renameDialog(color);
                    event.setBubbles(false);
                }
            });
            renameButton.addListener(new InputListener() {

                @Override
                public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
                    event.setBubbles(false);
                    return true;
                }
            });
            button.add(renameButton).padLeft(10.0f);
            TextTooltip toolTip = new TextTooltip("Rename Color", main.getTooltipManager(), getSkin());
            renameButton.addListener(toolTip);
            // recolor button
            Button recolorButton = new Button(getSkin(), "colorwheel");
            recolorButton.addListener(new ChangeListener() {

                @Override
                public void changed(ChangeListener.ChangeEvent event, Actor actor) {
                    recolorDialog(color);
                    event.setBubbles(false);
                }
            });
            recolorButton.addListener(new InputListener() {

                @Override
                public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
                    event.setBubbles(false);
                    return true;
                }
            });
            button.add(recolorButton);
            toolTip = new TextTooltip("Change Color", main.getTooltipManager(), getSkin());
            recolorButton.addListener(toolTip);
            label = new Label("(" + ((int) (color.color.r * 255)) + ", " + ((int) (color.color.g * 255)) + ", " + ((int) (color.color.b * 255)) + ", " + ((int) (color.color.a * 255)) + ")", getSkin());
            label.setTouchable(Touchable.disabled);
            label.setAlignment(Align.center);
            if (styleProperty == null && customProperty == null && !selectingForTintedDrawable) {
                label.addCaptureListener(new ChangeListener() {

                    @Override
                    public void changed(ChangeListener.ChangeEvent event, Actor actor) {
                        event.setBubbles(false);
                        refreshTable();
                    }
                });
                label.addCaptureListener(new InputListener() {

                    @Override
                    public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
                        event.setBubbles(false);
                        return true;
                    }
                });
            }
            button.add(label).padLeft(5.0f).minWidth(160.0f);
            // delete color button
            Button closeButton = new Button(getSkin(), "delete-small");
            final ColorData deleteColor = color;
            closeButton.addListener(new ChangeListener() {

                @Override
                public void changed(ChangeListener.ChangeEvent event, Actor actor) {
                    colors.removeValue(deleteColor, true);
                    main.getProjectData().setChangesSaved(false);
                    // clear style properties that use this color.
                    for (Array<StyleData> datas : main.getJsonData().getClassStyleMap().values()) {
                        for (StyleData data : datas) {
                            for (StyleProperty property : data.properties.values()) {
                                if (property != null && property.type.equals(Color.class) && property.value != null && property.value.equals(deleteColor.getName())) {
                                    property.value = null;
                                }
                            }
                        }
                    }
                    // delete tinted drawables based on this color.
                    for (DrawableData drawableData : new Array<>(main.getProjectData().getAtlasData().getDrawables())) {
                        if (drawableData.tintName != null && drawableData.tintName.equals(deleteColor.getName())) {
                            main.getProjectData().getAtlasData().getDrawables().removeValue(drawableData, true);
                            // clear any style properties based on this tinted drawable.
                            for (Array<StyleData> styleDatas : main.getJsonData().getClassStyleMap().values()) {
                                for (StyleData styleData : styleDatas) {
                                    for (StyleProperty styleProperty : styleData.properties.values()) {
                                        if (styleProperty != null && styleProperty.type.equals(Drawable.class) && styleProperty.value != null && styleProperty.value.equals(drawableData.toString())) {
                                            styleProperty.value = null;
                                        }
                                    }
                                }
                            }
                        }
                    }
                    main.getUndoableManager().clearUndoables();
                    main.getRootTable().refreshStyleProperties(true);
                    main.getRootTable().refreshPreview();
                    event.setBubbles(false);
                    refreshTable();
                }
            });
            closeButton.addListener(new InputListener() {

                @Override
                public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
                    event.setBubbles(false);
                    return true;
                }
            });
            toolTip = new TextTooltip("Delete Color", main.getTooltipManager(), getSkin());
            closeButton.addListener(toolTip);
            button.add(closeButton).padLeft(5.0f);
            if (styleProperty == null && customProperty == null && !selectingForTintedDrawable) {
                button.setTouchable(Touchable.childrenOnly);
            } else {
                setObject(button, color);
                final ColorData result = color;
                button.addListener(new ChangeListener() {

                    @Override
                    public void changed(ChangeListener.ChangeEvent event, Actor actor) {
                        result(result);
                        hide();
                    }
                });
            }
            colorTable.add(button).growX();
            colorTable.row();
        }
    } else {
        colorTable.add(new Label("No colors have been set!", getSkin(), "required"));
    }
}
Also used : Table(com.badlogic.gdx.scenes.scene2d.ui.Table) Color(com.badlogic.gdx.graphics.Color) Label(com.badlogic.gdx.scenes.scene2d.ui.Label) ColorData(com.ray3k.skincomposer.data.ColorData) Array(com.badlogic.gdx.utils.Array) StyleProperty(com.ray3k.skincomposer.data.StyleProperty) DrawableData(com.ray3k.skincomposer.data.DrawableData) TextTooltip(com.badlogic.gdx.scenes.scene2d.ui.TextTooltip) InputListener(com.badlogic.gdx.scenes.scene2d.InputListener) TextButton(com.badlogic.gdx.scenes.scene2d.ui.TextButton) Button(com.badlogic.gdx.scenes.scene2d.ui.Button) Actor(com.badlogic.gdx.scenes.scene2d.Actor) ChangeListener(com.badlogic.gdx.scenes.scene2d.utils.ChangeListener) InputEvent(com.badlogic.gdx.scenes.scene2d.InputEvent) StyleData(com.ray3k.skincomposer.data.StyleData)

Example 10 with TextTooltip

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

the class DialogFonts method refreshTable.

public void refreshTable() {
    fontsTable.clear();
    fontsTable.defaults().growX().pad(5.0f);
    if (fonts.size == 0 && freeTypeFonts.size == 0) {
        fontsTable.add(new Label("No fonts have been set!", getSkin()));
    } else {
        if (fonts.size > 0) {
            Label label = new Label("Bitmap Fonts", getSkin(), "required");
            label.setAlignment(Align.center);
            fontsTable.add(label);
            fontsTable.row();
        }
        for (FontData font : fonts) {
            Button button = new Button(getSkin(), "color-base");
            Label label = new Label(font.getName(), getSkin());
            label.setTouchable(Touchable.disabled);
            button.add(label).left();
            button.addListener(main.getHandListener());
            Button renameButton = new Button(getSkin(), "settings-small");
            renameButton.addListener(new ChangeListener() {

                @Override
                public void changed(ChangeListener.ChangeEvent event, Actor actor) {
                    renameDialog(font);
                    event.setBubbles(false);
                }
            });
            renameButton.addListener(new InputListener() {

                @Override
                public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
                    event.setBubbles(false);
                    return true;
                }
            });
            button.add(renameButton).padLeft(15.0f);
            TextTooltip toolTip = new TextTooltip("Rename Font", main.getTooltipManager(), getSkin());
            renameButton.addListener(toolTip);
            LabelStyle style = new LabelStyle();
            style.font = fontMap.get(font);
            style.fontColor = Color.WHITE;
            label = new Label("Lorem Ipsum", style);
            label.setAlignment(Align.center);
            label.setTouchable(Touchable.disabled);
            Table bg = new Table(getSkin());
            bg.setBackground("white");
            BitmapFontData bf = new BitmapFontData(font.file, false);
            if (bf.imagePaths.length > 0) {
                FileHandle file = new FileHandle(bf.imagePaths[0]);
                if (!file.exists()) {
                    file = bf.fontFile.sibling(bf.fontFile.nameWithoutExtension() + ".png");
                }
                if (Utils.brightness(Utils.averageEdgeColor(file)) < .5f) {
                    bg.setColor(Color.WHITE);
                } else {
                    bg.setColor(Color.BLACK);
                }
            }
            bg.add(label).pad(5.0f).grow();
            button.add(bg).padLeft(15).growX();
            Button closeButton = new Button(getSkin(), "delete-small");
            final FontData deleteFont = font;
            closeButton.addListener(new ChangeListener() {

                @Override
                public void changed(ChangeListener.ChangeEvent event, Actor actor) {
                    fonts.removeValue(deleteFont, true);
                    main.getProjectData().setChangesSaved(false);
                    BitmapFontData bitmapFontData = new BitmapFontData(deleteFont.file, false);
                    for (String path : bitmapFontData.imagePaths) {
                        FileHandle imagefile = new FileHandle(path);
                        drawables.removeValue(new DrawableData(imagefile), false);
                    }
                    for (Array<StyleData> datas : main.getJsonData().getClassStyleMap().values()) {
                        for (StyleData data : datas) {
                            for (StyleProperty property : data.properties.values()) {
                                if (property != null && property.type.equals(BitmapFont.class) && property.value != null && property.value.equals(deleteFont.getName())) {
                                    property.value = null;
                                }
                            }
                        }
                    }
                    main.getUndoableManager().clearUndoables();
                    main.getRootTable().refreshStyleProperties(true);
                    main.getRootTable().refreshPreview();
                    event.setBubbles(false);
                    refreshTable();
                }
            });
            closeButton.addListener(new InputListener() {

                @Override
                public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
                    event.setBubbles(false);
                    return true;
                }
            });
            button.add(closeButton).padLeft(5.0f).right();
            toolTip = new TextTooltip("Delete Font", main.getTooltipManager(), getSkin());
            closeButton.addListener(toolTip);
            if (styleProperty == null && customProperty == null) {
                button.setTouchable(Touchable.childrenOnly);
            } else {
                final FontData fontResult = font;
                button.addListener(new ChangeListener() {

                    @Override
                    public void changed(ChangeListener.ChangeEvent event, Actor actor) {
                        result(fontResult);
                        hide();
                    }
                });
            }
            fontsTable.add(button);
            fontsTable.row();
        }
        if (freeTypeFonts.size > 0) {
            Label label = new Label("FreeType Fonts", getSkin(), "required");
            label.setAlignment(Align.center);
            fontsTable.add(label).spaceTop(20.0f);
            fontsTable.row();
        }
        for (FreeTypeFontData font : freeTypeFonts) {
            Button button = new Button(getSkin(), "color-base");
            Label label = new Label(font.name, getSkin());
            label.setTouchable(Touchable.disabled);
            button.add(label).left();
            button.addListener(main.getHandListener());
            Button renameButton = new Button(getSkin(), "settings-small");
            renameButton.addListener(new ChangeListener() {

                @Override
                public void changed(ChangeListener.ChangeEvent event, Actor actor) {
                    freeTypeSettingsDialog(font);
                    event.setBubbles(false);
                }
            });
            renameButton.addListener(new InputListener() {

                @Override
                public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
                    event.setBubbles(false);
                    return true;
                }
            });
            button.add(renameButton).padLeft(15.0f);
            TextTooltip toolTip = new TextTooltip("Rename Font", main.getTooltipManager(), getSkin());
            renameButton.addListener(toolTip);
            LabelStyle style = new LabelStyle();
            style.font = font.bitmapFont;
            style.fontColor = Color.WHITE;
            label = new Label("Lorem Ipsum", style);
            label.setAlignment(Align.center);
            label.setTouchable(Touchable.disabled);
            Table bg = new Table(getSkin());
            bg.setBackground("white");
            bg.add(label).pad(5.0f).grow();
            button.add(bg).padLeft(15).growX();
            Button closeButton = new Button(getSkin(), "delete-small");
            final FreeTypeFontData deleteFont = font;
            closeButton.addListener(new ChangeListener() {

                @Override
                public void changed(ChangeListener.ChangeEvent event, Actor actor) {
                    freeTypeFonts.removeValue(deleteFont, true);
                    main.getProjectData().setChangesSaved(false);
                    for (Array<StyleData> datas : main.getJsonData().getClassStyleMap().values()) {
                        for (StyleData data : datas) {
                            for (StyleProperty property : data.properties.values()) {
                                if (property != null && property.type.equals(BitmapFont.class) && property.value != null && property.value.equals(deleteFont.name)) {
                                    property.value = null;
                                }
                            }
                        }
                    }
                    main.getUndoableManager().clearUndoables();
                    main.getRootTable().refreshStyleProperties(true);
                    main.getRootTable().refreshPreview();
                    event.setBubbles(false);
                    refreshTable();
                }
            });
            closeButton.addListener(new InputListener() {

                @Override
                public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
                    event.setBubbles(false);
                    return true;
                }
            });
            button.add(closeButton).padLeft(5.0f).right();
            toolTip = new TextTooltip("Delete Font", main.getTooltipManager(), getSkin());
            closeButton.addListener(toolTip);
            if (styleProperty == null && customProperty == null) {
                button.setTouchable(Touchable.childrenOnly);
            } else {
                final FreeTypeFontData fontResult = font;
                button.addListener(new ChangeListener() {

                    @Override
                    public void changed(ChangeListener.ChangeEvent event, Actor actor) {
                        result(fontResult);
                        hide();
                    }
                });
            }
            fontsTable.add(button);
            fontsTable.row();
        }
    }
}
Also used : Table(com.badlogic.gdx.scenes.scene2d.ui.Table) BitmapFontData(com.badlogic.gdx.graphics.g2d.BitmapFont.BitmapFontData) FileHandle(com.badlogic.gdx.files.FileHandle) FreeTypeFontData(com.ray3k.skincomposer.data.FreeTypeFontData) FontData(com.ray3k.skincomposer.data.FontData) BitmapFontData(com.badlogic.gdx.graphics.g2d.BitmapFont.BitmapFontData) Label(com.badlogic.gdx.scenes.scene2d.ui.Label) LabelStyle(com.badlogic.gdx.scenes.scene2d.ui.Label.LabelStyle) Array(com.badlogic.gdx.utils.Array) StyleProperty(com.ray3k.skincomposer.data.StyleProperty) DrawableData(com.ray3k.skincomposer.data.DrawableData) TextTooltip(com.badlogic.gdx.scenes.scene2d.ui.TextTooltip) FreeTypeFontData(com.ray3k.skincomposer.data.FreeTypeFontData) InputListener(com.badlogic.gdx.scenes.scene2d.InputListener) TextButton(com.badlogic.gdx.scenes.scene2d.ui.TextButton) Button(com.badlogic.gdx.scenes.scene2d.ui.Button) Actor(com.badlogic.gdx.scenes.scene2d.Actor) ChangeListener(com.badlogic.gdx.scenes.scene2d.utils.ChangeListener) InputEvent(com.badlogic.gdx.scenes.scene2d.InputEvent) StyleData(com.ray3k.skincomposer.data.StyleData)

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