/// <summary>
        /// Saves the results of applying the parser to the current text to
        /// the specified filename.
        /// </summary>
        public virtual void SaveOutput(string filename)
        {
            if (filename == null || filename.Equals(string.Empty))
            {
                return;
            }
            string                       text      = textPane.GetText();
            StringReader                 reader    = new StringReader(text);
            DocumentPreprocessor         processor = new DocumentPreprocessor(reader);
            ITokenizerFactory <IHasWord> tf        = tlp.GetTokenizerFactory();

            processor.SetTokenizerFactory(tf);
            IList <IList <IHasWord> > sentences = new List <IList <IHasWord> >();

            foreach (IList <IHasWord> sentence in processor)
            {
                sentences.Add(sentence);
            }
            JProgressBar progress = new JProgressBar(0, sentences.Count);
            JButton      cancel   = new JButton();
            JDialog      dialog   = new JDialog(new Frame(), "Parser Progress", true);

            dialog.SetSize(300, 150);
            dialog.Add(BorderLayout.North, new JLabel("Parsing " + sentences.Count + " sentences"));
            dialog.Add(BorderLayout.Center, progress);
            dialog.Add(BorderLayout.South, cancel);
            //dialog.add(progress);
            ParserPanel.SaveOutputThread thread = new ParserPanel.SaveOutputThread(this, filename, progress, dialog, cancel, sentences);
            cancel.SetText("Cancel");
            cancel.SetToolTipText("Cancel");
            cancel.AddActionListener(null);
            thread.Start();
            dialog.SetVisible(true);
        }
        public virtual string ShowListSelectionDialog(IList <string> files, Point location)
        {
            Frame frame = new Frame();
            //System.out.println(location);
            //frame.setLocation(location);
            JDialog dialog = new JDialog(frame, "Jar File Chooser", true);

            dialog.SetLocation(location);
            JList fileList = new JList(new Vector <string>(files));

            fileList.SetSelectionMode(ListSelectionModelConstants.SingleSelection);
            IMouseListener mouseListener = new _MouseAdapter_68(dialog);

            // double clicked
            fileList.AddMouseListener(mouseListener);
            JScrollPane scroll = new JScrollPane(fileList);
            JButton     okay   = new JButton();

            okay.SetText("Okay");
            okay.SetToolTipText("Okay");
            okay.AddActionListener(null);
            JButton cancel = new JButton();

            cancel.SetText("Cancel");
            cancel.SetToolTipText("Cancel");
            cancel.AddActionListener(null);
            GridBagLayout      gridbag     = new GridBagLayout();
            GridBagConstraints constraints = new GridBagConstraints();

            dialog.SetLayout(gridbag);
            constraints.gridwidth = GridBagConstraints.Remainder;
            constraints.fill      = GridBagConstraints.Both;
            constraints.weightx   = 1.0;
            constraints.weighty   = 1.0;
            gridbag.SetConstraints(scroll, constraints);
            dialog.Add(scroll);
            constraints.gridwidth = GridBagConstraints.Relative;
            constraints.fill      = GridBagConstraints.None;
            constraints.weighty   = 0.0;
            gridbag.SetConstraints(okay, constraints);
            dialog.Add(okay);
            constraints.gridwidth = GridBagConstraints.Remainder;
            gridbag.SetConstraints(cancel, constraints);
            dialog.Add(cancel);
            dialog.Pack();
            dialog.SetSize(dialog.GetPreferredSize());
            dialog.SetVisible(true);
            if (fileList.IsSelectionEmpty())
            {
                return(null);
            }
            return(files[fileList.GetSelectedIndex()]);
        }