You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lo...@apache.org on 2009/08/31 13:47:39 UTC

svn commit: r809549 - in /myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago: component/AbstractUIGridLayout.java component/AbstractUITabGroupLayout.java layout/LayoutContext2.java layout/LayoutManager.java

Author: lofwyr
Date: Mon Aug 31 11:47:38 2009
New Revision: 809549

URL: http://svn.apache.org/viewvc?rev=809549&view=rev
Log:
TOBAGO-606: Layout-Manager
 - indroduce a new layouting phase to fix problems with relavite tokens (*) inside of auto tokens. The fix will be logged with level "warn"

Modified:
    myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/component/AbstractUIGridLayout.java
    myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/component/AbstractUITabGroupLayout.java
    myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/layout/LayoutContext2.java
    myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/layout/LayoutManager.java

Modified: myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/component/AbstractUIGridLayout.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/component/AbstractUIGridLayout.java?rev=809549&r1=809548&r2=809549&view=diff
==============================================================================
--- myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/component/AbstractUIGridLayout.java (original)
+++ myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/component/AbstractUIGridLayout.java Mon Aug 31 11:47:38 2009
@@ -74,6 +74,36 @@
     }
   }
 
+  public void fixRelativeInsideAuto(boolean orientation, boolean auto) {
+
+    LayoutTokens tokens = grid.getTokens(orientation);
+
+    if (auto) {
+      for (int i = 0; i < tokens.getSize(); i++) {
+        if (tokens.get(i) instanceof RelativeLayoutToken) {
+          LOG.warn("Fixing layout token from * to auto, because a * in not allowed inside of a auto.");
+          tokens.set(i, AutoLayoutToken.INSTANCE);
+        }
+      }
+    }
+
+    for (int i = 0; i < tokens.getSize(); i++) {
+      for (int j = 0; j < grid.getTokens(!orientation).getSize(); j++) {
+        Cell cell = grid.getCell(i, j, orientation);
+        if (cell instanceof OriginCell) {
+          OriginCell origin = (OriginCell) cell;
+          LayoutComponent component = cell.getComponent();
+          if (component instanceof LayoutContainer) {
+            LayoutManager layoutManager = ((LayoutContainer) component).getLayoutManager();
+            // TODO: may be improved
+            boolean childAuto = origin.getSpan(orientation) == 1 && tokens.get(i) instanceof AutoLayoutToken;
+            layoutManager.fixRelativeInsideAuto(orientation, childAuto);
+          }
+        }
+      }
+    }
+  }
+
   public void preProcessing(boolean orientation) {
 
     // process auto tokens

Modified: myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/component/AbstractUITabGroupLayout.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/component/AbstractUITabGroupLayout.java?rev=809549&r1=809548&r2=809549&view=diff
==============================================================================
--- myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/component/AbstractUITabGroupLayout.java (original)
+++ myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/component/AbstractUITabGroupLayout.java Mon Aug 31 11:47:38 2009
@@ -40,6 +40,9 @@
   public void init() {
   }
 
+  public void fixRelativeInsideAuto(boolean orientation, boolean auto) {
+  }
+
   public void preProcessing(boolean orientation) {
   }
 

Modified: myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/layout/LayoutContext2.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/layout/LayoutContext2.java?rev=809549&r1=809548&r2=809549&view=diff
==============================================================================
--- myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/layout/LayoutContext2.java (original)
+++ myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/layout/LayoutContext2.java Mon Aug 31 11:47:38 2009
@@ -49,6 +49,8 @@
 
     LayoutManager layoutManager = container.getLayoutManager();
     layoutManager.init();
+    layoutManager.fixRelativeInsideAuto(true, false);
+    layoutManager.fixRelativeInsideAuto(false, false);
     layoutManager.preProcessing(true);
     layoutManager.preProcessing(false);
     layoutManager.mainProcessing(true);

Modified: myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/layout/LayoutManager.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/layout/LayoutManager.java?rev=809549&r1=809548&r2=809549&view=diff
==============================================================================
--- myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/layout/LayoutManager.java (original)
+++ myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/layout/LayoutManager.java Mon Aug 31 11:47:38 2009
@@ -25,6 +25,8 @@
 
   void init();
 
+  void fixRelativeInsideAuto(boolean orientation, boolean auto);
+
   void preProcessing(boolean orientation);
 
   void mainProcessing(boolean orientation);