Example usage for com.badlogic.gdx.scenes.scene2d Actor addListener

List of usage examples for com.badlogic.gdx.scenes.scene2d Actor addListener

Introduction

In this page you can find the example usage for com.badlogic.gdx.scenes.scene2d Actor addListener.

Prototype

public boolean addListener(EventListener listener) 

Source Link

Document

Add a listener to receive events that #hit(float,float,boolean) hit this actor.

Usage

From source file:ateamproject.kezuino.com.github.render.screens.GameScreen.java

@Override
public void render(float delta) {
    // Render Game and UI.
    super.render(delta);

    switch (getSession().getState()) {
    case GameOverHighscoreReached:
        PacketKick packet = new PacketKick(PacketKick.KickReasonType.GAME, null, null);
        Client.getInstance().send(packet);

        game.setScreen(new HighscoreScreen(game, true));
        break;//  w  ww.ja va 2 s. com
    case GameOver:
        //getSession().end();
        game.setScreen(new GameOverScreen(game, getSession().getScore()));
        break;

    case Completed:
        Actor btnContinue = new TextButton("Doorgaan", skin);
        Actor lblEndGameText = new Label("Je score is:", skin);
        Actor lblScore = new Label(Integer.toString(getSession().getScore().valueOf()), skin);
        btnContinue.addListener(new ClickListener() {
            @Override
            public void clicked(InputEvent event, float x, float y) {
                btnContinue.remove();
                lblEndGameText.remove();
                lblScore.remove();
                start(getSession().getScore());
                Client.getInstance().send(new PacketLaunchGame(false, BaseScreen.getSession().getLevel() + 1,
                        BaseScreen.getSession().getScore().valueOf(), Client.getInstance().getId()));
            }
        });

        lblEndGameText.setPosition(stage.getWidth() / 2 - lblEndGameText.getWidth() / 2,
                stage.getHeight() - 80);
        lblScore.setPosition(stage.getWidth() / 2 - lblScore.getWidth() / 2, stage.getHeight() - 100);
        btnContinue.setSize(200, 40);
        btnContinue.setPosition(stage.getWidth() / 2 - btnContinue.getWidth() / 2,
                stage.getHeight() / 4 - btnContinue.getHeight() / 2);

        if (Client.getInstance().isHost()) {
            stage.addActor(btnContinue);
        }
        stage.addActor(lblEndGameText);
        stage.addActor(lblScore);
        getSession().end();
        break;
    }
}

From source file:com.bladecoder.engineeditor.ui.components.ActorAnimationInputPanel.java

License:Apache License

ActorAnimationInputPanel(Skin skin, String title, String desc, boolean mandatory, String defaultValue) {
    panel = new Table(skin);
    animation = new EditableSelectBox<>(skin);
    actor = new EditableSelectBox<>(skin);

    panel.add(new Label(" Actor ", skin));
    panel.add(actor);/*from  w  w  w  .  j  a v  a2  s.c  o m*/
    panel.add(new Label("  Animation ", skin));
    panel.add(animation);

    ArrayList<String> values = new ArrayList<String>();

    // values.add("");

    for (BaseActor a : Ctx.project.getSelectedScene().getActors().values()) {

        if (a instanceof SpriteActor) {
            values.add(a.getId());
        }
    }

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

    init(skin, title, desc, panel, mandatory, defaultValue);
    String[] array = values.toArray(new String[values.size()]);
    Arrays.sort(array);
    actor.setItems(array);

    if (values.size() > 0) {
        if (defaultValue != null)
            setText(defaultValue);
        else
            actor.setSelected("");
    }

}

From source file:com.github.unluckyninja.defenseofhuman.MenuScreen.java

License:Open Source License

private void setupStage() {
    stage = new Stage();

    Table table = new Table();
    table.setFillParent(true);/*  ww w . j  a  v  a  2 s.com*/
    stage.addActor(table);

    TextButton.TextButtonStyle style = new TextButton.TextButtonStyle();
    style.font = new BitmapFont();

    Actor actor = new TextButton("Play", style);
    actor.addListener(new ClickListener() {
        private int i;

        @Override
        public void clicked(InputEvent event, float x, float y) {
            DefenseOfHuman.game.changeScreen(State.PLAYING);
        }
    });
    table.add(actor);

    table.row();

    actor = new TextButton("Quit", style);
    actor.addListener(new ClickListener() {
        private int i;

        @Override
        public void clicked(InputEvent event, float x, float y) {
            Gdx.app.exit();
        }
    });
    table.add(actor);
}

From source file:com.ray3k.skincomposer.RootTable.java

License:Open Source License

public void refreshPreview() {
    if (previewTable != null) {
        previewTable.clear();/*w  ww  .  j a  v a2 s  .c o  m*/
        previewTable.setColor((Color) previewProperties.get("bgcolor"));

        for (BitmapFont font : previewFonts) {
            font.dispose();
        }

        if (classSelectBox.getSelectedIndex() >= 0) {
            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());
                } 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);

                    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;
                        TextField widthField = new TextField("", getSkin());
                        TextField heightField = new TextField("", getSkin());
                        System.out.println("trigger");
                        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);
                        dialog.key(Input.Keys.ESCAPE, false);
                        dialog.key(Input.Keys.ENTER, true);
                        dialog.show(stage);
                        stage.setKeyboardFocus(widthField);
                        break;
                    case (7):
                        previewTable.add(widget).size((int) previewProperties.get("sizeX"),
                                (int) previewProperties.get("sizeY"));
                        break;
                    }
                }
            }
        }
    }
}

From source file:com.vlaaad.common.gdx.scene2d.TabPane.java

License:Open Source License

public void addTab(Actor header, Actor content) {
    if (listeners.containsKey(header))
        throw new IllegalArgumentException("header already exists");
    headers.add(header);/*from  w w w .jav a2 s  . co m*/
    contents.add(content);
    super.addActor(header);
    if (selectedIndex == -1)
        setSelectedIndex(0);
    invalidate();

    final int index = headers.size - 1;
    EventListener listener = new ClickListener() {
        @Override
        public void clicked(InputEvent event, float x, float y) {
            setSelectedIndex(index);
            event.cancel();
        }
    };
    header.addListener(listener);
    listeners.put(header, listener);
}

From source file:com.vlaaad.dice.game.world.view.visualizers.actions.TeleportVisualizer.java

License:Open Source License

@Override
public IFuture<Void> visualize(final TeleportResult result) {
    final Future<Void> future = new Future<Void>();
    final Actor in = new AnimationSubView(0.125f, compose("animation/teleport-in"), Animation.PlayMode.NORMAL)
            .getActor();//from  w ww . j  a  v a2  s  .  com
    in.setPosition(
            result.creature.getX() * ViewController.CELL_SIZE + (ViewController.CELL_SIZE - in.getWidth()) / 2,
            result.creature.getY() * ViewController.CELL_SIZE + ViewController.CELL_SIZE * 1.5f);
    visualizer.viewController.effectLayer.addActor(in);
    in.addListener(new AnimationListener() {
        @Override
        protected void onAnimationEvent(AnimationEvent event) {
            in.remove();
        }
    });
    WorldObjectView view = visualizer.viewController.getView(result.creature);
    visualizer.viewController.scroller.centerOn(result.creature);
    view.addAction(Actions.sequence(Actions.delay(0.625f), Actions.run(new Runnable() {
        @Override
        public void run() {
            SoundManager.instance.playSound("ability-teleport");
        }
    }), Actions.parallel(Actions.alpha(0, 0.5f, Interpolation.circleOut), Actions.moveBy(0, MOVE_OFFSET, 0.5f)),
            Actions.moveTo(result.coordinate.x() * ViewController.CELL_SIZE,
                    result.coordinate.y() * ViewController.CELL_SIZE + MOVE_OFFSET),
            Actions.run(new Runnable() {
                @Override
                public void run() {
                    final Actor out = new AnimationSubView(0.125f, compose("animation/teleport-out"),
                            Animation.PlayMode.NORMAL).getActor();
                    out.setPosition(
                            result.coordinate.x() * ViewController.CELL_SIZE
                                    + (ViewController.CELL_SIZE - out.getWidth()) / 2,
                            result.coordinate.y() * ViewController.CELL_SIZE + ViewController.CELL_SIZE * 1.5f);
                    visualizer.viewController.scroller.centerOn(result.coordinate);
                    visualizer.viewController.effectLayer.addActor(out);
                    out.addListener(new AnimationListener() {
                        @Override
                        protected void onAnimationEvent(AnimationEvent event) {
                            out.remove();
                        }
                    });
                }
            }), Actions.delay(0.625f), Actions.run(new Runnable() {
                @Override
                public void run() {
                    SoundManager.instance.playSound("ability-teleport");
                }
            }), Actions.parallel(Actions.alpha(1f, 0.5f, Interpolation.circleIn),
                    Actions.moveBy(0, -MOVE_OFFSET + 2, 0.5f)),
            Actions.run(new Runnable() {
                @Override
                public void run() {
                    future.happen();
                }
            })));

    return future;
}

From source file:com.vlaaad.dice.util.SoundHelper.java

License:Open Source License

public static void init(Actor value) {
    value.addListener(new InputListener() {
        @Override//from  w  ww  .  jav  a2  s  .com
        public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
            SoundManager.instance.playSound("ui-button-down");
            return true;
        }

        @Override
        public void touchUp(InputEvent event, float x, float y, int pointer, int button) {
            SoundManager.instance.playSound("ui-button-up");
        }

    });
}

From source file:de.bitbrain.craft.ui.widgets.ElementWidget.java

License:Open Source License

private void registerEvents(Actor actor) {
    // Allow dragging for icons only
    icon.addListener(new DragListener() {
        @Override//w ww .  j  ava  2  s  .  c om
        public void dragStart(InputEvent event, float x, float y, int pointer) {
            if (data.getAmount() > 0) {
                eventBus.fireEvent(new MouseEvent<ElementData>(EventType.MOUSEDRAG, getData(), x, y));
            }
        }

        @Override
        public void dragStop(InputEvent event, float x, float y, int pointer) {
            if (data.getAmount() > 0) {
                eventBus.fireEvent(new MouseEvent<ElementData>(EventType.MOUSEDROP, getData(), x, y));
            }
        }
    });
    icon.addCaptureListener(new InputListener() {
        /* (non-Javadoc)
         * @see com.badlogic.gdx.scenes.scene2d.InputListener#touchDown(com.badlogic.gdx.scenes.scene2d.InputEvent, float, float, int, int)
         */
        @Override
        public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
            return true;
        }
    });
    actor.addListener(new ClickListener() {
        @Override
        public void clicked(InputEvent event, float x, float y) {
            if (craftable) {
                eventBus.fireEvent(new MouseEvent<ElementData>(EventType.CLICK, getData(), x, y));
            }
        }
    });
}

From source file:de.bitbrain.craft.ui.widgets.ItemWidget.java

License:Open Source License

private void registerEvents(Actor actor) {
    actor.addListener(new ClickListener() {
        @Override//  w  ww .  ja v  a2s .  c o  m
        public void clicked(InputEvent event, float x, float y) {
            if (craftable) {
                eventBus.fireEvent(new MouseEvent<Item>(EventType.CLICK, item, x, y));
            }
        }

        @Override
        public void enter(InputEvent event, float x, float y, int pointer, Actor fromActor) {
            if (fromActor == null
                    || (!fromActor.equals(ItemWidget.this) && !(fromActor instanceof IconWidget))) {
                icon.setIconOffset(-9f);
                icon.setLabelScale(2.5f);
                SoundUtils.play(Assets.SND_POP_ALT);
            }
        }

        @Override
        public void exit(InputEvent event, float x, float y, int pointer, Actor toActor) {
            icon.setIconOffset(0f);
            icon.setLabelScale(2f);
        }
    });
}

From source file:de.longri.cachebox3.develop.tools.skin_editor.actors.OptionsPane.java

License:Apache License

/**
 *
 *///  w ww  . j  a  va 2  s  .com
private void updateTableFields(final String style) {

    ImageButton button = (ImageButton) game.screenMain.barWidgets.group.getChecked();
    String widget = button.getUserObject().toString();

    Gdx.app.log("OptionsPane", "Update fields table for widget: " + widget + ", style: " + style);
    tableFields.clear();
    tableFields.add(new Label("Name", game.skin, "title")).left().width(170);
    tableFields.add(new Label("Value", game.skin, "title")).left().width(60).padRight(50);
    tableFields.row();

    Field[] fields = ClassReflection.getFields(currentStyle.getClass());
    for (final Field field : fields) {
        try {

            Actor actor = null;

            // field type
            String name = field.getType().getSimpleName();
            Object obj = field.get(currentStyle);

            if (name.equals("Drawable")) {

                /**
                 * Handle Drawable object
                 */

                Drawable drawable = (Drawable) field.get(currentStyle);
                String resourceName = "";
                ImageTextButton.ImageTextButtonStyle buttonStyle = new ImageTextButton.ImageTextButtonStyle(
                        game.skin.getDrawable("default-round"), game.skin.getDrawable("default-round-down"),
                        game.skin.getDrawable("default-round"), game.skin.getFont("default-font"));

                if (drawable != null) {
                    resourceName = game.skinProject.resolveObjectName(Drawable.class, drawable);
                    if (resourceName == null) {
                        resourceName = game.skinProject.resolveObjectName(TextureRegion.class, drawable);
                    }
                    buttonStyle.imageUp = drawable;
                } else {
                    buttonStyle.up = game.skin.getDrawable("default-rect");
                    buttonStyle.checked = game.skin.getDrawable("default-rect");
                }

                actor = new ImageTextButton(resourceName, buttonStyle);
                ((ImageTextButton) actor).setClip(true);
                actor.addListener(new ChangeListener() {

                    @Override
                    public void changed(ChangeEvent event, Actor actor) {
                        showDrawableDialog(field, false);

                    }

                });

            } else if (name.equals("Bitmap")) {

                /**
                 * Handle Bitmap object
                 */

                Bitmap bitmap = (Bitmap) field.get(currentStyle);
                byte[] bytes = null;
                if (bitmap != null)
                    bytes = bitmap.getPngEncodedData();
                Drawable drawable = bitmap != null
                        ? new TextureRegionDrawable(
                                new TextureRegion(new Texture(new Pixmap(bytes, 0, bytes.length))))
                        : null;

                String resourceName = "";
                ImageTextButton.ImageTextButtonStyle buttonStyle = new ImageTextButton.ImageTextButtonStyle(
                        game.skin.getDrawable("default-round"), game.skin.getDrawable("default-round-down"),
                        game.skin.getDrawable("default-round"), game.skin.getFont("default-font"));

                if (drawable != null) {
                    resourceName = ((GetName) bitmap).getName();
                    buttonStyle.imageUp = drawable;
                } else {
                    buttonStyle.up = game.skin.getDrawable("default-rect");
                    buttonStyle.checked = game.skin.getDrawable("default-rect");
                }

                actor = new ImageTextButton(resourceName, buttonStyle);
                ((ImageTextButton) actor).setClip(true);
                actor.addListener(new ChangeListener() {

                    @Override
                    public void changed(ChangeEvent event, Actor actor) {
                        showDrawableDialog(field, true);

                    }

                });

            } else if (name.equals("Color")) {

                /**
                 * Handle Color object
                 */
                Color color = (Color) field.get(currentStyle);
                ImageTextButton.ImageTextButtonStyle buttonStyle = new ImageTextButton.ImageTextButtonStyle(
                        game.skin.getDrawable("default-round"), game.skin.getDrawable("default-round-down"),
                        game.skin.getDrawable("default-round"), game.skin.getFont("default-font"));

                String resourceName = "";
                if (color != null) {

                    if (color instanceof SkinColor) {
                        resourceName = ((SkinColor) color).skinName;
                    } else {
                        resourceName = game.skinProject.resolveObjectName(SkinColor.class, color);
                    }

                    resourceName += " (" + color.toString() + ")";

                    // Create drawable on the fly
                    Pixmap pixmap = new Pixmap(18, 18, Pixmap.Format.RGBA8888);
                    pixmap.setColor(color);
                    pixmap.fill();
                    pixmap.setColor(Color.BLACK);
                    pixmap.drawRectangle(0, 0, 18, 18);
                    Texture texture = new Texture(pixmap);
                    buttonStyle.imageUp = new SpriteDrawable(new Sprite(texture));
                    pixmap.dispose();
                } else {
                    buttonStyle.up = game.skinProject.getDrawable("default-rect");
                    buttonStyle.checked = game.skinProject.getDrawable("default-rect");
                }

                actor = new ImageTextButton(resourceName, buttonStyle);
                ((ImageTextButton) actor).setClip(true);
                actor.addListener(new ChangeListener() {

                    @Override
                    public void changed(ChangeEvent event, Actor actor) {
                        showColorPickerDialog(field);

                    }

                });

            } else if (name.equals("BitmapFont")) {

                /**
                 * Handle BitmapFont object
                 */

                BitmapFont font = (BitmapFont) field.get(currentStyle);
                String resourceName = "";
                ImageTextButton.ImageTextButtonStyle buttonStyle = new ImageTextButton.ImageTextButtonStyle(
                        game.skin.getDrawable("default-round"), game.skin.getDrawable("default-round-down"),
                        game.skin.getDrawable("default-round"), game.skin.getFont("default-font"));

                if (font != null) {
                    resourceName = game.skinProject.resolveObjectName(BitmapFont.class, font);
                    buttonStyle.font = font;
                } else {
                    buttonStyle.up = game.skinProject.getDrawable("default-rect");
                    buttonStyle.checked = game.skinProject.getDrawable("default-rect");
                }

                actor = new ImageTextButton(resourceName, buttonStyle);
                ((ImageTextButton) actor).setClip(true);

                actor.addListener(new ChangeListener() {

                    @Override
                    public void changed(ChangeEvent event, Actor actor) {
                        showFontPickerDialog(field);

                    }

                });

            } else if (name.equals("float")) {

                /**
                 * Handle Float object
                 */

                Float value = (Float) field.get(currentStyle);
                String resourceName = "";

                ImageTextButton.ImageTextButtonStyle buttonStyle = new ImageTextButton.ImageTextButtonStyle(
                        game.skin.getDrawable("default-round"), game.skin.getDrawable("default-round-down"),
                        game.skin.getDrawable("default-round"), game.skin.getFont("default-font"));

                if ((value != null) && (value != 0)) {
                    resourceName = String.valueOf(value);
                } else {
                    buttonStyle.up = game.skinProject.getDrawable("default-rect");
                    buttonStyle.checked = game.skinProject.getDrawable("default-rect");
                }

                actor = new ImageTextButton(resourceName, buttonStyle);
                ((ImageTextButton) actor).setClip(true);
                actor.addListener(new ChangeListener() {

                    @Override
                    public void changed(ChangeEvent event, Actor actor) {
                        showFloatInputDialog(field);

                    }

                });

            } else if (name.equals("ListStyle")) {

                /**
                 * Handle ListStyle object
                 */
                ListStyle listStyle = (ListStyle) field.get(currentStyle);

                actor = new SelectBox<String>(game.skin, "default");
                Array<String> items = new Array<String>();

                final ObjectMap<String, ListStyle> values = game.skinProject.getAll(ListStyle.class);
                Iterator<String> it = values.keys().iterator();
                String selection = null;

                while (it.hasNext()) {
                    String key = it.next();
                    items.add(key);

                    if (listStyle == values.get(key)) {
                        selection = key;
                    }
                }

                ((SelectBox) actor).setItems(items);

                if (selection != null) {
                    ((SelectBox) actor).setSelected(selection);
                }

                actor.addListener(new ChangeListener() {

                    @Override
                    public void changed(ChangeEvent event, Actor actor) {

                        String selection = (String) ((SelectBox) actor).getSelected();
                        try {
                            field.set(currentStyle, values.get(selection));
                        } catch (Exception e) {
                            e.printStackTrace();
                        }

                        game.screenMain.saveToSkin();
                        refresh(true);
                        game.screenMain.paneOptions.updateSelectedTableFields();
                        game.screenMain.panePreview.refresh();
                    }

                });

            } else if (name.equals("ScrollPaneStyle")) {

                /**
                 * Handle ListStyle object
                 */
                ScrollPaneStyle scrollStyle = (ScrollPaneStyle) field.get(currentStyle);

                actor = new SelectBox<String>(game.skin, "default");
                Array<String> items = new Array<String>();

                final ObjectMap<String, ScrollPaneStyle> values = game.skinProject
                        .getAll(ScrollPaneStyle.class);
                Iterator<String> it = values.keys().iterator();
                String selection = null;

                while (it.hasNext()) {
                    String key = it.next();
                    items.add(key);

                    if (scrollStyle == values.get(key)) {
                        selection = key;
                    }
                }

                ((SelectBox) actor).setItems(items);

                if (selection != null) {
                    ((SelectBox) actor).setSelected(selection);
                }

                actor.addListener(new ChangeListener() {

                    @Override
                    public void changed(ChangeEvent event, Actor actor) {

                        String selection = (String) ((SelectBox) actor).getSelected();
                        try {
                            field.set(currentStyle, values.get(selection));
                        } catch (Exception e) {
                            e.printStackTrace();
                        }

                        game.screenMain.saveToSkin();
                        refresh(true);
                        game.screenMain.paneOptions.updateSelectedTableFields();
                        game.screenMain.panePreview.refresh();
                    }

                });

            } else {

                Gdx.app.log("OptionsPane", "Unknown type: " + name);
                if (!(currentStyle instanceof AbstractIconStyle)) {
                    actor = new Label("Unknown Type", game.skin);
                }
            }

            if (actor != null) {

                // field name

                // White required
                // Grey optional
                if (game.opt.isFieldOptional(currentStyle.getClass(), field.getName())) {

                    tableFields.add(new Label(field.getName(), game.skin, "optional")).left();

                } else {
                    tableFields.add(new Label(field.getName(), game.skin, "default")).left();

                }

                tableFields.add(actor).left().height(64).padRight(24).expandX().fillX();
                tableFields.row();
            }

        } catch (Exception e) {
            e.printStackTrace();
        }

        //send changes to PreviewPane
        previewPane.selectedStyleChanged();
    }

}