git-svn-id: https://samskivert.googlecode.com/svn/trunk@922 6335cc39-0255-0410-8fd6-9bcaacd3b74c

This commit is contained in:
mdb
2002-11-12 01:15:19 +00:00
parent 1d87798f0f
commit 6d1e0d975a
@@ -1,5 +1,5 @@
// //
// $Id: MultiLineLabel.java,v 1.6 2002/10/04 21:28:23 shaper Exp $ // $Id: MultiLineLabel.java,v 1.7 2002/11/12 01:15:19 mdb Exp $
// //
// samskivert library - useful routines for java programs // samskivert library - useful routines for java programs
// Copyright (C) 2002 Walter Korman // Copyright (C) 2002 Walter Korman
@@ -38,6 +38,12 @@ import com.samskivert.util.StringUtil;
public class MultiLineLabel extends JComponent public class MultiLineLabel extends JComponent
implements SwingConstants, LabelStyleConstants implements SwingConstants, LabelStyleConstants
{ {
/** A layout constant used by {@link #setLayout}. */
public static final int GOLDEN = HORIZONTAL+VERTICAL+1;
/** A layout constant used by {@link #setLayout}. */
public static final int NONE = GOLDEN+1;
/** /**
* Constructs an empty multi line label. * Constructs an empty multi line label.
*/ */
@@ -48,34 +54,37 @@ public class MultiLineLabel extends JComponent
/** /**
* Constructs a multi line label that displays the supplied text with * Constructs a multi line label that displays the supplied text with
* center-alignment. * center-alignment. The default layout is all on one line.
*
* @see #setLayout
*/ */
public MultiLineLabel (String text) public MultiLineLabel (String text)
{ {
this(text, HORIZONTAL, CENTER); this(text, CENTER);
} }
/** /**
* Constructs a multi line label that displays the supplied text with * Constructs a multi line label that displays the supplied text with
* the specified alignment. The text will be laid out all on one * the specified alignment. The default layout is all on one line.
* line. *
* @see #setLayout
*/ */
public MultiLineLabel (String text, int align) public MultiLineLabel (String text, int align)
{ {
this(text, HORIZONTAL, align); this(text, align, NONE, 0);
} }
/** /**
* Constructs a multi line label that displays the supplied text with * Constructs a multi line label that displays the supplied text with
* the specified constraints and alignment. Constraints should be one * the specified alignment. The default layout is all on one line.
* of {@link #HORIZONTAL}, {@link #VERTICAL}, or <code>-1</code> if no *
* constraints are desired. * @see #setLayout
*/ */
public MultiLineLabel (String text, int constrain, int align) public MultiLineLabel (String text, int align, int constrain, int size)
{ {
_constrain = constrain;
_label = new Label(text); _label = new Label(text);
_label.setAlignment(align); _label.setAlignment(align);
noteConstraints(constrain, size);
} }
/** /**
@@ -91,14 +100,47 @@ public class MultiLineLabel extends JComponent
/** /**
* Sets the constraints to be used when laying out the label. * Sets the constraints to be used when laying out the label.
*
* @param constrain {@link #HORIZONTAL} or {@link #VERTICAL} or {@link
* #GOLDEN} if the label should be laid out in a rectangle whose
* bounds approximate the golden ratio.
* @param size the width or height respectively to be targeted by the
* label. This is ignored if <code>constrain</code> is {@link
* #GOLDEN}.
*/ */
public void setConstraints (int constrain) public void setLayout (int constrain, int size)
{ {
_constrain = constrain; noteConstraints(constrain, size);
_dirty = true; _dirty = true;
repaint(); repaint();
} }
/** Helper function. */
protected void noteConstraints (int constrain, int size)
{
switch (constrain) {
case HORIZONTAL:
_label.setTargetWidth(size);
break;
case VERTICAL:
_label.setTargetHeight(size);
break;
case GOLDEN:
_label.setGoldenLayout();
break;
case NONE:
// nothing doing
break;
default:
throw new IllegalArgumentException(
"Invalid constraint orientation " + constrain);
}
}
/** /**
* Sets the text displayed by this label. * Sets the text displayed by this label.
*/ */
@@ -194,10 +236,6 @@ public class MultiLineLabel extends JComponent
{ {
super.doLayout(); super.doLayout();
switch (_constrain) {
case HORIZONTAL: _label.setTargetWidth(getWidth()); break;
case VERTICAL: _label.setTargetHeight(getHeight()); break;
}
layoutLabel(); layoutLabel();
} }
@@ -244,9 +282,6 @@ public class MultiLineLabel extends JComponent
/** The label we're displaying. */ /** The label we're displaying. */
protected Label _label; protected Label _label;
/** The constraints we apply to the label text. */
protected int _constrain = HORIZONTAL;
/** The off-axis alignment with which the label is positioned. */ /** The off-axis alignment with which the label is positioned. */
protected int _offalign; protected int _offalign;