01: package net.xoetrope.swing;
02:
03: import net.xoetrope.xui.XComponentConstructor;
04: import net.xoetrope.xui.XComponentFactory;
05: import java.awt.Component;
06: import java.util.Hashtable;
07:
08: /**
09: * A factory for non-base Swing components such as Trees
10: * <p>Copyright: Copyright (c) Xoetrope Ltd., 2001-2004</p>
11: * <p>$Revision: 1.4 $ </p>
12: * License see license.txt
13: */
14: public class SwingComponentFactory implements XComponentConstructor {
15: private String packageName = "net.xoetrope.swing";
16:
17: public SwingComponentFactory() {
18: // Register the extra binding factory
19: SwingDataBindingFactory.register();
20: }
21:
22: /**
23: * A generic factory for adding XComponents. The component is constructed, positioned and
24: * added to the parent panel if one exists. The component is named with a counter value
25: * to uniquely identify the control.
26: * This factory does not use this method and all components must be added by name
27: * When a ScrollPane is addd it becomes the parent.
28: * @param cf the calling component factory
29: * @param type a constant identifying the type of component to be created
30: * @param content the component text/content
31: */
32: public Component constructComponent(XComponentFactory cf, int type,
33: String content) {
34: return null;
35: }
36:
37: /**
38: * A generic factory for adding XComponents. The component is constructed, positioned and
39: * added to the parent panel if one exists. The component is named with a counter value
40: * to uniquely identify the control.
41: * @param cf the calling component factory
42: * @param type a name identifying the type of component to be created
43: * @param content the component text/content
44: */
45: public Component constructComponent(XComponentFactory cf,
46: String type, String content) {
47: Component comp = null;
48: if (type.charAt(0) == 'X')
49: type = type.substring(1, type.length());
50:
51: if (type.compareToIgnoreCase("Tree") == 0)
52: comp = new XTree();
53: else if (type.compareToIgnoreCase("Table2") == 0)
54: comp = new XTable2();
55: else if (type.compareToIgnoreCase("SplitPane") == 0)
56: comp = new XSplitPane();
57:
58: return comp;
59: }
60:
61: /**
62: * A generic factory method for adding non component elements.
63: * @param cf the calling component factory
64: * @param type the object type
65: * @param name a name identifying the element to be created
66: * @param content the component text/content
67: * @param attribs the element attributes if any
68: */
69: public Object addElement(XComponentFactory cf, String type,
70: String name, String content, Hashtable attribs) {
71: return null;
72: }
73:
74: /**
75: * Notify the component factories that some of their settings may have changed.
76: * This factory does not yet use any startup properties or parameters
77: */
78: public void update() {
79: }
80:
81: /**
82: * Set the package name for the factory's widgets.
83: */
84: public void setPackageName(String defPackage) {
85: packageName = defPackage;
86: }
87: }
|