From a8b33a48a1ecea7ff6c97bfd90050415b0798995 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A1n?= Date: Mon, 9 Sep 2019 02:36:58 +0200 Subject: [PATCH] Fix two JSON load and saving problems: * Fix root node never importing JSON loaded UI keyvalues data. * Fix changed notes being assigned to the root node indiscriminately, for any node being examined. --- .../jbui/controller/NodeDetailController.java | 23 +++++++++------ JBUI/src/jbui/model/IdSystemNode.java | 28 +++++++++---------- 2 files changed, 28 insertions(+), 23 deletions(-) diff --git a/JBUI/src/jbui/controller/NodeDetailController.java b/JBUI/src/jbui/controller/NodeDetailController.java index f28c2d2..72036fc 100644 --- a/JBUI/src/jbui/controller/NodeDetailController.java +++ b/JBUI/src/jbui/controller/NodeDetailController.java @@ -85,6 +85,7 @@ private SectionStringTreeItem(String text) private TextArea mNotesTextArea; public final IdSystemNode mProtocolSaveRootNode; + private IdSystemNode mSelectedNode; public NodeDetailController() { @@ -111,6 +112,7 @@ private void createCopyToClipboardMenu() @SuppressWarnings("unchecked") void init(IdSystemNode modelNode) { + mSelectedNode = modelNode; TreeItem strandsItem = new SectionStringTreeItem( JBUI.sInstance.mLocalizationResources.getString("ParticipantsStrands")); TreeItem intruderKItem = new SectionStringTreeItem( @@ -396,18 +398,21 @@ public void updateItem(String item, boolean empty) mNotesTextArea.textProperty().addListener((observable, oldText, newText) -> { - mProtocolSaveRootNode.mNotes = newText; - - if (mProtocolSaveFile != null) + if (newText != null) { - if (mNotesAutoSaveCheck.isSelected()) + mSelectedNode.mNotes = newText; + + if (mProtocolSaveFile != null) { - saveCurrentProtocol(); - return; - } + if (mNotesAutoSaveCheck.isSelected()) + { + saveCurrentProtocol(); + return; + } - mNotesSaveBtn.setDisable(false); - handleProtocolDataChanged(); + mNotesSaveBtn.setDisable(false); + handleProtocolDataChanged(); + } } }); } diff --git a/JBUI/src/jbui/model/IdSystemNode.java b/JBUI/src/jbui/model/IdSystemNode.java index 3820c2f..ea91a9c 100644 --- a/JBUI/src/jbui/model/IdSystemNode.java +++ b/JBUI/src/jbui/model/IdSystemNode.java @@ -76,12 +76,12 @@ static void parseJSONIdSystemArray(IdSystemNode startNode, int depth, JSONArray if (JBUI.getMaudeThinker().mRootIdSystemNode != null) { JBUI.getMaudeThinker().mRootIdSystemNode.mMsgElemSequences = node.mMsgElemSequences; - JBUI.getMaudeThinker().mRootIdSystemNode.parseUIKeys(jsonIdSystem); } else { JBUI.getMaudeThinker().mRootIdSystemNode = node; node.mUIController = JBUI.getMainController().createFXTreeLayout(node); + node.tryParseUIKeys(jsonIdSystem, parseUIKeys); JBUI.getMainController().mTreeExportItem.setDisable(false); } } @@ -117,11 +117,7 @@ static void parseJSONIdSystemArray(IdSystemNode startNode, int depth, JSONArray NonRootIdSystemNode node = new NonRootIdSystemNode(idElems.getLast(), jsonIdSystem); JBUI.getMaudeThinker().mRootIdSystemNode.insert(node, idElems); levelNodes.add(node); - - if (parseUIKeys) - { - node.parseUIKeys(jsonIdSystem); - } + ((IdSystemNode) node).tryParseUIKeys(jsonIdSystem, parseUIKeys); } startNode.inferLastReachableNodes(levelNodes, depth, startNode.getDepth()); @@ -302,19 +298,23 @@ public void outputIdAsJSONArray(JSONArray jsonArray) throws JSONException jsonArray.put(jsonId); } - void parseUIKeys(JSONObject jsonIdSystem) + private void tryParseUIKeys(JSONObject jsonIdSystem, boolean parseUIKeys) { - if (jsonIdSystem.optBoolean("isSelected")) + if (parseUIKeys) { - JBUI.getMainController().selectScreenNode(mUIController); - } + if (jsonIdSystem.optBoolean("isSelected")) + { + JBUI.getMainController().selectScreenNode(mUIController); + } - if (jsonIdSystem.optBoolean("isFolded")) - { - mUIController.fold(); + if (jsonIdSystem.optBoolean("isFolded")) + { + mUIController.fold(); + } + + mNotes = jsonIdSystem.optString("notes", null); } - mNotes = jsonIdSystem.optString("notes"); } protected String unparseId(String separator)