diff --git a/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/KorrekturHelper.java b/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/KorrekturHelper.java index b795f29..cdeaa72 100644 --- a/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/KorrekturHelper.java +++ b/src/main/java/de/tuDortmund/cs/rvs/pingger/korrekturHelper/KorrekturHelper.java @@ -301,14 +301,15 @@ public class KorrekturHelper private final JButton btn_toClipboard; + private final JPanel contentPanel, menuPanel; private String currentHtml = ""; /** The JFrame for this {@link KorrekturHelper} */ public final JFrame frm; - private final HtmlContext hc; + + private HtmlContext hc; private boolean inReset = false; - - private final LinkedHashSet nodes; + private LinkedHashSet nodes; /** * @param nodes Nodes @@ -316,16 +317,13 @@ public class KorrekturHelper */ public KorrekturHelper(LinkedHashSet nodes, HtmlContext hc) { - - this.nodes = nodes; - this.hc = hc; frm = new JFrame("Pinggers Korrektur Helper"); frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - var contentPanel = new JPanel(new BorderLayout(), true); + contentPanel = new JPanel(new BorderLayout(), true); /* * Menu Panel */ - var menuPanel = new JPanel(true); + menuPanel = new JPanel(true); menuPanel.setLayout(new BoxLayout(menuPanel, BoxLayout.X_AXIS)); var jtb_aot = new JToggleButton("Always on Top"); @@ -339,28 +337,20 @@ public class KorrekturHelper btn_toClipboard = new JButton("Copy to Clipboard"); btn_toClipboard.addActionListener(e -> copyToClipboard()); menuPanel.add(btn_toClipboard); + var btn_drop = new JButton("Open Schema"); + btn_drop.addActionListener(e -> fileDialog()); + menuPanel.add(btn_drop); var btn_reset = new JButton("Reset"); btn_reset.addActionListener(e -> reset()); menuPanel.add(btn_reset); contentPanel.add(menuPanel, BorderLayout.NORTH); - - /* - * Node-Panel with Scrollpane - */ - var panel = new JPanel(true); - panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); - var jsp = new JScrollPane(panel); - jsp.getVerticalScrollBar().setUnitIncrement(16); - Consumer c = n -> verifyClipboard(); - for (var n : nodes) - { - n.addChangeListener(c); - panel.add(n.getComponent()); - } - contentPanel.add(jsp, BorderLayout.CENTER); - + setNodes(nodes, hc); frm.setContentPane(contentPanel); frm.pack(); + if (frm.getHeight() > 900) + { + frm.setSize(frm.getWidth(), 900); + } } /** @@ -384,6 +374,29 @@ public class KorrekturHelper btn_toClipboard.setBackground(Color.GREEN); } + private void fileDialog() + { + var x = new JFileChooser(); + if (x.showOpenDialog(frm) == JFileChooser.APPROVE_OPTION) + { + var f = x.getSelectedFile(); + try ( + var in = new FileInputStream(f); + var isr = new InputStreamReader(in, StandardCharsets.UTF_8); + var br = new BufferedReader(isr, 1024 * 1024) + ) + { + var hc = new HtmlContext(); + var n = parseSchema(br, hc); + setNodes(n, hc); + } + catch (IOException e) + { + e.printStackTrace(); + } + } + } + /** * Resets the Input Mask */ @@ -395,6 +408,34 @@ public class KorrekturHelper verifyClipboard(); } + /** + * Set the Nodes and {@link HtmlContext} + * + * @param nodes nodes + * @param hc context + */ + public void setNodes(LinkedHashSet nodes, HtmlContext hc) + { + this.nodes = nodes; + this.hc = hc; + /* + * Node-Panel with Scrollpane + */ + var panel = new JPanel(true); + panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); + var jsp = new JScrollPane(panel); + jsp.getVerticalScrollBar().setUnitIncrement(16); + Consumer c = n -> verifyClipboard(); + for (var n : nodes) + { + n.addChangeListener(c); + panel.add(n.getComponent()); + } + contentPanel.removeAll(); + contentPanel.add(menuPanel, BorderLayout.NORTH); + contentPanel.add(jsp, BorderLayout.CENTER); + } + /** * Called on change of data or when the System signifies, the Clipboard changed */