From 68b4acab562a4c38c6581e8de1102d9619fcad8d Mon Sep 17 00:00:00 2001
From: Christos Christodoulopoulos <christos.c2009@gmail.com>
Date: Fri, 27 Feb 2015 20:16:23 -0600
Subject: [PATCH] Added reference lists in "tree edit"  - For now, simply lists
 of terminals/non-terminals  - Rearranged the entire panel

---
 src/jubilee/toolkit/JBOpenDialog.java    |  1 +
 src/jubilee/toolkit/JBToolkit.java       | 28 +++++++++
 src/jubilee/toolkit/JBTreeEditPanel.java | 77 +++++++++++++++++++-----
 src/jubilee/util/DataManager.java        |  2 +-
 4 files changed, 93 insertions(+), 15 deletions(-)

diff --git a/src/jubilee/toolkit/JBOpenDialog.java b/src/jubilee/toolkit/JBOpenDialog.java
index ee810eb..96654b3 100644
--- a/src/jubilee/toolkit/JBOpenDialog.java
+++ b/src/jubilee/toolkit/JBOpenDialog.java
@@ -244,6 +244,7 @@ public class JBOpenDialog extends JDialog implements ActionListener, ItemListene
         StringTokenizer tok = new StringTokenizer((String)cb_projects.getSelectedItem(), ".");
         String corpusStr = tok.nextToken();
 		jbtk.initProperties(corpusStr, m_dataset);
+        jbtk.readReferenceMaterial();
 		
 		if (!ls_newTask.isSelectionEmpty()) {
             String[] tmp = getFileList(ls_newTask.getSelectedValue(), true);
diff --git a/src/jubilee/toolkit/JBToolkit.java b/src/jubilee/toolkit/JBToolkit.java
index 65460a7..a27c0d1 100644
--- a/src/jubilee/toolkit/JBToolkit.java
+++ b/src/jubilee/toolkit/JBToolkit.java
@@ -70,6 +70,10 @@ public class JBToolkit extends JFrame implements ActionListener, ItemListener, L
 	int i_currSetting = 0;		// current project setting (i.e. english.sample.path)
 	int i_maxAnn;
 
+    // Reference lists (shown during tree editing)
+    private ArrayList<String[]> terminalsList;
+    private ArrayList<String[]> nonTerminalsList;
+
 	static public String s_sysDir   = null;
 
     private static JBToolkit instance;
@@ -126,6 +130,14 @@ public class JBToolkit extends JFrame implements ActionListener, ItemListener, L
         new JBOpenDialog(this, false, i_maxAnn);
         setVisible(true);
     }
+
+    /**
+     * Reads and stores reference material (related to the annotation guidelines) for later use
+     */
+    public void readReferenceMaterial() {
+        terminalsList = DataManager.getContents("terminals.txt");
+        nonTerminalsList = DataManager.getContents("non-terminals.txt");
+    }
 	
 	// -------------------- initialize components --------------------
 	
@@ -558,4 +570,20 @@ public class JBToolkit extends JFrame implements ActionListener, ItemListener, L
 		
 		new JOptionPane().showMessageDialog(this, msg, "About", JOptionPane.INFORMATION_MESSAGE);
 	}
+
+    public String getTerminalsList() {
+        String listStr = "";
+        for (String[] strings : terminalsList) {
+            listStr += strings[0] + "\t" + strings[1] + "\n";
+        }
+        return listStr;
+    }
+
+    public String getNonTerminalsList() {
+        String listStr = "";
+        for (String[] strings : nonTerminalsList) {
+            listStr += strings[0] + "\t" + strings[1] + "\n";
+        }
+        return listStr;
+    }
 }
diff --git a/src/jubilee/toolkit/JBTreeEditPanel.java b/src/jubilee/toolkit/JBTreeEditPanel.java
index 4ee0be1..0a350b6 100644
--- a/src/jubilee/toolkit/JBTreeEditPanel.java
+++ b/src/jubilee/toolkit/JBTreeEditPanel.java
@@ -30,7 +30,6 @@ public class JBTreeEditPanel extends JFrame implements ActionListener {
 
         textArea = new JTextArea(annotation.getTbTree().toTextTree());
         textArea.setMargin(new Insets(10, 10, 10, 10));
-        textArea.setPreferredSize(new Dimension(498, 260));
 
         buttonApply = new JButton("Apply");
         buttonApply.addActionListener(this);
@@ -38,30 +37,80 @@ public class JBTreeEditPanel extends JFrame implements ActionListener {
         buttonCancel.addActionListener(this);
 
         JPanel buttonPanel = new JPanel();
-        buttonPanel.setLayout(new GridLayout(0, 2, 10, 0));
+        buttonPanel.setLayout(new BoxLayout(buttonPanel, BoxLayout.X_AXIS));
         buttonPanel.add(buttonApply);
+        buttonPanel.add(Box.createRigidArea(new Dimension(10, 0)));
         buttonPanel.add(buttonCancel);
 
         String sentStr = annotation.getTbTree().getSentence();
         String sentLabelStr = "<html>Sentence: <i>" + sentStr + "</i></html>";
         JLabel sentLabel = new JLabel(sentLabelStr);
 
-        fieldWordsNum = new JTextField(1);
-        fieldWordsNum.setPreferredSize(new Dimension(10, 20));
-        fieldWordPos = new JTextField(1);
+        fieldWordsNum = new JTextField();
+        fieldWordsNum.setMaximumSize(new Dimension(35, 20));
+        fieldWordsNum.setPreferredSize(new Dimension(35, 20));
+        fieldWordPos = new JTextField();
+        fieldWordPos.setMaximumSize(new Dimension(35, 20));
+        fieldWordPos.setPreferredSize(new Dimension(35, 20));
         JPanel addArgsPanel = new JPanel();
-        addArgsPanel.setLayout(new GridLayout(0, 4, 10, 0));
-        addArgsPanel.add(new JLabel("<html>#new words<br/>inserted</html>"));
+        addArgsPanel.setLayout(new BoxLayout(addArgsPanel, BoxLayout.X_AXIS));
+        addArgsPanel.add(new JLabel("#new words inserted"));
+        addArgsPanel.add(Box.createRigidArea(new Dimension(5, 0)));
         addArgsPanel.add(fieldWordsNum);
-        addArgsPanel.add(new JLabel("<html>#words before<br/>new word</html>"));
+        addArgsPanel.add(Box.createHorizontalGlue());
+        addArgsPanel.add(new JLabel("#words before new word"));
+        addArgsPanel.add(Box.createRigidArea(new Dimension(5, 0)));
         addArgsPanel.add(fieldWordPos);
+        addArgsPanel.setBorder(BorderFactory.createTitledBorder(
+                BorderFactory.createLineBorder(Color.BLACK), "Reposition SRL labels"));
 
         // Set layout and add components
-        setLayout(new FlowLayout());
-        add(new JScrollPane(textArea));
-        add(sentLabel);
-        add(addArgsPanel);
-        add(buttonPanel);
+        JPanel leftPanel = new JPanel();
+        leftPanel.setLayout(new BoxLayout(leftPanel, BoxLayout.Y_AXIS));
+
+        JScrollPane textScrollPane = new JScrollPane(textArea);
+        textScrollPane.setMaximumSize(new Dimension(390, 290));
+        textScrollPane.setPreferredSize(new Dimension(390, 290));
+        leftPanel.add(textScrollPane);
+        sentLabel.setAlignmentX(Component.CENTER_ALIGNMENT);
+        leftPanel.add(sentLabel);
+        leftPanel.add(Box.createRigidArea(new Dimension(0, 30)));
+        leftPanel.add(addArgsPanel);
+        buttonPanel.setAlignmentY(Component.BOTTOM_ALIGNMENT);
+        leftPanel.add(Box.createRigidArea(new Dimension(0, 20)));
+        leftPanel.add(buttonPanel);
+        leftPanel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
+
+        JPanel rightPanel = new JPanel();
+        rightPanel.setLayout(new BoxLayout(rightPanel, BoxLayout.Y_AXIS));
+        Dimension referenceDimension = new Dimension(290, 190);
+
+        JTextArea referenceNonTerminalsTextArea = new JTextArea(parent.getNonTerminalsList());
+        referenceNonTerminalsTextArea.setEditable(false);
+        JScrollPane referenceNonTerminalsScrollPane = new JScrollPane(referenceNonTerminalsTextArea);
+        referenceNonTerminalsScrollPane.setMinimumSize(referenceDimension);
+        referenceNonTerminalsScrollPane.setMaximumSize(referenceDimension);
+        referenceNonTerminalsScrollPane.setPreferredSize(referenceDimension);
+
+        JTextArea referenceTerminalsArea = new JTextArea(parent.getTerminalsList());
+        referenceTerminalsArea.setEditable(false);
+        JScrollPane referenceTerminalsScrollPane = new JScrollPane(referenceTerminalsArea);
+        referenceTerminalsScrollPane.setMinimumSize(referenceDimension);
+        referenceTerminalsScrollPane.setMaximumSize(referenceDimension);
+        referenceTerminalsScrollPane.setPreferredSize(referenceDimension);
+
+        rightPanel.add(new JLabel("Reference lists:"));
+        rightPanel.add(new JLabel("Non-Terminal labels"));
+        rightPanel.add(referenceNonTerminalsScrollPane);
+        rightPanel.add(new JLabel("Terminal labels"));
+        rightPanel.add(referenceTerminalsScrollPane);
+        rightPanel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
+
+        setLayout(new BoxLayout(getContentPane(), BoxLayout.X_AXIS));
+        leftPanel.setAlignmentY(Component.TOP_ALIGNMENT);
+        rightPanel.setAlignmentY(Component.TOP_ALIGNMENT);
+        add(leftPanel);
+        add(rightPanel);
 
         addWindowListener(new WindowAdapter() {
             @Override
@@ -70,7 +119,7 @@ public class JBTreeEditPanel extends JFrame implements ActionListener {
             }
         });
 
-        setBounds(20, 20, 500, 400);
+        setBounds(20, 20, 700, 480);
         setVisible(true);
     }
 
diff --git a/src/jubilee/util/DataManager.java b/src/jubilee/util/DataManager.java
index e03db5f..51fd2e0 100644
--- a/src/jubilee/util/DataManager.java
+++ b/src/jubilee/util/DataManager.java
@@ -76,7 +76,7 @@ public class DataManager {
                 String line = scan.nextLine().trim();
 				// skip comments and blank-lines
 				if (line.length() > 0 && line.charAt(0) != '#')
-					list.add(line.split(" "));
+					list.add(line.split("\\s+"));
 			}
 			
 			scan.close();
-- 
GitLab