Repository: flex-falcon Updated Branches: refs/heads/develop aefb414b5 -> 42516a88d
allow a magic 'localId' property that works like the 'id' property but is not set on the component so doesn't get factored into CSS calculations. Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/42516a88 Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/42516a88 Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/42516a88 Branch: refs/heads/develop Commit: 42516a88dd925acef6263c0eaccc7dddfb36afc7 Parents: aefb414 Author: Alex Harui <aha...@apache.org> Authored: Sun Aug 6 21:02:38 2017 -0700 Committer: Alex Harui <aha...@apache.org> Committed: Sun Aug 6 21:02:38 2017 -0700 ---------------------------------------------------------------------- .../internal/parsing/mxml/MXMLScopeBuilder.java | 7 +++++++ .../internal/tree/mxml/MXMLInstanceNode.java | 21 +++++++++++++++++++- .../compiler/mxml/IMXMLLanguageConstants.java | 5 +++++ .../compiler/tree/mxml/IMXMLInstanceNode.java | 9 +++++++++ 4 files changed, 41 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/42516a88/compiler/src/main/java/org/apache/flex/compiler/internal/parsing/mxml/MXMLScopeBuilder.java ---------------------------------------------------------------------- diff --git a/compiler/src/main/java/org/apache/flex/compiler/internal/parsing/mxml/MXMLScopeBuilder.java b/compiler/src/main/java/org/apache/flex/compiler/internal/parsing/mxml/MXMLScopeBuilder.java index bd778e7..63a02cd 100644 --- a/compiler/src/main/java/org/apache/flex/compiler/internal/parsing/mxml/MXMLScopeBuilder.java +++ b/compiler/src/main/java/org/apache/flex/compiler/internal/parsing/mxml/MXMLScopeBuilder.java @@ -422,6 +422,13 @@ public class MXMLScopeBuilder String id = tag.getRawAttributeValue("id"); if (id != null) processID(tag, idAttribute); + else + { + idAttribute = tag.getTagAttributeData("localId"); + id = tag.getRawAttributeValue("localId"); + if (id != null) + processID(tag, idAttribute); + } if (recurse) { http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/42516a88/compiler/src/main/java/org/apache/flex/compiler/internal/tree/mxml/MXMLInstanceNode.java ---------------------------------------------------------------------- diff --git a/compiler/src/main/java/org/apache/flex/compiler/internal/tree/mxml/MXMLInstanceNode.java b/compiler/src/main/java/org/apache/flex/compiler/internal/tree/mxml/MXMLInstanceNode.java index 4d5072b..6d721fa 100644 --- a/compiler/src/main/java/org/apache/flex/compiler/internal/tree/mxml/MXMLInstanceNode.java +++ b/compiler/src/main/java/org/apache/flex/compiler/internal/tree/mxml/MXMLInstanceNode.java @@ -21,6 +21,7 @@ package org.apache.flex.compiler.internal.tree.mxml; import static org.apache.flex.compiler.mxml.IMXMLLanguageConstants.ATTRIBUTE_EXCLUDE_FROM; import static org.apache.flex.compiler.mxml.IMXMLLanguageConstants.ATTRIBUTE_ID; +import static org.apache.flex.compiler.mxml.IMXMLLanguageConstants.ATTRIBUTE_LOCAL_ID; import static org.apache.flex.compiler.mxml.IMXMLLanguageConstants.ATTRIBUTE_INCLUDE_IN; import static org.apache.flex.compiler.mxml.IMXMLLanguageConstants.ATTRIBUTE_ITEM_CREATION_POLICY; import static org.apache.flex.compiler.mxml.IMXMLLanguageConstants.ATTRIBUTE_ITEM_DESTRUCTION_POLICY; @@ -141,6 +142,14 @@ class MXMLInstanceNode extends MXMLClassReferenceNodeBase implements IMXMLInstan private String id; /** + * The compile-time identifier for this instance. This is <code>null</code> + * if there is no compile-time <code>id</code> attribute on the tag that + * produced this instance. A localId does not set the id property used + * by CSS. + */ + private String localId; + + /** * The states (or state groups) that include this instance. This is * <code>null</code> if there was no <code>includeIn</code> attribute on the * tag that produced this instance node. @@ -180,6 +189,9 @@ class MXMLInstanceNode extends MXMLClassReferenceNodeBase implements IMXMLInstan if (attribute.isSpecialAttribute(ATTRIBUTE_ID)) id = processIDAttribute(builder, attribute); + else if (attribute.isSpecialAttribute(ATTRIBUTE_LOCAL_ID)) + localId = processIDAttribute(builder, attribute); + else if (attribute.isSpecialAttribute(ATTRIBUTE_INCLUDE_IN)) includeIn = processIncludeInOrExcludeFromAttribute(builder, attribute); @@ -329,9 +341,16 @@ class MXMLInstanceNode extends MXMLClassReferenceNodeBase implements IMXMLInstan } @Override + public String getLocalID() + { + return localId; + } + + @Override public String getEffectiveID() { - return id != null ? id : getClassDefinitionNode().getGeneratedID(this); + return id != null ? id : + localId != null ? localId : getClassDefinitionNode().getGeneratedID(this); } @Override http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/42516a88/compiler/src/main/java/org/apache/flex/compiler/mxml/IMXMLLanguageConstants.java ---------------------------------------------------------------------- diff --git a/compiler/src/main/java/org/apache/flex/compiler/mxml/IMXMLLanguageConstants.java b/compiler/src/main/java/org/apache/flex/compiler/mxml/IMXMLLanguageConstants.java index 4b0a127..f67c2c8 100644 --- a/compiler/src/main/java/org/apache/flex/compiler/mxml/IMXMLLanguageConstants.java +++ b/compiler/src/main/java/org/apache/flex/compiler/mxml/IMXMLLanguageConstants.java @@ -245,6 +245,11 @@ public interface IMXMLLanguageConstants static final String ATTRIBUTE_ID = "id"; /** + * The short name of the special <code>localId</code> attribute. + */ + static final String ATTRIBUTE_LOCAL_ID = "localId"; + + /** * The short name of the special <code>implements</code> attribute. */ static final String ATTRIBUTE_IMPLEMENTS = "implements"; http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/42516a88/compiler/src/main/java/org/apache/flex/compiler/tree/mxml/IMXMLInstanceNode.java ---------------------------------------------------------------------- diff --git a/compiler/src/main/java/org/apache/flex/compiler/tree/mxml/IMXMLInstanceNode.java b/compiler/src/main/java/org/apache/flex/compiler/tree/mxml/IMXMLInstanceNode.java index 0660e0d..b3577d3 100644 --- a/compiler/src/main/java/org/apache/flex/compiler/tree/mxml/IMXMLInstanceNode.java +++ b/compiler/src/main/java/org/apache/flex/compiler/tree/mxml/IMXMLInstanceNode.java @@ -36,6 +36,14 @@ public interface IMXMLInstanceNode extends IMXMLClassReferenceNode String getID(); /** + * The compile-time identifier specified for this instance. + * + * @return The localId as a String, or <code>null</code> if no compile-time + * identifier was specified. + */ + String getLocalID(); + + /** * The compile-time identifier used by the compiler for this instance. If no * <code>id</code> is specified, then the compiler generates an identifier * if one is needed. @@ -91,4 +99,5 @@ public interface IMXMLInstanceNode extends IMXMLClassReferenceNode * @return <code>true</code> if node has same line number. */ boolean isEqual(IMXMLInstanceNode node); + }