diff --git a/models/SimpleUI2.model b/models/SimpleUI2.model index 0aec4b3..1247b28 100644 --- a/models/SimpleUI2.model +++ b/models/SimpleUI2.model @@ -30,5 +30,5 @@ out screen.widgets(widgets: Map, addTextInput(wid: Str)) = insert(widgets, wid, {"type": "textInput", "text": "", "state": 0}) } channel Init { - out screen.widgets(widgets: Map, init(_tmp)) = insert(widgets, "0", {"type": "button", "text": "OK", "state": 0}) + out screen.widgets(widgets: Map, init(_tmp)) = insert(widgets, "0", {"type": "textInput", "text": "OK", "state": 0}) } diff --git a/src/main/java/com/example/test/dtram/Dtram.java b/src/main/java/com/example/test/dtram/Dtram.java index c591777..e6ea8a1 100644 --- a/src/main/java/com/example/test/dtram/Dtram.java +++ b/src/main/java/com/example/test/dtram/Dtram.java @@ -84,25 +84,6 @@ } } - public void testEvent() { - try { - Parser.TokenStream stream = new Parser.TokenStream(); - Parser p = new Parser(stream); - stream.addLine("textEvent(\"aiueo\")"); - Expression eventMessage = p.parseTerm(stream, model); - ResourcePath eventResPath = null; - DataTransferChannel textEventChannel = (DataTransferChannel) model.getInputChannel("TextEvent"); - for(ChannelMember out : textEventChannel.getOutputChannelMembers()) { - eventResPath = out.getResource(); - } - Event newEvent = new Event(textEventChannel, eventMessage, eventResPath, simulator.getCurState().getResource("screen.widgets.0.text")); - simulator.transition(newEvent); - } catch (ExpectedRightBracket | WrongJsonExpression | ExpectedColon | ParameterizedIdentifierIsFutureWork | ResolvingMultipleDefinitionIsFutureWork | InvalidMessage | UnificationFailed | ValueUndefined e) { - // TODO 自動生成された catch ブロック - e.printStackTrace(); - } - } - public void onRestEvent(String id, String method, JsonTerm message) { elements.get("\"" + id + "\"").onRestEvent(method, message); } diff --git a/src/main/java/com/example/test/rest_controllers/ElementsController.java b/src/main/java/com/example/test/rest_controllers/ElementsController.java index 58ee20c..431b16b 100644 --- a/src/main/java/com/example/test/rest_controllers/ElementsController.java +++ b/src/main/java/com/example/test/rest_controllers/ElementsController.java @@ -5,26 +5,31 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; -import com.example.test.services.ButtonService; +import com.example.test.services.ElementEventService; @RestController @RequestMapping("/api/elements") public class ElementsController { - private final ButtonService buttonService; + private final ElementEventService elementEventService; - ElementsController(ButtonService bs){ - buttonService = bs; + ElementsController(ElementEventService bs){ + elementEventService = bs; } @PostMapping("/buttonPressed") public void buttonPressed(@RequestParam("id") String id) { - buttonService.onButtonPressed(id); + elementEventService.onButtonPressed(id); } @PostMapping("/buttonReleased") public void buttonReleased(@RequestParam("id") String id) { - buttonService.onButtonReleased(id); + elementEventService.onButtonReleased(id); + } + + @PostMapping("/textChanged") + public void textChanged(@RequestParam("id") String id, @RequestParam("new_text") String newText) { + elementEventService.onTextChanged(id, newText); } } diff --git a/src/main/java/com/example/test/rest_controllers/OpenModelController.java b/src/main/java/com/example/test/rest_controllers/OpenModelController.java index 220f365..f15e62c 100644 --- a/src/main/java/com/example/test/rest_controllers/OpenModelController.java +++ b/src/main/java/com/example/test/rest_controllers/OpenModelController.java @@ -22,10 +22,4 @@ modelService.openModel(path); } - @PostMapping("/test_event") - public void testEvent() { - modelService.testEvent(); - } - - } diff --git a/src/main/java/com/example/test/services/ButtonService.java b/src/main/java/com/example/test/services/ButtonService.java deleted file mode 100644 index da6117c..0000000 --- a/src/main/java/com/example/test/services/ButtonService.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.example.test.services; - -import org.springframework.stereotype.Service; - -import com.example.test.dtram.Dtram; - -@Service -public class ButtonService { - - private final Dtram dtram; - - ButtonService(Dtram dtram) { - this.dtram = dtram; - } - - public void onButtonPressed(String id) { - dtram.onRestEvent(id, "onMousePressed", null); - } - - public void onButtonReleased(String id) { - dtram.onRestEvent(id, "onMouseReleased", null); - } - -} diff --git a/src/main/java/com/example/test/services/ElementEventService.java b/src/main/java/com/example/test/services/ElementEventService.java new file mode 100644 index 0000000..5750d9f --- /dev/null +++ b/src/main/java/com/example/test/services/ElementEventService.java @@ -0,0 +1,33 @@ +package com.example.test.services; + +import org.springframework.stereotype.Service; + +import com.example.test.dtram.Dtram; + +import models.algebra.Constant; +import models.dataConstraintModel.JsonTerm; + +@Service +public class ElementEventService { + + private final Dtram dtram; + + ElementEventService(Dtram dtram) { + this.dtram = dtram; + } + + public void onButtonPressed(String id) { + dtram.onRestEvent(id, "onMousePressed", null); + } + + public void onButtonReleased(String id) { + dtram.onRestEvent(id, "onMouseReleased", null); + } + + public void onTextChanged(String id, String newText) { + JsonTerm json = new JsonTerm(); + json.addMember("newText", new Constant(newText)); + dtram.onRestEvent(id, "onTextChanged", json); + } + +} diff --git a/src/main/java/com/example/test/services/ModelHandleService.java b/src/main/java/com/example/test/services/ModelHandleService.java index c8c854b..4ef8ee8 100644 --- a/src/main/java/com/example/test/services/ModelHandleService.java +++ b/src/main/java/com/example/test/services/ModelHandleService.java @@ -18,8 +18,4 @@ dtram.startSimulator(); } - public void testEvent() { - dtram.testEvent(); - } - } diff --git a/src/main/resources/static/simulator_ws.js b/src/main/resources/static/simulator_ws.js index 34dd0e4..019fc72 100644 --- a/src/main/resources/static/simulator_ws.js +++ b/src/main/resources/static/simulator_ws.js @@ -62,6 +62,14 @@ button.addEventListener("mousedown", buttonPressed); button.addEventListener("mouseup", buttonReleased); break; + case "label": + container.insertAdjacentHTML("beforeend", `

${text}

`); + break; + case "textInput": + container.insertAdjacentHTML("beforeend", ``); + let text_input = document.getElementById(id); + text_input.addEventListener("input", textChanged); + break; } } } @@ -90,6 +98,18 @@ }); } +function textChanged(event) { + const data = {id: event.target.id, new_text: event.target.value}; + const formBody = new URLSearchParams(data); + fetch(`${apiUrl}/elements/textChanged`, { + method: 'POST', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + }, + body: formBody.toString() + }); +} + socket.onopen = function(event) { console.log("open socket"); }