use of com.badlogic.gdx.scenes.scene2d.utils.ChangeListener in project skin-composer by raeleus.
the class DialogPathErrors method resetDrawableTable.
private void resetDrawableTable(Main main, Skin skin, Array<DrawableData> drawables, Array<FontData> fonts) {
dataTable.clear();
if (drawables.size > 0) {
Label label = new Label("Drawable Name", skin, "black");
dataTable.add(label);
label = new Label("Path", skin, "black");
dataTable.add(label);
dataTable.add();
label = new Label("Found?", skin, "black");
dataTable.add(label);
dataTable.row();
Image image = new Image(skin, "welcome-separator");
dataTable.add(image).colspan(4).pad(5.0f).padLeft(0.0f).padRight(0.0f).growX();
for (DrawableData drawable : drawables) {
dataTable.row();
label = new Label(drawable.name, skin);
dataTable.add(label);
label = new Label(drawable.file.path(), skin);
label.setWrap(true);
label.setAlignment(Align.left);
dataTable.add(label).growX();
TextButton textButton = new TextButton("browse...", skin);
textButton.addListener(main.getHandListener());
dataTable.add(textButton).padLeft(10.0f);
textButton.addListener(new ChangeListener() {
@Override
public void changed(ChangeListener.ChangeEvent event, Actor actor) {
DesktopWorker desktopWorker = main.getDesktopWorker();
String[] filterPatterns = null;
if (!Utils.isMac()) {
filterPatterns = new String[] { "*.png", "*.jpg", "*.jpeg", "*.bmp", "*.gif" };
}
File file = desktopWorker.openDialog("Locate " + drawable.file.name() + "...", drawable.file.path(), filterPatterns, "Image files");
if (file != null) {
FileHandle fileHandle = new FileHandle(file);
drawable.file = fileHandle;
if (!foundDrawables.contains(drawable, true)) {
foundDrawables.add(drawable);
}
resolveAssetsFromFolder(fileHandle.parent(), drawables, fonts);
resetDrawableTable(main, skin, drawables, fonts);
}
}
});
if (foundDrawables.contains(drawable, true)) {
label = new Label("YES", skin, "white");
label.setColor(Color.GREEN);
dataTable.add(label);
} else {
label = new Label("NO", skin, "white");
label.setColor(Color.RED);
dataTable.add(label);
}
dataTable.row();
image = new Image(skin, "welcome-separator");
dataTable.add(image).colspan(4).pad(5.0f).padLeft(0.0f).padRight(0.0f).growX();
}
}
if (fonts.size > 0) {
dataTable.row();
dataTable.defaults().padTop(20.0f);
Label label = new Label("Font Name", skin, "black");
dataTable.add(label);
label = new Label("Path", skin, "black");
dataTable.add(label);
dataTable.add();
label = new Label("Found?", skin, "black");
dataTable.add(label);
dataTable.defaults().reset();
dataTable.row();
Image image = new Image(skin, "welcome-separator");
dataTable.add(image).colspan(4).pad(5.0f).padLeft(0.0f).padRight(0.0f).growX();
for (FontData font : fonts) {
dataTable.row();
label = new Label(font.getName(), skin);
dataTable.add(label);
label = new Label(font.file.path(), skin);
label.setWrap(true);
label.setAlignment(Align.left);
dataTable.add(label).growX();
TextButton textButton = new TextButton("browse...", skin);
textButton.addListener(main.getHandListener());
dataTable.add(textButton);
textButton.addListener(new ChangeListener() {
@Override
public void changed(ChangeListener.ChangeEvent event, Actor actor) {
DesktopWorker desktopWorker = main.getDesktopWorker();
String[] filterPatterns = null;
if (!Utils.isMac()) {
filterPatterns = new String[] { "*.fnt" };
}
File file = desktopWorker.openDialog("Locate " + font.file.name() + "...", font.file.path(), filterPatterns, "Font files");
if (file != null) {
FileHandle fileHandle = new FileHandle(file);
font.file = fileHandle;
if (!foundFonts.contains(font, true)) {
foundFonts.add(font);
}
resolveAssetsFromFolder(fileHandle.parent(), drawables, fonts);
resetDrawableTable(main, skin, drawables, fonts);
}
}
});
if (foundFonts.contains(font, true)) {
label = new Label("YES", skin, "white");
label.setColor(Color.GREEN);
dataTable.add(label);
} else {
label = new Label("NO", skin, "white");
label.setColor(Color.RED);
dataTable.add(label);
}
dataTable.row();
image = new Image(skin, "welcome-separator");
dataTable.add(image).colspan(4).pad(5.0f).padLeft(0.0f).padRight(0.0f).growX();
}
}
}
use of com.badlogic.gdx.scenes.scene2d.utils.ChangeListener in project skin-composer by raeleus.
the class DialogSettings method populate.
public void populate() {
Table t = getContentTable();
getButtonTable().padBottom(15.0f);
Label label = new Label("Settings", main.getSkin(), "title");
t.add(label).colspan(2);
t.row();
TextButton textButton = new TextButton("Open temp/log directory", main.getSkin());
textButton.addListener(new ChangeListener() {
@Override
public void changed(ChangeListener.ChangeEvent event, Actor actor) {
try {
Utils.openFileExplorer(Gdx.files.local("temp/"));
} catch (Exception e) {
Gdx.app.error(getClass().getName(), "Error opening temp folder", e);
main.getDialogFactory().showDialogError("Folder Error...", "Error opening temp folder.\n\nOpen log?");
}
}
});
textButton.addListener(main.getHandListener());
t.add(textButton).colspan(2).padTop(15.0f);
t.row();
textButton = new TextButton("Open preferences directory", main.getSkin());
textButton.addListener(new ChangeListener() {
@Override
public void changed(ChangeListener.ChangeEvent event, Actor actor) {
try {
Utils.openFileExplorer(Gdx.files.external(".prefs/"));
} catch (Exception e) {
Gdx.app.error(getClass().getName(), "Error opening preferences folder", e);
main.getDialogFactory().showDialogError("Folder Error...", "Error opening preferences folder.\n\nOpen log?");
}
}
});
textButton.addListener(main.getHandListener());
t.add(textButton).colspan(2);
if (main.getProjectData().areChangesSaved() && main.getProjectData().getSaveFile().exists()) {
t.row();
textButton = new TextButton("Open project/import directory", main.getSkin());
textButton.addListener(new ChangeListener() {
@Override
public void changed(ChangeListener.ChangeEvent event, Actor actor) {
try {
Utils.openFileExplorer(main.getProjectData().getSaveFile().sibling(main.getProjectData().getSaveFile().nameWithoutExtension() + "_data"));
} catch (Exception e) {
Gdx.app.error(getClass().getName(), "Error opening project folder", e);
main.getDialogFactory().showDialogError("Folder Error...", "Error opening project folder\n\nOpen log?");
}
}
});
textButton.addListener(main.getHandListener());
t.add(textButton).colspan(2);
}
t.row();
textButton = new TextButton("Open texture packer settings file", main.getSkin());
textButton.addListener(new ChangeListener() {
@Override
public void changed(ChangeListener.ChangeEvent event, Actor actor) {
try {
Utils.openFileExplorer(Gdx.files.local("texturepacker/defaults.json"));
} catch (Exception e) {
Gdx.app.error(getClass().getName(), "Error opening defaults.json", e);
main.getDialogFactory().showDialogError("File Error...", "Error opening defaults.json\n\nOpen log?");
}
}
});
textButton.addListener(main.getHandListener());
t.add(textButton).colspan(2);
t.row();
label = new Label("Max Number of Undos: ", main.getSkin());
t.add(label).right().padTop(10.0f);
Spinner spinner3 = new Spinner(main.getProjectData().getMaxUndos(), 1.0, true, Orientation.HORIZONTAL, getSkin());
spinner3.setMinimum(1.0);
spinner3.setMaximum(100.0);
spinner3.addListener(new ChangeListener() {
@Override
public void changed(ChangeListener.ChangeEvent event, Actor actor) {
maxUndos = (int) spinner3.getValue();
}
});
spinner3.addListener(new FocusListener() {
@Override
public void keyboardFocusChanged(FocusListener.FocusEvent event, Actor actor, boolean focused) {
maxUndos = (int) spinner3.getValue();
}
});
spinner3.getTextField().addListener(main.getIbeamListener());
spinner3.getButtonMinus().addListener(main.getHandListener());
spinner3.getButtonPlus().addListener(main.getHandListener());
t.add(spinner3).minWidth(150.0f).left().padTop(10.0f);
t.row();
final ImageTextButton checkBox = new ImageTextButton("Keep resources relative?", getSkin(), "checkbox");
checkBox.setChecked(resourcesRelative);
checkBox.addListener(new ChangeListener() {
@Override
public void changed(ChangeListener.ChangeEvent event, Actor actor) {
resourcesRelative = checkBox.isChecked();
}
});
t.add(checkBox).padTop(10.0f).colspan(2);
t.row();
final ImageTextButton welcomeCheckBox = new ImageTextButton("Show welcome screen?", getSkin(), "checkbox");
welcomeCheckBox.setChecked(allowingWelcome);
welcomeCheckBox.addListener(new ChangeListener() {
@Override
public void changed(ChangeListener.ChangeEvent event, Actor actor) {
allowingWelcome = welcomeCheckBox.isChecked();
}
});
t.add(welcomeCheckBox).padTop(10.0f).colspan(2);
t.row();
label = new Label("Exported JSON Format:", getSkin());
t.add(label).right().padTop(10.0f);
final SelectBox<ExportFormat> exportFormatSelectBox = new SelectBox(getSkin());
exportFormatSelectBox.setItems(ExportFormat.MINIMAL, ExportFormat.JAVASCRIPT, ExportFormat.JSON);
exportFormatSelectBox.setSelected(exportFormat);
exportFormatSelectBox.addListener(new ChangeListener() {
@Override
public void changed(ChangeListener.ChangeEvent event, Actor actor) {
exportFormat = exportFormatSelectBox.getSelected();
}
});
t.add(exportFormatSelectBox).left().padTop(10.0f);
;
button("OK", true);
button("Cancel", false);
getButtonTable().getCells().first().getActor().addListener(main.getHandListener());
getButtonTable().getCells().get(1).getActor().addListener(main.getHandListener());
key(Keys.ESCAPE, false);
}
use of com.badlogic.gdx.scenes.scene2d.utils.ChangeListener in project skin-composer by raeleus.
the class MenuList method updateContents.
public void updateContents() {
setSize(0.0f, 0.0f);
clearChildren();
buttons.clear();
int index = 0;
for (T item : items) {
TextButton textButton = new TextButton(item.toString(), style.textButtonStyle);
textButton.getLabel().setAlignment(Align.left);
if (getCells().size > 0) {
row();
}
add(textButton);
if (index < shortcuts.size && shortcuts.get(index) != null && style.labelStyle != null) {
Label label = new Label(shortcuts.get(index), style.labelStyle);
textButton.add(label).padLeft(5.0f);
}
int i = index++;
textButton.addListener(new ChangeListener() {
@Override
public void changed(ChangeListener.ChangeEvent event, Actor actor) {
selectedIndex = i;
selectedItem = item;
fire(new MenuListEvent());
}
});
buttons.add(textButton);
}
validate();
float width = style.background.getLeftWidth() + style.background.getRightWidth();
for (int i = 0; i < getColumns(); i++) {
width += getColumnWidth(i);
}
float height = style.background.getLeftWidth() + style.background.getRightWidth();
for (int i = 0; i < getRows(); i++) {
height += getRowHeight(i);
}
for (Cell cell : getCells()) {
cell.growX();
}
setSize(width, height);
}
use of com.badlogic.gdx.scenes.scene2d.utils.ChangeListener in project skin-composer by raeleus.
the class Spinner method addWidgets.
private void addWidgets() {
buttonMinus = new Button(style.buttonMinusStyle);
buttonPlus = new Button(style.buttonPlusStyle);
textField = new TextField("", style.textFieldStyle) {
@Override
public void next(boolean up) {
if (up) {
if (transversalPrevious != null) {
getStage().setKeyboardFocus(transversalPrevious);
if (transversalPrevious instanceof TextField) {
((TextField) transversalPrevious).selectAll();
}
} else {
super.next(up);
}
} else {
if (transversalNext != null) {
getStage().setKeyboardFocus(transversalNext);
if (transversalNext instanceof TextField) {
((TextField) transversalNext).selectAll();
}
} else {
super.next(up);
}
}
}
};
textField.setAlignment(Align.center);
textField.addListener(new InputListener() {
@Override
public boolean keyDown(InputEvent event, int keycode) {
if (keycode == Keys.UP) {
addValue();
fire(new ChangeListener.ChangeEvent());
} else if (keycode == Keys.DOWN) {
subtractValue();
fire(new ChangeListener.ChangeEvent());
}
return false;
}
});
textField.setTextFieldFilter(new TextField.TextFieldFilter() {
@Override
public boolean acceptChar(TextField textField1, char c) {
boolean returnValue = false;
if ((c >= 48 && c <= 57) || c == 45 || (!rounding && c == 46)) {
String text = textField1.getText();
if (textField1.getCursorPosition() <= text.length()) {
text = text.substring(0, textField1.getCursorPosition());
text += c + textField1.getText().substring(textField1.getCursorPosition());
}
if (text.matches("-?\\d*\\.?\\d*")) {
returnValue = true;
}
}
return returnValue;
}
});
updateText();
if (null != orientation)
switch(orientation) {
case HORIZONTAL:
add(buttonMinus);
add(textField).prefWidth(35.0f).minWidth(35.0f).growX();
add(buttonPlus);
break;
case HORIZONTAL_FLIPPED:
add(buttonPlus);
add(textField).prefWidth(35.0f).minWidth(35.0f).growX();
add(buttonMinus);
break;
case VERTICAL:
add(buttonPlus);
row();
add(textField).prefWidth(35.0f).minWidth(35.0f).growX();
row();
add(buttonMinus);
break;
case VERTICAL_FLIPPED:
add(buttonMinus);
row();
add(textField).prefWidth(35.0f).minWidth(35.0f).growX();
row();
add(buttonPlus);
break;
case RIGHT_STACK:
{
add(textField).prefWidth(35.0f).minWidth(35.0f).growX();
VerticalGroup group = new VerticalGroup();
add(group);
group.addActor(buttonPlus);
group.addActor(buttonMinus);
break;
}
case LEFT_STACK:
{
VerticalGroup group = new VerticalGroup();
add(group);
group.addActor(buttonPlus);
group.addActor(buttonMinus);
add(textField).prefWidth(35.0f).minWidth(35.0f).growX();
break;
}
default:
break;
}
buttonMinus.addListener(new ChangeListener() {
@Override
public void changed(ChangeListener.ChangeEvent event, Actor actor) {
subtractValue();
}
});
buttonPlus.addListener(new ChangeListener() {
@Override
public void changed(ChangeListener.ChangeEvent event, Actor actor) {
addValue();
}
});
textField.addListener(new ChangeListener() {
@Override
public void changed(ChangeListener.ChangeEvent event, Actor actor) {
Spinner parent = (Spinner) actor;
String text = textField.getText();
if (text.matches("\\-?(\\d+\\.?\\d*)|(\\.\\d+)")) {
double value = Double.parseDouble(text);
if (usingMinimum && value < parent.minimum) {
value = parent.minimum;
} else if (usingMaximum && value > parent.maximum) {
value = parent.maximum;
}
parent.value = BigDecimal.valueOf(value);
} else {
parent.value = BigDecimal.valueOf(usingMinimum ? parent.minimum : 0);
}
}
});
textField.addListener(new FocusListener() {
@Override
public void keyboardFocusChanged(FocusListener.FocusEvent event, Actor actor, boolean focused) {
Spinner parent = (Spinner) textField.getParent();
if (usingMinimum && parent.value.doubleValue() < parent.minimum) {
parent.value = BigDecimal.valueOf(parent.minimum);
}
if (usingMaximum && parent.value.doubleValue() > parent.maximum) {
parent.value = BigDecimal.valueOf(parent.maximum);
}
parent.updateText();
}
});
final Spinner spinner = this;
addCaptureListener(new ChangeListener() {
@Override
public void changed(ChangeListener.ChangeEvent event, Actor actor) {
event.setTarget(spinner);
}
});
}
use of com.badlogic.gdx.scenes.scene2d.utils.ChangeListener in project bladecoder-adventure-engine by bladecoder.
the class OptionList method create.
@Override
protected void create() {
EditOptionDialog dialog = (EditOptionDialog) getEditElementDialogInstance(null);
dialog.show(getStage());
dialog.setListener(new ChangeListener() {
@Override
public void changed(ChangeEvent event, Actor actor) {
int pos = list.getSelectedIndex() + 1;
DialogOption e = ((EditOptionDialog) actor).getElement();
list.getItems().insert(pos, e);
list.setSelectedIndex(pos);
list.invalidateHierarchy();
}
});
}
Aggregations