I definitely think we should try assigning standard CSS style
properties. That way, many $style declarations can go away.
A few options come to mind:
1. A LzInheritedHash of default stylename -> attribute mappings
2. Separate class properties similar to setter names, e.g. style_visible
= 'display';
3. Somehow hacking them into the existing attributes LzInheritedHash
Then LzNode would call __LZstyleBindAttribute() for matching attribute
names...
I hate to create a parallel mechanism to that used by the compiler, but
I don't see a way around it. All three of these should support inheritance.
While we're on the subject, should compiler/AttributeSpec.java be
updated to know about styles?
P T Withington wrote:
Approved!
This is great to have this working. We need to figure out how to get it
to show up in the documentation, and we should announce the feature and
let people start using it (esp. Webtop). I think it will make a lot of
code much cleaner.
The next question is whether to assign standard CSS style properties to
<view> (like background-color for bgcolor);
On 2009-10-03, at 03:25, Max Carlson wrote:
Change 20090924-maxcarlson-T by [email protected] on 2009-09-24
08:57:17 PDT
in /Users/maxcarlson/openlaszlo/trunk-clean
for http://svn.openlaszlo.org/openlaszlo/trunk
Summary: Compile style attribute for <attribute/>
Bugs Fixed: LPP-7357 - Simple mechanism for making <attribute>s CSS
styleable (partial)
Technical Reviewer: ptw
Details: lzx.rnc - Add style attribute to attributeElement declaration
LzNode.lzs - Add a fallback argument to __LZstyleBindAttribute() which
is used to compute the value if the style lookup fails.
ViewSchema.java - Add "style" to the <attribute/> schema.
NodeModel.java - Add a fallbackexpression property and setter to
CompiledAttribute. When computing the binder method for a style,
include the fallback expression if it's been defined. In
addAttributeElement() look for a style attribute. If one is found, it
takes precedance over any existing value attribute - but the value is
preserved as a fallbackexpression, and binder and dependancy methods
are still installed.
Tests:
<canvas>
<stylesheet>
stylableclass {
background-color: #555588;
textColor: #FFFFFF;
}
</stylesheet>
<class name="stylableclass">
<attribute name="foo" type="color" value="red"/>
<attribute name="bgcolor" style="background-color" value="$
{this.foo}"/>
<text fontsize="24" fgcolor="$style
{'textColor'}">stylableclass</text>
</class>
<stylableclass/>
</canvas>
matched the correct style when the style attribute is set to something
that matches, e.g. 'background-color'. If style is set to something
that fails, the value attribute works for simple values, e.g. 'red'
and also for $once and $always constraints.
Files:
M WEB-INF/lps/schema/lzx.rnc
M WEB-INF/lps/lfc/core/LzNode.lzs
M WEB-INF/lps/server/src/org/openlaszlo/compiler/ViewSchema.java
M WEB-INF/lps/server/src/org/openlaszlo/compiler/NodeModel.java
Changeset:
http://svn.openlaszlo.org/openlaszlo/patches/20090924-maxcarlson-T.tar
_______________________________________________
Laszlo-reviews mailing list
[email protected]
http://www.openlaszlo.org/mailman/listinfo/laszlo-reviews
--
Regards,
Max Carlson
OpenLaszlo.org