Example usage for com.badlogic.gdx.scenes.scene2d.ui TextField setFocusTraversal

List of usage examples for com.badlogic.gdx.scenes.scene2d.ui TextField setFocusTraversal

Introduction

In this page you can find the example usage for com.badlogic.gdx.scenes.scene2d.ui TextField setFocusTraversal.

Prototype

public void setFocusTraversal(boolean focusTraversal) 

Source Link

Document

If true (the default), tab/shift+tab will move to the next text field.

Usage

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

License:Open Source License

private void showColorPicker() {
    dialogFactory.showDialogColorPicker(new DialogColorPicker.ColorListener() {
        @Override//from  w w  w.  jav a 2s .c o m
        public void selected(Color color) {
            if (color != null) {
                final TextField field = new TextField("RGBA_" + (int) (color.r * 255) + "_"
                        + (int) (color.g * 255) + "_" + (int) (color.b * 255) + "_" + (int) (color.a * 255),
                        skin);
                final Dialog dialog = new Dialog("Color name...", skin, "bg") {
                    @Override
                    protected void result(Object object) {
                        if ((Boolean) object == true) {
                            newColor(field.getText(), color);
                        }
                    }
                };

                dialog.getTitleTable().padLeft(5.0f);

                dialog.button("Ok", true).button("Cancel", false).key(Keys.ESCAPE, false);
                final TextButton button = (TextButton) dialog.getButtonTable().getCells().first().getActor();
                button.addListener(main.getHandListener());
                dialog.getButtonTable().getCells().get(1).getActor().addListener(main.getHandListener());
                dialog.getButtonTable().pad(15.0f);

                field.setTextFieldListener(new TextField.TextFieldListener() {
                    @Override
                    public void keyTyped(TextField textField, char c) {
                        if (c == '\n') {
                            if (!button.isDisabled()) {
                                String name = field.getText();
                                if (newColor(name, color)) {
                                    dialog.hide();
                                }
                            }
                            main.getStage().setKeyboardFocus(textField);
                        }
                    }
                });

                field.addListener(main.getIbeamListener());

                dialog.getContentTable().padLeft(10.0f).padRight(10.0f).padTop(5.0f);
                dialog.text("Please enter a name for the new color: ");
                dialog.getContentTable().row();
                dialog.getContentTable().add(field).growX();
                dialog.getContentTable().row();
                dialog.text("Preview:");
                dialog.getContentTable().row();
                Table table = new Table(skin);
                table.setBackground("white");
                table.setColor(color);
                dialog.getContentTable().add(table).minSize(50.0f);
                button.setDisabled(!ColorData.validate(field.getText()));
                field.addListener(new ChangeListener() {
                    @Override
                    public void changed(ChangeListener.ChangeEvent event, Actor actor) {
                        boolean disable = !ColorData.validate(field.getText());
                        if (!disable) {
                            for (ColorData data : jsonData.getColors()) {
                                if (data.getName().equals(field.getText())) {
                                    disable = true;
                                    break;
                                }
                            }
                        }
                        button.setDisabled(disable);
                    }
                });
                dialog.show(getStage());
                getStage().setKeyboardFocus(field);
                field.selectAll();
                field.setFocusTraversal(false);
            }
        }
    });
}

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

License:Open Source License

private void renameDialog(ColorData color) {
    TextField textField = new TextField("", skin);
    TextButton okButton;//from w w  w.j ava2 s.  com

    Dialog dialog = new Dialog("Rename Color?", skin, "bg") {
        @Override
        protected void result(Object object) {
            if ((boolean) object) {
                renameColor(color, textField.getText());
            }
        }

        @Override
        public Dialog show(Stage stage) {
            Dialog dialog = super.show(stage);
            main.getStage().setKeyboardFocus(textField);
            return dialog;
        }
    };

    dialog.getTitleTable().padLeft(5.0f);

    float brightness = Utils.brightness(color.color);
    Color borderColor;
    if (brightness > .35f) {
        borderColor = Color.BLACK;
    } else {
        borderColor = Color.WHITE;
    }

    Table bg = new Table(skin);
    bg.setBackground("white");
    bg.setColor(borderColor);
    dialog.getContentTable().add(bg);

    Label label = new Label(color.getName(), skin, "white");
    label.setColor(color.color);
    bg.add(label).pad(10);

    dialog.getContentTable().row();
    label = new Label("What do you want to rename the color to?", skin);
    dialog.getContentTable().add(label);

    dialog.getContentTable().row();
    textField.setText(color.getName());
    textField.selectAll();
    textField.addListener(main.getIbeamListener());
    dialog.getContentTable().add(textField);
    dialog.getCell(dialog.getContentTable()).pad(15.0f);

    dialog.button("OK", true);
    dialog.button("Cancel", false).key(Keys.ESCAPE, false);
    okButton = (TextButton) dialog.getButtonTable().getCells().first().getActor();
    okButton.setDisabled(true);
    okButton.addListener(main.getHandListener());
    dialog.getButtonTable().getCells().get(1).getActor().addListener(main.getHandListener());
    dialog.getButtonTable().padBottom(15.0f);

    textField.addListener(new ChangeListener() {
        @Override
        public void changed(ChangeListener.ChangeEvent event, Actor actor) {
            boolean disable = !ColorData.validate(textField.getText());
            if (!disable) {
                for (ColorData data : jsonData.getColors()) {
                    if (data.getName().equals(textField.getText())) {
                        disable = true;
                        break;
                    }
                }
            }
            okButton.setDisabled(disable);
        }
    });
    textField.setTextFieldListener(new TextField.TextFieldListener() {
        @Override
        public void keyTyped(TextField textField, char c) {
            if (c == '\n') {
                if (!okButton.isDisabled()) {
                    renameColor(color, textField.getText());
                    dialog.hide();
                }
            }
        }
    });

    textField.setFocusTraversal(false);
    dialog.show(getStage());
}

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

License:Open Source License

private void colorSwatchesDialog(DrawableData drawableData) {
    DialogColors dialog = new DialogColors(getSkin(), "dialog", null, true, dialogFactory, jsonData,
            projectData, atlasData, main, (ColorData colorData) -> {
                if (colorData != null) {
                    final DrawableData tintedDrawable = new DrawableData(drawableData.file);
                    tintedDrawable.tintName = colorData.getName();

                    //Fix background color for new, tinted drawable
                    Color temp = Utils.averageEdgeColor(tintedDrawable.file, colorData.color);

                    if (Utils.brightness(temp) > .5f) {
                        tintedDrawable.bgColor = Color.BLACK;
                    } else {
                        tintedDrawable.bgColor = Color.WHITE;
                    }/*from  w w w  .ja v  a 2  s  .c o  m*/

                    final TextField textField = new TextField(drawableData.name, getSkin());
                    final TextButton button = new TextButton("OK", getSkin());
                    button.setDisabled(!DrawableData.validate(textField.getText())
                            || checkIfNameExists(textField.getText()));
                    button.addListener(main.getHandListener());
                    textField.addListener(new ChangeListener() {
                        @Override
                        public void changed(ChangeListener.ChangeEvent event, Actor actor) {
                            button.setDisabled(!DrawableData.validate(textField.getText())
                                    || checkIfNameExists(textField.getText()));
                        }
                    });
                    textField.addListener(main.getIbeamListener());

                    Dialog approveDialog = new Dialog("TintedDrawable...", getSkin(), "bg") {
                        @Override
                        protected void result(Object object) {
                            if (object instanceof Boolean && (boolean) object) {
                                tintedDrawable.name = textField.getText();
                                atlasData.getDrawables().add(tintedDrawable);
                                projectData.setChangesSaved(false);
                            }
                        }

                        @Override
                        public boolean remove() {
                            gatherDrawables();
                            produceAtlas();
                            sortBySelectedMode();
                            getStage().setScrollFocus(scrollPane);
                            return super.remove();
                        }
                    };
                    approveDialog.addCaptureListener(new InputListener() {
                        @Override
                        public boolean keyDown(InputEvent event, int keycode2) {
                            if (keycode2 == Input.Keys.ENTER) {
                                if (!button.isDisabled()) {
                                    tintedDrawable.name = textField.getText();
                                    atlasData.getDrawables().add(tintedDrawable);
                                    projectData.setChangesSaved(false);
                                    approveDialog.hide();
                                }
                            }
                            return false;
                        }
                    });

                    approveDialog.getTitleTable().padLeft(5.0f);
                    approveDialog.getContentTable().padLeft(10.0f).padRight(10.0f).padTop(5.0f);
                    approveDialog.getButtonTable().padBottom(15.0f);

                    approveDialog.text("What is the name of the new tinted drawable?");

                    Drawable drawable = drawablePairs.get(drawableData);
                    Drawable preview = null;
                    if (drawable instanceof SpriteDrawable) {
                        preview = ((SpriteDrawable) drawable).tint(colorData.color);
                    } else if (drawable instanceof NinePatchDrawable) {
                        preview = ((NinePatchDrawable) drawable).tint(colorData.color);
                    }
                    if (preview != null) {
                        approveDialog.getContentTable().row();
                        Table table = new Table();
                        table.setBackground(preview);
                        approveDialog.getContentTable().add(table);
                    }

                    approveDialog.getContentTable().row();
                    approveDialog.getContentTable().add(textField).growX();

                    approveDialog.button(button, true);
                    approveDialog.button("Cancel", false);
                    approveDialog.getButtonTable().getCells().get(1).getActor()
                            .addListener(main.getHandListener());
                    approveDialog.key(Input.Keys.ESCAPE, false);
                    approveDialog.show(getStage());
                    getStage().setKeyboardFocus(textField);
                    textField.selectAll();

                    textField.setFocusTraversal(false);
                }
            });
    dialog.setFillParent(true);
    dialog.show(getStage());
    dialog.populate();
}

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

License:Open Source License

private void renameDrawableDialog(DrawableData drawable) {
    TextField textField = new TextField("", getSkin());
    Dialog dialog = new Dialog("Rename drawable?", getSkin(), "bg") {
        @Override/*from w  w w. j av a  2  s.  c  o m*/
        protected void result(Object object) {
            super.result(object);

            if (object instanceof Boolean && (boolean) object == true) {
                renameDrawable(drawable, textField.getText());
            }
            getStage().setScrollFocus(scrollPane);
        }

        @Override
        public Dialog show(Stage stage) {
            Dialog dialog = super.show(stage);
            stage.setKeyboardFocus(textField);
            return dialog;
        }
    };

    dialog.getTitleTable().padLeft(5.0f);
    dialog.getContentTable().padLeft(10.0f).padRight(10.0f).padTop(5.0f);
    dialog.getButtonTable().padBottom(15.0f);

    dialog.getContentTable().add(new Label("Please enter a new name for the drawable: ", getSkin()));

    dialog.button("OK", true);
    dialog.button("Cancel", false).key(Keys.ESCAPE, false);
    TextButton okButton = (TextButton) dialog.getButtonTable().getCells().first().getActor();
    okButton.setDisabled(true);
    okButton.addListener(main.getHandListener());
    dialog.getButtonTable().getCells().get(1).getActor().addListener(main.getHandListener());

    dialog.getContentTable().row();
    textField.setText(drawable.name);
    textField.selectAll();
    textField.addListener(new ChangeListener() {
        @Override
        public void changed(ChangeListener.ChangeEvent event, Actor actor) {
            boolean disable = !DrawableData.validate(textField.getText());
            if (!disable) {
                for (DrawableData data : atlasData.getDrawables()) {
                    if (data.name.equals(textField.getText())) {
                        disable = true;
                        break;
                    }
                }
            }
            okButton.setDisabled(disable);
        }
    });
    textField.setTextFieldListener(new TextField.TextFieldListener() {
        @Override
        public void keyTyped(TextField textField, char c) {
            if (c == '\n') {
                if (!okButton.isDisabled()) {
                    renameDrawable(drawable, textField.getText());
                    dialog.hide();
                }
            }
        }
    });
    textField.addListener(main.getIbeamListener());
    dialog.getContentTable().add(textField);

    textField.setFocusTraversal(false);

    dialog.show(getStage());
}

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

License:Open Source License

/**
 * Creates a TintedDrawable based on the provided DrawableData. Prompts
 * user for a Color and name.//w  ww.j a  v  a2  s.c  om
 * @param drawableData 
 */
private void newTintedDrawable(DrawableData drawableData) {
    Color previousColor = Color.WHITE;
    if (drawableData.tint != null) {
        previousColor = drawableData.tint;
    }
    dialogFactory.showDialogColorPicker(previousColor, new DialogColorPicker.ColorListener() {
        @Override
        public void selected(Color color) {
            if (color != null) {
                final DrawableData tintedDrawable = new DrawableData(drawableData.file);
                tintedDrawable.tint = color;

                //Fix background color for new, tinted drawable
                Color temp = Utils.averageEdgeColor(tintedDrawable.file, tintedDrawable.tint);

                if (Utils.brightness(temp) > .5f) {
                    tintedDrawable.bgColor = Color.BLACK;
                } else {
                    tintedDrawable.bgColor = Color.WHITE;
                }

                final TextField textField = new TextField(drawableData.name, getSkin());
                final TextButton button = new TextButton("OK", getSkin());
                button.setDisabled(
                        !DrawableData.validate(textField.getText()) || checkIfNameExists(textField.getText()));
                textField.addListener(new ChangeListener() {
                    @Override
                    public void changed(ChangeListener.ChangeEvent event, Actor actor) {
                        button.setDisabled(!DrawableData.validate(textField.getText())
                                || checkIfNameExists(textField.getText()));
                    }
                });
                textField.addListener(main.getIbeamListener());

                Dialog dialog = new Dialog("TintedDrawable...", getSkin(), "bg") {
                    @Override
                    protected void result(Object object) {
                        if (object instanceof Boolean && (boolean) object) {
                            tintedDrawable.name = textField.getText();
                            atlasData.getDrawables().add(tintedDrawable);
                            projectData.setChangesSaved(false);
                        }
                    }

                    @Override
                    public boolean remove() {
                        gatherDrawables();
                        produceAtlas();
                        sortBySelectedMode();
                        getStage().setScrollFocus(scrollPane);
                        return super.remove();
                    }
                };
                dialog.getTitleTable().getCells().first().padLeft(5.0f);
                dialog.addCaptureListener(new InputListener() {
                    @Override
                    public boolean keyDown(InputEvent event, int keycode2) {
                        if (keycode2 == Input.Keys.ENTER) {
                            if (!button.isDisabled()) {
                                tintedDrawable.name = textField.getText();
                                atlasData.getDrawables().add(tintedDrawable);
                                projectData.setChangesSaved(false);
                                dialog.hide();
                            }
                        }
                        return false;
                    }
                });
                dialog.text("What is the name of the new tinted drawable?");
                dialog.getContentTable().getCells().first().pad(10.0f);

                Drawable drawable = drawablePairs.get(drawableData);
                Drawable preview = null;
                if (drawable instanceof SpriteDrawable) {
                    preview = ((SpriteDrawable) drawable).tint(color);
                } else if (drawable instanceof NinePatchDrawable) {
                    preview = ((NinePatchDrawable) drawable).tint(color);
                }
                if (preview != null) {
                    dialog.getContentTable().row();
                    Table table = new Table();
                    table.setBackground(preview);
                    dialog.getContentTable().add(table);
                }

                dialog.getContentTable().row();
                dialog.getContentTable().add(textField).growX().pad(10.0f);

                dialog.getButtonTable().defaults().padBottom(10.0f).minWidth(50.0f);
                dialog.button(button, true);
                button.addListener(main.getHandListener());
                dialog.button("Cancel", false);
                dialog.getButtonTable().getCells().get(1).getActor().addListener(main.getHandListener());
                dialog.key(Input.Keys.ESCAPE, false);
                dialog.show(getStage());
                getStage().setKeyboardFocus(textField);
                textField.selectAll();
                textField.setFocusTraversal(false);
            }
        }
    });
}

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

License:Open Source License

public void showNewStyleDialog(Skin skin, Stage stage) {
    Class selectedClass = main.getRootTable().getSelectedClass();

    final TextField textField = new TextField("", skin);
    Dialog dialog = new Dialog("New Style", skin, "bg") {
        @Override/*from   w w  w  .  ja  v a2s . c  o  m*/
        protected void result(Object object) {
            if ((Boolean) object) {
                main.getUndoableManager()
                        .addUndoable(new NewStyleUndoable(selectedClass, textField.getText(), main), true);
            }
        }
    };
    dialog.getButtonTable().defaults().padBottom(10.0f).minWidth(50.0f);
    dialog.button("OK", true).button("Cancel", false);
    dialog.getButtonTable().getCells().first().getActor().addListener(main.getHandListener());
    dialog.getButtonTable().getCells().get(1).getActor().addListener(main.getHandListener());
    final TextButton okButton = (TextButton) dialog.getButtonTable().getCells().get(0).getActor();

    textField.setTextFieldListener((TextField textField1, char c) -> {
        if (c == '\n') {
            if (!okButton.isDisabled()) {
                main.getUndoableManager()
                        .addUndoable(new NewStyleUndoable(selectedClass, textField1.getText(), main), true);
                dialog.hide();
            }
            main.getStage().setKeyboardFocus(textField1);
        }
    });

    textField.addListener(main.getIbeamListener());

    dialog.getTitleLabel().setAlignment(Align.center);
    dialog.getContentTable().defaults().padLeft(10.0f).padRight(10.0f);
    dialog.text("What is the name of the new style?");
    dialog.getContentTable().getCells().first().pad(10.0f);
    dialog.getContentTable().row();
    dialog.getContentTable().add(textField).growX();
    okButton.setDisabled(true);

    Array<StyleData> currentStyles = main.getProjectData().getJsonData().getClassStyleMap().get(selectedClass);
    textField.addListener(new ChangeListener() {
        @Override
        public void changed(ChangeListener.ChangeEvent event, Actor actor) {
            boolean disable = !StyleData.validate(textField.getText());

            if (!disable) {
                for (StyleData data : currentStyles) {
                    if (data.name.equals(textField.getText())) {
                        disable = true;
                        break;
                    }
                }
            }

            okButton.setDisabled(disable);
        }
    });

    dialog.key(Input.Keys.ESCAPE, false);

    dialog.show(stage);
    stage.setKeyboardFocus(textField);
    textField.setFocusTraversal(false);
}

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

License:Open Source License

public void showDuplicateStyleDialog(Skin skin, Stage stage) {
    Class selectedClass = main.getRootTable().getSelectedClass();
    StyleData originalStyle = main.getRootTable().getSelectedStyle();

    final TextField textField = new TextField("", skin);
    Dialog dialog = new Dialog("Duplicate Style", skin, "bg") {
        @Override/*from  w w  w.j  a v a2s.  c  om*/
        protected void result(Object object) {
            if ((Boolean) object) {
                main.getUndoableManager().addUndoable(
                        new DuplicateStyleUndoable(originalStyle, textField.getText(), main), true);
            }
        }
    };

    dialog.getButtonTable().defaults().padBottom(10.0f).minWidth(50.0f);
    dialog.button("OK", true).button("Cancel", false);
    final TextButton okButton = (TextButton) dialog.getButtonTable().getCells().get(0).getActor();
    okButton.addListener(main.getHandListener());
    dialog.getButtonTable().getCells().get(1).getActor().addListener(main.getHandListener());

    textField.setTextFieldListener((TextField textField1, char c) -> {
        if (c == '\n') {
            if (!okButton.isDisabled()) {
                main.getUndoableManager().addUndoable(
                        new DuplicateStyleUndoable(originalStyle, textField.getText(), main), true);
                dialog.hide();
            }
            main.getStage().setKeyboardFocus(textField1);
        }
    });

    textField.addListener(main.getIbeamListener());

    dialog.getTitleLabel().setAlignment(Align.center);
    dialog.getContentTable().defaults().padLeft(10.0f).padRight(10.0f);
    dialog.text("What is the name of the new, duplicated style?");
    dialog.getContentTable().getCells().first().pad(10.0f);
    dialog.getContentTable().row();
    dialog.getContentTable().add(textField).growX();
    okButton.setDisabled(true);

    Array<StyleData> currentStyles = main.getProjectData().getJsonData().getClassStyleMap().get(selectedClass);
    textField.addListener(new ChangeListener() {
        @Override
        public void changed(ChangeListener.ChangeEvent event, Actor actor) {
            boolean disable = !StyleData.validate(textField.getText());

            if (!disable) {
                for (StyleData data : currentStyles) {
                    if (data.name.equals(textField.getText())) {
                        disable = true;
                        break;
                    }
                }
            }

            okButton.setDisabled(disable);
        }
    });

    dialog.key(Input.Keys.ESCAPE, false);

    dialog.show(stage);
    stage.setKeyboardFocus(textField);

    textField.setFocusTraversal(false);
}

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

License:Open Source License

public void showRenameStyleDialog(Skin skin, Stage stage) {
    Class selectedClass = main.getRootTable().getSelectedClass();

    final TextField textField = new TextField(main.getRootTable().getSelectedStyle().name, skin);
    Dialog dialog = new Dialog("Rename Style", skin, "bg") {
        @Override// www . ja  va 2  s .c  o m
        protected void result(Object object) {
            if ((Boolean) object) {
                main.getUndoableManager().addUndoable(new UndoableManager.RenameStyleUndoable(
                        main.getRootTable().getSelectedStyle(), main, textField.getText()), true);
            }
        }
    };
    dialog.getButtonTable().defaults().padBottom(10.0f).minWidth(50.0f);
    dialog.button("OK", true).button("Cancel", false);
    dialog.getButtonTable().getCells().first().getActor().addListener(main.getHandListener());
    dialog.getButtonTable().getCells().get(1).getActor().addListener(main.getHandListener());
    final TextButton okButton = (TextButton) dialog.getButtonTable().getCells().get(0).getActor();

    textField.setTextFieldListener((TextField textField1, char c) -> {
        if (c == '\n') {
            if (!okButton.isDisabled()) {
                main.getUndoableManager().addUndoable(new UndoableManager.RenameStyleUndoable(
                        main.getRootTable().getSelectedStyle(), main, textField1.getText()), true);
                dialog.hide();
            }
            main.getStage().setKeyboardFocus(textField1);
        }
    });

    textField.addListener(main.getIbeamListener());

    dialog.getTitleLabel().setAlignment(Align.center);
    dialog.getContentTable().defaults().padLeft(10.0f).padRight(10.0f);
    dialog.text("What would you like to rename the style \"" + main.getRootTable().getSelectedStyle().name
            + "\" to?");
    dialog.getContentTable().getCells().first().pad(10.0f);
    dialog.getContentTable().row();
    dialog.getContentTable().add(textField).growX();
    okButton.setDisabled(true);

    Array<StyleData> currentStyles = main.getProjectData().getJsonData().getClassStyleMap().get(selectedClass);
    textField.addListener(new ChangeListener() {
        @Override
        public void changed(ChangeListener.ChangeEvent event, Actor actor) {
            boolean disable = !StyleData.validate(textField.getText());

            if (!disable) {
                for (StyleData data : currentStyles) {
                    if (data.name.equals(textField.getText())) {
                        disable = true;
                        break;
                    }
                }
            }

            okButton.setDisabled(disable);
        }
    });

    dialog.key(Input.Keys.ESCAPE, false);

    dialog.show(stage);
    stage.setKeyboardFocus(textField);
    textField.selectAll();
    textField.setFocusTraversal(false);
}

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

License:Open Source License

private void renameDialog(FontData font) {
    TextField textField = new TextField("", skin);
    TextButton okButton;// w ww  .  j  a va2  s . c om

    Dialog dialog = new Dialog("Rename Font?", skin, "bg") {
        @Override
        protected void result(Object object) {
            if ((boolean) object) {
                renameFont(font, textField.getText());
            }
        }

        @Override
        public Dialog show(Stage stage) {
            Dialog dialog = super.show(stage);
            main.getStage().setKeyboardFocus(textField);
            return dialog;
        }
    };
    dialog.getContentTable().padLeft(10.0f).padRight(10.0f);

    dialog.getTitleTable().padLeft(5.0f);

    Table bg = new Table(skin);
    bg.setBackground("white");
    bg.setColor(Color.WHITE);
    dialog.getContentTable().add(bg);

    Label label = new Label(font.getName(), skin, "white");
    label.setColor(Color.BLACK);
    bg.add(label).pad(10);

    dialog.getContentTable().row();
    label = new Label("What do you want to rename the font to?", skin);
    dialog.getContentTable().add(label);

    dialog.getContentTable().row();
    textField.setText(font.getName());
    textField.selectAll();
    textField.addListener(main.getIbeamListener());
    dialog.getContentTable().add(textField);

    dialog.button("OK", true);
    dialog.button("Cancel", false).key(Keys.ESCAPE, false);
    okButton = (TextButton) dialog.getButtonTable().getCells().first().getActor();
    okButton.setDisabled(true);
    okButton.addListener(main.getHandListener());
    dialog.getButtonTable().getCells().get(1).getActor().addListener(main.getHandListener());

    dialog.getButtonTable().padBottom(15.0f);

    textField.addListener(new ChangeListener() {
        @Override
        public void changed(ChangeListener.ChangeEvent event, Actor actor) {
            boolean disable = !FontData.validate(textField.getText());
            if (!disable) {
                for (ColorData data : jsonData.getColors()) {
                    if (data.getName().equals(textField.getText())) {
                        disable = true;
                        break;
                    }
                }
            }
            okButton.setDisabled(disable);
        }
    });
    textField.setTextFieldListener(new TextField.TextFieldListener() {
        @Override
        public void keyTyped(TextField textField, char c) {
            if (c == '\n') {
                if (!okButton.isDisabled()) {
                    renameFont(font, textField.getText());
                    dialog.hide();
                }
            }
        }
    });

    textField.setFocusTraversal(false);

    dialog.show(getStage());
}

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

License:Open Source License

private void fontNameDialog(Array<FileHandle> files, int index) {
    if (index < files.size) {
        try {/*from w  w  w .  j  a v a 2s.c  o  m*/
            final FileHandle fileHandle = files.get(index);

            final TextField textField = new TextField(FontData.filter(fileHandle.nameWithoutExtension()), skin);
            final Dialog nameDialog = new Dialog("Enter a name...", skin, "bg") {
                @Override
                protected void result(Object object) {
                    if ((Boolean) object) {
                        String name = textField.getText();

                        addFont(name, fileHandle);

                    }
                }

                @Override
                public boolean remove() {
                    fontNameDialog(files, index + 1);
                    return super.remove();
                }
            };

            nameDialog.getTitleTable().padLeft(5.0f);

            nameDialog.button("OK", true);
            nameDialog.button("Cancel", false);
            nameDialog.getButtonTable().getCells().first().getActor().addListener(main.getHandListener());
            nameDialog.getButtonTable().getCells().get(1).getActor().addListener(main.getHandListener());
            final TextButton button = (TextButton) nameDialog.getButtonTable().getCells().first().getActor();

            nameDialog.getButtonTable().padBottom(15.0f);

            textField.setTextFieldListener((TextField textField1, char c) -> {
                if (c == '\n') {
                    if (!button.isDisabled()) {
                        String name1 = textField1.getText();
                        if (addFont(name1, fileHandle)) {
                            nameDialog.hide();
                        }
                    }
                    main.getStage().setKeyboardFocus(textField1);
                }
            });

            textField.addListener(main.getIbeamListener());

            nameDialog.getContentTable().defaults().padLeft(10.0f).padRight(10.0f).padTop(5.0f);
            nameDialog.text("Please enter a name for the new font: ");
            nameDialog.getContentTable().row();
            nameDialog.getContentTable().add(textField).growX();
            nameDialog.getContentTable().row();
            nameDialog.text("Preview:");
            nameDialog.getContentTable().row();

            LabelStyle previewStyle = new LabelStyle();
            previewStyle.font = new BitmapFont(fileHandle);
            Table table = new Table(skin);
            table.setBackground("white");
            BitmapFontData bitmapFontData = new BitmapFontData(fileHandle, false);
            if (Utils.brightness(Utils.averageEdgeColor(new FileHandle(bitmapFontData.imagePaths[0]))) > .5f) {
                table.setColor(Color.BLACK);
            } else {
                table.setColor(Color.WHITE);
            }
            table.add(new Label("Lorem Ipsum", previewStyle)).pad(5.0f);

            nameDialog.getContentTable().add(table);
            nameDialog.key(Keys.ESCAPE, false);
            button.setDisabled(!FontData.validate(textField.getText()));
            textField.addListener(new ChangeListener() {
                @Override
                public void changed(ChangeListener.ChangeEvent event, Actor actor) {
                    boolean disable = !FontData.validate(textField.getText());
                    if (!disable) {
                        for (FontData data : jsonData.getFonts()) {
                            if (data.getName().equals(textField.getText())) {
                                disable = true;
                                break;
                            }
                        }
                    }
                    button.setDisabled(disable);
                }
            });
            nameDialog.setColor(1.0f, 1.0f, 1.0f, 0.0f);

            textField.setFocusTraversal(false);

            if (!Utils.doesImageFitBox(new FileHandle(bitmapFontData.imagePaths[0]),
                    projectData.getMaxTextureWidth(), projectData.getMaxTextureHeight())) {
                showAddFontSizeError(fileHandle.nameWithoutExtension());
            } else {
                nameDialog.show(getStage());
                getStage().setKeyboardFocus(textField);
                textField.selectAll();
            }
        } catch (Exception e) {
            Gdx.app.error(getClass().getName(), "Error creating preview font from file", e);
            main.getDialogFactory().showDialogError("Preview Error...",
                    "Error creating preview font from file. Check file paths.\n\nOpen log?");
        }
    }
}