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 2012/03/20 11:12:25 UTC

svn commit: r1302807 - in /myfaces/tobago/branches/tobago-tree-table: ./ tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/html/ tobago-core/src/test/resources/ tobago-example/tobago-example-demo/ tobago-example/tobago-example-test/src/main...

Author: lofwyr
Date: Tue Mar 20 09:17:51 2012
New Revision: 1302807

URL: http://svn.apache.org/viewvc?rev=1302807&view=rev
Log:
merged from trunk

Added:
    myfaces/tobago/branches/tobago-tree-table/tobago-example/tobago-example-test/src/main/webapp/image/feather-leaf.png
      - copied unchanged from r1302529, myfaces/tobago/trunk/tobago-example/tobago-example-test/src/main/webapp/image/feather-leaf.png
    myfaces/tobago/branches/tobago-tree-table/tobago-example/tobago-example-test/src/main/webapp/tc/sheet/sheet-paging.xhtml
      - copied unchanged from r1302529, myfaces/tobago/trunk/tobago-example/tobago-example-test/src/main/webapp/tc/sheet/sheet-paging.xhtml
    myfaces/tobago/branches/tobago-tree-table/tobago-example/tobago-example-test/src/main/webapp/tc/sheet/sheet-unknown-row-count.xhtml
      - copied unchanged from r1302529, myfaces/tobago/trunk/tobago-example/tobago-example-test/src/main/webapp/tc/sheet/sheet-unknown-row-count.xhtml
    myfaces/tobago/branches/tobago-tree-table/tobago-example/tobago-example-test/src/main/webapp/test/image/
      - copied from r1302529, myfaces/tobago/trunk/tobago-example/tobago-example-test/src/main/webapp/test/image/
    myfaces/tobago/branches/tobago-tree-table/tobago-example/tobago-example-test/src/test/java/org/apache/myfaces/tobago/example/test/tc/sheet/PagingSeleniumTest.java
      - copied unchanged from r1302529, myfaces/tobago/trunk/tobago-example/tobago-example-test/src/test/java/org/apache/myfaces/tobago/example/test/tc/sheet/PagingSeleniumTest.java
Modified:
    myfaces/tobago/branches/tobago-tree-table/   (props changed)
    myfaces/tobago/branches/tobago-tree-table/pom.xml
    myfaces/tobago/branches/tobago-tree-table/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/html/DataAttributes.java
    myfaces/tobago/branches/tobago-tree-table/tobago-core/src/test/resources/theme-config.xml
    myfaces/tobago/branches/tobago-tree-table/tobago-example/tobago-example-demo/pom.xml
    myfaces/tobago/branches/tobago-tree-table/tobago-example/tobago-example-test/src/main/webapp/tc/reload/tip.xhtml
    myfaces/tobago/branches/tobago-tree-table/tobago-theme/tobago-theme-scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/PageRenderer.java
    myfaces/tobago/branches/tobago-tree-table/tobago-theme/tobago-theme-scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/PanelRenderer.java
    myfaces/tobago/branches/tobago-tree-table/tobago-theme/tobago-theme-standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/msie_6_0/script/tobago.js
    myfaces/tobago/branches/tobago-tree-table/tobago-theme/tobago-theme-standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/standard/script/tobago-menu.js
    myfaces/tobago/branches/tobago-tree-table/tobago-theme/tobago-theme-standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/standard/script/tobago-tree.js
    myfaces/tobago/branches/tobago-tree-table/tobago-theme/tobago-theme-standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/standard/script/tobago.js

Propchange: myfaces/tobago/branches/tobago-tree-table/
------------------------------------------------------------------------------
  Merged /myfaces/tobago/trunk:r1299996-1302529

Modified: myfaces/tobago/branches/tobago-tree-table/pom.xml
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-tree-table/pom.xml?rev=1302807&r1=1302806&r2=1302807&view=diff
==============================================================================
--- myfaces/tobago/branches/tobago-tree-table/pom.xml (original)
+++ myfaces/tobago/branches/tobago-tree-table/pom.xml Tue Mar 20 09:17:51 2012
@@ -1797,7 +1797,7 @@
     <myfaces11.version>1.1.9</myfaces11.version>
     <myfaces12.version>1.2.11</myfaces12.version>
     <myfaces-test12.version>1.0.1</myfaces-test12.version>
-    <myfaces20.version>2.0.11</myfaces20.version>
+    <myfaces20.version>2.0.12</myfaces20.version>
     <myfaces21.version>2.1.5</myfaces21.version>
     <mojarra11.version>1.1_02</mojarra11.version>
     <mojarra12.version>1.2_14</mojarra12.version>

Modified: myfaces/tobago/branches/tobago-tree-table/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/html/DataAttributes.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-tree-table/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/html/DataAttributes.java?rev=1302807&r1=1302806&r2=1302807&view=diff
==============================================================================
--- myfaces/tobago/branches/tobago-tree-table/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/html/DataAttributes.java (original)
+++ myfaces/tobago/branches/tobago-tree-table/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/html/DataAttributes.java Tue Mar 20 09:17:51 2012
@@ -30,6 +30,11 @@ public final class DataAttributes {
   public static final String DISABLED = "data-tobago-disabled";
 
   /**
+   * Custom reload attribute. Used to reload a panel.
+   */
+  public static final String RELOAD = "data-tobago-reload";
+
+  /**
    * Alternate to the src attribute, to implement a hover effect.
    */
   public static final String SRCHOVER = "data-tobago-srchover";

Modified: myfaces/tobago/branches/tobago-tree-table/tobago-core/src/test/resources/theme-config.xml
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-tree-table/tobago-core/src/test/resources/theme-config.xml?rev=1302807&r1=1302806&r2=1302807&view=diff
==============================================================================
--- myfaces/tobago/branches/tobago-tree-table/tobago-core/src/test/resources/theme-config.xml (original)
+++ myfaces/tobago/branches/tobago-tree-table/tobago-core/src/test/resources/theme-config.xml Tue Mar 20 09:17:51 2012
@@ -31,4 +31,4 @@
     <script name="script/logging.js"/>
     <style name="style.css"/>
   </resources>
-</tobago-theme>
\ No newline at end of file
+</tobago-theme>

Modified: myfaces/tobago/branches/tobago-tree-table/tobago-example/tobago-example-demo/pom.xml
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-tree-table/tobago-example/tobago-example-demo/pom.xml?rev=1302807&r1=1302806&r2=1302807&view=diff
==============================================================================
--- myfaces/tobago/branches/tobago-tree-table/tobago-example/tobago-example-demo/pom.xml (original)
+++ myfaces/tobago/branches/tobago-tree-table/tobago-example/tobago-example-demo/pom.xml Tue Mar 20 09:17:51 2012
@@ -295,7 +295,7 @@
     <dependency>
         <groupId>org.hibernate</groupId>
         <artifactId>hibernate-validator</artifactId>
-        <version>4.0.2.GA</version>
+        <version>4.2.0.Final</version>
     </dependency>
 
   </dependencies>

Modified: myfaces/tobago/branches/tobago-tree-table/tobago-example/tobago-example-test/src/main/webapp/tc/reload/tip.xhtml
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-tree-table/tobago-example/tobago-example-test/src/main/webapp/tc/reload/tip.xhtml?rev=1302807&r1=1302806&r2=1302807&view=diff
==============================================================================
--- myfaces/tobago/branches/tobago-tree-table/tobago-example/tobago-example-test/src/main/webapp/tc/reload/tip.xhtml (original)
+++ myfaces/tobago/branches/tobago-tree-table/tobago-example/tobago-example-test/src/main/webapp/tc/reload/tip.xhtml Tue Mar 20 09:17:51 2012
@@ -29,12 +29,14 @@
     <tc:separator label="Reload test for tips."/>
     <tc:panel>
       <f:facet name="layout">
-        <tc:gridLayout margin="10px" rows="auto;20px;auto;" columns="300px"/>
+        <tc:gridLayout margin="10px" rows="20px;auto;20px;auto;" columns="300px"/>
       </f:facet>
       <f:facet name="reload">
         <tc:reload frequency="5000" update="#{reload.reload}"/>
       </f:facet>
 
+      <tc:out value="This panel will be reloaded every 5 seconds."/>
+
       <tc:in value="#{reload.counter}" readonly="true" tip="Test of &quot; (quotation mark)"/>
 
       <tc:label value="Label" tip="Test of &quot; (quotation mark)"/>

Modified: myfaces/tobago/branches/tobago-tree-table/tobago-theme/tobago-theme-scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/PageRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-tree-table/tobago-theme/tobago-theme-scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/PageRenderer.java?rev=1302807&r1=1302806&r2=1302807&view=diff
==============================================================================
--- myfaces/tobago/branches/tobago-tree-table/tobago-theme/tobago-theme-scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/PageRenderer.java (original)
+++ myfaces/tobago/branches/tobago-tree-table/tobago-theme/tobago-theme-scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/PageRenderer.java Tue Mar 20 09:17:51 2012
@@ -373,7 +373,7 @@ public class PageRenderer extends PageRe
 
     String defaultActionId = page.getDefaultActionId() != null ? page.getDefaultActionId() : "";
     writer.startElement(HtmlElements.BODY, page);
-    writer.writeAttribute(HtmlAttributes.ONLOAD, "Tobago.init('" + clientId + "');", false);
+//    writer.writeAttribute(HtmlAttributes.ONLOAD, "Tobago.init('" + clientId + "');", false);
 //    writer.writeAttribute("onunload", "Tobago.onexit();", null);
     writer.writeIdAttribute(clientId);
     writer.writeClassAttribute(Classes.create(page));
@@ -663,7 +663,7 @@ public class PageRenderer extends PageRe
       writer.writeJavascript("TbgTimer.endBody = new Date();");
     }
 
-    writer.writeJavascript("setTimeout(\"Tobago.init('" + clientId + "')\", 1000)");
+//    writer.writeJavascript("setTimeout(\"Tobago.init('" + clientId + "')\", 1000)");
 
     writer.endElement(HtmlElements.BODY);
 

Modified: myfaces/tobago/branches/tobago-tree-table/tobago-theme/tobago-theme-scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/PanelRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-tree-table/tobago-theme/tobago-theme-scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/PanelRenderer.java?rev=1302807&r1=1302806&r2=1302807&view=diff
==============================================================================
--- myfaces/tobago/branches/tobago-tree-table/tobago-theme/tobago-theme-scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/PanelRenderer.java (original)
+++ myfaces/tobago/branches/tobago-tree-table/tobago-theme/tobago-theme-scarborough/src/main/java/org/apache/myfaces/tobago/renderkit/html/scarborough/standard/tag/PanelRenderer.java Tue Mar 20 09:17:51 2012
@@ -27,6 +27,7 @@ import org.apache.myfaces.tobago.renderk
 import org.apache.myfaces.tobago.renderkit.css.Classes;
 import org.apache.myfaces.tobago.renderkit.css.Position;
 import org.apache.myfaces.tobago.renderkit.css.Style;
+import org.apache.myfaces.tobago.renderkit.html.DataAttributes;
 import org.apache.myfaces.tobago.renderkit.html.HtmlAttributes;
 import org.apache.myfaces.tobago.renderkit.html.HtmlElements;
 import org.apache.myfaces.tobago.renderkit.html.util.HtmlRendererUtils;
@@ -86,24 +87,17 @@ public class PanelRenderer extends Layou
       writer.writeAttribute(HtmlAttributes.TITLE, ((UIPanel) panel).getTip(), true);
     }
 
-    HtmlRendererUtils.encodeContextMenu(facesContext, writer, panel);
-
-    // TODO check ajax id
+    // TODO check ajax id?
     if (!FacesContextUtils.isAjax(facesContext)) {
-      Integer frequency = null;
       UIComponent facetReload = panel.getFacet(Facets.RELOAD);
       if (facetReload != null && facetReload instanceof UIReload && facetReload.isRendered()) {
         UIReload update = (UIReload) facetReload;
-        frequency = update.getFrequency();
-      }
-      if (frequency == null) {
-        frequency = 0;
+        writer.writeAttribute(DataAttributes.RELOAD, Integer.toString(update.getFrequency()), false);
       }
-      final String[] cmds = {
-          "new Tobago.Panel(\"" + clientId + "\", " + true + ", " + frequency + ");"
-      };
-      HtmlRendererUtils.writeScriptLoader(facesContext, null, cmds);
     }
+
+    HtmlRendererUtils.encodeContextMenu(facesContext, writer, panel);
+
     HtmlRendererUtils.checkForCommandFacet(panel, facesContext, writer);
 
     final Measure borderLeft = panel.getBorderLeft();

Modified: myfaces/tobago/branches/tobago-tree-table/tobago-theme/tobago-theme-standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/msie_6_0/script/tobago.js
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-tree-table/tobago-theme/tobago-theme-standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/msie_6_0/script/tobago.js?rev=1302807&r1=1302806&r2=1302807&view=diff
==============================================================================
--- myfaces/tobago/branches/tobago-tree-table/tobago-theme/tobago-theme-standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/msie_6_0/script/tobago.js (original)
+++ myfaces/tobago/branches/tobago-tree-table/tobago-theme/tobago-theme-standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/msie_6_0/script/tobago.js Tue Mar 20 09:17:51 2012
@@ -93,3 +93,6 @@ Tobago.fixSelectionOnFocus = function() 
     // ignore
   }
 };
+
+Tobago.registerCallback(Tobago.fixPngAlphaAll, Tobago.Phase.WINDOW_LOAD);
+Tobago.registerCallback(Tobago.fixPngAlphaAll, Tobago.Phase.AFTER_UPDATE);

Modified: myfaces/tobago/branches/tobago-tree-table/tobago-theme/tobago-theme-standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/standard/script/tobago-menu.js
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-tree-table/tobago-theme/tobago-theme-standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/standard/script/tobago-menu.js?rev=1302807&r1=1302806&r2=1302807&view=diff
==============================================================================
--- myfaces/tobago/branches/tobago-tree-table/tobago-theme/tobago-theme-standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/standard/script/tobago-menu.js (original)
+++ myfaces/tobago/branches/tobago-tree-table/tobago-theme/tobago-theme-standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/standard/script/tobago-menu.js Tue Mar 20 09:17:51 2012
@@ -315,3 +315,5 @@ jQuery.tobagoMenuParent = function(eleme
   });
 })(jQuery);
 
+Tobago.registerCallback(Tobago.Menu.init, Tobago.Phase.DOCUMENT_READY);
+Tobago.registerCallback(Tobago.Menu.init, Tobago.Phase.AFTER_UPDATE);

Modified: myfaces/tobago/branches/tobago-tree-table/tobago-theme/tobago-theme-standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/standard/script/tobago-tree.js
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-tree-table/tobago-theme/tobago-theme-standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/standard/script/tobago-tree.js?rev=1302807&r1=1302806&r2=1302807&view=diff
==============================================================================
--- myfaces/tobago/branches/tobago-tree-table/tobago-theme/tobago-theme-standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/standard/script/tobago-tree.js (original)
+++ myfaces/tobago/branches/tobago-tree-table/tobago-theme/tobago-theme-standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/standard/script/tobago-tree.js Tue Mar 20 09:17:51 2012
@@ -200,3 +200,6 @@ Tobago.Tree.isExpanded = function(node, 
 Tobago.Tree.rowIndex = function (node) {
   return node.attr("id").replace(/.+\:(\d+)(\:\w+)+/, '$1');
 };
+
+Tobago.registerCallback(Tobago.Tree.init, Tobago.Phase.DOCUMENT_READY);
+Tobago.registerCallback(Tobago.Tree.init, Tobago.Phase.AFTER_UPDATE);

Modified: myfaces/tobago/branches/tobago-tree-table/tobago-theme/tobago-theme-standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/standard/script/tobago.js
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-tree-table/tobago-theme/tobago-theme-standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/standard/script/tobago.js?rev=1302807&r1=1302806&r2=1302807&view=diff
==============================================================================
--- myfaces/tobago/branches/tobago-tree-table/tobago-theme/tobago-theme-standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/standard/script/tobago.js (original)
+++ myfaces/tobago/branches/tobago-tree-table/tobago-theme/tobago-theme-standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/standard/script/tobago.js Tue Mar 20 09:17:51 2012
@@ -234,20 +234,40 @@ var Tobago = {
 
   initMarker: false,
 
+  callbacks: {
+    documentReady: [],
+    windowLoad: [],
+    afterUpdate: []
+  },
+
   // -------- Functions -------------------------------------------------------
 
+  registerCallback: function(callback, phase) {
+
+    if (Tobago.Phase.DOCUMENT_READY == phase) {
+      Tobago.callbacks.documentReady.push(callback);
+    } else if (Tobago.Phase.WINDOW_LOAD == phase) {
+      Tobago.callbacks.windowLoad.push(callback);
+    } else if (Tobago.Phase.AFTER_UPDATE == phase) {
+      Tobago.callbacks.afterUpdate.push(callback);
+    } else {
+      LOG.error("Unknown phase: " + phase); // @DEV_ONLY
+    }
+  },
 
   /**
    * Tobago's central init function.
-   * Called via onload attribute of body tag
+   * Called when the document (DOM) is ready
    */
-  init: function(pageId) {
+  init: function() {
 
     if (this.initMarker) {
       return;
     }
     this.initMarker = true;
 
+    var pageId = jQuery("body").attr("id");
+
 //    new LOG.LogArea({hide: false});
 //    LOG.show();
     if (TbgTimer.endBody) { // @DEV_ONLY
@@ -263,7 +283,9 @@ var Tobago = {
 
     this.addBindEventListener(window, 'unload', this, 'onUnload');
 
-    Tobago.init0();
+    for (var i = 0; i < Tobago.callbacks.documentReady.length; i++) {
+      Tobago.callbacks.documentReady[i]();
+    }
 
     if (TbgTimer.endBody) { // @DEV_ONLY
       TbgTimer.startAppOnload = new Date(); // @DEV_ONLY
@@ -1481,16 +1503,23 @@ var Tobago = {
   }
 };
 
-// internal initializer will be called in two cases:
-// 1. full load: elements: undefined
-// 2. ajax load: elements: list of the loaded dom elements
-Tobago.init0 = function(elements) {
-  Tobago.Menu.init(elements);
-  Tobago.TabGroup.init(elements);
-  Tobago.Tree.init(elements);
-  Tobago.ToolBar.init(elements);
-  Tobago.SelectManyShuttle.init(elements);
-  Tobago.fixPngAlphaAll(elements);
+jQuery(document).ready(function() {
+  Tobago.init();
+});
+
+jQuery(window).load(function() {
+  for (var i = 0; i < Tobago.callbacks.windowLoad.length; i++) {
+    Tobago.callbacks.windowLoad[i]();
+  }
+});
+
+Tobago.Phase = {
+  /** after the DOM was build */
+  DOCUMENT_READY:{},
+  /** after all images and CSS was loaded */
+  WINDOW_LOAD:{},
+  /** after an AJAX call */
+  AFTER_UPDATE:{}
 };
 
 Tobago.Config = {
@@ -1635,18 +1664,24 @@ Tobago.In.prototype.leaveRequired = func
 
 // XXX: 2nd parameter enableAjax is deprecated
 Tobago.Panel = function(panelId, enableAjax, autoReload) {
-  this.startTime = new Date();
   this.id = panelId;
   this.autoReload = autoReload;
-
   this.options = {
   };
 
-  //LOG.debug("Panel setup  " + this.id);
   this.setup();
   Tobago.addAjaxComponent(this.id, this);
 };
 
+Tobago.Panel.init = function(elements) {
+  var reloads = Tobago.Utils.selectWidthJQuery(elements, ".tobago-panel[data-tobago-reload]");
+  reloads.each(function(){
+    var id = jQuery(this).attr("id");
+    var frequency = parseInt(jQuery(this).attr("data-tobago-reload"));
+    new Tobago.Panel(id, true, frequency);
+  });
+};
+
 Tobago.Panel.prototype.setup = function() {
   this.initReload();
 };
@@ -1679,6 +1714,9 @@ Tobago.Panel.prototype.prepareReload = f
   Tobago.createOverlay(jQuery(Tobago.Utils.escapeClientId(this.id)));
 };
 
+Tobago.registerCallback(Tobago.Panel.init, Tobago.Phase.DOCUMENT_READY);
+Tobago.registerCallback(Tobago.Panel.init, Tobago.Phase.AFTER_UPDATE);
+
 Tobago.EventListener = function(element, event, func) {
   this.element = element;
   this.event = event;
@@ -2224,7 +2262,10 @@ Tobago.Updater = {
             this.afterDoUpdateSuccess();
           }
           if (data.html.length > 0) {
-            Tobago.init0(newElement);
+
+            for (var i = 0; i < Tobago.callbacks.afterUpdate.length; i++) {
+              Tobago.callbacks.afterUpdate[i](newElement);
+            }
           }
         } catch (e) {
           LOG.error('Error in doUpdate: ' + e); // @DEV_ONLY
@@ -2369,6 +2410,9 @@ Tobago.ToolBar.setRadioValue = function(
   element.value = value;
 };
 
+Tobago.registerCallback(Tobago.ToolBar.init, Tobago.Phase.DOCUMENT_READY);
+Tobago.registerCallback(Tobago.ToolBar.init, Tobago.Phase.AFTER_UPDATE);
+
 // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 // TabGroup
 
@@ -2476,6 +2520,9 @@ Tobago.TabGroup.ensureScrollPosition = f
   }
 };
 
+Tobago.registerCallback(Tobago.TabGroup.init, Tobago.Phase.DOCUMENT_READY);
+Tobago.registerCallback(Tobago.TabGroup.init, Tobago.Phase.AFTER_UPDATE);
+
 // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
 Tobago.SelectManyShuttle = {};
@@ -2525,6 +2572,9 @@ Tobago.SelectManyShuttle.copyValues = fu
       .attr('selected', 'selected').appendTo(hidden);
 };
 
+Tobago.registerCallback(Tobago.SelectManyShuttle.init, Tobago.Phase.DOCUMENT_READY);
+Tobago.registerCallback(Tobago.SelectManyShuttle.init, Tobago.Phase.AFTER_UPDATE);
+
 // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
 TbgTimer.endTbgJs = new Date(); // @DEV_ONLY