started refactoring
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
package de.srsoftware.web4rail.functions;
|
||||
|
||||
public class Coupler extends Function {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
package de.srsoftware.web4rail.functions;
|
||||
|
||||
public class CustomFunction extends Function {
|
||||
|
||||
}
|
||||
69
src/main/java/de/srsoftware/web4rail/functions/Function.java
Normal file
69
src/main/java/de/srsoftware/web4rail/functions/Function.java
Normal file
@@ -0,0 +1,69 @@
|
||||
package de.srsoftware.web4rail.functions;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import de.srsoftware.tools.Tag;
|
||||
import de.srsoftware.web4rail.BaseClass;
|
||||
import de.srsoftware.web4rail.Params;
|
||||
import de.srsoftware.web4rail.devices.Decoder;
|
||||
import de.srsoftware.web4rail.tags.Fieldset;
|
||||
import de.srsoftware.web4rail.tags.Label;
|
||||
import de.srsoftware.web4rail.tags.Select;
|
||||
|
||||
public abstract class Function extends BaseClass{
|
||||
|
||||
public static final String NEW = "new_function";
|
||||
private static final String PACKAGE = Function.class.getPackageName();
|
||||
private static final String INDEX = "index";
|
||||
static final String FORWARD = "forward";
|
||||
static final String REVERSE = "reverse";
|
||||
|
||||
private int decoderFunction = 1;
|
||||
|
||||
public static Tag selector() {
|
||||
Select selector = new Select(NEW);
|
||||
selector.addOption("", t("Select function"));
|
||||
|
||||
for (Class<? extends Function> fun : List.of(HeadLight.class,TailLight.class,InteriorLight.class,Coupler.class,CustomFunction.class)) {
|
||||
String className = fun.getSimpleName();
|
||||
selector.addOption(className,t(className));
|
||||
}
|
||||
|
||||
return selector;
|
||||
}
|
||||
|
||||
public static Function create(String className) {
|
||||
|
||||
|
||||
if (isNull(className)) return null;
|
||||
try {
|
||||
return (Function) Class.forName(PACKAGE+"."+className).getDeclaredConstructor().newInstance();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public Fieldset form(Decoder decoder) {
|
||||
Fieldset fieldset = new Fieldset(name());
|
||||
String prefix = "functions/"+id()+"/";
|
||||
Select select = new Select(prefix+"index");
|
||||
for (int i=1; i<=decoder.numFunctions(); i++) {
|
||||
Tag option = select.addOption(i);
|
||||
if (i == decoderFunction) option.attr("selected", "selected");
|
||||
}
|
||||
select.addTo(new Label(t("Decoder function")+COL)).addTo(fieldset);
|
||||
|
||||
return fieldset;
|
||||
}
|
||||
|
||||
private String name() {
|
||||
return t(getClass().getSimpleName());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object update(Params params) {
|
||||
if (params.containsKey(INDEX)) decoderFunction = params.getInt(INDEX);
|
||||
return super.update(params);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package de.srsoftware.web4rail.functions;
|
||||
|
||||
import java.util.HashSet;
|
||||
|
||||
import org.json.JSONObject;
|
||||
|
||||
/**
|
||||
* @author Stephan Richter
|
||||
*
|
||||
*/
|
||||
public class FunctionList extends HashSet<Function>{
|
||||
|
||||
private static final long serialVersionUID = 8013610745085726979L;
|
||||
|
||||
public JSONObject json() {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
public void load(JSONObject jsonObject) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
package de.srsoftware.web4rail.functions;
|
||||
|
||||
import de.srsoftware.web4rail.Params;
|
||||
import de.srsoftware.web4rail.devices.Decoder;
|
||||
import de.srsoftware.web4rail.tags.Checkbox;
|
||||
import de.srsoftware.web4rail.tags.Fieldset;
|
||||
|
||||
public class HeadLight extends Function {
|
||||
|
||||
private boolean forward,reverse;
|
||||
|
||||
public HeadLight() {
|
||||
// TODO Auto-generated constructor stub
|
||||
}
|
||||
|
||||
@Override
|
||||
public Fieldset form(Decoder decoder) {
|
||||
Fieldset fieldset = super.form(decoder);
|
||||
String prefix = "functions/"+id()+"/";
|
||||
new Checkbox(prefix+FORWARD, t(FORWARD), forward).addTo(fieldset);
|
||||
new Checkbox(prefix+REVERSE, t(REVERSE), reverse).addTo(fieldset);
|
||||
return fieldset;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object update(Params params) {
|
||||
if (params.containsKey(FORWARD)) forward = "on".equals(params.get(FORWARD));
|
||||
if (params.containsKey(REVERSE)) reverse = "on".equals(params.get(REVERSE));
|
||||
return super.update(params);
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
package de.srsoftware.web4rail.functions;
|
||||
|
||||
public class InteriorLight extends Function {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
package de.srsoftware.web4rail.functions;
|
||||
|
||||
public class TailLight extends Function {
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user