Upgrade to ExtJS 4.0.7 - Released 10/19/2011
[extjs.git] / docs / source / Tip.html
index 89d606c..76763f4 100644 (file)
@@ -3,8 +3,8 @@
 <head>
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
   <title>The source code</title>
-  <link href="../prettify/prettify.css" type="text/css" rel="stylesheet" />
-  <script type="text/javascript" src="../prettify/prettify.js"></script>
+  <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />
+  <script type="text/javascript" src="../resources/prettify/prettify.js"></script>
   <style type="text/css">
     .highlight { display: block; background-color: #ddd; }
   </style>
   </script>
 </head>
 <body onload="prettyPrint(); highlight();">
-  <pre class="prettyprint lang-js"><span id='Ext-slider-Tip'>/**
-</span> * @class Ext.slider.Tip
- * @extends Ext.tip.Tip
- * Simple plugin for using an Ext.tip.Tip with a slider to show the slider value. In general this
- * class is not created directly, instead pass the {@link Ext.slider.Multi#useTips} and 
- * {@link Ext.slider.Multi#tipText} configuration options to the slider directly.
- * {@img Ext.slider.Tip/Ext.slider.Tip1.png Ext.slider.Tip component}
- * Example usage:
-&lt;pre&gt;
-    Ext.create('Ext.slider.Single', {
-        width: 214,
-        minValue: 0,
-        maxValue: 100,
-        useTips: true,
-        renderTo: Ext.getBody()
-    });   
-&lt;/pre&gt;
- * Optionally provide your own tip text by passing tipText:
- &lt;pre&gt;
- new Ext.slider.Single({
-     width: 214,
-     minValue: 0,
-     maxValue: 100,
-     useTips: true,
-     tipText: function(thumb){
-         return Ext.String.format('&lt;b&gt;{0}% complete&lt;/b&gt;', thumb.value);
-     }
- });
- &lt;/pre&gt;
+  <pre class="prettyprint lang-js"><span id='Ext-layout-component-Tip'>/**
+</span> * Component layout for Tip/ToolTip/etc. components
+ * @class Ext.layout.component.Tip
+ * @extends Ext.layout.component.Dock
+ * @private
  */
-Ext.define('Ext.slider.Tip', {
-    extend: 'Ext.tip.Tip',
-    minWidth: 10,
-    alias: 'widget.slidertip',
-    offsets : [0, -10],
+
+Ext.define('Ext.layout.component.Tip', {
+
+    /* Begin Definitions */
+
+    alias: ['layout.tip'],
+
+    extend: 'Ext.layout.component.Dock',
+
+    /* End Definitions */
+
+    type: 'tip',
     
-    isSliderTip: true,
+    onLayout: function(width, height) {
+        var me = this,
+            owner = me.owner,
+            el = owner.el,
+            minWidth,
+            maxWidth,
+            naturalWidth,
+            constrainedWidth,
+            xy = el.getXY();
 
-    init: function(slider) {
-        var me = this;
-        
-        slider.on({
-            scope    : me,
-            dragstart: me.onSlide,
-            drag     : me.onSlide,
-            dragend  : me.hide,
-            destroy  : me.destroy
-        });
-    },
-<span id='Ext-slider-Tip-method-onSlide'>    /**
-</span>     * @private
-     * Called whenever a dragstart or drag event is received on the associated Thumb. 
-     * Aligns the Tip with the Thumb's new position.
-     * @param {Ext.slider.MultiSlider} slider The slider
-     * @param {Ext.EventObject} e The Event object
-     * @param {Ext.slider.Thumb} thumb The thumb that the Tip is attached to
-     */
-    onSlide : function(slider, e, thumb) {
-        var me = this;
-        me.show();
-        me.update(me.getText(thumb));
-        me.doComponentLayout();
-        me.el.alignTo(thumb.el, 'b-t?', me.offsets);
-    },
+        // Position offscreen so the natural width is not affected by the viewport's right edge
+        el.setXY([-9999,-9999]);
+
+        // Calculate initial layout
+        this.callParent(arguments);
 
-<span id='Ext-slider-Tip-method-getText'>    /**
-</span>     * Used to create the text that appears in the Tip's body. By default this just returns
-     * the value of the Slider Thumb that the Tip is attached to. Override to customize.
-     * @param {Ext.slider.Thumb} thumb The Thumb that the Tip is attached to
-     * @return {String} The text to display in the tip
-     */
-    getText : function(thumb) {
-        return String(thumb.value);
+        // Handle min/maxWidth for auto-width tips
+        if (!Ext.isNumber(width)) {
+            minWidth = owner.minWidth;
+            maxWidth = owner.maxWidth;
+            // IE6/7 in strict mode have a problem doing an autoWidth
+            if (Ext.isStrict &amp;&amp; (Ext.isIE6 || Ext.isIE7)) {
+                constrainedWidth = me.doAutoWidth();
+            } else {
+                naturalWidth = el.getWidth();
+            }
+            if (naturalWidth &lt; minWidth) {
+                constrainedWidth = minWidth;
+            }
+            else if (naturalWidth &gt; maxWidth) {
+                constrainedWidth = maxWidth;
+            }
+            if (constrainedWidth) {
+                this.callParent([constrainedWidth, height]);
+            }
+        }
+
+        // Restore position
+        el.setXY(xy);
+    },
+    
+    doAutoWidth: function(){
+        var me = this,
+            owner = me.owner,
+            body = owner.body,
+            width = body.getTextWidth();
+            
+        if (owner.header) {
+            width = Math.max(width, owner.header.getWidth());
+        }
+        if (!Ext.isDefined(me.frameWidth)) {
+            me.frameWidth = owner.el.getWidth() - body.getWidth();
+        }
+        width += me.frameWidth + body.getPadding('lr');
+        return width;
     }
-});</pre>
+});
+</pre>
 </body>
 </html>