Java tutorial
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package nlp.prototype; import nlp.model.GrammaticalRelation; import nlp.model.SentenceToken; import nlp.model.TextCorpus; import nlp.service.LanguageProcessor; import nlp.service.implementation.DefaultLanguageProcessor; import xsl.service.implementation.DefaultXslTransformService; import xsl.model.Expression; import xsl.service.FunctionParser; import xsl.service.implementation.DefaultFunctionParser; import owl.service.implementation.OwlExecutionService; import edu.stanford.nlp.hcoref.CorefCoreAnnotations.CorefChainAnnotation; import edu.stanford.nlp.hcoref.data.CorefChain; import edu.stanford.nlp.hcoref.data.CorefChain.CorefMention; import edu.stanford.nlp.ling.CoreAnnotations; import edu.stanford.nlp.ling.CoreLabel; import edu.stanford.nlp.pipeline.Annotation; import edu.stanford.nlp.pipeline.StanfordCoreNLP; import edu.stanford.nlp.semgraph.SemanticGraph; import edu.stanford.nlp.semgraph.SemanticGraphCoreAnnotations; import edu.stanford.nlp.semgraph.SemanticGraphEdge; import edu.stanford.nlp.trees.Tree; import edu.stanford.nlp.trees.TreeCoreAnnotations; import edu.stanford.nlp.util.CoreMap; import java.io.IOException; import java.nio.charset.Charset; import java.nio.file.Files; import java.nio.file.Paths; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.DefaultListModel; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeModel; import org.apache.commons.collections4.MultiValuedMap; import org.apache.commons.collections4.multimap.HashSetValuedHashMap; import org.w3c.dom.Document; /** * * @author ajadriano */ public class NewJFrame extends javax.swing.JFrame { private StanfordCoreNLP pipeline; private final OwlExecutionService executionService = new OwlExecutionService(""); private final LanguageProcessor processor = new DefaultLanguageProcessor(); /** * Creates new form NewJFrame */ public NewJFrame() { initComponents(); } public void setTree(Tree tree) { DefaultTreeModel model = (DefaultTreeModel) jTree1.getModel(); DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode("Hello"); rootNode.add(new DefaultMutableTreeNode(tree.label().value())); model.setRoot(rootNode); } /** * 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() { jScrollPane2 = new javax.swing.JScrollPane(); jTextArea1 = new javax.swing.JTextArea(); jButton1 = new javax.swing.JButton(); jTabbedPane1 = new javax.swing.JTabbedPane(); jPanel1 = new javax.swing.JPanel(); jScrollPane4 = new javax.swing.JScrollPane(); jList1 = new javax.swing.JList<>(); jScrollPane5 = new javax.swing.JScrollPane(); jTextArea3 = new javax.swing.JTextArea(); jPanel2 = new javax.swing.JPanel(); jScrollPane1 = new javax.swing.JScrollPane(); jTree1 = new javax.swing.JTree(); jScrollPane3 = new javax.swing.JScrollPane(); jTextArea2 = new javax.swing.JTextArea(); jPanel3 = new javax.swing.JPanel(); jScrollPane8 = new javax.swing.JScrollPane(); jTree2 = new javax.swing.JTree(); jScrollPane9 = new javax.swing.JScrollPane(); jTextArea5 = new javax.swing.JTextArea(); jPanel4 = new javax.swing.JPanel(); jScrollPane6 = new javax.swing.JScrollPane(); jTextArea4 = new javax.swing.JTextArea(); jPanel5 = new javax.swing.JPanel(); jScrollPane7 = new javax.swing.JScrollPane(); jTextArea6 = new javax.swing.JTextArea(); jPanel6 = new javax.swing.JPanel(); jScrollPane10 = new javax.swing.JScrollPane(); jTextArea7 = new javax.swing.JTextArea(); jButton2 = new javax.swing.JButton(); jButton3 = new javax.swing.JButton(); jButton4 = new javax.swing.JButton(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); setPreferredSize(new java.awt.Dimension(800, 600)); setSize(new java.awt.Dimension(800, 600)); addWindowListener(new java.awt.event.WindowAdapter() { public void windowOpened(java.awt.event.WindowEvent evt) { formWindowOpened(evt); } }); jTextArea1.setColumns(20); jTextArea1.setRows(5); jScrollPane2.setViewportView(jTextArea1); jButton1.setText("Parse"); jButton1.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { jButton1MouseClicked(evt); } }); jList1.addListSelectionListener(new javax.swing.event.ListSelectionListener() { public void valueChanged(javax.swing.event.ListSelectionEvent evt) { jList1ValueChanged(evt); } }); jScrollPane4.setViewportView(jList1); jTextArea3.setColumns(20); jTextArea3.setRows(5); jScrollPane5.setViewportView(jTextArea3); javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup(jPanel1Layout .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup().addContainerGap() .addComponent(jScrollPane4, javax.swing.GroupLayout.PREFERRED_SIZE, 302, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18) .addComponent(jScrollPane5, javax.swing.GroupLayout.DEFAULT_SIZE, 304, Short.MAX_VALUE) .addContainerGap())); jPanel1Layout .setVerticalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup().addContainerGap() .addGroup(jPanel1Layout .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jScrollPane4, javax.swing.GroupLayout.DEFAULT_SIZE, 333, Short.MAX_VALUE) .addComponent(jScrollPane5)) .addContainerGap())); jTabbedPane1.addTab("tab1", jPanel1); javax.swing.tree.DefaultMutableTreeNode treeNode1 = new javax.swing.tree.DefaultMutableTreeNode("root"); jTree1.setModel(new javax.swing.tree.DefaultTreeModel(treeNode1)); jTree1.addTreeSelectionListener(new javax.swing.event.TreeSelectionListener() { public void valueChanged(javax.swing.event.TreeSelectionEvent evt) { jTree1ValueChanged(evt); } }); jScrollPane1.setViewportView(jTree1); jTextArea2.setColumns(20); jTextArea2.setRows(5); jScrollPane3.setViewportView(jTextArea2); javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2); jPanel2.setLayout(jPanel2Layout); jPanel2Layout.setHorizontalGroup(jPanel2Layout .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel2Layout.createSequentialGroup().addContainerGap() .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 305, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(18, 18, 18) .addComponent(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 301, Short.MAX_VALUE) .addContainerGap())); jPanel2Layout .setVerticalGroup( jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel2Layout.createSequentialGroup().addContainerGap() .addGroup(jPanel2Layout .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 333, Short.MAX_VALUE) .addComponent(jScrollPane3)) .addContainerGap())); jTabbedPane1.addTab("tab2", jPanel2); treeNode1 = new javax.swing.tree.DefaultMutableTreeNode("root"); jTree2.setModel(new javax.swing.tree.DefaultTreeModel(treeNode1)); jTree2.addTreeSelectionListener(new javax.swing.event.TreeSelectionListener() { public void valueChanged(javax.swing.event.TreeSelectionEvent evt) { jTree2ValueChanged(evt); } }); jScrollPane8.setViewportView(jTree2); jTextArea5.setColumns(20); jTextArea5.setRows(5); jScrollPane9.setViewportView(jTextArea5); javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3); jPanel3.setLayout(jPanel3Layout); jPanel3Layout.setHorizontalGroup(jPanel3Layout .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel3Layout.createSequentialGroup().addContainerGap() .addComponent(jScrollPane8, javax.swing.GroupLayout.PREFERRED_SIZE, 305, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(33, 33, 33) .addComponent(jScrollPane9, javax.swing.GroupLayout.DEFAULT_SIZE, 286, Short.MAX_VALUE) .addContainerGap())); jPanel3Layout.setVerticalGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel3Layout.createSequentialGroup().addContainerGap() .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jScrollPane8, javax.swing.GroupLayout.DEFAULT_SIZE, 333, Short.MAX_VALUE) .addComponent(jScrollPane9, javax.swing.GroupLayout.DEFAULT_SIZE, 333, Short.MAX_VALUE)) .addContainerGap())); jTabbedPane1.addTab("tab3", jPanel3); jTextArea4.setColumns(20); jTextArea4.setRows(5); jScrollPane6.setViewportView(jTextArea4); javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4); jPanel4.setLayout(jPanel4Layout); jPanel4Layout.setHorizontalGroup(jPanel4Layout .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel4Layout.createSequentialGroup().addContainerGap() .addComponent(jScrollPane6, javax.swing.GroupLayout.DEFAULT_SIZE, 624, Short.MAX_VALUE) .addContainerGap())); jPanel4Layout.setVerticalGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel4Layout.createSequentialGroup().addContainerGap() .addComponent(jScrollPane6, javax.swing.GroupLayout.DEFAULT_SIZE, 333, Short.MAX_VALUE) .addContainerGap())); jTabbedPane1.addTab("tab4", jPanel4); jTextArea6.setColumns(20); jTextArea6.setRows(5); jScrollPane7.setViewportView(jTextArea6); javax.swing.GroupLayout jPanel5Layout = new javax.swing.GroupLayout(jPanel5); jPanel5.setLayout(jPanel5Layout); jPanel5Layout.setHorizontalGroup(jPanel5Layout .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel5Layout.createSequentialGroup().addContainerGap() .addComponent(jScrollPane7, javax.swing.GroupLayout.DEFAULT_SIZE, 624, Short.MAX_VALUE) .addContainerGap())); jPanel5Layout.setVerticalGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel5Layout.createSequentialGroup().addContainerGap() .addComponent(jScrollPane7, javax.swing.GroupLayout.DEFAULT_SIZE, 333, Short.MAX_VALUE) .addContainerGap())); jTabbedPane1.addTab("tab5", jPanel5); jTextArea7.setColumns(20); jTextArea7.setRows(5); jScrollPane10.setViewportView(jTextArea7); javax.swing.GroupLayout jPanel6Layout = new javax.swing.GroupLayout(jPanel6); jPanel6.setLayout(jPanel6Layout); jPanel6Layout.setHorizontalGroup(jPanel6Layout .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel6Layout.createSequentialGroup().addContainerGap() .addComponent(jScrollPane10, javax.swing.GroupLayout.DEFAULT_SIZE, 624, Short.MAX_VALUE) .addContainerGap())); jPanel6Layout.setVerticalGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel6Layout.createSequentialGroup().addContainerGap() .addComponent(jScrollPane10, javax.swing.GroupLayout.DEFAULT_SIZE, 333, Short.MAX_VALUE) .addContainerGap())); jTabbedPane1.addTab("tab6", jPanel6); jButton2.setText("Save"); jButton2.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { jButton2MouseClicked(evt); } }); jButton3.setText("Execute"); jButton3.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { jButton3MouseClicked(evt); } }); jButton4.setText("ReloadXSL"); jButton4.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { jButton4MouseClicked(evt); } }); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup().addContainerGap().addGroup(layout .createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addComponent(jTabbedPane1) .addComponent(jScrollPane2, javax.swing.GroupLayout.Alignment.TRAILING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup().addGap(0, 0, Short.MAX_VALUE).addComponent(jButton1) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jButton3) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jButton4) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jButton2))) .addContainerGap())); layout.setVerticalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup( javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup().addContainerGap() .addComponent(jScrollPane2, 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.BASELINE) .addComponent(jButton1).addComponent(jButton2).addComponent(jButton3) .addComponent(jButton4)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jTabbedPane1).addContainerGap())); pack(); }// </editor-fold>//GEN-END:initComponents private void formWindowOpened(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowOpened processor.initialize(); executionService.initialize("myontology"); pipeline = processor.getPipeline(); byte[] encoded; try { encoded = Files.readAllBytes(Paths.get("default.xslt")); this.jTextArea6.setText(new String(encoded, Charset.defaultCharset())); } catch (IOException ex) { Logger.getLogger(NewJFrame.class.getName()).log(Level.SEVERE, null, ex); } this.jTextArea1.setText( "A driver is any person that drives a vehicle. All buses are vehicles. A bus driver is any person that drives a bus. " + "Drivers are adults. A grown-up is any person that is an adult."); }//GEN-LAST:event_formWindowOpened private void jButton1MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jButton1MouseClicked DefaultTreeModel model2 = (DefaultTreeModel) jTree2.getModel(); DefaultMutableTreeNode rootNode2 = new DefaultMutableTreeNode("top"); model2.setRoot(rootNode2); /*TextCorpus textCorpus = processor.parseCorpus(jTextArea1.getText()); for (SentenceToken token : textCorpus.getSentences()) { DefaultMutableTreeNode sentenceTokenNode = new DefaultMutableTreeNode(); sentenceTokenNode.setUserObject(token); rootNode2.add(sentenceTokenNode); addNodes(token, sentenceTokenNode); } DefaultTokenSerializer serializer = new DefaultTokenSerializer(); Document xmlDocument = serializer.serialize(textCorpus); jTextArea4.setText(serializer.transform(xmlDocument)); jTextArea7.setText(serializer.transform(xmlDocument, this.jTextArea6.getText()));*/ Annotation document = new Annotation(jTextArea1.getText()); pipeline.annotate(document); List<CoreMap> sentences = document.get(CoreAnnotations.SentencesAnnotation.class); Map<Integer, CorefChain> corefMap = document.get(CorefChainAnnotation.class); List<CoreLabel> tokens = document.get(CoreAnnotations.TokensAnnotation.class); DefaultListModel listModel = new DefaultListModel(); for (Class key : document.keySet()) { Object value = document.get(key); if (value != null && value.toString() != null && !value.toString().isEmpty()) { listModel.addElement(key.toString() + " - [" + value.toString() + "]"); } } DefaultTreeModel model = (DefaultTreeModel) jTree1.getModel(); DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode("top"); model.setRoot(rootNode); List<POSToken> tokenList = new ArrayList<>(); jList1.setModel(listModel); for (CoreMap sentence : sentences) { Tree tree = sentence.get(TreeCoreAnnotations.TreeAnnotation.class); SemanticGraph graph = sentence.get(SemanticGraphCoreAnnotations.BasicDependenciesAnnotation.class); String root = graph.getFirstRoot().originalText(); MultiValuedMap<String, GrammarToken> map = new HashSetValuedHashMap<>(); for (SemanticGraphEdge edge : graph.edgeIterable()) { GrammarToken grammarToken = new GrammarToken(edge); map.put(grammarToken.getTarget(), grammarToken); } DefaultMutableTreeNode node = new DefaultMutableTreeNode(); POSToken token = new POSToken((CoreLabel) tree.label()); token.setGrammar(graph.toString()); node.setUserObject(token); rootNode.add(node); addNodes(tree, false, node, node, map, root, corefMap, tokens); tokenList.add(token); } setAdjacentNodes(tokenList); }//GEN-LAST:event_jButton1MouseClicked private void addNodes(nlp.model.Token parentToken, DefaultMutableTreeNode parentNode) { for (nlp.model.Token token : parentToken.getTokens()) { DefaultMutableTreeNode node = new DefaultMutableTreeNode(); node.setUserObject(token); parentNode.add(node); addNodes(token, node); } } private void jButton2MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jButton2MouseClicked executionService.commit(); }//GEN-LAST:event_jButton2MouseClicked private void jTree2ValueChanged(javax.swing.event.TreeSelectionEvent evt) {//GEN-FIRST:event_jTree2ValueChanged DefaultMutableTreeNode node = (DefaultMutableTreeNode) jTree2.getLastSelectedPathComponent(); if (node == null) return; Object obj = node.getUserObject(); if (obj instanceof nlp.model.Token) { nlp.model.Token wordToken = (nlp.model.Token) obj; StringBuilder sb = new StringBuilder(); sb.append("Index - "); sb.append(wordToken.getIndex()); sb.append("\n"); sb.append("Part of speech - "); sb.append(wordToken.getPartOfSpeech().getDescription()); sb.append("\n"); if (wordToken.getLemma() != null) { sb.append("Lemma - "); sb.append(wordToken.getLemma()); sb.append("\n"); } if (wordToken.getNamedEntityTag() != null) { sb.append("Named Entity - "); sb.append(wordToken.getNamedEntityTag()); sb.append("\n"); } if (wordToken.getCoreference() != null) { sb.append("Coreference - "); sb.append(wordToken.getCoreference()); sb.append("\n"); } if (wordToken.getFunctionTag().isPresent()) { sb.append("Function tag - "); sb.append(wordToken.getFunctionTag().get().getDescription()); sb.append("\n"); } sb.append("Text - "); sb.append(wordToken.getText()); sb.append("\n"); sb.append("Grammar\n"); if (wordToken.isGrammarRoot()) { sb.append("ROOT\n"); } if (wordToken.getTargetGrammaticalRelations() != null) { for (GrammaticalRelation<nlp.model.Token> relation : wordToken.getTargetGrammaticalRelations()) { sb.append(relation.getDependency().getDescription()); sb.append(" - "); sb.append(relation.getSource().getText()); sb.append("\n"); } } jTextArea5.setText(sb.toString()); } }//GEN-LAST:event_jTree2ValueChanged private void jTree1ValueChanged(javax.swing.event.TreeSelectionEvent evt) {//GEN-FIRST:event_jTree1ValueChanged DefaultMutableTreeNode node = (DefaultMutableTreeNode) jTree1.getLastSelectedPathComponent(); if (node == null) return; POSToken token = (POSToken) node.getUserObject(); jTextArea2.setText(token.getClasses()); }//GEN-LAST:event_jTree1ValueChanged private void jList1ValueChanged(javax.swing.event.ListSelectionEvent evt) {//GEN-FIRST:event_jList1ValueChanged /*DefaultListModel model = (DefaultListModel)jList1.getModel(); Token token = (Token) model.get(jList1.getSelectedIndex()); jTextArea3.setText(token.getClasses());*/ }//GEN-LAST:event_jList1ValueChanged private void jButton3MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jButton3MouseClicked /*String result = executionService.execute(this.jTextArea7.getText()); if (!result.isEmpty()) { StringBuilder sb = new StringBuilder(jTextArea1.getText()); sb.append("\n"); sb.append(result); jTextArea1.setText(sb.toString()); }*/ }//GEN-LAST:event_jButton3MouseClicked private void jButton4MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jButton4MouseClicked byte[] encoded; try { encoded = Files.readAllBytes(Paths.get("default.xslt")); this.jTextArea6.setText(new String(encoded, Charset.defaultCharset())); } catch (IOException ex) { Logger.getLogger(NewJFrame.class.getName()).log(Level.SEVERE, null, ex); } }//GEN-LAST:event_jButton4MouseClicked private void setAdjacentNodes(List<POSToken> tokens) { if (tokens == null) { return; } POSToken lastToken = null; for (POSToken token : tokens) { if (lastToken != null) { lastToken.setNextToken(token); token.setPreviousToken(lastToken); } lastToken = token; setAdjacentNodes(token.getChildren()); } } private void addNodes(Tree tree, boolean normalizeParent, DefaultMutableTreeNode grandParentNode, DefaultMutableTreeNode parentNode, MultiValuedMap<String, GrammarToken> map, String root, Map<Integer, CorefChain> corefMap, List<CoreLabel> tokens) { POSToken parentToken = (POSToken) parentNode.getUserObject(); POSToken grandParentToken = (POSToken) grandParentNode.getUserObject(); Tree[] children = tree.children(); if (children != null && children.length > 0) { for (Tree child : children) { POSToken childToken = new POSToken((CoreLabel) child.label()); DefaultMutableTreeNode node = new DefaultMutableTreeNode(); node.setUserObject(childToken); if (children.length == 1 && normalizeParent) { grandParentNode.remove(parentNode); grandParentNode.add(node); grandParentToken.removeChild(parentToken); grandParentToken.addChild(childToken); addNodes(child, true, grandParentNode, node, map, root, corefMap, tokens); } else { parentNode.add(node); parentToken.addChild(childToken); addNodes(child, true, parentNode, node, map, root, corefMap, tokens); } } } else { POSToken token = (POSToken) parentNode.getUserObject(); token.setGrammarToken(map.get(token.toString())); token.setIsRoot(token.toString().equals(root)); if (token.getCoref() != -1) { CorefMention mention = corefMap.get(token.getCoref()).getRepresentativeMention(); StringBuilder sb = new StringBuilder(); for (int i = mention.startIndex - 1; i < mention.endIndex - 1; i++) { sb.append(tokens.get(i).value()).append(" "); } token.setReference(sb.toString().trim()); } } } /** * @param args the command line arguments */ public static void main(String args[]) { /* Set the Nimbus look and feel */ //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) "> /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel. * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html */ try { for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { if ("Nimbus".equals(info.getName())) { javax.swing.UIManager.setLookAndFeel(info.getClassName()); break; } } } catch (ClassNotFoundException ex) { java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } catch (InstantiationException ex) { java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } catch (IllegalAccessException ex) { java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } catch (javax.swing.UnsupportedLookAndFeelException ex) { java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } //</editor-fold> /* Create and display the form */ java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new NewJFrame().setVisible(true); } }); } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton jButton1; private javax.swing.JButton jButton2; private javax.swing.JButton jButton3; private javax.swing.JButton jButton4; private javax.swing.JList<String> jList1; private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanel2; private javax.swing.JPanel jPanel3; private javax.swing.JPanel jPanel4; private javax.swing.JPanel jPanel5; private javax.swing.JPanel jPanel6; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JScrollPane jScrollPane10; private javax.swing.JScrollPane jScrollPane2; private javax.swing.JScrollPane jScrollPane3; private javax.swing.JScrollPane jScrollPane4; private javax.swing.JScrollPane jScrollPane5; private javax.swing.JScrollPane jScrollPane6; private javax.swing.JScrollPane jScrollPane7; private javax.swing.JScrollPane jScrollPane8; private javax.swing.JScrollPane jScrollPane9; private javax.swing.JTabbedPane jTabbedPane1; private javax.swing.JTextArea jTextArea1; private javax.swing.JTextArea jTextArea2; private javax.swing.JTextArea jTextArea3; private javax.swing.JTextArea jTextArea4; private javax.swing.JTextArea jTextArea5; private javax.swing.JTextArea jTextArea6; private javax.swing.JTextArea jTextArea7; private javax.swing.JTree jTree1; private javax.swing.JTree jTree2; // End of variables declaration//GEN-END:variables }