Search in sources :

Example 1 with Value

use of org.develnext.jphp.swing.loader.support.Value 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);
        }
    }
}
Also used : ElementItem(org.develnext.jphp.swing.loader.support.ElementItem) Value(org.develnext.jphp.swing.loader.support.Value)

Example 2 with Value

use of org.develnext.jphp.swing.loader.support.Value 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;
}
Also used : ElementItem(org.develnext.jphp.swing.loader.support.ElementItem) PropertyReaders(org.develnext.jphp.swing.loader.support.propertyreaders.PropertyReaders) BaseTag(org.develnext.jphp.swing.loader.support.BaseTag) PropertyReader(org.develnext.jphp.swing.loader.support.PropertyReader) java.util(java.util) Value(org.develnext.jphp.swing.loader.support.Value)

Example 3 with Value

use of org.develnext.jphp.swing.loader.support.Value in project jphp by jphp-compiler.

the class UITabsTag method addUnknown.

@Override
public void addUnknown(JTabbedPane component, Node node, UIReader uiReader) {
    if ("tab".equals(node.getNodeName())) {
        NamedNodeMap attrs = node.getAttributes();
        int index = 0;
        if (attrs.getNamedItem("index") != null)
            index = new Value(attrs.getNamedItem("index").getNodeValue()).asInteger();
        String title = null;
        if (attrs.getNamedItem("title") != null)
            title = new Value(attrs.getNamedItem("title").getNodeValue()).asString();
        String tooltip = null;
        if (attrs.getNamedItem("tooltip") != null)
            tooltip = new Value(attrs.getNamedItem("tooltip").getNodeValue()).asString();
        Icon icon = null;
        if (attrs.getNamedItem("icon") != null)
            icon = new Value(attrs.getNamedItem("icon").getNodeValue()).asIcon();
        if (title != null)
            component.setTitleAt(index, uiReader.translate(component, title));
        if (tooltip != null)
            component.setToolTipTextAt(index, uiReader.translate(component, tooltip));
        if (icon != null)
            component.setIconAt(index, icon);
    }
}
Also used : NamedNodeMap(org.w3c.dom.NamedNodeMap) Value(org.develnext.jphp.swing.loader.support.Value)

Example 4 with Value

use of org.develnext.jphp.swing.loader.support.Value 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);
        }
    }
}
Also used : ElementItem(org.develnext.jphp.swing.loader.support.ElementItem) DefaultMutableTreeNode(javax.swing.tree.DefaultMutableTreeNode) NodeList(org.w3c.dom.NodeList) Node(org.w3c.dom.Node) DefaultMutableTreeNode(javax.swing.tree.DefaultMutableTreeNode) Value(org.develnext.jphp.swing.loader.support.Value)

Example 5 with Value

use of org.develnext.jphp.swing.loader.support.Value in project jphp by jphp-compiler.

the class WrapUIReader method onTranslate.

@Signature(@Arg(value = "handler", type = HintType.CALLABLE, optional = @Optional("NULL")))
public Memory onTranslate(final Environment env, Memory... args) {
    if (args[0].isNull())
        reader.setTranslateHandler(null);
    else {
        final Invoker invoker = Invoker.valueOf(env, null, args[0]);
        UIReader.TranslateHandler handler = new UIReader.TranslateHandler() {

            @Override
            public Value onTranslate(Component component, Value var) {
                return new Value(invoker.callNoThrow(new ObjectMemory(UIElement.of(env, component)), var == null ? Memory.NULL : new StringMemory(var.asString())).toString());
            }
        };
        reader.setTranslateHandler(handler);
    }
    return Memory.NULL;
}
Also used : UIReader(org.develnext.jphp.swing.loader.UIReader) Invoker(php.runtime.invoke.Invoker) ObjectMemory(php.runtime.memory.ObjectMemory) Value(org.develnext.jphp.swing.loader.support.Value) StringMemory(php.runtime.memory.StringMemory)

Aggregations

Value (org.develnext.jphp.swing.loader.support.Value)5 ElementItem (org.develnext.jphp.swing.loader.support.ElementItem)3 java.util (java.util)1 DefaultMutableTreeNode (javax.swing.tree.DefaultMutableTreeNode)1 UIReader (org.develnext.jphp.swing.loader.UIReader)1 BaseTag (org.develnext.jphp.swing.loader.support.BaseTag)1 PropertyReader (org.develnext.jphp.swing.loader.support.PropertyReader)1 PropertyReaders (org.develnext.jphp.swing.loader.support.propertyreaders.PropertyReaders)1 NamedNodeMap (org.w3c.dom.NamedNodeMap)1 Node (org.w3c.dom.Node)1 NodeList (org.w3c.dom.NodeList)1 Invoker (php.runtime.invoke.Invoker)1 ObjectMemory (php.runtime.memory.ObjectMemory)1 StringMemory (php.runtime.memory.StringMemory)1