use of org.develnext.jphp.swing.loader.support.ElementItem in project jphp by jphp-compiler.
the class UIToolBarTag method addUnknown.
@Override
public void addUnknown(JToolBar component, Node node, UIReader uiReader) {
if (node.getNodeName().equals("separator")) {
ElementItem item = new ElementItem(node);
Value size = null;
if (item.getAttr("size") != null)
size = new Value(item.getAttr("size"));
if (size == null)
component.addSeparator();
else {
Dimension dimension = size.asDimension();
if (dimension.getHeight() < 0)
dimension = new Dimension((int) dimension.getWidth(), component.getHeight() + ((int) dimension.getHeight() + 1));
component.addSeparator(dimension);
}
}
}
use of org.develnext.jphp.swing.loader.support.ElementItem in project jphp by jphp-compiler.
the class UIReader method readElement.
@SuppressWarnings("unchecked")
protected Component readElement(Node element) {
String name = element.getNodeName();
BaseTag tag = tags.get(name);
if (tag != null) {
java.util.List<Object[]> postRead = new ArrayList<Object[]>();
Component component = tag.create(new ElementItem(element), this);
if (tag.isNeedRegister())
SwingExtension.registerComponent(component);
ElementItem item = new ElementItem(element);
tag.read(item, component, element, this);
NamedNodeMap attrs = element.getAttributes();
String var = null;
Map<String, Value> attributes = new LinkedHashMap<String, Value>();
for (int i = 0; i < attrs.getLength(); i++) {
Node attr = attrs.item(i);
if (attr.getNodeName().equalsIgnoreCase("var")) {
var = attr.getNodeValue();
continue;
}
Value value = new Value(attr.getNodeValue());
if (attr.getNodeName().equalsIgnoreCase("style")) {
for (String styleName : value.asArray(true)) {
Style style = styles.get(styleName.toLowerCase());
if (style != null) {
attributes.putAll(style.getAttributes());
}
}
continue;
}
attributes.put(attr.getNodeName().toLowerCase(), value);
}
for (Map.Entry<String, Value> attr : attributes.entrySet()) {
PropertyReader reader = null;
Class cls = component.getClass();
tag.onReadAttribute(item, attr.getKey(), attr.getValue(), component, this);
do {
PropertyReaders readers = this.readers.get(cls);
if (readers != null) {
reader = readers.getReader(attr.getKey());
}
if (cls == Component.class)
break;
if (reader != null)
break;
cls = cls.getSuperclass();
} while (true);
if (reader != null) {
Value value = attr.getValue();
if (reader.isTranslatable() && translateHandler != null) {
if (reader.isArrayed()) {
StringBuilder sb = new StringBuilder();
int x = 0;
for (String el : value.asArray(reader.isTrimArrayed())) {
if (x != 0)
sb.append(",");
sb.append(translateHandler.onTranslate(component, new Value(el)).asString());
x++;
}
value = new Value(sb.toString());
} else
value = translateHandler.onTranslate(component, value);
}
if (reader.isPostRead())
postRead.add(new Object[] { reader, attr.getKey(), value });
else {
reader.read(tag.applyProperty(attr.getKey(), component), value);
}
}
}
tag.afterRead(item, component, element, this);
if (readHandler != null && var != null) {
readHandler.onRead(component, var);
}
if (tag.isAllowsChildren() && component instanceof Container) {
NodeList list = element.getChildNodes();
if (list != null)
for (int i = 0; i < list.getLength(); i++) {
Node node = list.item(i);
Component el = readElement(node);
if (el != null) {
BaseTag childTag = tags.get(node.getNodeName());
tag.addChildren(component, childTag.getContentPane(el));
} else {
tag.addUnknown(component, node, this);
}
}
}
for (Object[] el : postRead) {
PropertyReader reader = (PropertyReader) el[0];
String property = (String) el[1];
Value value = (Value) el[2];
reader.read(tag.applyProperty(property, component), value);
}
return component;
}
return null;
}
use of org.develnext.jphp.swing.loader.support.ElementItem in project jphp by jphp-compiler.
the class UITreeTag method appendChildNodes.
protected static void appendChildNodes(JTreeX tree, DefaultMutableTreeNode parent, Node node) {
NodeList childNodes = node.getChildNodes();
int length = childNodes.getLength();
for (int i = 0; i < length; i++) {
Node el = childNodes.item(i);
if ("item".equals(el.getNodeName())) {
ElementItem item = new ElementItem(el);
DefaultMutableTreeNode treeNode = new DefaultMutableTreeNode(item.getAttr("text"));
if (item.getAttr("allows-children") != null)
treeNode.setAllowsChildren(new Value(item.getAttr("allows-children")).asBoolean());
parent.add(treeNode);
appendChildNodes(tree, treeNode, el);
}
}
}
Aggregations