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

Source Code of edu.stanford.genetics.treeview.plugin.dendroview.FontSelector

/* BEGIN_HEADER                                              Java TreeView
*
* $Author: alokito $
* $RCSfile: FontSelector.java,v $
* $Revision: 1.2 $
* $Date: 2008-06-11 01:58:57 $
* $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 java.awt.*;
import java.awt.event.*;

import edu.stanford.genetics.treeview.NatField;
/**
*  Allows selection of fonts for a FontSelectable
*
* @author     Alok Saldanha <alok@genome.stanford.edu>
* @version $Revision: 1.2 $ $Date: 2008-06-11 01:58:57 $
*/
public class FontSelector extends Panel {
  /**
   *
   */
  private static final long serialVersionUID = 1L;
  //FIXME deprecated method.
  public static final String[] fonts               = Toolkit.getDefaultToolkit().getFontList();
  /*
   *  {
   *  "Courier",
   *  "Default",
   *  "Dialog",
   *  "DialogInput",
   *  "Helvetica",
   *  "TimesRoman",
   *  "ZapfDingbats"
   *  };
   */
  private String title;
  private Choice font_choice;
  private Choice style_choice;
  private NatField size_field;
  private Button display_button;
  private Frame top;
  private Dialog d;
  private FontSelectable client;

  String size_prop, face_prop, style_prop;


  /**
   *  Place component using gridbaglayout
   *
   * @param  gbl     Layout to use
   * @param  comp    Compnent to layout
   * @param  x       x coordinate in layout
   * @param  y       y coordinate in layout
   * @param  width   width in layout
   * @param  anchor  anchor direction
   * @return         GridBagConstraints used
   */
  private GridBagConstraints
      place(GridBagLayout gbl, Component comp,
      int x, int y, int width, int anchor) {

  GridBagConstraints gbc  = new GridBagConstraints();
    gbc.gridx = x;
    gbc.gridy = y;
    gbc.gridwidth = width;
    gbc.anchor = anchor;
    gbc.fill = GridBagConstraints.BOTH;
    gbl.setConstraints(comp, gbc);
    return gbc;
  }



  /**
   *  Sets up widgets
   */
  private void setupWidgets() {
  GridBagLayout gbl  = new GridBagLayout();
    setLayout(gbl);

  Label font_label   = new Label("Font:", Label.LEFT);
    add(font_label);

    font_choice = new Choice();
    for (int i = 0; i < fonts.length; ++i) {
      font_choice.addItem(fonts[i]);
    }
    font_choice.select(client.getFace());
    add(font_choice);

  Label style_label  = new Label("Style:", Label.LEFT);
    add(style_label);

    style_choice = new Choice();
    for (int i = 0; i < styles.length; ++i) {
      style_choice.addItem(styles[i]);
    }
    style_choice.select(decode_style(client.getStyle()));
    add(style_choice);

  Label size_label   = new Label("Size:", Label.LEFT);
    add(size_label);

    size_field = new NatField(client.getPoints(), 3);
    add(size_field);

    display_button = new Button("Display");
    display_button.addActionListener(
      new ActionListener() {
        public void actionPerformed(ActionEvent actionEvent) {
        String string  = font_choice.getSelectedItem();
        int i          = encode_style(style_choice.getSelectedItem());
        int size       = size_field.getNat();
          client.setFace(string);
          client.setStyle(i);
          client.setPoints(size);
        }
      });
    add(display_button);

    place(gbl, font_label, 0, 0, 1, GridBagConstraints.WEST);
    place(gbl, font_choice, 1, 0, 1, GridBagConstraints.EAST);
    place(gbl, style_label, 0, 1, 1, GridBagConstraints.WEST);
    place(gbl, style_choice, 1, 1, 1, GridBagConstraints.EAST);
    place(gbl, size_label, 0, 2, 1, GridBagConstraints.WEST);
    place(gbl, size_field, 1, 2, 1, GridBagConstraints.EAST);
    place(gbl, display_button, 0, 3, 2, GridBagConstraints.WEST);
  }


//
// the allowed font styles
//
  /**
   *  Description of the Field
   */
  public final static String[] styles  = {
      "Plain",
      "Italic",
      "Bold",
      "Bold Italic"
      };

  /**
  * turn a style number from class java.awt.Font into a string
   *
   * @param  style  style index
   * @return        string description
   */
  public final static String decode_style(int style) {
    switch (style) {
            case Font.PLAIN:
              return styles[0];
            case Font.ITALIC:
              return styles[1];
            case Font.BOLD:
              return styles[2];
            default:
              return styles[3];
    }
  }

  /**
  * turn a string into a style number
   *
   * @param  style  string description
   * @return        integer encoded representation
   */
  public final static int encode_style(String style) {
    return
        style == styles[0] ? Font.PLAIN :
        style == styles[1] ? Font.ITALIC :
        style == styles[2] ? Font.BOLD :
        Font.BOLD + Font.ITALIC;
  }


  /**
   *  Constructor for the FontSelector object
   *
   * @param  fs    FontSelectable to modify
   * @param  name  Title for the titlebar
   */
  public FontSelector(FontSelectable fs, String name) {
    title = name;
    client = fs;
    setupWidgets();
  }


  /**
   *  Create a toplevel font selecting frame
   */
  public void makeTop() {
    top = new Frame(getTitle());
    top.add(this);
    top.addWindowListener(
      new WindowAdapter() {
        public void windowClosing(WindowEvent we) {
          we.getWindow().dispose();
        }
      });
    top.pack();
    top.setVisible(true);
  }


  /**
   *  Create a blocking font selecting dialog
   *
   * @param  f  frame to block
   */
  public void showDialog(Frame f) {
    d = new Dialog(f, getTitle());
    d.add(this);
    d.addWindowListener(
      new WindowAdapter() {
        public void windowClosing(WindowEvent we) {
          we.getWindow().dispose();
        }
      });
    d.pack();
    d.setVisible(true);
  }


  /**
   * @return    The title of this FontSelector
   */
  protected String getTitle() {
    return title;
  }
}
TOP

Related Classes of edu.stanford.genetics.treeview.plugin.dendroview.FontSelector

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.