From eae07e3e30ea95e8e09e25c1c15a2ac7107830cf Mon Sep 17 00:00:00 2001 From: James Ball Date: Thu, 16 Dec 2021 16:09:37 +0000 Subject: [PATCH] Save checkbox information in osci project --- src/main/java/sh/ball/gui/Controller.java | 40 ++++++++++++++++++++--- 1 file changed, 36 insertions(+), 4 deletions(-) diff --git a/src/main/java/sh/ball/gui/Controller.java b/src/main/java/sh/ball/gui/Controller.java index 3e69051..b56765c 100644 --- a/src/main/java/sh/ball/gui/Controller.java +++ b/src/main/java/sh/ball/gui/Controller.java @@ -766,6 +766,10 @@ public class Controller implements Initializable, FrequencyListener, MidiListene } // must be functions, otherwise they are not initialised + private List checkBoxes() { + return List.of(vectorCancellingCheckBox, bitCrushCheckBox, verticalDistortCheckBox, + horizontalDistortCheckBox, wobbleCheckBox, smoothCheckBox, traceCheckBox); + } private List checkBoxSliders() { return List.of(vectorCancellingSlider, bitCrushSlider, verticalDistortSlider, horizontalDistortSlider, wobbleSlider, smoothSlider, traceSlider); @@ -809,11 +813,27 @@ public class Controller implements Initializable, FrequencyListener, MidiListene Element root = document.createElement("project"); document.appendChild(root); + List checkBoxes = checkBoxes(); + List checkBoxSliders = checkBoxSliders(); + List checkBoxLabels = checkBoxLabels(); + List otherSliders = otherSliders(); + List otherLabels = otherLabels(); + Element sliders = document.createElement("sliders"); - appendSliders(checkBoxSliders(), checkBoxLabels(), sliders, document); - appendSliders(otherSliders(), otherLabels(), sliders, document); + appendSliders(checkBoxSliders, checkBoxLabels, sliders, document); + appendSliders(otherSliders, otherLabels, sliders, document); root.appendChild(sliders); + Element checkBoxesElement = document.createElement("checkBoxes"); + for (int i = 0; i < checkBoxes.size(); i++) { + Element checkBox = document.createElement(checkBoxLabels.get(i)); + checkBox.appendChild( + document.createTextNode(checkBoxes.get(i).selectedProperty().getValue().toString()) + ); + checkBoxesElement.appendChild(checkBox); + } + root.appendChild(checkBoxesElement); + TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(); DOMSource domSource = new DOMSource(document); @@ -834,10 +854,22 @@ public class Controller implements Initializable, FrequencyListener, MidiListene Document doc = documentBuilder.parse(new File("test.osci")); doc.getDocumentElement().normalize(); + List checkBoxes = checkBoxes(); + List checkBoxSliders = checkBoxSliders(); + List checkBoxLabels = checkBoxLabels(); + List otherSliders = otherSliders(); + List otherLabels = otherLabels(); + Element root = doc.getDocumentElement(); Element sliders = (Element) root.getElementsByTagName("sliders").item(0); - loadSliderValues(checkBoxSliders(), checkBoxLabels(), sliders); - loadSliderValues(otherSliders(), otherLabels(), sliders); + loadSliderValues(checkBoxSliders, checkBoxLabels, sliders); + loadSliderValues(otherSliders, otherLabels, sliders); + + Element checkBoxesElement = (Element) root.getElementsByTagName("checkBoxes").item(0); + for (int i = 0; i < checkBoxes.size(); i++) { + String value = checkBoxesElement.getElementsByTagName(checkBoxLabels.get(i)).item(0).getTextContent(); + checkBoxes.get(i).setSelected(Boolean.parseBoolean(value)); + } } catch (ParserConfigurationException | SAXException | IOException e) { e.printStackTrace(); }