ParameterList.java 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. package mdd.client.connectable;
  2. import javafx.scene.Group;
  3. import javafx.scene.control.ScrollPane;
  4. import javafx.scene.input.DragEvent;
  5. import javafx.scene.input.Dragboard;
  6. import javafx.scene.input.TransferMode;
  7. import javafx.scene.layout.GridPane;
  8. import javafx.scene.layout.VBox;
  9. import mdd.client.GUIEventHandler;
  10. import mdd.client.IGUIEventClient;
  11. import mdd.client.Module;
  12. import mdd.client.Processor;
  13. import org.json.simple.JSONArray;
  14. import org.json.simple.JSONObject;
  15. import org.json.simple.parser.JSONParser;
  16. import org.json.simple.parser.ParseException;
  17. public class ParameterList extends ScrollPane implements IGUIEventClient {
  18. private GUIEventHandler _eventHandler;
  19. public Processor _processor;
  20. private VBox params = new VBox();
  21. private String _type;
  22. public ParameterList(Processor processor, String type){
  23. _type = type;
  24. _processor = processor;
  25. _eventHandler = GUIEventHandler.getEventHandler();
  26. if (_type.equals("input")){
  27. params = _processor.params_in;
  28. }else {
  29. params = _processor.params_out;
  30. }
  31. this.setContent(params);
  32. addEventHandler(DragEvent.DRAG_OVER, e -> {
  33. Dragboard db = e.getDragboard();
  34. if (db.hasString()) {
  35. JSONParser parser = new JSONParser();
  36. JSONObject jmsg = null;
  37. try {
  38. jmsg = (JSONObject)parser.parse(db.getString());
  39. } catch (ParseException parseException) {
  40. parseException.printStackTrace();
  41. }
  42. if (!jmsg.containsKey("type")){
  43. return;
  44. }
  45. if (!jmsg.get("type").toString().equals(_type)){
  46. return;
  47. }
  48. e.acceptTransferModes(TransferMode.MOVE);
  49. }
  50. e.consume();
  51. });
  52. _eventHandler.addEventListener(this);
  53. addEventHandler(DragEvent.DRAG_DROPPED, e -> {
  54. Dragboard db = e.getDragboard();
  55. boolean success = false;
  56. if (db.hasString()) {
  57. JSONParser parser = new JSONParser();
  58. JSONObject jmsg = null;
  59. try {
  60. jmsg = (JSONObject)parser.parse(db.getString());
  61. if (!jmsg.containsKey("prefix")){return;}
  62. JSONArray jprefix = (JSONArray)jmsg.get("prefix");
  63. JSONArray jprocessor = (JSONArray)_processor.getJSONIdentifier().get("prefix");
  64. if (jprocessor.size() + 2 != jprefix.size()){return;}
  65. for (int i = 0; i < jprocessor.size(); ++i){
  66. if(!jprocessor.get(i).toString().equals(jprefix.get(i).toString())){
  67. return;
  68. }
  69. }
  70. if(!_processor.ID.equals(jprefix.get(jprefix.size()-2).toString())){
  71. return;
  72. }
  73. } catch (ParseException parseException) {
  74. parseException.printStackTrace();
  75. }
  76. JSONObject jtry = new JSONObject();
  77. jtry.put("operation", "add");
  78. JSONObject jargs = new JSONObject();
  79. jargs.put("subject", _processor.getJSONIdentifier());
  80. jargs.put("object", jmsg);
  81. jtry.put("args", jargs);
  82. _eventHandler.publishEvent(10,"try", jtry);
  83. }
  84. });
  85. }
  86. public void add(Module mod){
  87. params.getChildren().add(mod);
  88. }
  89. @Override
  90. public void processGUIEvent(String event, JSONObject args) {
  91. }
  92. @Override
  93. public void close() throws Exception {
  94. }
  95. }