|
@@ -1,42 +1,150 @@
|
|
|
package mdd.client;
|
|
|
|
|
|
import javafx.geometry.Pos;
|
|
|
-import javafx.scene.control.Accordion;
|
|
|
-import javafx.scene.control.Label;
|
|
|
-import javafx.scene.control.ScrollPane;
|
|
|
-import javafx.scene.control.TitledPane;
|
|
|
+import javafx.scene.control.*;
|
|
|
import javafx.scene.layout.GridPane;
|
|
|
+import org.json.simple.JSONArray;
|
|
|
import org.json.simple.JSONObject;
|
|
|
|
|
|
public class PropertyManager extends ScrollPane implements IGUIEventClient{
|
|
|
- private GUIEventHandler _eventhandler;
|
|
|
+ private GUIEventHandler _eventHandler;
|
|
|
+ private JSONObject jsel = new JSONObject();
|
|
|
+ private TitledPane pane1;
|
|
|
+ private TitledPane pane2;
|
|
|
|
|
|
public PropertyManager(){
|
|
|
super();
|
|
|
- _eventhandler = GUIEventHandler.getEventHandler();
|
|
|
- _eventhandler.addEventListener(this);
|
|
|
+ _eventHandler = GUIEventHandler.getEventHandler();
|
|
|
+ _eventHandler.addEventListener(this);
|
|
|
Accordion accordion = new Accordion();
|
|
|
GridPane grid = new GridPane();
|
|
|
grid.setAlignment(Pos.CENTER);
|
|
|
grid.setHgap(10);
|
|
|
grid.setVgap(10);
|
|
|
- TitledPane pane1 = new TitledPane("Properties", new Label("WIP"));
|
|
|
- TitledPane pane2 = new TitledPane("other Properties", new Label("WIP"));
|
|
|
+ pane1 = new TitledPane("Properties", null);
|
|
|
+ pane2 = new TitledPane("other Properties", null);
|
|
|
|
|
|
accordion.getPanes().add(pane1);
|
|
|
accordion.getPanes().add(pane2);
|
|
|
-
|
|
|
+ accordion.setExpandedPane(pane1);
|
|
|
setContent(accordion);
|
|
|
setFitToWidth(true);
|
|
|
}
|
|
|
|
|
|
+ private void setContent(TitledPane pane, JSONObject json){
|
|
|
+ TabPane tabPane = new TabPane();
|
|
|
+ GridPane gpane = new GridPane();
|
|
|
+ int counter = 0;
|
|
|
+ if (json.containsKey("ID")){
|
|
|
+ JSONObject jID = (JSONObject)json.get("ID");
|
|
|
+ if (jID.containsKey("name")){
|
|
|
+ gpane.add(new Label("Name:"), 0,counter);
|
|
|
+ TextField tf = new TextField(jID.get("name").toString());
|
|
|
+ gpane.add(tf, 1,counter);
|
|
|
+ ++counter;
|
|
|
+ }
|
|
|
+ if (jID.containsKey("appendix")){
|
|
|
+ gpane.add(new Label("Appendix:"), 0,counter);
|
|
|
+ TextField tf = new TextField(jID.get("appendix").toString());
|
|
|
+ gpane.add(tf, 1,counter);
|
|
|
+ ++counter;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (json.containsKey("optimizable")){
|
|
|
+ gpane.add(new Label("Optimized:"), 0,counter);
|
|
|
+ CheckBox cb = new CheckBox();
|
|
|
+ String sstate = json.get("optimizable").toString();
|
|
|
+ if (sstate.equals("true")){
|
|
|
+ cb.setSelected(true);
|
|
|
+ }
|
|
|
+ gpane.add(cb, 1,counter);
|
|
|
+ ++counter;
|
|
|
+ }
|
|
|
+ if (json.containsKey("value")){
|
|
|
+ gpane.add(new Label("Value:"), 0,counter);
|
|
|
+ TextField tf = new TextField(json.get("value").toString());
|
|
|
+ gpane.add(tf, 1,counter);
|
|
|
+ ++counter;
|
|
|
+ }
|
|
|
+ Tab tab_main = new Tab("Main", gpane);
|
|
|
+ tabPane.getTabs().add(tab_main);
|
|
|
+
|
|
|
+
|
|
|
+ if (json.containsKey("limit")){
|
|
|
+ counter = 0;
|
|
|
+ GridPane gplimit = new GridPane();
|
|
|
+ JSONObject jlimit = (JSONObject)json.get("limit");
|
|
|
+ if (jlimit.containsKey("min")){
|
|
|
+ gplimit.add(new Label("min:"), 0,counter);
|
|
|
+ TextField tf = new TextField(jlimit.get("min").toString());
|
|
|
+ gplimit.add(tf, 1,counter);
|
|
|
+ ++counter;
|
|
|
+ }
|
|
|
+ if (jlimit.containsKey("max")){
|
|
|
+ gplimit.add(new Label("max:"), 0,counter);
|
|
|
+ TextField tf = new TextField(jlimit.get("max").toString());
|
|
|
+ gplimit.add(tf, 1,counter);
|
|
|
+ ++counter;
|
|
|
+ }
|
|
|
+ if (jlimit.containsKey("step")){
|
|
|
+ gplimit.add(new Label("step:"), 0,counter);
|
|
|
+ TextField tf = new TextField(jlimit.get("step").toString());
|
|
|
+ gplimit.add(tf, 1,counter);
|
|
|
+ ++counter;
|
|
|
+ }
|
|
|
+ if (jlimit.containsKey("rule")){
|
|
|
+ gplimit.add(new Label("rule:"), 0,counter);
|
|
|
+ TextField tf = new TextField(jlimit.get("rule").toString());
|
|
|
+ gplimit.add(tf, 1,counter);
|
|
|
+ ++counter;
|
|
|
+ }
|
|
|
+ if (jlimit.containsKey("elements")){
|
|
|
+ gplimit.add(new Label("elements:"), 0,counter);
|
|
|
+ TextField tf = new TextField(jlimit.get("elements").toString());
|
|
|
+ gplimit.add(tf, 1,counter);
|
|
|
+ ++counter;
|
|
|
+ }
|
|
|
+ Tab tab_limit = new Tab("Limit" , gplimit);
|
|
|
+ tabPane.getTabs().add(tab_limit);
|
|
|
+ }
|
|
|
+ tabPane.setTabClosingPolicy(TabPane.TabClosingPolicy.UNAVAILABLE);
|
|
|
+ pane.setContent(tabPane);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public void close() throws Exception {
|
|
|
- _eventhandler.removeEventListener(this);
|
|
|
+ _eventHandler.removeEventListener(this);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public void processGUIEvent(String event, JSONObject args) {
|
|
|
+ if (event == "MOUSE_PRESSED"){
|
|
|
+ if (!args.equals(jsel)){
|
|
|
|
|
|
+ JSONObject jmsg = new JSONObject();
|
|
|
+ jmsg.put("operation", "state");
|
|
|
+ jmsg.put("args", args);
|
|
|
+ _eventHandler.publishEvent("get", jmsg);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (event.equals("receive")){
|
|
|
+ if (!args.containsKey("operation")){ return; }
|
|
|
+ if (!args.get("operation").toString().equals("state")){ return; }
|
|
|
+ JSONObject jargs = (JSONObject)args.get("args");
|
|
|
+ System.out.println("[Toolbox]: "+ args.toString());
|
|
|
+ if (jargs != null) {
|
|
|
+ if (jargs.containsKey("info")){
|
|
|
+ JSONObject jinfo = (JSONObject)jargs.get("info");
|
|
|
+ setContent(pane1,jinfo);
|
|
|
+ if (jinfo.containsKey("GUI")){
|
|
|
+ setContent(pane2,(JSONObject) jinfo.get("GUI"));
|
|
|
+ }
|
|
|
+ System.out.println("[PropertyManger]: " + jinfo.toString());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|