Willi Zschiebsch 4 лет назад
Родитель
Сommit
7234a3e9f2

+ 16 - 5
src/main/java/mdd/client/Configuration.java

@@ -12,14 +12,25 @@ import org.json.simple.JSONObject;
 
 public class Configuration extends Group {
     private String _name = "";
-    private Module _parent = null;
+    private JSONObject jparent_id = new JSONObject();
     private String _type = "";
     protected GUIEventHandler _eventHandler;
 
     Configuration(Module parent, String key, JSONObject json){
-        _eventHandler = GUIEventHandler.getEventHandler();
-        _parent = parent;
+        jparent_id = parent.getJSONIdentifier();
+        _name = key;
+        setUp(json);
+    }
+
+    Configuration(JSONObject parent_id, String key, JSONObject json){
+        jparent_id = parent_id;
         _name = key;
+        setUp(json);
+    }
+
+
+    private void setUp(JSONObject json){
+        _eventHandler = GUIEventHandler.getEventHandler();
 
         if (json.containsKey("options")){
             _type = "selection";
@@ -42,7 +53,7 @@ public class Configuration extends Group {
                 JSONObject jmsg = new JSONObject();
                 jmsg.put("operation", "change");
                 JSONObject jargs = new JSONObject();
-                jargs.put("subject",  _parent.getJSONIdentifier());
+                jargs.put("subject",  jparent_id);
                 jargs.put("object",   jconfigure);
                 jmsg.put("args", jargs);
                 _eventHandler.publishEvent("try", jmsg);
@@ -63,7 +74,7 @@ public class Configuration extends Group {
                     JSONObject jmsg = new JSONObject();
                     jmsg.put("operation", "change");
                     JSONObject jargs = new JSONObject();
-                    jargs.put("subject", _parent.getJSONIdentifier());
+                    jargs.put("subject", jparent_id);
                     jargs.put("object", jconfigure);
                     jmsg.put("args", jargs);
                     _eventHandler.publishEvent("try", jmsg);

+ 31 - 70
src/main/java/mdd/client/PropertyManager.java

@@ -6,6 +6,8 @@ import javafx.scene.layout.GridPane;
 import org.json.simple.JSONArray;
 import org.json.simple.JSONObject;
 
+import java.util.Iterator;
+
 public class PropertyManager extends ScrollPane implements IGUIEventClient{
     private GUIEventHandler _eventHandler;
     private JSONObject jsel  = new JSONObject();
@@ -31,81 +33,40 @@ public class PropertyManager extends ScrollPane implements IGUIEventClient{
         setFitToWidth(true);
     }
 
-    private void setContent(TitledPane pane, JSONObject json){
-        TabPane tabPane = new TabPane();
-        GridPane gpane = new GridPane();
+    private GridPane createLayout(JSONObject json){
+        GridPane glayout = new GridPane();
+        glayout.getChildren().clear();
+        glayout.setHgap(5);
+        glayout.setVgap(5);
+
+        Iterator<String> itr = json.keySet().iterator();
         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;
+        while (itr.hasNext()){
+            String key = itr.next();
+            JSONObject jconfig;
+            try {
+                jconfig = (JSONObject) json.get(key);
+            }catch (ClassCastException e){
+                jconfig = new JSONObject();
+                jconfig.put("value", json.get(key));
             }
-        }
-        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);
+            Label clabel = new Label(key);
+            glayout.add(clabel,0,counter);
+            glayout.add(new Configuration(jsel, key, jconfig),1,counter);
             ++counter;
         }
-        Tab tab_main = new Tab("Main", gpane);
-        tabPane.getTabs().add(tab_main);
 
+        return glayout;
+    }
 
-        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);
+    private void setContent(TitledPane pane, JSONObject json){
+        TabPane tabPane = new TabPane();
+        Iterator<String> itr = json.keySet().iterator();
+        while (itr.hasNext()){
+            String key = itr.next();
+            JSONObject jcontent = (JSONObject) json.get(key);
+            Tab tab = new Tab(key  , new ScrollPane(createLayout(jcontent)));
+            tabPane.getTabs().add(tab);
         }
         tabPane.setTabClosingPolicy(TabPane.TabClosingPolicy.UNAVAILABLE);
         pane.setContent(tabPane);
@@ -121,7 +82,7 @@ public class PropertyManager extends ScrollPane implements IGUIEventClient{
     public void processGUIEvent(String event, JSONObject args) {
         if (event == "MOUSE_PRESSED"){
             if (!args.equals(jsel)){
-
+                jsel = args;
                 JSONObject jmsg = new JSONObject();
                 jmsg.put("operation", "state");
                 jmsg.put("args", args);

+ 13 - 1
src/main/java/mdd/client/WorkBench.java

@@ -10,7 +10,7 @@ import org.json.simple.parser.ParseException;
 
 public class WorkBench extends Tab implements IGUIEventClient{
     private ScrollPane _scrollPane;
-    private Processor _processor;
+    public Processor _processor;
     private Point2D _pos = new Point2D(0.0f,0.0f);
     private GUIEventHandler _eventHandler;
 
@@ -55,6 +55,18 @@ public class WorkBench extends Tab implements IGUIEventClient{
             e.setDropCompleted(success);
             e.consume();
         });
+
+        _scrollPane.addEventHandler(MouseEvent.MOUSE_PRESSED, e -> {
+            if(e.getButton() == MouseButton.PRIMARY) {
+                JSONObject json = new JSONObject();
+                json.put("type", "optimizer");
+                _eventHandler.publishEvent("MOUSE_PRESSED", json);
+            }
+            if(e.getButton() == MouseButton.SECONDARY) {
+
+            }
+            e.consume();
+        });
     }
 
     @Override

+ 10 - 0
src/main/java/mdd/client/Workshop.java

@@ -59,8 +59,18 @@ public class Workshop extends TabPane implements IGUIEventClient {
         }
         if (existingID == -1) {
             WorkBench bench = new WorkBench(processor);
+
             getTabs().add(bench);
             getSelectionModel().select(bench);
+            bench.getTabPane().addEventHandler(MouseEvent.MOUSE_PRESSED, e -> {
+                if(e.getButton() == MouseButton.PRIMARY) {
+                    _eventHandler.publishEvent("MOUSE_PRESSED", bench._processor.getJSONIdentifier());
+                }
+                if(e.getButton() == MouseButton.SECONDARY) {
+
+                }
+                e.consume();
+            });
         }else{
             getSelectionModel().select(getTabs().get(existingID));
         }

+ 20 - 15
src/main/java/mdd/client/connectable/Connectable.java

@@ -181,10 +181,25 @@ public class Connectable extends GridPane implements IGUIEventClient,ChangeListe
     }
 
     public void configure(JSONObject json){
-        if (json.containsKey("value")){
-            Value.clear();
-            for (Object o: (JSONArray)json.get("value")) {
-                Value.add((Double)o);
+        if (json.containsKey("configure")){
+            JSONObject jconfig = (JSONObject) json.get("configure");
+            if (jconfig.containsKey("value")){
+                Value.clear();
+                for (Object o: (JSONArray)jconfig.get("value")) {
+                    Value.add((Double)o);
+                }
+            }
+            if (jconfig.containsKey("optimizable")){
+                JSONObject jopt =  (JSONObject)jconfig.get("optimizable");
+                String state = jopt.get("value").toString();
+                if (state.equals("true")){
+                    optimizable = true;
+                }else{
+                    optimizable = false;
+                }
+                if (_circle != null){
+                    updateColor();
+                }
             }
         }
 
@@ -197,17 +212,7 @@ public class Connectable extends GridPane implements IGUIEventClient,ChangeListe
                 Appendix = (long) jID.get("appendix");
             }
         }
-        if (json.containsKey("optimizable")){
-            String state = json.get("optimizable").toString();
-            if (state.equals("true")){
-                optimizable = true;
-            }else{
-                optimizable = false;
-            }
-            if (_circle != null){
-                updateColor();
-            }
-        }
+
 
         ID = Name + Appendix;
         _label.setText(Name);

+ 1 - 0
src/main/java/mdd/client/connectable/Input.java

@@ -26,6 +26,7 @@ public class Input  extends Connectable {
             @Override
             public void changed(ObservableValue<? extends String> observable,
                                 String oldValue, String newValue) {
+
                 JSONObject jvalue = new JSONObject();
                 jvalue.put("value", _input.getText());
                 JSONObject jmsg = new JSONObject();