package ir.ac.iust.nlp.dependencyparser.inputoutput;
import experiments.Hypothesis1;
import ir.ac.iust.nlp.dependencyparser.BasePanel;
import ir.ac.iust.nlp.dependencyparser.enumeration.EmphasizeSearchHits;
import ir.ac.iust.nlp.dependencyparser.enumeration.SearchBy;
import ir.ac.iust.nlp.dependencyparser.enumeration.SearchIn;
import ir.ac.iust.nlp.dependencyparser.utility.ExampleFileFilter;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.image.BufferedImage;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.LinkedList;
import java.util.List;
import javax.imageio.ImageIO;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
import net.sourceforge.chart2d.*;
import org.maltparser.core.exception.MaltChainedException;
import org.maltparser.core.syntaxgraph.DependencyGraph;
import org.maltparser.core.syntaxgraph.DependencyStructure;
import se.vxu.msi.malteval.corpus.MaltWord;
import se.vxu.msi.malteval.exceptions.MaltEvalException;
import se.vxu.msi.malteval.treeviewer.MaltTreeViewerGui;
import se.vxu.msi.malteval.treeviewer.core.TreeViewerSentence;
import se.vxu.msi.malteval.treeviewer.gui.TreeViewer;
/**
*
* @author Mojtaba Khallash
*/
public final class ReadingPanel extends BasePanel {
ReadWriteCoNLL reader_writer = null;
boolean isInit = false;
List<DependencyGraph> graphs;
String dataFormatPath;
Hypothesis1 h1;
/**
* Creates new form ReadingPanel
*/
public ReadingPanel(String dir) {
super(dir);
initComponents();
setDrop();
setCurrentDirectory(dir);
try {
reader_writer = new ReadWriteCoNLL(dataFormatPath + "conllx.xml");
} catch (Exception ex) {
}
lblLess.setVisible(false);
pnlAdvancedParameter.setVisible(false);
}
public void setCurrentDirectory(String dir) {
dataFormatPath = dir + File.separator +
"appdata" + File.separator +
"dataformat" + File.separator;
txtInputFile.setText(dir + File.separator +
"Treebank" + File.separator +
"Persian" + File.separator +
"test.conll");
}
private void setDrop() {
initDrop(txtInputFile, false);
initDrop(txtFormatPath, false);
}
/**
* 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() {
buttonGroup1 = new javax.swing.ButtonGroup();
pnlParameter = new javax.swing.JPanel();
lblInputFile = new javax.swing.JLabel();
txtInputFile = new javax.swing.JTextField();
btnBrowseInputFile = new javax.swing.JButton();
pnlAdvancedParameter = new javax.swing.JPanel();
pnlDataFormat = new javax.swing.JPanel();
rbPredefinedFormat = new javax.swing.JRadioButton();
rbCustomFormat = new javax.swing.JRadioButton();
cboDataFormat = new javax.swing.JComboBox();
txtFormatPath = new javax.swing.JTextField();
btnBrowseDataFormat = new javax.swing.JButton();
lblCharSet = new javax.swing.JLabel();
cboCharSet = new javax.swing.JComboBox();
btnReadAll = new javax.swing.JToggleButton();
pnlMore = new javax.swing.JPanel();
lblMore = new javax.swing.JLabel();
lblLess = new javax.swing.JLabel();
tabDependencyInfo = 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();
chkIsProjective = new javax.swing.JCheckBox();
chkIsSingleHeaded = new javax.swing.JCheckBox();
lblRightParents = new javax.swing.JLabel();
txtRightParents = new javax.swing.JTextField();
txtRightArcs = new javax.swing.JTextField();
lblRightArcs = new javax.swing.JLabel();
txtProportion = new javax.swing.JTextField();
lblProportion = new javax.swing.JLabel();
lblNumbSenteces = new javax.swing.JLabel();
txtNumbSenteces = new javax.swing.JTextField();
lblTotalProportion = new javax.swing.JLabel();
txtTotalProportion = new javax.swing.JTextField();
btnMarkRPs = new javax.swing.JButton();
pnlLengthDistribution = new javax.swing.JPanel();
pnlNavigation = new javax.swing.JPanel();
btnPrev = new javax.swing.JButton();
sliderSentences = new javax.swing.JSlider();
btnNext = new javax.swing.JButton();
lblCurrentTotal = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jPanel8 = new javax.swing.JPanel();
addComponentListener(new java.awt.event.ComponentAdapter() {
public void componentResized(java.awt.event.ComponentEvent evt) {
ReadingPanel_Resized(evt);
}
});
pnlParameter.setBorder(javax.swing.BorderFactory.createTitledBorder("Parameter"));
lblInputFile.setText("Input File:");
txtInputFile.setEditable(false);
btnBrowseInputFile.setText("...");
btnBrowseInputFile.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnBrowseInputFile_Click(evt);
}
});
pnlDataFormat.setBorder(javax.swing.BorderFactory.createTitledBorder("Data Format"));
buttonGroup1.add(rbPredefinedFormat);
rbPredefinedFormat.setSelected(true);
rbPredefinedFormat.setText("Predefined Format");
buttonGroup1.add(rbCustomFormat);
rbCustomFormat.setText("Custom Format");
cboDataFormat.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "conll", "xml", "tab" }));
cboDataFormat.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent evt) {
cboDataFormat_StateChanged(evt);
}
});
txtFormatPath.setEditable(false);
btnBrowseDataFormat.setText("...");
javax.swing.GroupLayout pnlDataFormatLayout = new javax.swing.GroupLayout(pnlDataFormat);
pnlDataFormat.setLayout(pnlDataFormatLayout);
pnlDataFormatLayout.setHorizontalGroup(
pnlDataFormatLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(pnlDataFormatLayout.createSequentialGroup()
.addGap(20, 20, 20)
.addGroup(pnlDataFormatLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(rbPredefinedFormat)
.addComponent(rbCustomFormat))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(pnlDataFormatLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(pnlDataFormatLayout.createSequentialGroup()
.addComponent(txtFormatPath)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btnBrowseDataFormat, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(pnlDataFormatLayout.createSequentialGroup()
.addComponent(cboDataFormat, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 310, Short.MAX_VALUE)))
.addContainerGap())
);
pnlDataFormatLayout.setVerticalGroup(
pnlDataFormatLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(pnlDataFormatLayout.createSequentialGroup()
.addContainerGap()
.addGroup(pnlDataFormatLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(rbPredefinedFormat)
.addComponent(cboDataFormat, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addGroup(pnlDataFormatLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(rbCustomFormat)
.addComponent(txtFormatPath, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btnBrowseDataFormat))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
lblCharSet.setText("Char Set:");
cboCharSet.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "UTF-8" }));
javax.swing.GroupLayout pnlAdvancedParameterLayout = new javax.swing.GroupLayout(pnlAdvancedParameter);
pnlAdvancedParameter.setLayout(pnlAdvancedParameterLayout);
pnlAdvancedParameterLayout.setHorizontalGroup(
pnlAdvancedParameterLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(pnlDataFormat, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(pnlAdvancedParameterLayout.createSequentialGroup()
.addComponent(lblCharSet)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(cboCharSet, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 0, Short.MAX_VALUE))
);
pnlAdvancedParameterLayout.setVerticalGroup(
pnlAdvancedParameterLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(pnlAdvancedParameterLayout.createSequentialGroup()
.addComponent(pnlDataFormat, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(pnlAdvancedParameterLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(lblCharSet)
.addComponent(cboCharSet, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(0, 10, Short.MAX_VALUE))
);
btnReadAll.setText("Read All");
btnReadAll.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnReadAll_Click(evt);
}
});
pnlMore.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(240, 240, 240)));
lblMore.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
lblMore.setForeground(new java.awt.Color(153, 153, 153));
lblMore.setIcon(new javax.swing.ImageIcon(getClass().getResource("/ir/ac/iust/nlp/dependencyparser/evaluation/directional_down.png"))); // NOI18N
lblMore.setText(" More ");
lblMore.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
lblMore_mouseClick(evt);
}
public void mouseEntered(java.awt.event.MouseEvent evt) {
lblMorepnlMore_mouseEnter(evt);
}
public void mouseExited(java.awt.event.MouseEvent evt) {
lblMorepnlMore_mouseExit(evt);
}
});
lblLess.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
lblLess.setForeground(new java.awt.Color(153, 153, 153));
lblLess.setIcon(new javax.swing.ImageIcon(getClass().getResource("/ir/ac/iust/nlp/dependencyparser/evaluation/directional_up.png"))); // NOI18N
lblLess.setText(" Less");
lblLess.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
lblLess_mouseClick(evt);
}
public void mouseEntered(java.awt.event.MouseEvent evt) {
lblLesspnlMore_mouseEnter(evt);
}
public void mouseExited(java.awt.event.MouseEvent evt) {
lblLesspnlMore_mouseExit(evt);
}
});
javax.swing.GroupLayout pnlMoreLayout = new javax.swing.GroupLayout(pnlMore);
pnlMore.setLayout(pnlMoreLayout);
pnlMoreLayout.setHorizontalGroup(
pnlMoreLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, pnlMoreLayout.createSequentialGroup()
.addGap(8, 8, 8)
.addComponent(lblMore, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(lblLess)
.addContainerGap())
);
pnlMoreLayout.setVerticalGroup(
pnlMoreLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(pnlMoreLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(lblLess, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(lblMore, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE))
);
javax.swing.GroupLayout pnlParameterLayout = new javax.swing.GroupLayout(pnlParameter);
pnlParameter.setLayout(pnlParameterLayout);
pnlParameterLayout.setHorizontalGroup(
pnlParameterLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(pnlParameterLayout.createSequentialGroup()
.addContainerGap()
.addGroup(pnlParameterLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(pnlAdvancedParameter, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(pnlParameterLayout.createSequentialGroup()
.addComponent(lblInputFile)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(txtInputFile)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btnBrowseInputFile, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(pnlParameterLayout.createSequentialGroup()
.addComponent(pnlMore, 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(btnReadAll)))
.addContainerGap())
);
pnlParameterLayout.setVerticalGroup(
pnlParameterLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(pnlParameterLayout.createSequentialGroup()
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(pnlParameterLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(lblInputFile)
.addComponent(txtInputFile, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btnBrowseInputFile))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(pnlParameterLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(btnReadAll)
.addComponent(pnlMore, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(pnlAdvancedParameter, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
);
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, 318, 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, 59, Short.MAX_VALUE)
.addContainerGap())
);
tabDependencyInfo.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, 600, Short.MAX_VALUE)
);
pnlDTLayout.setVerticalGroup(
pnlDTLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 53, 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, 129, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 410, 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())
);
tabDependencyInfo.addTab("Tree", pnlTree);
tblCoNLL.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
},
new String [] {
"#", "Word Form", "Lemma", "POS Tag", "Feats", "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, java.lang.String.class, java.lang.String.class
};
boolean[] canEdit = new boolean [] {
false, false, 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(150);
tblCoNLL.getColumnModel().getColumn(2).setPreferredWidth(150);
tblCoNLL.getColumnModel().getColumn(3).setMinWidth(50);
tblCoNLL.getColumnModel().getColumn(3).setPreferredWidth(50);
tblCoNLL.getColumnModel().getColumn(4).setPreferredWidth(250);
tblCoNLL.getColumnModel().getColumn(5).setMinWidth(35);
tblCoNLL.getColumnModel().getColumn(5).setPreferredWidth(35);
tblCoNLL.getColumnModel().getColumn(6).setMinWidth(95);
tblCoNLL.getColumnModel().getColumn(6).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, 600, Short.MAX_VALUE)
.addContainerGap())
);
pnlCoNLLOutputLayout.setVerticalGroup(
pnlCoNLLOutputLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(pnlCoNLLOutputLayout.createSequentialGroup()
.addContainerGap()
.addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 79, Short.MAX_VALUE)
.addContainerGap())
);
tabDependencyInfo.addTab("Conll", pnlCoNLLOutput);
chkIsTree.setText("Is Tree");
chkIsTree.setEnabled(false);
chkIsConnected.setText("Is Connected");
chkIsConnected.setEnabled(false);
chkIsProjective.setText("Is Projective");
chkIsProjective.setEnabled(false);
chkIsSingleHeaded.setText("Is Single Headed");
chkIsSingleHeaded.setEnabled(false);
lblRightParents.setText("Number of Right Parents:");
txtRightParents.setEditable(false);
txtRightArcs.setEditable(false);
lblRightArcs.setText("Number of Right Arcs:");
txtProportion.setEditable(false);
lblProportion.setText("Proportion = RightParents / RightArcs:");
lblNumbSenteces.setText("Number of Senteces:");
txtNumbSenteces.setEditable(false);
lblTotalProportion.setText("Proportions / # Senteces");
txtTotalProportion.setEditable(false);
btnMarkRPs.setText("Mark Right Parents in Tree");
btnMarkRPs.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnMarkRPsActionPerformed(evt);
}
});
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)
.addGroup(pnlInfoLayout.createSequentialGroup()
.addComponent(chkIsProjective)
.addGap(0, 0, Short.MAX_VALUE))
.addGroup(pnlInfoLayout.createSequentialGroup()
.addGroup(pnlInfoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(chkIsSingleHeaded)
.addComponent(chkIsTree)
.addComponent(chkIsConnected))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(pnlInfoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(lblRightArcs, javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(lblRightParents, javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(lblProportion))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(pnlInfoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(txtRightArcs)
.addComponent(txtRightParents)
.addComponent(txtProportion, javax.swing.GroupLayout.PREFERRED_SIZE, 70, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(pnlInfoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(pnlInfoLayout.createSequentialGroup()
.addGap(43, 43, 43)
.addGroup(pnlInfoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(lblNumbSenteces)
.addComponent(lblTotalProportion))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(pnlInfoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(txtNumbSenteces)
.addComponent(txtTotalProportion, javax.swing.GroupLayout.DEFAULT_SIZE, 103, Short.MAX_VALUE)))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, pnlInfoLayout.createSequentialGroup()
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btnMarkRPs)))))
.addContainerGap())
);
pnlInfoLayout.setVerticalGroup(
pnlInfoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(pnlInfoLayout.createSequentialGroup()
.addContainerGap()
.addGroup(pnlInfoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(chkIsTree)
.addComponent(lblRightParents)
.addComponent(txtRightParents, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(lblNumbSenteces)
.addComponent(txtNumbSenteces, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(pnlInfoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(chkIsConnected)
.addComponent(txtRightArcs, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(lblRightArcs)
.addComponent(lblTotalProportion)
.addComponent(txtTotalProportion, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(pnlInfoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(chkIsSingleHeaded)
.addComponent(txtProportion, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(lblProportion)
.addComponent(btnMarkRPs))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(chkIsProjective)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
tabDependencyInfo.addTab("Information", pnlInfo);
javax.swing.GroupLayout pnlLengthDistributionLayout = new javax.swing.GroupLayout(pnlLengthDistribution);
pnlLengthDistribution.setLayout(pnlLengthDistributionLayout);
pnlLengthDistributionLayout.setHorizontalGroup(
pnlLengthDistributionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 620, Short.MAX_VALUE)
);
pnlLengthDistributionLayout.setVerticalGroup(
pnlLengthDistributionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 101, Short.MAX_VALUE)
);
tabDependencyInfo.addTab("Length Distribution", pnlLengthDistribution);
btnPrev.setText("Prev");
btnPrev.setEnabled(false);
btnPrev.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnPrev_Click(evt);
}
});
sliderSentences.setMaximum(0);
sliderSentences.setEnabled(false);
sliderSentences.addChangeListener(new javax.swing.event.ChangeListener() {
public void stateChanged(javax.swing.event.ChangeEvent evt) {
sliderSentences_StateChanged(evt);
}
});
btnNext.setText("Next");
btnNext.setEnabled(false);
btnNext.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnNext_Click(evt);
}
});
lblCurrentTotal.setText("-/-");
javax.swing.GroupLayout pnlNavigationLayout = new javax.swing.GroupLayout(pnlNavigation);
pnlNavigation.setLayout(pnlNavigationLayout);
pnlNavigationLayout.setHorizontalGroup(
pnlNavigationLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(pnlNavigationLayout.createSequentialGroup()
.addContainerGap()
.addComponent(btnPrev)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(sliderSentences, javax.swing.GroupLayout.DEFAULT_SIZE, 415, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(btnNext)
.addGap(76, 76, 76)
.addComponent(lblCurrentTotal)
.addContainerGap())
);
pnlNavigationLayout.setVerticalGroup(
pnlNavigationLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, pnlNavigationLayout.createSequentialGroup()
.addGap(0, 2, Short.MAX_VALUE)
.addGroup(pnlNavigationLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(sliderSentences, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(btnPrev, javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(pnlNavigationLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(lblCurrentTotal)
.addComponent(btnNext))))
);
jLabel2.setFont(new java.awt.Font("Tahoma", 1, 18)); // NOI18N
jLabel2.setText("Reading Corpus");
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)
.addComponent(pnlNavigation, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(tabDependencyInfo, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)
.addComponent(pnlParameter, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jPanel8, javax.swing.GroupLayout.DEFAULT_SIZE, 625, 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)
.addComponent(pnlParameter, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(tabDependencyInfo, javax.swing.GroupLayout.DEFAULT_SIZE, 129, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(pnlNavigation, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
);
}// </editor-fold>//GEN-END:initComponents
private void btnReadAll_Click(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnReadAll_Click
try {
if (isInit == false) {
isInit = true;
String input = txtInputFile.getText();
reader_writer.initRead(input, cboCharSet.getSelectedItem().toString());
graphs = reader_writer.readAll();
ComputeLenght(input);//////////////
// just conll format !!!!!!!!!!!!!!!!!!!!!
h1 = Hypothesis1.Run(input, false);
String format = cboDataFormat.getSelectedItem().toString();
gui = new MaltTreeViewerGui(
new String[] {txtInputFile.getText()}, format,
new String[] {txtInputFile.getText()}, format);
gui.setVisible(false);
initTreeGui();
btnPrev.setEnabled(false);
int size = graphs.size(); // gui.getSentenceCount() - 1
if (size > 1) {
btnNext.setEnabled(true);
}
else {
btnNext.setEnabled(false);
}
lblCurrentTotal.setText("1 / " + size); // gui.getCurrentSentence()
sliderSentences.setMinimum(0);
sliderSentences.setMaximum(size - 1);
sliderSentences.setValue(0);
sliderSentences.setEnabled(true);
txtNumbSenteces.setText(String.valueOf(size));
txtTotalProportion.setText(String.format("%.2f", h1.getTotalProportion()));
if (size == 1) {
UpdateTree(0);
}
}
} catch (MaltChainedException | MaltEvalException ex) {
JOptionPane.showMessageDialog(
null,
ex.getMessage(),
"Reading Error",
JOptionPane.ERROR_MESSAGE);
}
finally {
isInit = false;
}
}//GEN-LAST:event_btnReadAll_Click
private void cboDataFormat_StateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_cboDataFormat_StateChanged
String path = dataFormatPath;
if (rbPredefinedFormat.isSelected() == true) {
switch (cboDataFormat.getSelectedIndex()) {
// CoNLL X
case 0:
default:
path += "conllx.xml";
break;
//??????????? other format
}
} else {
path = txtFormatPath.getText();
}
try {
reader_writer = new ReadWriteCoNLL(path);
} catch (Exception ex) {
JOptionPane.showMessageDialog(
null,
ex.getMessage(),
"Data Format Error",
JOptionPane.ERROR_MESSAGE);
}
}//GEN-LAST:event_cboDataFormat_StateChanged
private void btnBrowseInputFile_Click(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnBrowseInputFile_Click
txtInputFile.setText(showFileDialog(txtInputFile.getText(), false));
}//GEN-LAST:event_btnBrowseInputFile_Click
private void cboViewMode_ValueChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_cboViewMode_ValueChanged
ChangeViewMode();
}//GEN-LAST:event_cboViewMode_ValueChanged
private void ReadingPanel_Resized(java.awt.event.ComponentEvent evt) {//GEN-FIRST:event_ReadingPanel_Resized
ChangeViewMode();
}//GEN-LAST:event_ReadingPanel_Resized
private void btnPrev_Click(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnPrev_Click
int val = sliderSentences.getValue();
int min = sliderSentences.getMinimum();
if (val > min) {
sliderSentences.setValue(val - 1);
}
}//GEN-LAST:event_btnPrev_Click
private void sliderSentences_StateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_sliderSentences_StateChanged
try {
UpdateTree(sliderSentences.getValue());
} catch (Exception ex) {
}
}//GEN-LAST:event_sliderSentences_StateChanged
private void btnNext_Click(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnNext_Click
int val = sliderSentences.getValue();
int max = sliderSentences.getMaximum();
if (val < max) {
sliderSentences.setValue(val + 1);
}
}//GEN-LAST:event_btnNext_Click
private void btnMarkRPsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnMarkRPsActionPerformed
boldRightParents();
tabDependencyInfo.getModel().setSelectedIndex(1);
}//GEN-LAST:event_btnMarkRPsActionPerformed
private void lblMore_mouseClick(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_lblMore_mouseClick
lblMore.setVisible(false);
lblLess.setVisible(true);
pnlAdvancedParameter.setVisible(true);
}//GEN-LAST:event_lblMore_mouseClick
private void lblMorepnlMore_mouseEnter(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_lblMorepnlMore_mouseEnter
pnlMore.setBackground(new Color(235, 232, 232));
pnlMore.setBorder(new javax.swing.border.LineBorder(new java.awt.Color(102, 102, 102), 1, false));
}//GEN-LAST:event_lblMorepnlMore_mouseEnter
private void lblMorepnlMore_mouseExit(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_lblMorepnlMore_mouseExit
pnlMore.setBackground(new Color(240, 240, 240));
pnlMore.setBorder(new javax.swing.border.LineBorder(new java.awt.Color(240, 240, 240), 1, false));
}//GEN-LAST:event_lblMorepnlMore_mouseExit
private void lblLess_mouseClick(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_lblLess_mouseClick
pnlAdvancedParameter.setVisible(false);
lblLess.setVisible(false);
lblMore.setVisible(true);
}//GEN-LAST:event_lblLess_mouseClick
private void lblLesspnlMore_mouseEnter(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_lblLesspnlMore_mouseEnter
pnlMore.setBackground(new Color(235, 232, 232));
pnlMore.setBorder(new javax.swing.border.LineBorder(new java.awt.Color(102, 102, 102), 1, false));
}//GEN-LAST:event_lblLesspnlMore_mouseEnter
private void lblLesspnlMore_mouseExit(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_lblLesspnlMore_mouseExit
pnlMore.setBackground(new Color(240, 240, 240));
pnlMore.setBorder(new javax.swing.border.LineBorder(new java.awt.Color(240, 240, 240), 1, false));
}//GEN-LAST:event_lblLesspnlMore_mouseExit
private void ChangeViewMode() {
if (gui != null) {
gui.changeViewMode(cboViewMode.getSelectedIndex() + 1);
}
}
@Override
public boolean canSave() {
return (tabDependencyInfo.getSelectedIndex() != 3);
}
public void ComputeLenght(String filePath) {
try{
int sum = 0;
List<Integer> lens = new LinkedList<>();
BufferedReader in = new BufferedReader(new FileReader(filePath));
String line;
int maxLen = 0;
int curLen = 0;
while( (line = in.readLine()) != null) {
if (line.length() != 0) {
sum++;
curLen++;
}
else {
lens.add(curLen);
if (maxLen < curLen) {
maxLen = curLen;
}
curLen = 0;
}
}
float[] lengths = new float[maxLen];
for (int i =0 ; i<lens.size(); i++){
lengths[lens.get(i) - 1]++;
}
DrawPlot(maxLen, lengths);
}
catch(Exception ex){
System.out.println("error:" + ex.getMessage());
}
}
public void DrawPlot(int maxLen, float[] lengths) {
//Configure object properties
Object2DProperties object2DProps = new Object2DProperties();
//Configure chart properties
Chart2DProperties chart2DProps = new Chart2DProperties();
chart2DProps.setChartDataLabelsPrecision (1);
//Configure legend properties
LegendProperties legendProps = new LegendProperties();
legendProps.setLegendExistence(false);
//Configure graph chart properties
GraphChart2DProperties graphChart2DProps = new GraphChart2DProperties();
String[] labelsAxisLabels = new String[maxLen];
for (int i=0; i<maxLen; i++) {
labelsAxisLabels[i] = String.valueOf(i+1);
}
graphChart2DProps.setLabelsAxisLabelsTexts (labelsAxisLabels);
graphChart2DProps.setLabelsAxisTitleText ("Length of Sentence");
graphChart2DProps.setNumbersAxisTitleText ("Number of Sentence");
graphChart2DProps.setLabelsAxisTicksAlignment (GraphChart2DProperties.CENTERED);
//Configure graph properties
GraphProperties graphProps = new GraphProperties();
graphProps.setGraphBarsExistence (false);
graphProps.setGraphLinesExistence (true);
graphProps.setGraphLinesThicknessModel (2);
graphProps.setGraphLinesWithinCategoryOverlapRatio (1f);
graphProps.setGraphDotsExistence (true);
graphProps.setGraphDotsThicknessModel (8);
graphProps.setGraphDotsWithinCategoryOverlapRatio (1f);
graphProps.setGraphAllowComponentAlignment (true);
//Configure dataset
Dataset dataset = new Dataset (1, maxLen, 1);
for (int i = 0; i < dataset.getNumSets(); ++i) {
for (int j = 0; j < dataset.getNumCats(); ++j) {
for (int k = 0; k < dataset.getNumItems(); ++k) {
dataset.set (i, j, k, lengths[j]);
}
}
}
//Configure graph component colors
MultiColorsProperties multiColorsProps = new MultiColorsProperties();
//Configure chart
LBChart2D chart2D = new LBChart2D();
chart2D.setObject2DProperties (object2DProps);
chart2D.setChart2DProperties (chart2DProps);
chart2D.setLegendProperties (legendProps);
chart2D.setGraphChart2DProperties (graphChart2DProps);
chart2D.addGraphProperties (graphProps);
chart2D.addDataset (dataset);
chart2D.addMultiColorsProperties (multiColorsProps);
//Optional validation: Prints debug messages if invalid only.
if (!chart2D.validate (false)) { chart2D.validate (true); }
pnlLengthDistribution.removeAll();
pnlLengthDistribution.setLayout(new GridLayout());
pnlLengthDistribution.add(chart2D);
pnlLengthDistribution.revalidate();
}
@Override
public void save() {
ExampleFileFilter filter;
switch (tabDependencyInfo.getSelectedIndex()) {
case 0:
// Output
filter = new ExampleFileFilter("txt", "Text Files");
saveText(filter, "Reading_log.txt", txtPlainOutput.getText());
break;
case 1:
// Tree
saveTree(0);
break;
case 2:
//CoNLL
if (gui != null) {
StringBuilder body = new StringBuilder();
TreeViewerSentence sentence = gui.getSentenceList().getSentence(gui.getCurrentSentence());
for(int i = 1; i<sentence.size(); i++){
MaltWord word = sentence.getWord(i);
body.append(String.format("%s %s %s %s %s _ %s %s _ _\n",
String.valueOf(i),
word.getForm(),
word.getLemma(),
word.getPostag(),
word.getFeats(),
String.valueOf(word.getHead()),
word.getDeprel()));
}
filter = new ExampleFileFilter("conll", "CoNLL Files");
saveText(filter, "dependency_graph.conll", body.toString());
}
break;
case 4:
if (pnlLengthDistribution.getComponentCount() > 0) {
LBChart2D chart2D = (LBChart2D)pnlLengthDistribution.getComponent(0);
BufferedImage lbImage = chart2D.getImage();
try {
ExampleFileFilter pngFilter = new ExampleFileFilter("png", "Portable Network Graphics Image Files");
ExampleFileFilter bmpFilter = new ExampleFileFilter("bmp", "Bitmap Image Files");
ExampleFileFilter jpgFilter = new ExampleFileFilter("jpg", "JPEG Compressed Image Files");
ExampleFileFilter gifFilter = new ExampleFileFilter("gif", "GIF Image Files");
//ExampleFileFilter wbmpFilter = new ExampleFileFilter("wbmp", "Wireless Bitmap Image Files");
ExampleFileFilter[] ffs = new ExampleFileFilter[] {pngFilter, bmpFilter, jpgFilter, gifFilter};
JFileChooser fc = showFileDialogWithFilters(".", true, ffs);
if (fc != null) {
String ext = ((ExampleFileFilter)fc.getFileFilter()).getFirstFilter();
ImageIO.write(lbImage, ext, new File(
fc.getSelectedFile().getAbsoluteFile() +
File.separator + "length_distribution." + ext));
}
}
catch(Exception ex) {}
}
break;
}
}
@Override
public void saveAs() {
save();
}
@Override
public void threadFinished() {
}
private void UpdateTree(int index) throws MaltChainedException {
txtRightParents.setText(String.valueOf(h1.getRightParentsCount(index)));
txtRightParents.setToolTipText(h1.getRightParents(index));
txtRightArcs.setText(String.valueOf(h1.getRightArcsCount(index)));
txtRightArcs.setToolTipText(h1.getRightArcs(index));
txtProportion.setText(String.valueOf(String.format("%.2f", h1.getProportion(index))));
gui.getCurrentSentenceListComponent().setSelectedSentence(index);
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();
DependencyGraph dg = graphs.get(index);
lblCurrentTotal.setText((index + 1) + " / " + graphs.size());
if (index == sliderSentences.getMaximum()) {
btnNext.setEnabled(false);
}
else {
btnNext.setEnabled(true);
}
if (index == sliderSentences.getMinimum()) {
btnPrev.setEnabled(false);
}
else {
btnPrev.setEnabled(true);
}
// Plain Output
txtPlainOutput.setText(dg.toString());
// Conll Output
DefaultTableModel model = (DefaultTableModel) tblCoNLL.getModel();
model.setRowCount(0);
TreeViewerSentence sentence = gui.getSentenceList().getSentence(gui.getCurrentSentence());
for(int i = 1; i<dg.nDependencyNode(); i++){
MaltWord word = sentence.getWord(i);
model.addRow(new String[]{
String.valueOf(i),
word.getForm(),
word.getLemma(),
word.getPostag(),
word.getFeats(),
String.valueOf(word.getHead()),
word.getDeprel()
});
}
// Information Output
DependencyStructure pdg = (DependencyStructure)dg;
chkIsTree.getModel().setSelected(pdg.isTree());
chkIsConnected.getModel().setSelected(pdg.isConnected());
chkIsSingleHeaded.getModel().setSelected(pdg.isSingleHeaded());
chkIsProjective.getModel().setSelected(pdg.isProjective());
}
private void boldRightParents() {
searchTree(sliderSentences.getValue(), SearchIn.Gold,
SearchBy.ArcDirection, "left", EmphasizeSearchHits.ForBoth);
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton btnBrowseDataFormat;
private javax.swing.JButton btnBrowseInputFile;
private javax.swing.JButton btnMarkRPs;
private javax.swing.JButton btnNext;
private javax.swing.JButton btnPrev;
private javax.swing.JToggleButton btnReadAll;
private javax.swing.ButtonGroup buttonGroup1;
private javax.swing.JComboBox cboCharSet;
private javax.swing.JComboBox cboDataFormat;
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 lblCharSet;
private javax.swing.JLabel lblCurrentTotal;
private javax.swing.JLabel lblIncomingArc;
private javax.swing.JLabel lblInputFile;
private javax.swing.JLabel lblLess;
private javax.swing.JLabel lblMore;
private javax.swing.JLabel lblNumbSenteces;
private javax.swing.JLabel lblOutgoingArc;
private javax.swing.JLabel lblProportion;
private javax.swing.JLabel lblRightArcs;
private javax.swing.JLabel lblRightParents;
private javax.swing.JLabel lblTotalProportion;
private javax.swing.JLabel lblViewMode;
private javax.swing.JPanel pnlAdvancedParameter;
private javax.swing.JPanel pnlCoNLLOutput;
private javax.swing.JPanel pnlDT;
private javax.swing.JPanel pnlDataFormat;
private javax.swing.JPanel pnlInfo;
private javax.swing.JPanel pnlLengthDistribution;
private javax.swing.JPanel pnlMore;
private javax.swing.JPanel pnlNavigation;
private javax.swing.JPanel pnlParameter;
private javax.swing.JPanel pnlPlainOutput;
private javax.swing.JPanel pnlTree;
private javax.swing.JRadioButton rbCustomFormat;
private javax.swing.JRadioButton rbPredefinedFormat;
private javax.swing.JSlider sliderSentences;
private javax.swing.JTabbedPane tabDependencyInfo;
private javax.swing.JTable tblCoNLL;
private javax.swing.JTextField txtFormatPath;
private javax.swing.JTextField txtInputFile;
private javax.swing.JTextField txtNumbSenteces;
private javax.swing.JTextArea txtPlainOutput;
private javax.swing.JTextField txtProportion;
private javax.swing.JTextField txtRightArcs;
private javax.swing.JTextField txtRightParents;
private javax.swing.JTextField txtTotalProportion;
// End of variables declaration//GEN-END:variables
}