List of usage examples for com.badlogic.gdx.scenes.scene2d Actor addListener
public boolean addListener(EventListener listener)
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(); } }