Package edu.stanford.genetics.treeview.reg

Source Code of edu.stanford.genetics.treeview.reg.RegEditor

/* BEGIN_HEADER                                              Java TreeView
*
* $Author: alokito $
* $RCSfile: RegEditor.java,v $
* $Revision: 1.10 $
* $Date: 2008-06-11 01:58:58 $
* $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.reg;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.util.Hashtable;

import javax.swing.*;

import edu.stanford.genetics.treeview.BrowserControl;
import edu.stanford.genetics.treeview.TreeViewApp;

/**
*
* Allows users to edit their registration information prior to submission.
*
*  Should allow editing of the user-specified keys from the RegEngine,
* and display values of the auto-determined fields.
*
* Note that if the key ends with Okay, it will be treated as a boolean for display and editing purposes.
*
* @author aloksaldanha
*
*/
public class RegEditor extends JPanel {

  Entry dataSource;
  GridBagLayout gridbag;
  GridBagConstraints gbc;
  /**
   * @param entry
   */
  public RegEditor(Entry entry) {
    dataSource = entry;
    addWidgets();
  }
  /**
   *
   */
  private void addWidgets() {
//    setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
    gridbag = new GridBagLayout();
    gbc = new GridBagConstraints();
    gbc.fill = GridBagConstraints.HORIZONTAL;
    setLayout(gridbag);
    for (int i = 0; i <dataSource.getNumRegKeys(); i++) {
      gbc.gridy = i;
      addAttribute(i, dataSource.isEditable(i));
    }
  }
 
 
  Hashtable attr2val = new Hashtable();
  /**
   * @param i index of key corresponding to attribute
   * @param isEditable indicates whether attribute should be editable.
   */
  private void addAttribute(int i, boolean isEditable) {
    String key = dataSource.getRegKey(i);
    gbc.gridx = 0;
    if (isEditable) {
      JPanel inner = new JPanel();
      if (key.equals("contactOkay")) {
        Box inner2 = new Box(BoxLayout.Y_AXIS);
        inner2.add(new JLabel("May we contact you when new\n versions become available?"));
        inner2.add(new JLabel("(Note: a browser will open for mailing list signup)"));
/*
        inner2.add(new JLabel("To recieve annoucements about new versions, add yourself to"));
        inner2.add(new JLabel("the jtreeview-announce email list. This list is very  low"));
        inner2.add(new JLabel("volume (< 1 email/month)"));
        */
        inner.add(inner2);
      } else {
        inner.add(new JLabel(key));
      }
      JLabel star = new JLabel("*");
      star.setForeground(Color.red);
      inner.add(star);
      gridbag.setConstraints(inner, gbc);
      add(inner);
    } else {
      JLabel label = new JLabel(key);
      gridbag.setConstraints(label, gbc);
      add(label);
    }
    gbc.gridx = 1;
    if (key.equals("contactOkay2")) {
      // this code is never executed, since I decided to have the browser window
      // open when the reg dialog closes.
      Box box = new Box(BoxLayout.Y_AXIS);
      box.add(new JTextField(TreeViewApp.getAnnouncementUrl()));
      JButton yesB = new JButton("Open in browser");
      yesB.addActionListener(new ActionListener () {

        public void actionPerformed(ActionEvent arg0) {
          BrowserControl bc = BrowserControl.getBrowserControl();
          try {
            bc.displayURL(TreeViewApp.getAnnouncementUrl());
          } catch (IOException e) {
            JOptionPane.showMessageDialog(RegEditor.this, "Failed to upen url " + TreeViewApp.getAnnouncementUrl());
            e.printStackTrace();
          }
        }
       
      });
      box.add(yesB);
      gridbag.setConstraints(box, gbc);
      add(box);
    } else if (key.endsWith("Okay")) {
      JPanel box = new JPanel();
      ButtonGroup group = new ButtonGroup();
      JRadioButton yesB = new JRadioButton("Yes");
      JRadioButton noB = new JRadioButton("No");
      attr2val.put(key, yesB);
      group.add(yesB);
      group.add(noB);
      box.add(yesB);
      box.add(noB);
      if (dataSource.getRegValue(i).equals("N")) {
        noB.setSelected(true);
      } else {
        yesB.setSelected(true);
      }
      gridbag.setConstraints(box, gbc);
      add(box);
    } else {
      JTextField field =new JTextField(dataSource.getRegValue(i));
      attr2val.put(key, field);
      field.setEditable(isEditable);
      field.setEnabled(isEditable);
      gridbag.setConstraints(field, gbc);
      add(field);
    }
  }
  public String getAttribute(String attr) {
    Object control =  attr2val.get(attr);
    if (attr.endsWith("Okay")) {
      // boolean attribute
      if (((JRadioButton) control).isSelected()) {
        return "Y";
      } else {
        return "N";
      }
    } else {
      return ((JTextField) control).getText();
    }
  }


  /**
   *
   *Inner class to represent attributes.
   *
   *  @author aloksaldanha
   *
   */
  class AttributePanel extends JPanel {

    /**
     * @param i index of reg key to represent
     * @param isEditable indicates whether the user should be able to edit this entry.
     */
    public AttributePanel(int i, boolean isEditable) {
      add(new JLabel(dataSource.getRegKey(i)));
      add(new JTextField(dataSource.getRegValue(i)));
    }
  }

}
TOP

Related Classes of edu.stanford.genetics.treeview.reg.RegEditor

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.