nlp.prototype.NewJFrame.java Source code

Java tutorial

Introduction

Here is the source code for nlp.prototype.NewJFrame.java

Source

/*
 * 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
}