Re-organized for more flexible handling of widget creation.

This commit is contained in:
grail%cafebabe.org 1999-03-06 07:08:01 +00:00
Родитель 864c419f9c
Коммит 2bc84bedb1
1 изменённых файлов: 64 добавлений и 24 удалений

Просмотреть файл

@ -71,7 +71,11 @@ public class XMLMenuBuilder extends XMLWidgetBuilder {
static final String accel_attr = "accel";
static final String type_attr = "type";
Hashtable button_group;
/**
* The button group indexed by its name.
*/
protected Hashtable button_group;
Hashtable actions;
JMenuBar component;
@ -179,6 +183,12 @@ public class XMLMenuBuilder extends XMLWidgetBuilder {
public void associateClass(Class c, Object o) {
}
/**
* Process the node. This method will call <code>buildComponent</code>.
* @param node the node to process
* @param parent the parent component to add the information from
* this node to
*/
protected void processNode(Node node, JComponent parent) {
JComponent container = null;
JComponent item = null;
@ -195,6 +205,11 @@ public class XMLMenuBuilder extends XMLWidgetBuilder {
}
}
/**
* Build the component at the current XML element and add to the parent
* @param current the current element
* @param parent the parent to add to
*/
protected JComponent buildComponent(Element current, JComponent parent) {
String tag = current.getTagName();
JComponent comp = null;
@ -232,35 +247,21 @@ public class XMLMenuBuilder extends XMLWidgetBuilder {
} else if (type.equals(radio_attr)) { // radio
comp = buildRadioMenuItem(current);
}
// do label magic for things that are not separators
if (!type.equals(separator_attr)) {
label = getReferencedLabel(current, label_attr);
if (label != null) {
((JMenuItem)comp).setText(label);
}
label = current.getAttribute("action");
if (label != null
&& (action = (UIAction)actions.get(label)) != null) {
((JMenuItem)comp).addActionListener(action);
}
// set the accelerator
label = getReferencedLabel(current, accel_attr);
if (label != null) {
((JMenuItem)comp).setMnemonic(label.charAt(0));
}
}
}
return comp;
}
/**
* Build a JRadioMenuItem
* @param current the element that describes the JRadioMenuItem
* @return the built component
*/
protected JRadioButtonMenuItem buildRadioMenuItem(Element current) {
String group = current.getAttribute(group_attr);
ButtonGroup bg;
JRadioButtonMenuItem comp = new JRadioButtonMenuItem();
finishComponent(comp, current);
// do we add to a button group?
if (group != null) {
@ -276,16 +277,55 @@ public class XMLMenuBuilder extends XMLWidgetBuilder {
return comp;
}
/**
* Build a JCheckBoxMenuItem.
* @param current the element that describes the JCheckBoxMenuItem
* @return the built component
*/
protected JCheckBoxMenuItem buildCheckBoxMenuItem(Element current) {
return new JCheckBoxMenuItem();
JCheckBoxMenuItem item = new JCheckBoxMenuItem();
finishComponent(item, current);
return item;
}
/**
* Build a JSeparator.
* @param current the element that describes the JSeparator
* @return the built component
*/
protected JSeparator buildSeparator(Element current) {
return new JSeparator();
}
/**
* Build a JMenuItem.
* @param current the element that describes the JMenuItem
* @return the built component
*/
protected JMenuItem buildMenuItem(Element current) {
return new JMenuItem();
JMenuItem item = new JMenuItem();
finishComponent(item, current);
return item;
}
private void finishComponent(JMenuItem item, Element current) {
String label = getReferencedLabel(current, label_attr);
UIAction action = null;
if (label != null) {
item.setText(label);
}
label = current.getAttribute("action");
if (label != null
&& (action = (UIAction)actions.get(label)) != null) {
item.addActionListener(action);
}
label = getReferencedLabel(current, accel_attr);
if (label != null) {
item.setMnemonic(label.charAt(0));
}
}
public static void main(String[] args) throws Exception {