001 /*
002 * Copyright (c) Holger Pfaff - http://pfaff.ws
003 *
004 * This software maybe used for any purpose provided the
005 * above copyright notice is retained. It is supplied as is.
006 * No warranty expressed or implied - Use at your own risk.
007 */
008
009 import java.awt.*;
010 import java.awt.event.*;
011 import java.util.*;
012
013 /**
014 * (#)Triage.java
015 * @author Holger Pfaff
016 * @version 3.2 19-Mar-2004<br><br>
017 *
018 * My version of the awt choice widget
019 */
020
021 public class Triage extends MenuKnob {
022
023 /**
024 * String to prefix currently displayed choice with e.g. to
025 * change font, color etc.
026 */
027 protected String prefix = "";
028
029 /**
030 * Construct an empty triage
031 */
032 public Triage() {
033 super();
034 }
035
036 /**
037 * Construct an empty triage
038 *
039 * @param pf string to use as prefix
040 */
041 public Triage(String pf) {
042 super();
043 prefix = pf;
044 }
045
046 /**
047 * Construct triage using a string array as initializer
048 *
049 * @param menuItems Items for this triage
050 */
051 public Triage(String[] menuItems) {
052 super(menuItems);
053 }
054
055 /**
056 * Construct triage using a string array as initializer
057 *
058 * @param pf string to use as prefix
059 * @param menuItems Items for this triage
060 */
061 public Triage(String pf, String[] menuItems) {
062 super(menuItems);
063 prefix = pf;
064 }
065
066 /**
067 * Change the prefix
068 *
069 * @param pf string to use as prefix
070 */
071 public void setPrefix(String pf) {
072 pf = prefix;
073 repaint();
074 }
075
076 /**
077 * Get the prefix
078 *
079 * @return current prefix
080 */
081 public String getPrefix() {
082 return prefix;
083 }
084
085 /**
086 * overwrite MenuKnob.paint()
087 *
088 * @param g Graphics object to use
089 */
090 public void paint(Graphics g) {
091 caption = prefix + getSelectedItem();
092 super.paint(g);
093 }
094
095 /**
096 * overwrite MenuKnob.measureCaption()
097 *
098 * @return size requested by current caption
099 */
100 public Dimension measureCaption() {
101 Dimension d = new Dimension();
102 for (Enumeration enum = menuItems.elements() ; enum.hasMoreElements() ;) {
103 Dimension sd = measureString(prefix + (String) enum.nextElement(), getFont());
104 d.width = Math.max(d.width, sd.width);
105 d.height = Math.max(d.height, sd.height);
106 }
107 return d;
108 }
109
110 /**
111 * overwrite MenuKnob.paintIcon() since we use a rectangle as handle
112 *
113 * @param g Graphics object to use
114 * @param x x-position of describing rect
115 * @param y y-position of describing rect
116 * @param w width of describing rect
117 * @param h height of describing rect
118 */
119 public void paintIcon(Graphics g, int x, int y, int w, int h) {
120 drawRectangle(g, getBackground(), x, y + w/4, w - 1, w/2 - 1, 1, RAISED);
121 }
122 }