public Map<String, Object> getFactoryOptions(Object nodeObject) {
if (nodeObject == null) {
return null;
}
LayoutComponent desc = getLayoutComponent();
Map<String, Object> props = new HashMap<String, Object>();
if (nodeObject.toString().equals(_objectName)) {
// This case deals with the top node.
// NOTE: All supported options must be handled here,
// otherwise they'll be ignored.
// NOTE: Options will be evaluated later, do not eval here.
setProperty(props, "text", desc.getOption("text"));
setProperty(props, "url", desc.getOption("url"));
setProperty(props, "imageURL", desc.getOption("imageURL"));
setProperty(props, "target", desc.getOption("target"));
setProperty(props, "action", desc.getOption("action"));
// NOTE: Although actionListener is supported, LH currently
// implements this to be the ActionListener of the "turner"
// which is inconsistent with "action". We should make use
// of the "Handler" feature which provides a "toggle"
// CommandEvent.
setProperty(props, "actionListener",
desc.getOption("actionListener"));
setProperty(props, "expanded", desc.getOption("expanded"));
} else {
// This case deals with the children
// NOTE: All supported options must be handled here,
// otherwise they'll be ignored
_childImage = "../.." + _childImageFolder;
if (nodeObject instanceof String) {
String node = (String) nodeObject;
String context = node.substring(0, node.indexOf(":"));
setProperty(props, "text", context);
setProperty(props, "nodeClass",
node.substring(node.indexOf(":") + 2));
try {
// FIXME: port v2 code below
// ArrayList result =
// (ArrayList)JMXUtil.getMBeanServer().invoke(new
// ObjectName(_objectName), "getNames", new
// String[]{context}, new String[] {"java.lang.String"});
_childImage = "../.." + _childImageDocument;
} catch (Exception ex) {
// Ignore exception since there are no children.
_childImage = "../.." + _childImageDocument;
}
} else {
throw new RuntimeException("'" + nodeObject
+ "' Illegal type (" + nodeObject.getClass().getName()
+ ") for tree processing");
}
// Finish setting the child properties
setProperty(props, "url", desc.getOption("childURL"));
setProperty(props, "imageURL", _childImage);
setProperty(props, "target", desc.getOption("childTarget"));
setProperty(props, "action", desc.getOption("childAction"));
// We are using "childActionListener" for the hyperlink, not the
// TreeNode
// setProperty(props, "actionListener",
// desc.getOption("childActionListener"));
setProperty(props, "expanded", desc.getOption("childExpanded"));
}
// Return the options
return props;
}