Package edu.stanford.genetics.treeview.plugin.dendroview

Source Code of edu.stanford.genetics.treeview.plugin.dendroview.SummaryViewWizard$GeneListPanel$LineReader

/* BEGIN_HEADER                                              Java TreeView
*
* $Author: rqluk $
* $RCSfile: SummaryViewWizard.java,v $
* $Revision: 1.1 $
* $Date: 2006-08-16 19:13:45 $
* $Name:  $
*
* This file is part of Java TreeView
* Copyright (C) 2001-2003 Alok Saldanha, All Rights Reserved. Modified by Alex Segal 2004/08/13. Modifications Copyright (C) Lawrence Berkeley Lab.
*
* This software is provided under the GNU GPL Version 2. In particular,
*
* 1) If you modify a source file, make a comment in it containing your name and the date.
* 2) If you distribute a modified version, you must do it under the GPL 2.
* 3) Developers are encouraged but not required to notify the Java TreeView maintainers at alok@genome.stanford.edu when they make a useful addition. It would be nice if significant contributions could be merged into the main distribution.
*
* A full copy of the license can be found in gpl.txt or online at
* http://www.gnu.org/licenses/gpl.txt
*
* END_HEADER
*/
package edu.stanford.genetics.treeview.plugin.dendroview;

import javax.swing.*;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.text.*;

/**
* this class exposes a GUI for configuring a summary view.
*/

public class SummaryViewWizard extends JPanel {
  private DendroView dendroView;
  private GeneListPanel geneListPanel;
  private JRadioButton selectionButton, listButton;
 
  public SummaryViewWizard(DendroView dendroView) {
    this.dendroView = dendroView;
    setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
    geneListPanel = new GeneListPanel();

    selectionButton = new JRadioButton();
    selectionButton.setSelected(true);
    listButton = new JRadioButton();
    ButtonGroup group = new ButtonGroup();
    group.add(selectionButton);
    group.add(listButton);

    JPanel selectionPanel = new JPanel();
    selectionPanel.add(selectionButton);
    selectionPanel.add(new JLabel("Selected Genes"));

    JPanel listPanel = new JPanel();
    listPanel.add(listButton);
    listPanel.add(geneListPanel);
   
    add(selectionPanel);
    add(listPanel);
  }
 
  public int [] getIndexes() {
    if (listButton.isSelected()) {
      return geneListPanel.getIndexes();
    }
    return  dendroView.getGeneSelection().getSelectedIndexes();
  }
  class GeneListPanel extends JPanel {
    JTextArea textArea;
//  JTextField textArea;
    public GeneListPanel() {
      textArea  = new JTextArea("Paste one ID per row", 10, 50);
      textArea.append("\nNote: use Ctrl-V on mac (Java is cross-platform!?)");
//      textArea  = new JTextField("Paste one ID per row");
      textArea.setEditable(true);
      textArea.getDocument().addDocumentListener(new DocumentListener() {
        public void changedUpdate (DocumentEvent e) {
          listButton.setSelected(true);
        }
        public void insertUpdate (DocumentEvent e) {
          listButton.setSelected(true);
        }
        public void removeUpdate (DocumentEvent e) {
          listButton.setSelected(true);
        }
      });


      add(new JScrollPane(textArea));
    }
    public int [] getIndexes() {
      LineReader lineReader = new LineReader();
      String next = lineReader.readLine();
      int nLines = 0;
      while (next != null) {
        if (next.length() > 0) {
          nLines++;
        }
        next = lineReader.readLine();
      }
      String [] subStrings = new String[nLines];

      lineReader = new LineReader();
      next = lineReader.readLine();
      nLines = 0;
      while (next != null) {
        if (next.length() > 0) {
          subStrings[nLines++] = next;
        }
        next = lineReader.readLine();
      }
     
      dendroView.getViewFrame().getGeneFinder().findGenesById(subStrings);
      dendroView.getViewFrame().getGeneFinder().seekAll();
      return dendroView.getGeneSelection().getSelectedIndexes();
    }
    class LineReader {
      char[] lineTerminator = System.getProperty ("line.separator").toCharArray ();
      int documentPosition = 0;
      Segment seg = new Segment();
      public String readLine () {
        StringBuffer buf = new StringBuffer ();
        char[] save = new char[lineTerminator.length]; int pos = 0;
        Document doc = textArea.getDocument();
        try {
          doc.getText(documentPosition++, 1, seg);
        } catch (BadLocationException e) {
          return null;
        }
        int ch = seg.first();
        boolean done = false;
        do {
          if (ch == lineTerminator[pos]) {
            save[pos] = (char) ch;
            pos++;
          } else {
            // if a char in the line terminator is returned
            //   but one was skipped, then skip it by moving pos
            //   up by two
            if (pos + 1 < lineTerminator.length && ch == lineTerminator[pos + 1]) {
              pos += 2;
            } else {
              if (pos > 0) {
                buf.append (save, 0, pos);
                pos = 0;
              }
              buf.append ((char) ch);
            }
          }
          done = pos >= lineTerminator.length;
          try {
            doc.getText(documentPosition++, 1, seg);
          } catch (BadLocationException e) {
            done = true;
          }
          if (!done) ch = seg.first();
        } while (!done);
        String tempString = new String (buf);
        return (tempString.trim());
      }
    }
  }
}
TOP

Related Classes of edu.stanford.genetics.treeview.plugin.dendroview.SummaryViewWizard$GeneListPanel$LineReader

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.