01: package net.xoetrope.swing;
02:
03: import java.awt.Component;
04: import javax.swing.JScrollPane;
05: import net.xoetrope.xui.XAttributedComponent;
06:
07: /**
08: * <p>Wraps ScrollPane</p>
09: * <p>Copyright (c) Xoetrope Ltd., 1998-2004<br>
10: * License: see license.txt
11: * $Revision: 1.9 $
12: */
13: public class XScrollPane extends JScrollPane implements
14: XAttributedComponent {
15: private static int nextHorzScrollPanePolicy = JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED;
16: private static int nextVertScrollPanePolicy = JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED;
17:
18: /**
19: * Set the scrollbar policy for the next horizontal scroll pane that is created.
20: * Once used this value reverts to the default value of JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED
21: */
22: public static void setNextHorzScrollPanePolicy(int scrollBarPolicy) {
23: nextHorzScrollPanePolicy = scrollBarPolicy;
24: }
25:
26: /**
27: * Set the scrollbar policy for the next vertical scroll pane that is created.
28: * Once used this value reverts to the default value of JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED
29: */
30: public static void setNextVertScrollPanePolicy(int scrollBarPolicy) {
31: nextVertScrollPanePolicy = scrollBarPolicy;
32: }
33:
34: /**
35: * Set the scrollbar policy for the next scroll pane that is created. Both the
36: * vertical and horizonatl values are set.
37: * Once used this value reverts to the default value of SCROLLBARS_AS_NEEDED
38: */
39: public static void setNextScrollPanePolicy(int scrollBarPolicy) {
40: nextVertScrollPanePolicy = nextHorzScrollPanePolicy = scrollBarPolicy;
41: }
42:
43: /**
44: * Creates a new scroll pane
45: */
46: public XScrollPane() {
47: super (nextVertScrollPanePolicy, nextHorzScrollPanePolicy);
48: nextVertScrollPanePolicy = JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED;
49: nextHorzScrollPanePolicy = JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED;
50: }
51:
52: /**
53: * Adds a new componnet and then lays out the container
54: * @param c a component to add to this pane
55: * @return the newly added component
56: */
57: public Component add(Component c) {
58: setViewportView(c);
59: layout();
60:
61: return c;
62: }
63:
64: /**
65: * Set one or more attributes of the component.
66: * <LI>horizontal_scrollbar, values=as needed|always|never</LI>
67: * <LI>vertical_scrollbar, values=as needed|always|never</LI>
68: * @param attribName the attribute name
69: * @param attribValue the attribute value
70: */
71: public void setAttribute(String attribName, String attribValue) {
72: String attribNameLwr = attribName.toLowerCase();
73: String attribValueLwr = attribValue.toLowerCase();
74: if (attribNameLwr.compareTo("vertical_scrollbar") == 0)
75: setVerticalScrollBarPolicy(attribValueLwr
76: .equals("as needed") ? JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED
77: : attribValueLwr.equals("always") ? JScrollPane.VERTICAL_SCROLLBAR_ALWAYS
78: : JScrollPane.VERTICAL_SCROLLBAR_NEVER);
79: else if (attribNameLwr.compareTo("horizontal_scrollbar") == 0)
80: setHorizontalScrollBarPolicy(attribValueLwr
81: .equals("as needed") ? JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED
82: : attribValueLwr.equals("always") ? JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS
83: : JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
84: }
85: }
|