Skip to content
Snippets Groups Projects
CanvasPanel.java 2.91 KiB
Newer Older
  • Learn to ignore specific revisions
  • tjc's avatar
    tjc committed
    /* CanvasPanel.java
     *
     * created: Sat Jun 17 2000
     *
     * This file is part of Artemis
     *
     * Copyright(C) 2000  Genome Research Limited
     *
     * This program is free software; you can redistribute it and/or
     * modify it under the terms of the GNU General Public License
     * as published by the Free Software Foundation; either version 2
     * of the License, or(at your option) any later version.
     *
     * This program is distributed in the hope that it will be useful,
     * but WITHOUT ANY WARRANTY; without even the implied warranty of
     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     * GNU General Public License for more details.
     *
     * You should have received a copy of the GNU General Public License
     * along with this program; if not, write to the Free Software
     * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
     *
    
     * $Header: //tmp/pathsoft/artemis/uk/ac/sanger/artemis/components/CanvasPanel.java,v 1.5 2009-02-06 14:58:40 tjc Exp $
    
    tjc's avatar
    tjc committed
     */
    
    package uk.ac.sanger.artemis.components;
    
    
    import java.awt.BorderLayout;
    import java.awt.FontMetrics;
    import javax.swing.JPanel;
    
    tjc's avatar
    tjc committed
    
    /**
     *  This is a JPanel that contains a JPanel containing a JComponent.  Both Panels
     *  have BorderLayout.  The JComponent is added at "Center".
     *
     *  @author Kim Rutherford <kmr@sanger.ac.uk>
    
     *  @version $Id: CanvasPanel.java,v 1.5 2009-02-06 14:58:40 tjc Exp $
    
    tjc's avatar
    tjc committed
     **/
    
    abstract public class CanvasPanel extends JPanel 
    {
      /** The height of the font used in this component. */
      private int font_ascent;
    
      /** descent of the font used in this component. */
      private int font_descent;
    
    
      /** The (maximum) width of the font used in this component. */
    
    tjc's avatar
    tjc committed
      private int font_width;
    
      /**
       *  Create a new JPanel(mid_panel) and a JComponent.
       **/
      public CanvasPanel() 
      {
        setLayout(new BorderLayout());
        setFontInfo();
      }
    
      /**
       *  Set font_width and font_ascent from the default font.
       **/
      private void setFontInfo() 
      {
        FontMetrics fm = getFontMetrics(getFont());
    
        // find the width of a wide character
        font_width = fm.charWidth('M');
        font_ascent = fm.getAscent();
        font_descent = fm.getDescent();
      }
    
      /**
       *  Return the width of our font, as calculated by setFontInfo().
       **/
    
      protected int getFontWidth() 
    
    tjc's avatar
    tjc committed
      {
        return font_width;
      }
    
      /**
       *  Return the ascent(height above the baseline) of our font, as calculated
       *  by setFontInfo().
       **/
    
      protected int getFontAscent() 
    
    tjc's avatar
    tjc committed
      {
        return font_ascent;
      }
    
      /**
       *  Return the max ascent(height above the baseline) of our font, as
       *  calculated by setFontInfo().
       **/
    
      protected int getFontMaxAscent() 
    
    tjc's avatar
    tjc committed
      {
        return font_ascent;
      }
    
      /**
       *  Return the descent of our font, as calculated by setFontInfo().
       **/
    
      protected int getFontDescent() 
    
    tjc's avatar
    tjc committed
      {
        return font_descent;
      }
    
      /**
       *  The max ascent + descent of the default font.
       **/
    
      protected int getFontHeight() 
    
    tjc's avatar
    tjc committed
      {
        return getFontMaxAscent() + getFontDescent();
      }
    
    }