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
}