You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by jo...@apache.org on 2014/02/28 10:48:04 UTC

[07/50] git commit: [flex-falcon] [refs/heads/maven] - add media query to generated CSS

add media query to generated CSS


Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/4bac1cff
Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/4bac1cff
Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/4bac1cff

Branch: refs/heads/maven
Commit: 4bac1cfffd50a68ffba57ef6c0ba47c88792b203
Parents: 45c6be9
Author: Alex Harui <ah...@apache.org>
Authored: Fri Nov 22 09:30:09 2013 -0800
Committer: Alex Harui <ah...@apache.org>
Committed: Fri Nov 22 09:30:09 2013 -0800

----------------------------------------------------------------------
 .../internal/css/codegen/CSSReducer.java        | 46 +++++++++++++++++++-
 .../css/codegen/ICSSRuntimeConstants.java       |  3 +-
 2 files changed, 46 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/4bac1cff/compiler/src/org/apache/flex/compiler/internal/css/codegen/CSSReducer.java
----------------------------------------------------------------------
diff --git a/compiler/src/org/apache/flex/compiler/internal/css/codegen/CSSReducer.java b/compiler/src/org/apache/flex/compiler/internal/css/codegen/CSSReducer.java
index f41aafb..db63df3 100644
--- a/compiler/src/org/apache/flex/compiler/internal/css/codegen/CSSReducer.java
+++ b/compiler/src/org/apache/flex/compiler/internal/css/codegen/CSSReducer.java
@@ -172,8 +172,18 @@ public class CSSReducer implements ICSSCodeGenResult
      * The "factory" with which the styles will be registered.
      */
     private final Integer factory;
+    
+    /**
+     * The media query string building up for the selector
+     */
+    private String mediaQueryString;
 
     /**
+     * The map of media query to factory functions
+     */
+    private HashMap<String,ArrayList<String>> mediaQueryMap = new HashMap<String, ArrayList<String>>();
+    
+    /**
      * Root reduction rule. It aggregates all the instructions and emit ABC code
      * of {@code StyleDateClass}.
      * 
@@ -469,7 +479,26 @@ public class CSSReducer implements ICSSCodeGenResult
     {
         // Generate anonymous function.
         final MethodInfo methodInfo = new MethodInfo();
-        methodInfo.setMethodName(((CSSRule)site).getSelectorGroup().get(0).getElementName());
+        String miName = ((CSSRule)site).getSelectorGroup().get(0).getElementName();
+        if (mediaQueryString != null)
+        {
+            pushNumericConstant(ICSSRuntimeConstants.MEDIA_QUERY, selector.arrayReduction);
+            selector.arrayReduction.addInstruction(ABCConstants.OP_pushstring, mediaQueryString);
+
+            miName = mediaQueryString + "_" + miName;
+            if (mediaQueryMap.containsKey(mediaQueryString))
+            {
+                ArrayList<String> factoryList = mediaQueryMap.get(mediaQueryString);
+                factoryList.add(miName);
+            }
+            else
+            {
+                ArrayList<String> factoryList = new ArrayList<String>();
+                factoryList.add(miName);
+                mediaQueryMap.put(mediaQueryString, factoryList);
+            }
+        }
+        methodInfo.setMethodName(miName);
         methodInfo.setParamTypes(EMPTY_PARAM_TYPES);
         final IMethodVisitor methodVisitor = abcVisitor.visitMethod(methodInfo);
         methodVisitor.visit();
@@ -488,8 +517,17 @@ public class CSSReducer implements ICSSCodeGenResult
         // Populate the closure name-body map with method info objects.
         for (final String name : selector.closureReduction.keySet())
         {
-            selector.closureReduction.put(name, methodInfo);
+            if (mediaQueryString != null)
+            {
+                selector.closureReduction.remove(name);
+                selector.closureReduction.put(mediaQueryString + "_" + name, 
+                        methodInfo);
+            }
+            else
+                selector.closureReduction.put(name, methodInfo);
         }
+        
+        mediaQueryString = null;
 
         return selector;
     }
@@ -636,6 +674,10 @@ public class CSSReducer implements ICSSCodeGenResult
     public PairOfInstructionLists reduceMediaQueryCondition(ICSSNode site)
     {
         // TODO Implement @media code generation
+        if (mediaQueryString == null)
+            mediaQueryString = site.toString();
+        else
+            mediaQueryString += "and " + site.toString();
         return null;
     }
 

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/4bac1cff/compiler/src/org/apache/flex/compiler/internal/css/codegen/ICSSRuntimeConstants.java
----------------------------------------------------------------------
diff --git a/compiler/src/org/apache/flex/compiler/internal/css/codegen/ICSSRuntimeConstants.java b/compiler/src/org/apache/flex/compiler/internal/css/codegen/ICSSRuntimeConstants.java
index 42287ce..ef6bc8d 100644
--- a/compiler/src/org/apache/flex/compiler/internal/css/codegen/ICSSRuntimeConstants.java
+++ b/compiler/src/org/apache/flex/compiler/internal/css/codegen/ICSSRuntimeConstants.java
@@ -32,7 +32,8 @@ public interface ICSSRuntimeConstants
     static final Integer SELECTOR = 0;
     static final Integer CONDITION = 1;
     static final Integer STYLE_DECLARATION = 2;
-
+    static final Integer MEDIA_QUERY = 3;
+    
     // From CSSFactory
     static final Integer DEFAULT_FACTORY = 0;
     static final Integer FACTORY = 1;