use of com.badlogic.gdx.files.FileHandle in project skin-composer by raeleus.
the class ProjectData method getRecentFiles.
public Array<RecentFile> getRecentFiles() {
Array<RecentFile> returnValue = new Array<>();
int maxIndex = Math.min(MAX_RECENT_FILES, generalPref.getInteger("recentFilesCount", 0));
for (int i = 0; i < maxIndex; i++) {
String path = generalPref.getString("recentFile" + i);
FileHandle file = new FileHandle(path);
RecentFile recentFile = new RecentFile();
recentFile.fileHandle = file;
recentFile.name = isFullPathInRecentFiles() ? file.path() : file.nameWithoutExtension();
if (file.exists()) {
returnValue.add(recentFile);
}
}
return returnValue;
}
use of com.badlogic.gdx.files.FileHandle in project skin-composer by raeleus.
the class ProjectData method putRecentFile.
public void putRecentFile(String filePath) {
if (Gdx.files.absolute(filePath).exists()) {
Array<RecentFile> recentFiles = getRecentFiles();
Iterator<RecentFile> iter = recentFiles.iterator();
while (iter.hasNext()) {
RecentFile recentFile = iter.next();
if (recentFile.fileHandle.toString().equals(filePath)) {
iter.remove();
}
}
RecentFile newFile = new RecentFile();
newFile.fileHandle = new FileHandle(filePath);
newFile.name = newFile.fileHandle.nameWithoutExtension();
recentFiles.add(newFile);
while (recentFiles.size > MAX_RECENT_FILES) {
recentFiles.removeIndex(0);
}
int size = Math.min(MAX_RECENT_FILES, recentFiles.size);
generalPref.putInteger("recentFilesCount", size);
for (int i = 0; i < size; i++) {
RecentFile recentFile = recentFiles.get(i);
generalPref.putString("recentFile" + i, recentFile.fileHandle.toString());
}
generalPref.flush();
rootTable.updateRecentFiles();
}
}
use of com.badlogic.gdx.files.FileHandle in project skin-composer by raeleus.
the class ProjectData method moveImportedFiles.
private void moveImportedFiles(FileHandle oldSave, FileHandle newSave) {
FileHandle tempImportFolder = Main.appFolder.child("temp/" + getId() + "_data/");
FileHandle localImportFolder;
if (oldSave != null) {
localImportFolder = oldSave.sibling(oldSave.nameWithoutExtension() + "_data/");
} else {
localImportFolder = null;
}
FileHandle targetFolder = newSave.sibling(newSave.nameWithoutExtension() + "_data/");
for (DrawableData drawableData : atlasData.getDrawables()) {
if (drawableData.file != null && drawableData.file.exists()) {
targetFolder.mkdirs();
// drawable files in the temp folder
if (drawableData.file.parent().equals(tempImportFolder)) {
drawableData.file.moveTo(targetFolder);
drawableData.file = targetFolder.child(drawableData.file.name());
} else // drawable files in the folder next to the old save
if (localImportFolder != null && !localImportFolder.equals(targetFolder) && drawableData.file.parent().equals(localImportFolder)) {
drawableData.file.copyTo(targetFolder);
drawableData.file = targetFolder.child(drawableData.file.name());
}
}
}
for (DrawableData drawableData : atlasData.getFontDrawables()) {
if (drawableData.file != null && drawableData.file.exists()) {
targetFolder.mkdirs();
// drawable files in the temp folder
if (drawableData.file.parent().equals(tempImportFolder)) {
drawableData.file.moveTo(targetFolder);
drawableData.file = targetFolder.child(drawableData.file.name());
} else // drawable files in the folder next to the old save
if (localImportFolder != null && !localImportFolder.equals(targetFolder) && drawableData.file.parent().equals(localImportFolder)) {
drawableData.file.copyTo(targetFolder);
drawableData.file = targetFolder.child(drawableData.file.name());
}
}
}
for (FontData fontData : jsonData.getFonts()) {
if (fontData.file.exists()) {
targetFolder.mkdirs();
// font files in the temp folder
if (fontData.file.parent().equals(tempImportFolder)) {
fontData.file.moveTo(targetFolder);
fontData.file = targetFolder.child(fontData.file.name());
} else // font files in the data folder next to the old save
if (localImportFolder != null && !localImportFolder.equals(targetFolder) && fontData.file.parent().equals(localImportFolder)) {
fontData.file.copyTo(targetFolder);
fontData.file = targetFolder.child(fontData.file.name());
}
}
}
for (FreeTypeFontData fontData : jsonData.getFreeTypeFonts()) {
if (fontData.file != null && fontData.file.exists()) {
targetFolder.mkdirs();
// font files in the temp folder
if (fontData.file.parent().equals(tempImportFolder)) {
fontData.file.moveTo(targetFolder);
fontData.file = targetFolder.child(fontData.file.name());
} else // font files in the data folder next to the old save
if (localImportFolder != null && !localImportFolder.equals(targetFolder) && fontData.file.parent().equals(localImportFolder)) {
fontData.file.copyTo(targetFolder);
fontData.file = targetFolder.child(fontData.file.name());
}
}
}
}
use of com.badlogic.gdx.files.FileHandle in project skin-composer by raeleus.
the class ProjectData method correctFilePaths.
private void correctFilePaths() {
FileHandle targetFolder = saveFile.sibling(saveFile.nameWithoutExtension() + "_data/");
boolean resourcesRelative = projectData.areResourcesRelative();
if (targetFolder.exists()) {
for (DrawableData drawableData : atlasData.getDrawables()) {
if (drawableData.type != DrawableType.PIXEL && (resourcesRelative || drawableData.file != null && !drawableData.file.exists())) {
FileHandle newFile = targetFolder.child(drawableData.file.name());
if (newFile.exists()) {
drawableData.file = newFile;
}
}
}
for (DrawableData drawableData : atlasData.getFontDrawables()) {
if (resourcesRelative || drawableData.file != null && !drawableData.file.exists()) {
FileHandle newFile = targetFolder.child(drawableData.file.name());
if (newFile.exists()) {
drawableData.file = newFile;
}
}
}
for (FontData fontData : jsonData.getFonts()) {
if (resourcesRelative || !fontData.file.exists()) {
FileHandle newFile = targetFolder.child(fontData.file.name());
if (newFile.exists()) {
fontData.file = newFile;
}
}
}
}
}
use of com.badlogic.gdx.files.FileHandle in project skin-composer by raeleus.
the class Dialog9Patch method populate.
private void populate() {
var root = getContentTable();
root.clear();
root.pad(10);
var horizontalGroup = new HorizontalGroup();
horizontalGroup.space(5.0f);
horizontalGroup.wrap();
horizontalGroup.wrapSpace(5.0f);
horizontalGroup.center();
root.add(horizontalGroup).growX();
var textButton = new TextButton("Load Image", getSkin());
horizontalGroup.addActor(textButton);
textButton.addListener(handListener);
textButton.addListener(new ChangeListener() {
@Override
public void changed(ChangeListener.ChangeEvent event, Actor actor) {
showLoadImageDialog();
}
});
textButton = new TextButton("Reset", getSkin());
textButton.setName("reset-button");
horizontalGroup.addActor(textButton);
textButton.addListener(handListener);
textButton.addListener(new ChangeListener() {
@Override
public void changed(ChangeListener.ChangeEvent event, Actor actor) {
var widget = (NinePatchWidget) findActor("ninePatchWidget");
var spinnerItem = (Spinner) findActor("spinner-padding-left");
spinnerItem.setValue(ninePatchLeftOriginal);
widget.setPaddingLeft(ninePatchLeftOriginal);
ninePatchLeft = ninePatchLeftOriginal;
spinnerItem = (Spinner) findActor("spinner-padding-right");
spinnerItem.setValue(ninePatchRightOriginal);
widget.setPaddingRight(ninePatchRightOriginal);
ninePatchRight = ninePatchRightOriginal;
spinnerItem = (Spinner) findActor("spinner-padding-bottom");
spinnerItem.setValue(ninePatchBottomOriginal);
widget.setPaddingBottom(ninePatchBottomOriginal);
ninePatchBottom = ninePatchBottomOriginal;
spinnerItem = (Spinner) findActor("spinner-padding-top");
spinnerItem.setValue(ninePatchTopOriginal);
widget.setPaddingTop(ninePatchTopOriginal);
ninePatchTop = ninePatchTopOriginal;
spinnerItem = (Spinner) findActor("spinner-content-left");
spinnerItem.setValue(ninePatchContentLeftOriginal);
widget.setContentLeft(ninePatchContentLeftOriginal);
ninePatchContentLeft = ninePatchContentLeftOriginal;
spinnerItem = (Spinner) findActor("spinner-content-right");
spinnerItem.setValue(ninePatchContentRightOriginal);
widget.setContentRight(ninePatchContentRightOriginal);
ninePatchContentRight = ninePatchContentRightOriginal;
spinnerItem = (Spinner) findActor("spinner-content-bottom");
spinnerItem.setValue(ninePatchContentBottomOriginal);
widget.setContentBottom(ninePatchContentBottomOriginal);
ninePatchContentBottom = ninePatchContentBottomOriginal;
spinnerItem = (Spinner) findActor("spinner-content-top");
spinnerItem.setValue(ninePatchContentTopOriginal);
widget.setContentTop(ninePatchContentTopOriginal);
ninePatchContentTop = ninePatchContentTopOriginal;
updatePreviewSplits();
}
});
textButton = new TextButton("Auto Patches", getSkin());
textButton.setName("auto-button");
horizontalGroup.addActor(textButton);
textButton.addListener(handListener);
textButton.addListener(new ChangeListener() {
@Override
public void changed(ChangeListener.ChangeEvent event, Actor actor) {
autoPatches();
}
});
textButton = new TextButton("Load Patches From File", getSkin());
textButton.setName("load-patches-button");
horizontalGroup.addActor(textButton);
textButton.addListener(handListener);
textButton.addListener(new ChangeListener() {
@Override
public void changed(ChangeListener.ChangeEvent event, Actor actor) {
showLoadPatchesDialog();
}
});
textButton = new TextButton("Batch Apply to File(s)", getSkin());
textButton.setName("batch-button");
horizontalGroup.addActor(textButton);
textButton.addListener(handListener);
textButton.addListener(new ChangeListener() {
@Override
public void changed(ChangeListener.ChangeEvent event, Actor actor) {
showBatchApplyDialog();
}
});
root.row();
var image = new Image(getSkin(), "welcome-separator");
root.add(image).growX().space(15.0f);
image.setScaling(Scaling.stretch);
var top = new Table();
top.setTouchable(Touchable.enabled);
var bottom = new Table();
bottom.setBackground(getSkin().getDrawable("white"));
bottom.setTouchable(Touchable.enabled);
root.row();
var splitPane = new SplitPane(top, bottom, true, getSkin());
splitPane.setName("split");
root.add(splitPane).grow();
splitPane.addListener(verticalResizeListener);
var table = new Table();
top.add(table).growX();
var spinner = new Spinner(0, 1, true, Spinner.Orientation.HORIZONTAL, getSkin());
spinner.setName("spinner-padding-left");
spinner.setValue(ninePatchLeft);
spinner.setMinimum(0);
table.add(spinner).expandX().left().padLeft(50.0f);
spinner.getButtonMinus().addListener(handListener);
spinner.getButtonPlus().addListener(handListener);
spinner.getTextField().addListener(ibeamListener);
spinner.addListener(new ChangeListener() {
@Override
public void changed(ChangeListener.ChangeEvent event, Actor actor) {
var widget = (NinePatchWidget) findActor("ninePatchWidget");
var spinner = (Spinner) actor;
ninePatchLeft = spinner.getValueAsInt();
widget.setPaddingLeft(spinner.getValueAsInt());
widget.getPaddingButton().setChecked(false);
var otherSpinner = (Spinner) findActor("spinner-padding-right");
otherSpinner.setMaximum(widget.getRegionWidth() - spinner.getValueAsInt());
updatePreviewSplits();
}
});
var label = new Label("STRETCH REGION", getSkin());
table.add(label);
spinner = new Spinner(0, 1, true, Spinner.Orientation.HORIZONTAL_FLIPPED, getSkin(), "horizontal-reversed");
spinner.setName("spinner-padding-right");
spinner.setValue(ninePatchRight);
spinner.setMinimum(0);
table.add(spinner).expandX().right().padRight(50.0f);
spinner.getButtonMinus().addListener(handListener);
spinner.getButtonPlus().addListener(handListener);
spinner.getTextField().addListener(ibeamListener);
spinner.addListener(new ChangeListener() {
@Override
public void changed(ChangeListener.ChangeEvent event, Actor actor) {
var widget = (NinePatchWidget) findActor("ninePatchWidget");
var spinner = (Spinner) actor;
ninePatchRight = spinner.getValueAsInt();
widget.setPaddingRight(spinner.getValueAsInt());
widget.getPaddingButton().setChecked(false);
var otherSpinner = (Spinner) findActor("spinner-padding-left");
otherSpinner.setMaximum(widget.getRegionWidth() - spinner.getValueAsInt());
updatePreviewSplits();
}
});
top.row();
table = new Table();
top.add(table).grow();
var subTable = new Table();
table.add(subTable).growY();
spinner = new Spinner(0, 1, true, Spinner.Orientation.VERTICAL_FLIPPED, getSkin(), "vertical-reversed");
spinner.setName("spinner-padding-top");
spinner.setValue(ninePatchTop);
spinner.setMinimum(0);
subTable.add(spinner).expandY().top();
spinner.getButtonMinus().addListener(handListener);
spinner.getButtonPlus().addListener(handListener);
spinner.getTextField().addListener(ibeamListener);
spinner.addListener(new ChangeListener() {
@Override
public void changed(ChangeListener.ChangeEvent event, Actor actor) {
var widget = (NinePatchWidget) findActor("ninePatchWidget");
var spinner = (Spinner) actor;
ninePatchTop = spinner.getValueAsInt();
widget.setPaddingTop(spinner.getValueAsInt());
widget.getPaddingButton().setChecked(false);
var otherSpinner = (Spinner) findActor("spinner-padding-bottom");
otherSpinner.setMaximum(widget.getRegionHeight() - spinner.getValueAsInt());
updatePreviewSplits();
}
});
subTable.row();
var group = new Table();
group.setTransform(true);
subTable.add(group).size(0).minHeight(100.0f);
label = new Label("STRETCH REGION", getSkin());
group.add(label);
group.setOriginY(50.0f);
group.rotateBy(90.0f);
subTable.row();
spinner = new Spinner(0, 1, true, Spinner.Orientation.VERTICAL, getSkin(), "vertical");
spinner.setName("spinner-padding-bottom");
spinner.setValue(ninePatchBottom);
spinner.setMinimum(0);
subTable.add(spinner).expandY().bottom();
spinner.getButtonMinus().addListener(handListener);
spinner.getButtonPlus().addListener(handListener);
spinner.getTextField().addListener(ibeamListener);
spinner.addListener(new ChangeListener() {
@Override
public void changed(ChangeListener.ChangeEvent event, Actor actor) {
var widget = (NinePatchWidget) findActor("ninePatchWidget");
var spinner = (Spinner) actor;
ninePatchBottom = spinner.getValueAsInt();
widget.setPaddingBottom(spinner.getValueAsInt());
widget.getPaddingButton().setChecked(false);
var otherSpinner = (Spinner) findActor("spinner-padding-top");
otherSpinner.setMaximum(widget.getRegionHeight() - spinner.getValueAsInt());
updatePreviewSplits();
}
});
var ninePatchWidget = new NinePatchWidget(getSkin());
ninePatchWidget.setName("ninePatchWidget");
ninePatchWidget.setTouchable(Touchable.enabled);
table.add(ninePatchWidget).grow().pad(5.0f);
ninePatchWidget.getPaddingButton().addListener(handListener);
ninePatchWidget.addListener((NinePatchWidget.HandleType handle, int value) -> {
switch(handle) {
case PADDING_LEFT:
var spinnerItem = (Spinner) findActor("spinner-padding-left");
spinnerItem.setValue(value);
ninePatchLeft = value;
var otherSpinner = (Spinner) findActor("spinner-padding-right");
otherSpinner.setMaximum(ninePatchWidget.getRegionWidth() - value);
break;
case PADDING_RIGHT:
spinnerItem = (Spinner) findActor("spinner-padding-right");
spinnerItem.setValue(value);
ninePatchRight = value;
otherSpinner = (Spinner) findActor("spinner-padding-left");
otherSpinner.setMaximum(ninePatchWidget.getRegionWidth() - value);
break;
case PADDING_BOTTOM:
spinnerItem = (Spinner) findActor("spinner-padding-bottom");
spinnerItem.setValue(value);
ninePatchBottom = value;
otherSpinner = (Spinner) findActor("spinner-padding-top");
otherSpinner.setMaximum(ninePatchWidget.getRegionHeight() - value);
break;
case PADDING_TOP:
spinnerItem = (Spinner) findActor("spinner-padding-top");
spinnerItem.setValue(value);
ninePatchTop = value;
otherSpinner = (Spinner) findActor("spinner-padding-bottom");
otherSpinner.setMaximum(ninePatchWidget.getRegionHeight() - value);
break;
case CONTENT_LEFT:
spinnerItem = (Spinner) findActor("spinner-content-left");
spinnerItem.setValue(value);
ninePatchContentLeft = value;
otherSpinner = (Spinner) findActor("spinner-content-right");
otherSpinner.setMaximum(ninePatchWidget.getRegionWidth() - value);
break;
case CONTENT_RIGHT:
spinnerItem = (Spinner) findActor("spinner-content-right");
spinnerItem.setValue(value);
ninePatchContentRight = value;
otherSpinner = (Spinner) findActor("spinner-content-left");
otherSpinner.setMaximum(ninePatchWidget.getRegionWidth() - value);
break;
case CONTENT_BOTTOM:
spinnerItem = (Spinner) findActor("spinner-content-bottom");
spinnerItem.setValue(value);
ninePatchContentBottom = value;
otherSpinner = (Spinner) findActor("spinner-content-top");
otherSpinner.setMaximum(ninePatchWidget.getRegionHeight() - value);
break;
case CONTENT_TOP:
spinnerItem = (Spinner) findActor("spinner-content-top");
spinnerItem.setValue(value);
ninePatchContentTop = value;
otherSpinner = (Spinner) findActor("spinner-content-bottom");
otherSpinner.setMaximum(ninePatchWidget.getRegionHeight() - value);
break;
}
updatePreviewSplits();
});
var inputListener = new InputListener() {
@Override
public void enter(InputEvent event, float x, float y, int pointer, Actor fromActor) {
getStage().setScrollFocus(ninePatchWidget);
}
@Override
public boolean scrolled(InputEvent event, float x, float y, float amountX, float amountY) {
var slider = (Slider) findActor("top-zoom");
slider.setValue(slider.getValue() - amountY * 3);
return true;
}
};
ninePatchWidget.addCaptureListener(inputListener);
subTable = new Table();
table.add(subTable).growY();
spinner = new Spinner(0, 1, true, Spinner.Orientation.VERTICAL_FLIPPED, getSkin(), "vertical-reversed");
spinner.setName("spinner-content-top");
spinner.setValue(ninePatchContentTop);
spinner.setMinimum(0);
subTable.add(spinner).expandY().top();
spinner.getButtonMinus().addListener(handListener);
spinner.getButtonPlus().addListener(handListener);
spinner.getTextField().addListener(ibeamListener);
spinner.addListener(new ChangeListener() {
@Override
public void changed(ChangeListener.ChangeEvent event, Actor actor) {
var widget = (NinePatchWidget) findActor("ninePatchWidget");
var spinner = (Spinner) actor;
ninePatchContentTop = spinner.getValueAsInt();
widget.setContentTop(spinner.getValueAsInt());
widget.getPaddingButton().setChecked(true);
var otherSpinner = (Spinner) findActor("spinner-content-bottom");
otherSpinner.setMaximum(widget.getRegionHeight() - spinner.getValueAsInt());
updatePreviewSplits();
}
});
subTable.row();
group = new Table();
group.setTransform(true);
subTable.add(group).size(0).minHeight(100.0f);
label = new Label("CONTENT", getSkin());
group.add(label);
group.setOriginY(50.0f);
group.rotateBy(-90);
subTable.row();
spinner = new Spinner(0, 1, true, Spinner.Orientation.VERTICAL, getSkin(), "vertical");
spinner.setName("spinner-content-bottom");
spinner.setValue(ninePatchContentBottom);
spinner.setMinimum(0);
subTable.add(spinner).expandY().bottom();
spinner.getButtonMinus().addListener(handListener);
spinner.getButtonPlus().addListener(handListener);
spinner.getTextField().addListener(ibeamListener);
spinner.addListener(new ChangeListener() {
@Override
public void changed(ChangeListener.ChangeEvent event, Actor actor) {
var widget = (NinePatchWidget) findActor("ninePatchWidget");
var spinner = (Spinner) actor;
ninePatchContentBottom = spinner.getValueAsInt();
widget.setContentBottom(spinner.getValueAsInt());
widget.getPaddingButton().setChecked(true);
var otherSpinner = (Spinner) findActor("spinner-content-top");
otherSpinner.setMaximum(widget.getRegionHeight() - spinner.getValueAsInt());
updatePreviewSplits();
}
});
top.row().padBottom(15.0f);
table = new Table();
top.add(table).growX();
spinner = new Spinner(0, 1, true, Spinner.Orientation.HORIZONTAL, getSkin());
spinner.setName("spinner-content-left");
spinner.setValue(ninePatchContentLeft);
spinner.setMinimum(0);
table.add(spinner).expandX().left().padLeft(50.0f);
spinner.getButtonMinus().addListener(handListener);
spinner.getButtonPlus().addListener(handListener);
spinner.getTextField().addListener(ibeamListener);
spinner.addListener(new ChangeListener() {
@Override
public void changed(ChangeListener.ChangeEvent event, Actor actor) {
var widget = (NinePatchWidget) findActor("ninePatchWidget");
var spinner = (Spinner) actor;
ninePatchContentLeft = spinner.getValueAsInt();
widget.setContentLeft(spinner.getValueAsInt());
widget.getPaddingButton().setChecked(true);
var otherSpinner = (Spinner) findActor("spinner-content-right");
otherSpinner.setMaximum(widget.getRegionWidth() - spinner.getValueAsInt());
updatePreviewSplits();
}
});
label = new Label("CONTENT", getSkin());
table.add(label);
spinner = new Spinner(0, 1, true, Spinner.Orientation.HORIZONTAL_FLIPPED, getSkin(), "horizontal-reversed");
spinner.setName("spinner-content-right");
spinner.setValue(ninePatchContentRight);
spinner.setMinimum(0);
table.add(spinner).expandX().right().padRight(50.0f);
spinner.getButtonMinus().addListener(handListener);
spinner.getButtonPlus().addListener(handListener);
spinner.getTextField().addListener(ibeamListener);
spinner.addListener(new ChangeListener() {
@Override
public void changed(ChangeListener.ChangeEvent event, Actor actor) {
var widget = (NinePatchWidget) findActor("ninePatchWidget");
var spinner = (Spinner) actor;
ninePatchContentRight = spinner.getValueAsInt();
widget.setContentRight(spinner.getValueAsInt());
widget.getPaddingButton().setChecked(true);
var otherSpinner = (Spinner) findActor("spinner-content-left");
otherSpinner.setMaximum(widget.getRegionWidth() - spinner.getValueAsInt());
updatePreviewSplits();
}
});
top.row();
table = new Table();
table.pad(5);
top.add(table).growX();
table.defaults().space(5);
var imageButton = new ImageButton(getSkin(), "grid-light");
imageButton.setName("grid-light");
imageButton.setProgrammaticChangeEvents(false);
table.add(imageButton);
imageButton.addListener(handListener);
imageButton.addListener(new ChangeListener() {
@Override
public void changed(ChangeListener.ChangeEvent event, Actor actor) {
var widget = (NinePatchWidget) findActor("ninePatchWidget");
if (((ImageButton) actor).isChecked()) {
widget.setGridType(NinePatchWidget.GridType.LIGHT);
} else {
widget.setGridType(NinePatchWidget.GridType.NONE);
}
((ImageButton) findActor("grid-dark")).setChecked(false);
}
});
imageButton = new ImageButton(getSkin(), "grid-dark");
imageButton.setName("grid-dark");
imageButton.setProgrammaticChangeEvents(false);
table.add(imageButton);
imageButton.addListener(handListener);
imageButton.addListener(new ChangeListener() {
@Override
public void changed(ChangeListener.ChangeEvent event, Actor actor) {
var widget = (NinePatchWidget) findActor("ninePatchWidget");
if (((ImageButton) actor).isChecked()) {
widget.setGridType(NinePatchWidget.GridType.DARK);
} else {
widget.setGridType(NinePatchWidget.GridType.NONE);
}
((ImageButton) findActor("grid-light")).setChecked(false);
}
});
imageButton = new ImageButton(getSkin(), "resize");
table.add(imageButton).expandX().right();
imageButton.addListener(handListener);
imageButton.addListener(new ChangeListener() {
@Override
public void changed(ChangeListener.ChangeEvent event, Actor actor) {
zoomAndRecenter();
}
});
var slider = new Slider(1, 50, 1, false, getSkin(), "zoom-horizontal");
slider.setName("top-zoom");
table.add(slider);
slider.addListener(handListener);
slider.addListener(new ChangeListener() {
@Override
public void changed(ChangeListener.ChangeEvent event, Actor actor) {
var slider = (Slider) findActor("top-zoom");
ninePatchWidget.setZoom((int) slider.getValue());
}
});
label = new Label("Preview", getSkin(), "title");
bottom.add(label);
bottom.row();
var resizer = new ResizeWidget(null, getSkin());
resizer.setTouchable(Touchable.enabled);
resizer.setName("resizer");
table = new Table();
resizer.setActor(table);
if (previewZoomed == null) {
resizer.setMinWidth(100);
resizer.setMinHeight(100);
} else {
resizer.setMinWidth(previewZoomed.getTotalWidth());
resizer.setMinHeight(previewZoomed.getTotalHeight());
table.setBackground(new NinePatchDrawable(previewZoomed));
}
resizer.setResizingFromCenter(true);
resizer.getBottomLeftHandle().addListener(neResizeListener);
resizer.getBottomRightHandle().addListener(nwResizeListener);
resizer.getTopLeftHandle().addListener(nwResizeListener);
resizer.getTopRightHandle().addListener(neResizeListener);
resizer.getBottomHandle().addListener(verticalResizeListener);
resizer.getTopHandle().addListener(verticalResizeListener);
resizer.getLeftHandle().addListener(horizontalResizeListener);
resizer.getRightHandle().addListener(horizontalResizeListener);
resizer.addListener(new InputListener() {
@Override
public void enter(InputEvent event, float x, float y, int pointer, Actor fromActor) {
getStage().setScrollFocus(resizer);
}
@Override
public boolean scrolled(InputEvent event, float x, float y, float amountX, float amountY) {
var slider = (Slider) findActor("bottom-zoom");
slider.setValue(slider.getValue() - amountY * 5);
return true;
}
});
var scrollPane = new ScrollPane(resizer, getSkin());
scrollPane.setName("scroll");
scrollPane.setFlickScroll(false);
scrollPane.setFadeScrollBars(false);
bottom.add(scrollPane).grow();
bottom.row();
table = new Table();
table.padLeft(5);
table.padRight(5);
bottom.add(table).growX();
table.defaults().space(5);
label = new Label("Content:", getSkin());
table.add(label);
var selectBox = new SelectBox<String>(getSkin());
selectBox.setName("contentSelectBox");
table.add(selectBox);
selectBox.setItems("None", "Text", "Color", "Drawable");
selectBox.addListener(handListener);
selectBox.getList().addListener(handListener);
selectBox.getList().addListener(new ClickListener() {
@Override
public void clicked(InputEvent event, float x, float y) {
selectBox.fire(new ChangeListener.ChangeEvent());
}
});
selectBox.addListener(new ChangeListener() {
@Override
public void changed(ChangeListener.ChangeEvent event, Actor actor) {
switch(selectBox.getSelected()) {
case "None":
updatePreviewContentActor(null);
break;
case "Text":
dialogFactory.showInputDialog("Text Content", "Enter the text to be displayed inside of the preview:", "Lorem Ipsum", new DialogFactory.InputDialogListener() {
@Override
public void confirmed(String text) {
dialogFactory.showDialogColors(new StyleProperty(), (colorData, pressedCancel) -> {
if (colorData == null) {
selectBox.setSelected("None");
} else {
var label = new Label(text, getSkin(), "white");
label.setAlignment(Align.center);
label.setColor(colorData.color);
label.setUserObject("Text");
updatePreviewContentActor(label);
}
}, null);
}
@Override
public void cancelled() {
selectBox.setSelected("None");
}
});
break;
case "Color":
dialogFactory.showDialogColors(new StyleProperty(), (colorData, pressedCancel) -> {
if (colorData == null) {
selectBox.setSelected("None");
} else {
var image = new Image(getSkin(), "white");
image.setScaling(Scaling.stretch);
image.setColor(colorData.color);
image.setUserObject("Color");
updatePreviewContentActor(image);
}
}, null);
break;
case "Drawable":
var dialog = dialogFactory.showDialogDrawables(true, new DialogDrawables.DialogDrawablesListener() {
@Override
public void confirmed(DrawableData drawable, DialogDrawables dialog) {
var image = new Image(drawablePairs.get(drawable));
image.setScaling(Scaling.none);
image.setUserObject("Drawable");
updatePreviewContentActor(image);
}
@Override
public void emptied(DialogDrawables dialog) {
selectBox.setSelected("None");
}
@Override
public void cancelled(DialogDrawables dialog) {
selectBox.setSelected("None");
}
}, null);
dialog.setShowing9patchButton(false);
break;
}
}
});
imageButton = new ImageButton(getSkin(), "color");
table.add(imageButton);
imageButton.addListener(handListener);
imageButton.addListener(new ChangeListener() {
@Override
public void changed(ChangeListener.ChangeEvent event, Actor actor) {
dialogFactory.showDialogColorPicker(previewBGcolor, new DialogColorPicker.ColorListener() {
@Override
public void selected(Color color) {
if (color != null) {
previewBGcolor.set(color);
bottom.setColor(color);
}
}
});
}
});
var toolTip = new TextTooltip("Background color for preview pane.", tooltipManager, getSkin());
imageButton.addListener(toolTip);
slider = new Slider(1.0f, 100.0f, 1.0f, false, getSkin(), "zoom-horizontal");
slider.setName("bottom-zoom");
slider.setValue(1.0f);
table.add(slider).expandX().right();
slider.addListener(handListener);
slider.addListener(new ChangeListener() {
@Override
public void changed(ChangeListener.ChangeEvent event, Actor actor) {
var slider = (Slider) findActor("bottom-zoom");
var zoom = slider.getValue();
if (previewZoomed != null) {
previewZoomed.setLeftWidth(preview.getLeftWidth() * zoom);
previewZoomed.setRightWidth(preview.getRightWidth() * zoom);
previewZoomed.setTopHeight(preview.getTopHeight() * zoom);
previewZoomed.setBottomHeight(preview.getBottomHeight() * zoom);
if (preview.getPadLeft() != -1) {
previewZoomed.setPadLeft(preview.getPadLeft() * zoom);
}
if (preview.getPadRight() != -1) {
previewZoomed.setPadRight(preview.getPadRight() * zoom);
}
if (preview.getPadTop() != -1) {
previewZoomed.setPadTop(preview.getPadTop() * zoom);
}
if (preview.getPadBottom() != -1) {
previewZoomed.setPadBottom(preview.getPadBottom() * zoom);
}
var table = new Table();
resizer.setActor(table);
resizer.setMinWidth(previewZoomed.getTotalWidth() + previewZoomed.getPadLeft() + preview.getPadRight());
resizer.setMinHeight(previewZoomed.getTotalHeight() + previewZoomed.getPadTop() + preview.getPadBottom());
table.setBackground(new NinePatchDrawable(previewZoomed));
updatePreviewContentActor(previewContentActor);
if (previewContentActor != null) {
var selectBox = (SelectBox<String>) findActor("contentSelectBox");
var listeners = new Array<EventListener>(selectBox.getListeners());
for (var listener : listeners) {
if (listener instanceof ChangeListener) {
selectBox.removeListener(listener);
}
}
selectBox.setSelected((String) previewContentActor.getUserObject());
for (var listener : listeners) {
if (listener instanceof ChangeListener) {
selectBox.addListener(listener);
}
}
}
}
}
});
getButtonTable().clearChildren();
getButtonTable().pad(10);
getButtonTable().defaults().space(10).minWidth(100);
textButton = new TextButton("Save", getSkin());
textButton.setName("save-button");
getButtonTable().add(textButton);
textButton.addListener(handListener);
textButton.addListener(new ChangeListener() {
@Override
public void changed(ChangeListener.ChangeEvent event, Actor actor) {
dialogFactory.showDialogLoading(() -> {
String defaultPath = loadedFile.path();
if (!defaultPath.toLowerCase(Locale.ROOT).endsWith(".9.png")) {
defaultPath = loadedFile.sibling(loadedFile.nameWithoutExtension() + ".9.png").path();
}
String[] filterPatterns = { "*.9.png" };
File file = desktopWorker.saveDialog("Save nine patch file as...", defaultPath, filterPatterns, "Nine Patch files");
if (file != null) {
Gdx.app.postRunnable(() -> {
FileHandle fileHandle = new FileHandle(file);
if (fileHandle.extension() == null || !fileHandle.name().toLowerCase(Locale.ROOT).endsWith(".9.png")) {
fileHandle = fileHandle.sibling(fileHandle.nameWithoutExtension() + ".9.png");
}
saveNinePatch(fileHandle);
projectData.setLastDrawablePath(fileHandle.parent().path() + "/");
hide();
for (var listener : listeners) {
listener.fileSaved(fileHandle);
}
});
}
});
}
});
textButton = new TextButton("Cancel", getSkin());
button(textButton, false);
textButton.addListener(handListener);
key(Keys.ESCAPE, false);
updateDisabled();
}
Aggregations