summaryrefslogtreecommitdiff
path: root/js/dojo-1.6/dojox/drawing/annotations/Label.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/dojo-1.6/dojox/drawing/annotations/Label.js')
-rw-r--r--js/dojo-1.6/dojox/drawing/annotations/Label.js123
1 files changed, 123 insertions, 0 deletions
diff --git a/js/dojo-1.6/dojox/drawing/annotations/Label.js b/js/dojo-1.6/dojox/drawing/annotations/Label.js
new file mode 100644
index 0000000..abcc6de
--- /dev/null
+++ b/js/dojo-1.6/dojox/drawing/annotations/Label.js
@@ -0,0 +1,123 @@
+/*
+ Copyright (c) 2004-2011, The Dojo Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+
+if(!dojo._hasResource["dojox.drawing.annotations.Label"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dojox.drawing.annotations.Label"] = true;
+dojo.provide("dojox.drawing.annotations.Label");
+dojo.require("dojox.drawing.stencil.Text");
+
+dojox.drawing.annotations.Label = dojox.drawing.util.oo.declare(
+ // summary:
+ // An annotation called internally to label an Stencil.
+ // description:
+ // Annotation is positioned with dojox.drawing.util.positioning.label
+ // That method should be overwritten for custom placement. Or,
+ // add a 'setLabelCustom' method to the Stencil and it will be used.
+ //
+ dojox.drawing.stencil.Text,
+ function(/*Object*/options){
+ // arguments:
+ // options: Object
+ // One key value: the stencil that called this.
+ //
+ this.master = options.stencil;
+ this.labelPosition = options.labelPosition || "BR"; // TL, TR, BR, BL, or function
+ if(dojo.isFunction(this.labelPosition)){
+ this.setLabel = this.setLabelCustom;
+ }
+ this.setLabel(options.text || "");
+ this.connect(this.master, "onTransform", this, "setLabel");
+ this.connect(this.master, "destroy", this, "destroy");
+
+ if(this.style.labelSameColor){
+ this.connect(this.master, "attr", this, "beforeAttr");
+ }
+ },{
+ _align:"start",
+ drawingType:"label",
+
+ setLabelCustom: function(/* ? String */text){
+ // summary:
+ // Attaches to custom positioning within a Stencil
+ //
+ var d = dojo.hitch(this.master, this.labelPosition)();
+ this.setData({
+ x:d.x,
+ y:d.y,
+ width:d.w || this.style.text.minWidth,
+ height:d.h || this._lineHeight
+ });
+
+ // is an event, not text, so keep the old label:
+ if(text && !text.split){ text = this.getText(); }
+
+ this.render(this.typesetter(text));
+ },
+
+ setLabel: function(/* String */text){
+ // summary:
+ // Sets the text of the label. Not called directly. Should
+ // be called within Stencil. See stencil._Base
+ //
+ // onTransform will pass an object here
+ var x, y, box = this.master.getBounds();
+
+ if(/B/.test(this.labelPosition)){
+ y = box.y2 - this._lineHeight;
+ }else{
+ y = box.y1;
+ }
+
+ if(/R/.test(this.labelPosition)){
+ x = box.x2;
+ }else{
+ y = box.y1;
+ this._align = "end";
+ }
+
+ if(!this.labelWidth || (text && text.split && text != this.getText())){
+ this.setData({
+ x:x,
+ y:y,
+ height:this._lineHeight,
+ width:this.style.text.minWidth
+ });
+
+ this.labelWidth = this.style.text.minWidth;
+ this.render(this.typesetter(text));
+
+ }else{
+
+ this.setData({
+ x:x,
+ y:y,
+ height:this.data.height,
+ width:this.data.width
+ });
+
+ this.render();
+ }
+
+ },
+ beforeAttr: function(key, value){
+ if(value!==undefined){
+ // make it an object
+ var k = key; key = {}; key[k] = value;
+ }
+ delete key.x;
+ delete key.y;
+ delete key.width;
+ delete key.height;
+ this.attr(key);
+ // FIXME: this.created should already be set, shouldn't it?
+ !this.created && this.render();
+ }
+ }
+
+);
+
+}