Package charva.awt.util

Source Code of charva.awt.util.MultiLineLabel

/* class MultiLineLabel
*
* Copyright (C) 2001  R M Pitman
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*/

package charva.awt.util;

import java.util.Enumeration;
import java.util.Vector;

import charva.awt.Component;
import charva.awt.Dimension;
import charva.awt.Point;
import charva.awt.Toolkit;
import charva.awt.event.KeyEvent;

/**
* Implements a label that displays multiple lines of text.
*/
public class MultiLineLabel
    extends Component
{

    public MultiLineLabel(String[] textarray_) {
  for (int i=0; i<textarray_.length; i++)
      _labeltext.add(textarray_[i]);
    }

    public Dimension minimumSize() {
  int width=0, height=0;

  Enumeration<String> e = _labeltext.elements();
  while (e.hasMoreElements()) {
      String s = (String) e.nextElement();
      if (s.length() > width)
    width = s.length();
      height++;
  }

  return new Dimension(width, height);
    }

    public void draw(Toolkit toolkit) {

  /* Get the absolute origin of this component.
   */
  Point origin = getLocationOnScreen();


  // we'll sort out justification and video-attributes etc later.
  Enumeration<String> e = _labeltext.elements();
  for (int row=0; e.hasMoreElements(); row++) {
      String s = (String) e.nextElement();
      toolkit.setCursor(origin.addOffset(0, row));
      toolkit.addString(s, 0, 0);
  }
    }

    /**
     * This may be wrong, but it'll do for now.
     */
    public Dimension getSize() {
  return minimumSize();
    }

    public int getWidth() { return getSize().width; }
    public int getHeight() { return getSize().height; }

    public synchronized void setText(String[] textarray_) {
  _labeltext.removeAllElements();
  for (int i=0; i<textarray_.length; i++)
      _labeltext.add(textarray_[i]);

  /* If this component is already displayed, generate a PaintEvent
   * and post it onto the queue.
   */
  repaint();
    }

    public String[] getText() {
  String[] strings = new String[_labeltext.size()];
  Enumeration<String> e = _labeltext.elements();
  for (int i=0; e.hasMoreElements(); i++) {
      String s = (String) e.nextElement();
      strings[i] = s;
  }
  return strings;
    }

    /** This component will not receive focus when Tab or Shift-Tab is pressed.
     */
    public boolean isFocusTraversable() { return false; }

    /** The MultiLineLabel class ignores key events. A MultiLineLabel should
     * never have input focus anyway.
     */
    public void processKeyEvent(KeyEvent ke_) { }

    /**
     * The MultiLineLabel component never gets the keyboard input focus.
     */
    public void requestFocus() {}

    public void debug(int level_) {
  for (int i=0; i<level_; i++)
      System.err.print("    ");
  System.err.println("MultiLineLabel origin=" + _origin +
      " size=" + getSize() + " label=" + (String) _labeltext.elementAt(0));
    }

    private Vector<String> _labeltext = new Vector<String>();

    //private int _justification = LEFT;

    public static final int LEFT = 1;
    public static final int CENTER = 2;
    public static final int RIGHT = 3;
}
TOP

Related Classes of charva.awt.util.MultiLineLabel

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.