Package edu.stanford.genetics.treeview

Source Code of edu.stanford.genetics.treeview.LinkedViewFrame$FileOptionsPanel

/* BEGIN_HEADER                                              Java TreeView
*
* $Author: alokito $
* $RCSfile: LinkedViewFrame.java,v $
* $Revision: 1.51 $
* $Date: 2008-06-11 01:58:57 $
* $Name:  $
*s
* 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;


import java.io.File;
import java.util.Observer;

import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

import edu.stanford.genetics.treeview.app.LinkedViewApp;
import edu.stanford.genetics.treeview.core.PluginManager;
import edu.stanford.genetics.treeview.model.KnnModel;

/**
* This class implements the GUI portion of the LinkedView application
*
*/
public class LinkedViewFrame extends TreeViewFrame implements Observer
{




  private static String appName = "Java TreeView";
  public String getAppName() {
    return appName;
  }
  public LinkedViewFrame(LinkedViewApp treeview)
  {
    super(treeview, appName);
  }
  public LinkedViewFrame(TreeViewApp treeview, String subName)
  {
    // sorry this is so ugly, but can't call getAppName until
    // superclass constructor's done.
    super(treeview, subName);
  }
 
 

  private String getStyle(FileSet fileSet) {
    if (fileSet.getStyle() == FileSet.AUTO_STYLE) {
      return "auto";
    }
    if (fileSet.getStyle() == FileSet.CLASSIC_STYLE) {
      return "classic";
    }
    if (fileSet.getStyle() == FileSet.KMEANS_STYLE) {
      return "kmeans";
    }
    if (fileSet.getStyle() == FileSet.LINKED_STYLE) {
      return "linked";
    }
    return "unknown";
  }
 
  /**
   r     * This is the workhorse. It creates a new DataModel of the
   * file, and then sets the Datamodel.
   * A side effect of setting the datamodel is to
   * update the running window.
   */
  public void loadFileSet(FileSet fileSetthrows LoadException {
    LogBuffer.println("initial style " + getStyle(fileSet));
    if (fileSet.getStyle() == FileSet.AUTO_STYLE) {
      if (fileSet.getKag().equals("") && fileSet.getKgg().equals("")) {
        super.loadFileSet(fileSet); // loads into TVModel.
      } else {
        loadKnnModel(fileSet);
      }
    } else {
      if (fileSet.getStyle() == FileSet.KMEANS_STYLE) {
        loadKnnModel(fileSet);
      } else {
        super.loadFileSet(fileSet);
      }
    }
  }
 
  private void loadKnnModel(FileSet fileSet) throws LoadException {
    KnnModel knnModel = new KnnModel();
    knnModel.setFrame(this);
    try {
      knnModel.loadNew(fileSet);
      fileSet.setStyle(FileSet.KMEANS_STYLE);
      setDataModel(knnModel);
    } catch (LoadException e) {
      JOptionPane.showMessageDialog(this, e);
      throw e;
    }
  }
 
   protected void setupRunning() {
     FileSet fileSet = getDataModel().getFileSet();
     if (fileSet == null) {
       //default to linked
       fileSet = new FileSet(null,null);
       fileSet.setStyle(FileSet.LINKED_STYLE);
     } else if (fileSet.getStyle() == FileSet.AUTO_STYLE) {
       if (getDataModel().getDocumentConfigRoot().fetchFirst("Views") != null) {
         fileSet.setStyle(FileSet.LINKED_STYLE);
       } else {
         HeaderInfo geneHeaders = getDataModel().getGeneHeaderInfo();
         HeaderInfo arrayHeaders = getDataModel().getArrayHeaderInfo();

         if ((geneHeaders.getNumNames() > 4) || (arrayHeaders.getNumNames() > 3)) {
           fileSet.setStyle(FileSet.LINKED_STYLE);
         } else {
           fileSet.setStyle(FileSet.CLASSIC_STYLE);
         }
       }
     }
    
    
     if (fileSet.getStyle() == FileSet.LINKED_STYLE) {
       LinkedPanel linkedPanel  = new LinkedPanel(this);
       linkedPanel.addChangeListener(new ChangeListener() {
         public void stateChanged(ChangeEvent e) {
           // rebulid menus...?
           //         menuBar.rebuildMainPanel();
           rebuildMainPanelMenu();
         }
       });
       ConfigNode documentConfig = getDataModel().getDocumentConfigRoot();
       linkedPanel.setConfigNode(documentConfig.fetchOrCreate("Views"));
       running = linkedPanel;
     } else if (fileSet.getStyle() == FileSet.KMEANS_STYLE) {
      // make sure selection objects are set up before instantiating plugins
       PluginFactory [] plugins = PluginManager.getPluginManager().getPluginFactories();
       for (int j =0; j < plugins.length; j++) {
         if ("KnnDendrogram".equals(plugins[j].getPluginName())) {
           running = plugins[j].restorePlugin(null, this);
           break;
         }
       }
     } else  {
      // make sure selection objects are set up before instantiating plugins
       PluginFactory [] plugins = PluginManager.getPluginManager().getPluginFactories();
       for (int j =0; j < plugins.length; j++) {
         if ("Dendrogram".equals(plugins[j].getPluginName())) {
           running = plugins[j].restorePlugin(null, this);
           break;
         }
       }
     }
    LogBuffer.println("final style " + getStyle(fileSet));
    }
  
   /**
    * This class implements controls for file opening options.
    * It is factored into a separate class because it is used by
    * both the offerSelection() and offerUrlSelection dialogs.
    *
    * @author aloksaldanha
    *
    */
   private class FileOptionsPanel extends Box {
     private JComboBox dataList;
     private JCheckBox quoteBox;
     public FileOptionsPanel() {
       super(BoxLayout.Y_AXIS);
       dataList = new JComboBox(FileSet.getStyles())
       dataList.setEditable(false);
      
       JPanel stylePanel = new JPanel();
       JLabel style = new JLabel("Style:");
       stylePanel.add(style);
       stylePanel.add(dataList);
       
       JPanel quotePanel = new JPanel();
       quoteBox = new JCheckBox("Parse quoted strings");
       quotePanel.add(quoteBox);

       // values from last time...
       quoteBox.setSelected(fileMru.getParseQuotedStrings());
       dataList.setSelectedIndex(fileMru.getStyle());
       
       add(stylePanel);
       add(quotePanel);
       add(Box.createGlue());
       try {
         setBorder(BorderFactory.createTitledBorder("Options"));
       } catch (Exception e) {
         LogBuffer.println("Could not create border in LinkedViewFrame.offerSelection");
       }
     }
     public int getSelectedStyleIndex() {
       fileMru.setStyle(dataList.getSelectedIndex());
       return dataList.getSelectedIndex();
     }
    public boolean isQuoteSelected() {
      fileMru.setParseQuotedStrings(quoteBox.isSelected());
      return quoteBox.isSelected();
    }

   }
  /**
  * Open a dialog which allows the user to select a new data file
  *
  * @return The fileset corresponding to the dataset.
  */
  protected FileSet offerSelection()
  throws LoadException
  {
    FileSet fileSet1; // will be chosen...
    JFileChooser fileDialog = new JFileChooser();
    setupFileDialog(fileDialog);
    FileOptionsPanel boxPanel = new FileOptionsPanel();
    fileDialog.setAccessory(boxPanel);
    int retVal = fileDialog.showOpenDialog(this);
    if (retVal == JFileChooser.APPROVE_OPTION) {
      File chosen = fileDialog.getSelectedFile();
     
      fileSet1 = new FileSet(chosen.getName(), chosen.getParent()+File.separator);
    } else {
      throw new LoadException("File Dialog closed without selection...", LoadException.NOFILE);
    }
    fileSet1.setStyle(boxPanel.getSelectedStyleIndex());
    fileSet1.setParseQuotedStrings(boxPanel.isQuoteSelected());
    return fileSet1;
  }

    protected FileSet offerUrlSelection()
    throws LoadException
    {
      FileSet fileSet1;
      // get string from user...
      FileOptionsPanel boxPanel = new FileOptionsPanel();
      Box panel = new Box(BoxLayout.Y_AXIS);
      panel.add(boxPanel);
      panel.add(new JLabel("Enter a Url:"));
      String urlString = JOptionPane.showInputDialog(this, panel);
      if (urlString != null) {
        // must parse out name, parent + sep...
        int postfix = urlString.lastIndexOf("/") + 1;
        String name = urlString.substring(postfix);
        String parent = urlString.substring(0,postfix);
        fileSet1 = new FileSet(name, parent);
      } else {
        throw new LoadException("Input Dialog closed without selection...", LoadException.NOFILE);
      }
     
      fileSet1.setStyle(boxPanel.getSelectedStyleIndex());
      fileSet1.setParseQuotedStrings(boxPanel.isQuoteSelected());
      return fileSet1;
    }
}

TOP

Related Classes of edu.stanford.genetics.treeview.LinkedViewFrame$FileOptionsPanel

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.