package ir.ac.iust.nlp.dependencyparser.dependencygraph; import ir.ac.iust.nlp.dependencyparser.BasePanel; import ir.ac.iust.nlp.dependencyparser.utility.ExampleFileFilter; import java.awt.GridLayout; import java.io.File; import java.io.FileNotFoundException; import java.util.Formatter; import javax.swing.table.DefaultTableModel; import org.maltparser.core.exception.MaltChainedException; import org.maltparser.core.syntaxgraph.DependencyGraph; import org.maltparser.core.syntaxgraph.DependencyStructure; import se.vxu.msi.malteval.exceptions.MaltEvalException; import se.vxu.msi.malteval.treeviewer.MaltTreeViewerGui; import se.vxu.msi.malteval.treeviewer.gui.TreeViewer; /** * * @author Mojtaba Khallash */ public final class CreateDGPanel extends BasePanel { DependencyGraph graph; CreateDependencyGraph creator; String tempFolder; /** * Creates new form CreateDGPanel */ public CreateDGPanel(String dir) { super(dir); initComponents(); setCurrentDirectory(dir); try { creator = new CreateDependencyGraph(); } catch (Exception e) { System.err.println("MaltParser exception : " + e.getMessage()); } } public void setCurrentDirectory(String dir) { tempFolder = dir + File.separator + "tmp" + File.separator + "temp.conll"; } /** * This method is called from within the constructor to initialize the form. * WARNING: Do NOT modify this code. The content of this method is always * regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents private void initComponents() { pnlDependencyNode = new javax.swing.JPanel(); lblWordForm = new javax.swing.JLabel(); lblPOSTag = new javax.swing.JLabel(); txtWordForm = new javax.swing.JTextField(); cboPOSTag = new javax.swing.JComboBox(); btnAddNode = new javax.swing.JButton(); pnlDependencyRelation = new javax.swing.JPanel(); lblHead = new javax.swing.JLabel(); cboHead = new javax.swing.JComboBox(); lblModifier = new javax.swing.JLabel(); cboModifier = new javax.swing.JComboBox(); lblLabel = new javax.swing.JLabel(); cboLabel = new javax.swing.JComboBox(); btnAddEdge = new javax.swing.JToggleButton(); tabCreateDG = new javax.swing.JTabbedPane(); pnlPlainOutput = new javax.swing.JPanel(); lblIncomingArc = new javax.swing.JLabel(); lblOutgoingArc = new javax.swing.JLabel(); jScrollPane1 = new javax.swing.JScrollPane(); txtPlainOutput = new javax.swing.JTextArea(); pnlTree = new javax.swing.JPanel(); pnlDT = new javax.swing.JPanel(); lblViewMode = new javax.swing.JLabel(); cboViewMode = new javax.swing.JComboBox(); pnlCoNLLOutput = new javax.swing.JPanel(); jScrollPane2 = new javax.swing.JScrollPane(); tblCoNLL = new javax.swing.JTable(new DefaultTableModel()); pnlInfo = new javax.swing.JPanel(); chkIsTree = new javax.swing.JCheckBox(); chkIsConnected = new javax.swing.JCheckBox(); chkIsSingleHeaded = new javax.swing.JCheckBox(); chkIsProjective = new javax.swing.JCheckBox(); jLabel2 = new javax.swing.JLabel(); jPanel8 = new javax.swing.JPanel(); addHierarchyBoundsListener(new java.awt.event.HierarchyBoundsListener() { public void ancestorMoved(java.awt.event.HierarchyEvent evt) { } public void ancestorResized(java.awt.event.HierarchyEvent evt) { pnlCreateDGPannel_Resized(evt); } }); pnlDependencyNode.setBorder(javax.swing.BorderFactory.createTitledBorder("Dependency Node")); lblWordForm.setText("Word Form"); lblPOSTag.setText("POS Tag"); txtWordForm.addKeyListener(new java.awt.event.KeyAdapter() { public void keyReleased(java.awt.event.KeyEvent evt) { txtNode_keyReleased(evt); } }); cboPOSTag.setEditable(true); cboPOSTag.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "ADJ", "ADR", "ADV", "CONJ", "IDEN", "N", "PART", "POSNUM", "POSTP", "PR", "PREM", "PRENUM", "PREP", "PSUS", "PUNC", "V", "SUBR" })); cboPOSTag.setSelectedIndex(5); cboPOSTag.addKeyListener(new java.awt.event.KeyAdapter() { public void keyReleased(java.awt.event.KeyEvent evt) { txtNode_keyReleased(evt); } }); btnAddNode.setText("Add"); btnAddNode.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnAddNode_Click(evt); } }); javax.swing.GroupLayout pnlDependencyNodeLayout = new javax.swing.GroupLayout(pnlDependencyNode); pnlDependencyNode.setLayout(pnlDependencyNodeLayout); pnlDependencyNodeLayout.setHorizontalGroup( pnlDependencyNodeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, pnlDependencyNodeLayout.createSequentialGroup() .addGroup(pnlDependencyNodeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addGroup(pnlDependencyNodeLayout.createSequentialGroup() .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(btnAddNode)) .addGroup(pnlDependencyNodeLayout.createSequentialGroup() .addGap(24, 24, 24) .addGroup(pnlDependencyNodeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(pnlDependencyNodeLayout.createSequentialGroup() .addComponent(lblPOSTag) .addGap(18, 18, 18) .addComponent(cboPOSTag, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addGroup(pnlDependencyNodeLayout.createSequentialGroup() .addComponent(lblWordForm) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(txtWordForm))))) .addGap(24, 24, 24)) ); pnlDependencyNodeLayout.setVerticalGroup( pnlDependencyNodeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(pnlDependencyNodeLayout.createSequentialGroup() .addContainerGap() .addGroup(pnlDependencyNodeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(lblWordForm) .addComponent(txtWordForm, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(pnlDependencyNodeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(lblPOSTag) .addComponent(cboPOSTag, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(btnAddNode) .addGap(18, 18, 18)) ); pnlDependencyRelation.setBorder(javax.swing.BorderFactory.createTitledBorder("Dependency Relation (Edge)")); lblHead.setText("Head"); cboHead.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "ROOT" })); lblModifier.setText("Modifier"); cboModifier.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "ROOT" })); lblLabel.setText("Label"); cboLabel.setEditable(true); cboLabel.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "SBJ", "OBJ", "NVE", "ENC", "VPP", "OBJ2", "TAM", "MOS", "PROG", "ADVC", "VCL", "VPRT", "LVP", "PARCL", "ADV", "AJUCL", "PART", "VCONJ", "NPREMOD", "NPOSTMOD", "NPP", "NCL", "MOZ", "APP", "NCONJ", "NADV", "NE", "MESU", "NPRT", "COMPPP", "ADJADV", "ACL", "AJPP", "NEZ", "AJCONJ", "APREMOD", "APOSTMOD", "PREDEP", "POSDEP", "PCONJ", "AVCONJ", "PRD", "ROOT", "PUNC" })); btnAddEdge.setText("Add"); btnAddEdge.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnAddEdge_Click(evt); } }); javax.swing.GroupLayout pnlDependencyRelationLayout = new javax.swing.GroupLayout(pnlDependencyRelation); pnlDependencyRelation.setLayout(pnlDependencyRelationLayout); pnlDependencyRelationLayout.setHorizontalGroup( pnlDependencyRelationLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(pnlDependencyRelationLayout.createSequentialGroup() .addGap(22, 22, 22) .addGroup(pnlDependencyRelationLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addGroup(pnlDependencyRelationLayout.createSequentialGroup() .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 233, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(btnAddEdge)) .addGroup(pnlDependencyRelationLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(pnlDependencyRelationLayout.createSequentialGroup() .addComponent(lblHead) .addGap(30, 30, 30) .addComponent(cboHead, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addGroup(pnlDependencyRelationLayout.createSequentialGroup() .addGroup(pnlDependencyRelationLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(lblModifier) .addComponent(lblLabel)) .addGap(18, 18, 18) .addGroup(pnlDependencyRelationLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(cboModifier, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(cboLabel, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))))) .addGap(31, 31, 31)) ); pnlDependencyRelationLayout.setVerticalGroup( pnlDependencyRelationLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(pnlDependencyRelationLayout.createSequentialGroup() .addGroup(pnlDependencyRelationLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(lblHead) .addComponent(cboHead, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(pnlDependencyRelationLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(lblModifier) .addComponent(cboModifier, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(pnlDependencyRelationLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(lblLabel) .addComponent(cboLabel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(btnAddEdge) .addGap(0, 6, Short.MAX_VALUE)) ); lblIncomingArc.setText("[I:H] : Incoming Arc - Head"); lblOutgoingArc.setText("[O:list] : Outgoing Arc - Child(s)"); jScrollPane1.setEnabled(false); txtPlainOutput.setColumns(20); txtPlainOutput.setRows(5); txtPlainOutput.setEnabled(false); jScrollPane1.setViewportView(txtPlainOutput); javax.swing.GroupLayout pnlPlainOutputLayout = new javax.swing.GroupLayout(pnlPlainOutput); pnlPlainOutput.setLayout(pnlPlainOutputLayout); pnlPlainOutputLayout.setHorizontalGroup( pnlPlainOutputLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(pnlPlainOutputLayout.createSequentialGroup() .addContainerGap() .addGroup(pnlPlainOutputLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(pnlPlainOutputLayout.createSequentialGroup() .addComponent(lblIncomingArc) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 323, Short.MAX_VALUE) .addComponent(lblOutgoingArc)) .addComponent(jScrollPane1)) .addContainerGap()) ); pnlPlainOutputLayout.setVerticalGroup( pnlPlainOutputLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(pnlPlainOutputLayout.createSequentialGroup() .addContainerGap() .addGroup(pnlPlainOutputLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(lblIncomingArc) .addComponent(lblOutgoingArc)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 133, Short.MAX_VALUE) .addContainerGap()) ); tabCreateDG.addTab("Output", pnlPlainOutput); javax.swing.GroupLayout pnlDTLayout = new javax.swing.GroupLayout(pnlDT); pnlDT.setLayout(pnlDTLayout); pnlDTLayout.setHorizontalGroup( pnlDTLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 605, Short.MAX_VALUE) ); pnlDTLayout.setVerticalGroup( pnlDTLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 127, Short.MAX_VALUE) ); lblViewMode.setText("View Mode"); cboViewMode.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Inline Zoom", "Hierarchical Zoom", "NetGraph Zoom", "Inline Scroll" })); cboViewMode.setPreferredSize(new java.awt.Dimension(110, 20)); cboViewMode.addItemListener(new java.awt.event.ItemListener() { public void itemStateChanged(java.awt.event.ItemEvent evt) { cboViewMode_ValueChanged(evt); } }); javax.swing.GroupLayout pnlTreeLayout = new javax.swing.GroupLayout(pnlTree); pnlTree.setLayout(pnlTreeLayout); pnlTreeLayout.setHorizontalGroup( pnlTreeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(pnlTreeLayout.createSequentialGroup() .addContainerGap() .addGroup(pnlTreeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(pnlDT, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(pnlTreeLayout.createSequentialGroup() .addComponent(lblViewMode) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(cboViewMode, javax.swing.GroupLayout.PREFERRED_SIZE, 127, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 0, Short.MAX_VALUE))) .addContainerGap()) ); pnlTreeLayout.setVerticalGroup( pnlTreeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(pnlTreeLayout.createSequentialGroup() .addContainerGap() .addGroup(pnlTreeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(lblViewMode) .addComponent(cboViewMode, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(pnlDT, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addContainerGap()) ); tabCreateDG.addTab("Tree", pnlTree); tblCoNLL.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { }, new String [] { "#", "Word Form", "POS Tag", "Head", "Dependency Type" } ) { Class[] types = new Class [] { java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class }; boolean[] canEdit = new boolean [] { false, false, false, false, false }; public Class getColumnClass(int columnIndex) { return types [columnIndex]; } public boolean isCellEditable(int rowIndex, int columnIndex) { return canEdit [columnIndex]; } }); tblCoNLL.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF); tblCoNLL.getTableHeader().setReorderingAllowed(false); jScrollPane2.setViewportView(tblCoNLL); tblCoNLL.getColumnModel().getColumn(0).setMinWidth(30); tblCoNLL.getColumnModel().getColumn(0).setPreferredWidth(30); tblCoNLL.getColumnModel().getColumn(1).setPreferredWidth(300); tblCoNLL.getColumnModel().getColumn(2).setPreferredWidth(50); tblCoNLL.getColumnModel().getColumn(3).setMinWidth(35); tblCoNLL.getColumnModel().getColumn(3).setPreferredWidth(35); tblCoNLL.getColumnModel().getColumn(4).setMinWidth(95); tblCoNLL.getColumnModel().getColumn(4).setPreferredWidth(95); javax.swing.GroupLayout pnlCoNLLOutputLayout = new javax.swing.GroupLayout(pnlCoNLLOutput); pnlCoNLLOutput.setLayout(pnlCoNLLOutputLayout); pnlCoNLLOutputLayout.setHorizontalGroup( pnlCoNLLOutputLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(pnlCoNLLOutputLayout.createSequentialGroup() .addContainerGap() .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 605, Short.MAX_VALUE) .addContainerGap()) ); pnlCoNLLOutputLayout.setVerticalGroup( pnlCoNLLOutputLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(pnlCoNLLOutputLayout.createSequentialGroup() .addContainerGap() .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 153, Short.MAX_VALUE) .addContainerGap()) ); tabCreateDG.addTab("Conll", pnlCoNLLOutput); chkIsTree.setText("Is Tree"); chkIsTree.setEnabled(false); chkIsConnected.setText("Is Connected"); chkIsConnected.setEnabled(false); chkIsSingleHeaded.setText("Is Single Headed"); chkIsSingleHeaded.setEnabled(false); chkIsProjective.setText("Is Projective"); chkIsProjective.setEnabled(false); javax.swing.GroupLayout pnlInfoLayout = new javax.swing.GroupLayout(pnlInfo); pnlInfo.setLayout(pnlInfoLayout); pnlInfoLayout.setHorizontalGroup( pnlInfoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(pnlInfoLayout.createSequentialGroup() .addGap(16, 16, 16) .addGroup(pnlInfoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(chkIsProjective) .addComponent(chkIsSingleHeaded) .addComponent(chkIsConnected) .addComponent(chkIsTree)) .addContainerGap(504, Short.MAX_VALUE)) ); pnlInfoLayout.setVerticalGroup( pnlInfoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(pnlInfoLayout.createSequentialGroup() .addContainerGap() .addComponent(chkIsTree) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(chkIsConnected) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(chkIsSingleHeaded) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(chkIsProjective) .addContainerGap(67, Short.MAX_VALUE)) ); tabCreateDG.addTab("Information", pnlInfo); jLabel2.setFont(new java.awt.Font("Tahoma", 1, 18)); // NOI18N jLabel2.setText("Create Dependency Graph"); jPanel8.setBorder(javax.swing.BorderFactory.createEtchedBorder()); jPanel8.setPreferredSize(new java.awt.Dimension(380, 2)); javax.swing.GroupLayout jPanel8Layout = new javax.swing.GroupLayout(jPanel8); jPanel8.setLayout(jPanel8Layout); jPanel8Layout.setHorizontalGroup( jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 0, Short.MAX_VALUE) ); jPanel8Layout.setVerticalGroup( jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 0, Short.MAX_VALUE) ); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); this.setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(tabCreateDG, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) .addGroup(layout.createSequentialGroup() .addComponent(pnlDependencyNode, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(pnlDependencyRelation, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addComponent(jPanel8, javax.swing.GroupLayout.DEFAULT_SIZE, 630, Short.MAX_VALUE) .addGroup(layout.createSequentialGroup() .addComponent(jLabel2) .addGap(0, 0, Short.MAX_VALUE))) .addContainerGap()) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addComponent(jLabel2) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jPanel8, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(pnlDependencyNode, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(pnlDependencyRelation, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(tabCreateDG) .addContainerGap()) ); }// </editor-fold>//GEN-END:initComponents private void btnAddNode_Click(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnAddNode_Click try { creator.addDependencyNode(txtWordForm.getText(), cboPOSTag.getSelectedItem().toString()); cboHead.addItem(txtWordForm.getText()); cboModifier.addItem(txtWordForm.getText()); graph = creator.getDependencyGraph(); // Plain Output txtPlainOutput.setText(graph.toString()); // Conll Output DefaultTableModel model = (DefaultTableModel) tblCoNLL.getModel(); model.addRow(new String[]{ String.valueOf(model.getRowCount() + 1), txtWordForm.getText(), cboPOSTag.getSelectedItem().toString(), "", "" }); // Tree Output UpdateTree(); // Information Output DependencyStructure pdg = (DependencyStructure)graph; chkIsTree.getModel().setSelected(pdg.isTree()); chkIsConnected.getModel().setSelected(pdg.isConnected()); chkIsSingleHeaded.getModel().setSelected(pdg.isSingleHeaded()); chkIsProjective.getModel().setSelected(pdg.isProjective()); } catch (MaltChainedException | MaltEvalException e) { System.err.println("MaltParser exception : " + e.getMessage()); } }//GEN-LAST:event_btnAddNode_Click private void btnAddEdge_Click(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnAddEdge_Click try { creator.addDependencyEdge(cboHead.getSelectedIndex(), cboModifier.getSelectedIndex(), cboLabel.getSelectedItem().toString()); graph = creator.getDependencyGraph(); // Plain Output txtPlainOutput.setText(graph.toString()); // Conll Output DefaultTableModel model = (DefaultTableModel) tblCoNLL.getModel(); model.setValueAt(String.valueOf(cboHead.getSelectedIndex()), cboModifier.getSelectedIndex() - 1, 3); model.setValueAt(cboLabel.getSelectedItem().toString(), cboModifier.getSelectedIndex() - 1, 4); // Tree Output UpdateTree(); // Information Output DependencyStructure pdg = (DependencyStructure)graph; chkIsTree.getModel().setSelected(pdg.isTree()); chkIsConnected.getModel().setSelected(pdg.isConnected()); chkIsSingleHeaded.getModel().setSelected(pdg.isSingleHeaded()); chkIsProjective.getModel().setSelected(pdg.isProjective()); } catch (MaltChainedException | MaltEvalException e) { System.err.println("MaltParser exception : " + e.getMessage()); } }//GEN-LAST:event_btnAddEdge_Click private void pnlCreateDGPannel_Resized(java.awt.event.HierarchyEvent evt) {//GEN-FIRST:event_pnlCreateDGPannel_Resized ChangeViewMode(); }//GEN-LAST:event_pnlCreateDGPannel_Resized private void cboViewMode_ValueChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_cboViewMode_ValueChanged ChangeViewMode(); }//GEN-LAST:event_cboViewMode_ValueChanged private void txtNode_keyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_txtNode_keyReleased if(evt.getKeyCode() == 10) { btnAddNode.doClick(); } }//GEN-LAST:event_txtNode_keyReleased private void ChangeViewMode() { if (gui != null) { gui.changeViewMode(cboViewMode.getSelectedIndex() + 1); } } private void UpdateTree() throws MaltEvalException { WriteFile(tempFolder); String[] gold_files = new String[]{tempFolder}; String gold_format = "conll"; gui = new MaltTreeViewerGui(gold_files, gold_format, gold_files, gold_format); gui.setVisible(false); gui.changeViewMode(cboViewMode.getSelectedIndex() + 1); TreeViewer tv = gui.getMediators().get(0); javax.swing.JPanel pnl = tv.getSplitPane(); pnlDT.removeAll(); pnlDT.setLayout(new GridLayout()); pnlDT.add(pnl); pnlDT.revalidate(); initTreeGui(); } private void WriteFile(String fileName) { Formatter output = null; try { output = new Formatter(fileName); DefaultTableModel model = (DefaultTableModel) tblCoNLL.getModel(); for(int i = 0; i< model.getRowCount(); i++) { String word = model.getValueAt(i, 1).toString(); String pos = model.getValueAt(i, 2).toString(); String head = model.getValueAt(i, 3).toString(); if (head == null || head.isEmpty()) { head = "0"; } String dep_rel = model.getValueAt(i, 4).toString(); if (dep_rel == null || dep_rel.isEmpty()) { dep_rel = "ROOT"; } output.format("%d %s %s %s %s _ %s %s _ _\n", (i+1), word, word, pos, pos, head, dep_rel); } } catch (FileNotFoundException e) { } if(output!= null) { output.close(); } } @Override public boolean canSave() { return (tabCreateDG.getSelectedIndex() != 3); } @Override public void save() { ExampleFileFilter filter; switch (tabCreateDG.getSelectedIndex()) { case 0: // Output filter = new ExampleFileFilter("txt", "Text Files"); saveText(filter, "Create_DG_log.txt", txtPlainOutput.getText()); break; case 1: // Tree saveTree(0); break; case 2: //CoNLL StringBuilder body = new StringBuilder(); DefaultTableModel model = (DefaultTableModel) tblCoNLL.getModel(); for(int i = 0; i< model.getRowCount(); i++) { String word = model.getValueAt(i, 1).toString(); String pos = model.getValueAt(i, 2).toString(); String head = model.getValueAt(i, 3).toString(); if (head == null || head.isEmpty()) { head = "0"; } String dep_rel = model.getValueAt(i, 4).toString(); if (dep_rel == null || dep_rel.isEmpty()) { dep_rel = "ROOT"; } body.append(String.format("%d %s %s %s %s _ %s %s _ _\n", (i+1), word, word, pos, pos, head, dep_rel)); } filter = new ExampleFileFilter("conll", "CoNLL Files"); saveText(filter, "dependency_graph.conll", body.toString()); break; } } @Override public void saveAs() { save(); } @Override public void threadFinished() { } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JToggleButton btnAddEdge; private javax.swing.JButton btnAddNode; private javax.swing.JComboBox cboHead; private javax.swing.JComboBox cboLabel; private javax.swing.JComboBox cboModifier; private javax.swing.JComboBox cboPOSTag; private javax.swing.JComboBox cboViewMode; private javax.swing.JCheckBox chkIsConnected; private javax.swing.JCheckBox chkIsProjective; private javax.swing.JCheckBox chkIsSingleHeaded; private javax.swing.JCheckBox chkIsTree; private javax.swing.JLabel jLabel2; private javax.swing.JPanel jPanel8; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JScrollPane jScrollPane2; private javax.swing.JLabel lblHead; private javax.swing.JLabel lblIncomingArc; private javax.swing.JLabel lblLabel; private javax.swing.JLabel lblModifier; private javax.swing.JLabel lblOutgoingArc; private javax.swing.JLabel lblPOSTag; private javax.swing.JLabel lblViewMode; private javax.swing.JLabel lblWordForm; private javax.swing.JPanel pnlCoNLLOutput; private javax.swing.JPanel pnlDT; private javax.swing.JPanel pnlDependencyNode; private javax.swing.JPanel pnlDependencyRelation; private javax.swing.JPanel pnlInfo; private javax.swing.JPanel pnlPlainOutput; private javax.swing.JPanel pnlTree; private javax.swing.JTabbedPane tabCreateDG; private javax.swing.JTable tblCoNLL; private javax.swing.JTextArea txtPlainOutput; private javax.swing.JTextField txtWordForm; // End of variables declaration//GEN-END:variables }