diff --git a/pom.xml b/pom.xml
index 5bb06e6..ebf15e0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
4.0.0
de.srsoftware
web4rail
- 0.8.1
+ 0.8.2
Web4Rail
jar
Java Model Railway Control
diff --git a/src/main/java/de/srsoftware/web4rail/actions/ConditionalAction.java b/src/main/java/de/srsoftware/web4rail/actions/ConditionalAction.java
index 883ca89..ed547a5 100644
--- a/src/main/java/de/srsoftware/web4rail/actions/ConditionalAction.java
+++ b/src/main/java/de/srsoftware/web4rail/actions/ConditionalAction.java
@@ -60,7 +60,7 @@ public class ConditionalAction extends Action {
@Override
public boolean fire(Context context) throws IOException {
for (Condition condition : conditions) {
- if (condition.fulfilledBy(context)) return fireActions(context);
+ if (condition.fulfilledBy(context) != condition.inverted) return fireActions(context);
}
return false;
}
@@ -106,7 +106,7 @@ public class ConditionalAction extends Action {
@Override
public String toString() {
- if (conditions.isEmpty()) return t("Invalid condition");
+ if (conditions.isEmpty()) return t("[Click here to add condition]");
StringBuffer sb = new StringBuffer();
for (int i = 0; i0) sb.append(t(" or "));
diff --git a/src/main/java/de/srsoftware/web4rail/conditions/Condition.java b/src/main/java/de/srsoftware/web4rail/conditions/Condition.java
index f6c67b7..3f45b7a 100644
--- a/src/main/java/de/srsoftware/web4rail/conditions/Condition.java
+++ b/src/main/java/de/srsoftware/web4rail/conditions/Condition.java
@@ -4,6 +4,8 @@ import java.util.HashMap;
import java.util.Map;
import org.json.JSONObject;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import de.keawe.tools.translations.Translation;
import de.srsoftware.tools.Tag;
@@ -12,12 +14,17 @@ import de.srsoftware.web4rail.Constants;
import de.srsoftware.web4rail.Plan;
import de.srsoftware.web4rail.Window;
import de.srsoftware.web4rail.actions.Action.Context;
+import de.srsoftware.web4rail.tags.Button;
+import de.srsoftware.web4rail.tags.Checkbox;
+import de.srsoftware.web4rail.tags.Form;
+import de.srsoftware.web4rail.tags.Input;
public abstract class Condition implements Constants {
-
+ public static final Logger LOG = LoggerFactory.getLogger(Condition.class);
+ private static final String INVERTED = "inverted";
private static HashMap conditions = new HashMap();
-
public abstract boolean fulfilledBy(Context context);
+ public boolean inverted = false;
protected int id;
public Condition() {
@@ -65,8 +72,23 @@ public abstract class Condition implements Constants {
String json = new JSONObject(Map.of(REALM,REALM_CONDITION,ID,id,ACTION,ACTION_PROPS,CONTEXT,context)).toString().replace("\"", "'");
return new Tag(tagClass).clazz("link").attr("onclick","request("+json+")").content(toString());
}
+
+ public Tag propForm(HashMap params) {
+ Form form = new Form("condition-props-"+id);
+ new Input(REALM,REALM_CONDITION).hideIn(form);
+ new Input(ACTION,ACTION_UPDATE).hideIn(form);
+ new Input(ID,id).hideIn(form);
+ new Input(CONTEXT,params.get(CONTEXT)).hideIn(form);
+ return form;
+ }
- protected abstract Window properties(HashMap params);
+ protected Window properties(HashMap params) {
+ Window win = new Window("condition-props", t("Properties of {}",getClass().getSimpleName()));
+ Tag form = propForm(params);
+ new Checkbox(INVERTED, t("inverted"), inverted).addTo(form);
+ new Button(t("Apply"),"return submitForm('condition-props-"+id+"');").addTo(form).addTo(win);
+ return win;
+ }
public static String t(String text, Object...fills) {
return Translation.get(Application.class, text, fills);
@@ -77,5 +99,8 @@ public abstract class Condition implements Constants {
return t("invalid condition");
}
- protected abstract Object update(HashMap params);
+ protected Object update(HashMap params) {
+ inverted = "on".equals(params.get(INVERTED));
+ return t("updated {}.",this);
+ }
}
diff --git a/src/main/java/de/srsoftware/web4rail/conditions/TrainSelect.java b/src/main/java/de/srsoftware/web4rail/conditions/TrainSelect.java
index df552fc..eb1cb37 100644
--- a/src/main/java/de/srsoftware/web4rail/conditions/TrainSelect.java
+++ b/src/main/java/de/srsoftware/web4rail/conditions/TrainSelect.java
@@ -4,12 +4,9 @@ import java.util.HashMap;
import org.json.JSONObject;
-import de.srsoftware.web4rail.Window;
+import de.srsoftware.tools.Tag;
import de.srsoftware.web4rail.actions.Action.Context;
import de.srsoftware.web4rail.moving.Train;
-import de.srsoftware.web4rail.tags.Button;
-import de.srsoftware.web4rail.tags.Form;
-import de.srsoftware.web4rail.tags.Input;
import de.srsoftware.web4rail.tags.Label;
public class TrainSelect extends Condition {
@@ -33,23 +30,16 @@ public class TrainSelect extends Condition {
}
@Override
- protected Window properties(HashMap params) {
- Window win = new Window("condition-props", t("Properties of {}",getClass().getSimpleName()));
- String formId = "conditional-props-"+id;
- Form form = new Form(formId);
- new Input(REALM,REALM_CONDITION).hideIn(form);
- new Input(ACTION,ACTION_UPDATE).hideIn(form);
- new Input(ID,id).hideIn(form);
- new Input(CONTEXT,params.get(CONTEXT)).hideIn(form);
+ public Tag propForm(HashMap params) {
+ Tag form = super.propForm(params);
Train.selector(train, null).addTo(new Label(t("Select train:")+NBSP)).addTo(form);
- new Button(t("Apply"),"return submitForm('"+formId+"');").addTo(form).addTo(win);
- return win;
+ return form;
}
-
+
@Override
public String toString() {
- if (train == null) return super.toString();
- return t("Train = {}",train);
+ if (train == null) return t("[Click here to select train!]");
+ return t(inverted?"Train ≠ {}":"Train = {}",train);
}
private TrainSelect train(Train train) {
@@ -65,6 +55,6 @@ public class TrainSelect extends Condition {
Train train = Train.get(tid);
if (train == null) return t("No train with id {} found!",tid);
this.train = train;
- return t("Updated condition");
+ return super.update(params);
}
}