Improve new project input validation, close #89
This commit is contained in:
Submodule hyperlap2d-runtime-libgdx updated: 15d82099c4...a8101ae542
+2
-2
@@ -1,9 +1,9 @@
|
||||
package games.rednblack.editor.controller.commands;
|
||||
|
||||
import com.kotcrab.vis.ui.util.Validators;
|
||||
import games.rednblack.editor.controller.SandboxCommand;
|
||||
import games.rednblack.editor.renderer.components.TransformComponent;
|
||||
import games.rednblack.editor.utils.runtime.SandboxComponentRetriever;
|
||||
import games.rednblack.editor.view.ui.validator.FloatInputValidator;
|
||||
import games.rednblack.h2d.common.command.TransformCommandBuilder;
|
||||
import games.rednblack.h2d.common.view.ui.dialog.MultipleInputDialog;
|
||||
import games.rednblack.h2d.common.view.ui.listener.MultipleInputDialogListener;
|
||||
@@ -19,7 +19,7 @@ public class ChangeOriginPointPosition extends SandboxCommand {
|
||||
int entity = notification.getBody();
|
||||
TransformComponent transformComponent = SandboxComponentRetriever.get(entity, TransformComponent.class);
|
||||
|
||||
MultipleInputDialog dialog = new MultipleInputDialog("Origin Position", new String[]{"X : ", "Y : "}, false, new FloatInputValidator(), new MultipleInputDialogListener() {
|
||||
MultipleInputDialog dialog = new MultipleInputDialog("Origin Position", new String[]{"X : ", "Y : "}, false, new Validators.FloatValidator(), new MultipleInputDialogListener() {
|
||||
@Override
|
||||
public void finished(String[] input) {
|
||||
TransformCommandBuilder commandBuilder = new TransformCommandBuilder();
|
||||
|
||||
+2
-2
@@ -3,6 +3,7 @@ package games.rednblack.editor.controller.commands;
|
||||
import com.badlogic.gdx.math.Vector2;
|
||||
import com.badlogic.gdx.utils.Array;
|
||||
import com.badlogic.gdx.utils.IntSet;
|
||||
import com.kotcrab.vis.ui.util.Validators;
|
||||
import games.rednblack.editor.controller.SandboxCommand;
|
||||
import games.rednblack.editor.controller.commands.component.UpdatePolygonVerticesCommand;
|
||||
import games.rednblack.editor.renderer.components.shape.PolygonShapeComponent;
|
||||
@@ -10,7 +11,6 @@ import games.rednblack.editor.renderer.utils.poly.PolygonRuntimeUtils;
|
||||
import games.rednblack.editor.utils.poly.PolygonUtils;
|
||||
import games.rednblack.editor.utils.runtime.SandboxComponentRetriever;
|
||||
import games.rednblack.editor.view.ui.followers.PolygonFollower;
|
||||
import games.rednblack.editor.view.ui.validator.FloatInputValidator;
|
||||
import games.rednblack.h2d.common.MsgAPI;
|
||||
import games.rednblack.h2d.common.view.ui.dialog.MultipleInputDialog;
|
||||
import games.rednblack.h2d.common.view.ui.listener.MultipleInputDialogListener;
|
||||
@@ -35,7 +35,7 @@ public class ChangePolygonVertexPositionCommand extends SandboxCommand {
|
||||
Vector2 backup = points.get(anchor).cpy();
|
||||
currentCommandPayload = UpdatePolygonVerticesCommand.payloadInitialState(follower.getEntity());
|
||||
|
||||
MultipleInputDialog dialog = new MultipleInputDialog("Vertex Position", new String[]{"X : ", "Y : "}, false, new FloatInputValidator(), new MultipleInputDialogListener() {
|
||||
MultipleInputDialog dialog = new MultipleInputDialog("Vertex Position", new String[]{"X : ", "Y : "}, false, new Validators.FloatValidator(), new MultipleInputDialogListener() {
|
||||
@Override
|
||||
public void finished(String[] input) {
|
||||
Array<Vector2> points = polygonShapeComponent.vertices;
|
||||
|
||||
@@ -30,6 +30,7 @@ import com.badlogic.gdx.utils.Align;
|
||||
import com.kotcrab.vis.ui.util.Validators;
|
||||
import com.kotcrab.vis.ui.widget.*;
|
||||
import com.kotcrab.vis.ui.widget.file.FileChooser;
|
||||
import games.rednblack.editor.view.ui.validator.GreaterThanIntegerValidator;
|
||||
import games.rednblack.editor.view.ui.validator.StringNameValidator;
|
||||
import games.rednblack.h2d.common.H2DDialog;
|
||||
import games.rednblack.h2d.common.view.ui.StandardWidgetsFactory;
|
||||
@@ -52,7 +53,7 @@ public class NewProjectDialog extends H2DDialog {
|
||||
private VisValidatableTextField originHeightTextField;
|
||||
private String defaultWorkspacePath;
|
||||
private VisValidatableTextField pixelsPerWorldUnitField;
|
||||
private VisLabel worldSizeLabel;
|
||||
private final VisLabel worldSizeLabel;
|
||||
|
||||
NewProjectDialog() {
|
||||
super("Create New Project");
|
||||
@@ -119,7 +120,7 @@ public class NewProjectDialog extends H2DDialog {
|
||||
dimensionsTable.add(originHeightTextField).width(45).height(21).left();
|
||||
dimensionsTable.add("px").left();
|
||||
dimensionsTable.row().padTop(10);
|
||||
pixelsPerWorldUnitField = StandardWidgetsFactory.createValidableTextField(DEFAULT_PPWU, "light", new Validators.IntegerValidator(), digitsOnlyFilter);
|
||||
pixelsPerWorldUnitField = StandardWidgetsFactory.createValidableTextField(DEFAULT_PPWU, "light", new GreaterThanIntegerValidator(1, true), digitsOnlyFilter);
|
||||
pixelsPerWorldUnitField.addListener(new ChangeListener() {
|
||||
@Override
|
||||
public void changed(ChangeEvent event, Actor actor) {
|
||||
@@ -166,8 +167,11 @@ public class NewProjectDialog extends H2DDialog {
|
||||
int originH = NumberUtils.toInt(getOriginHeight());
|
||||
|
||||
int ppwu = NumberUtils.toInt(getPixelPerWorldUnit(), 1);
|
||||
|
||||
worldSizeLabel.setText(originW / ppwu + " x " + originH / ppwu);
|
||||
if (ppwu < 1) {
|
||||
worldSizeLabel.setText("World Unit cannot be < 1");
|
||||
} else {
|
||||
worldSizeLabel.setText(originW / ppwu + " x " + originH / ppwu);
|
||||
}
|
||||
}
|
||||
|
||||
private class BtnClickListener extends ClickListener {
|
||||
|
||||
@@ -1,15 +0,0 @@
|
||||
package games.rednblack.editor.view.ui.validator;
|
||||
|
||||
import com.kotcrab.vis.ui.util.InputValidator;
|
||||
|
||||
public class FloatInputValidator implements InputValidator {
|
||||
@Override
|
||||
public boolean validateInput(String input) {
|
||||
try {
|
||||
Float.parseFloat(input);
|
||||
return true;
|
||||
} catch (NumberFormatException ex) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
+37
@@ -0,0 +1,37 @@
|
||||
package games.rednblack.editor.view.ui.validator;
|
||||
|
||||
import com.kotcrab.vis.ui.util.InputValidator;
|
||||
|
||||
public class GreaterThanIntegerValidator implements InputValidator {
|
||||
private int greaterThan;
|
||||
private boolean useEquals;
|
||||
|
||||
public GreaterThanIntegerValidator (int greaterThan) {
|
||||
this.greaterThan = greaterThan;
|
||||
}
|
||||
|
||||
/** @param inputCanBeEqual if true >= comparison will be used, if false > will be used. */
|
||||
public GreaterThanIntegerValidator (int greaterThan, boolean inputCanBeEqual) {
|
||||
this.greaterThan = greaterThan;
|
||||
this.useEquals = inputCanBeEqual;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean validateInput (String input) {
|
||||
try {
|
||||
int value = Integer.parseInt(input);
|
||||
return useEquals ? value >= greaterThan : value > greaterThan;
|
||||
} catch (NumberFormatException ex) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/*** @param useEquals if true >= comparison will be used, if false > will be used. */
|
||||
public void setUseEquals (boolean useEquals) {
|
||||
this.useEquals = useEquals;
|
||||
}
|
||||
|
||||
public void setGreaterThan (int greaterThan) {
|
||||
this.greaterThan = greaterThan;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user