diff options
| author | Tristan Zur <tzur@web.web.ccwn.org> | 2014-03-27 22:27:47 +0100 |
|---|---|---|
| committer | Tristan Zur <tzur@web.web.ccwn.org> | 2014-03-27 22:27:47 +0100 |
| commit | b62676ca5d3d6f6ba3f019ea3f99722e165a98d8 (patch) | |
| tree | 86722cb80f07d4569f90088eeaea2fc2f6e2ef94 /js/dojo-1.6/dojox/drawing/ui/Toolbar.xd.js | |
Diffstat (limited to 'js/dojo-1.6/dojox/drawing/ui/Toolbar.xd.js')
| -rw-r--r-- | js/dojo-1.6/dojox/drawing/ui/Toolbar.xd.js | 296 |
1 files changed, 296 insertions, 0 deletions
diff --git a/js/dojo-1.6/dojox/drawing/ui/Toolbar.xd.js b/js/dojo-1.6/dojox/drawing/ui/Toolbar.xd.js new file mode 100644 index 0000000..f8a665a --- /dev/null +++ b/js/dojo-1.6/dojox/drawing/ui/Toolbar.xd.js @@ -0,0 +1,296 @@ +/*
+ 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
+*/
+
+
+dojo._xdResourceLoaded(function(dojo, dijit, dojox){
+return {depends: [["provide", "dojox.drawing.ui.Toolbar"],
+["require", "dojox.drawing.library.icons"]],
+defineResource: function(dojo, dijit, dojox){if(!dojo._hasResource["dojox.drawing.ui.Toolbar"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dojox.drawing.ui.Toolbar"] = true;
+dojo.provide("dojox.drawing.ui.Toolbar");
+dojo.require("dojox.drawing.library.icons");
+
+dojo.declare("dojox.drawing.ui.Toolbar", [], {
+ // summary:
+ // A Toolbar used for holding buttons; typically representing the Stencils
+ // used for a DojoX Drawing.
+ // description:
+ // Creates a GFX-based toobar that holds GFX-based buttons. Can be either created
+ // within the actual drawing or within a seperate DOM element. When within the
+ // drawing, the toolbar will cover a portion of the drawing; hence the option.
+ //
+ // A Toolbar can be created programmtically or in markup. Currently markup is as
+ // a separate DOM element and programmtic is within the drawing.
+ // examples:
+ // | dojo.connect(myDrawing, "onSurfaceReady", function(){
+ // | new dojox.drawing.ui.Toolbar({
+ // | drawing:myDrawing,
+ // | tools:"all",
+ // | plugs:"all",
+ // | selected:"ellipse"
+ // | });
+ // | });
+ //
+ // | <div dojoType="dojox.drawing.ui.Toolbar" id="gfxToolbarNode" drawingId="drawingNode"
+ // | class="gfxToolbar" tools="all" plugs="all" selected="ellipse" orient="H"></div>
+ //
+ //
+ constructor: function(props, node){
+ //console.warn("GFX Toolbar:", props, node)
+ this.util = dojox.drawing.util.common;
+
+ // no mixin. painful.
+ if(props.drawing){
+ // programmatic
+ this.toolDrawing = props.drawing;
+ this.drawing = this.toolDrawing;
+ this.width = this.toolDrawing.width;
+ this.height = this.toolDrawing.height;
+ this.strSelected = props.selected;
+ this.strTools = props.tools;
+ this.strPlugs = props.plugs;
+ this._mixprops(["padding", "margin", "size", "radius"], props);
+ this.addBack();
+ this.orient = props.orient ? props.orient : false;
+ }else{
+ // markup
+ var box = dojo.marginBox(node);
+ this.width = box.w;
+ this.height = box.h;
+ this.strSelected = dojo.attr(node, "selected");
+ this.strTools = dojo.attr(node, "tools");
+ this.strPlugs = dojo.attr(node, "plugs");
+ this._mixprops(["padding", "margin", "size", "radius"], node);
+ this.toolDrawing = new dojox.drawing.Drawing({mode:"ui"}, node);
+ this.orient = dojo.attr(node, "orient");
+ }
+
+ this.horizontal = this.orient ? this.orient == "H" : this.width > this.height;
+ console.log("this.hor: ",this.horizontal," orient: ",this.orient);
+ if(this.toolDrawing.ready){
+ this.makeButtons();
+ if(!this.strSelected && this.drawing.defaults.clickMode){ this.drawing.mouse.setCursor('default'); };
+ }else{
+ var c = dojo.connect(this.toolDrawing, "onSurfaceReady", this, function(){
+ //console.log("TB built")
+ dojo.disconnect(c);
+ this.drawing = dojox.drawing.getRegistered("drawing", dojo.attr(node, "drawingId")); //
+ this.makeButtons();
+ if(!this.strSelected && this.drawing.defaults.clickMode){
+ var c = dojo.connect(this.drawing, "onSurfaceReady", this, function(){
+ dojo.disconnect(c);
+ this.drawing.mouse.setCursor('default');
+ });
+ }
+ });
+ }
+
+ },
+
+ // padding:Number
+ // The amount of spce between the top and left of the toolbar and the buttons.
+ padding:10,
+ // margin: Number
+ // The space between each button.
+ margin:5,
+ // size: Number
+ // The width and height of the button
+ size:30,
+ // radius: Number
+ // The size of the button's rounded corner
+ radius:3,
+ //
+ // toolPlugGap: number
+ // The distnce between the tool buttons and plug buttons
+ toolPlugGap:20,
+
+ // strSlelected | selected: String
+ // The button that should be selected at startup.
+ strSelected:"",
+ // strTools | tools: String
+ // A comma delineated list of the Stencil-tools to include in the Toolbar.
+ // If "all" is used, all registered tools are included.
+ strTools:"",
+ // strPlugs | plugs: String
+ // A comma delineated list of the plugins to include in the Toolbar.
+ // If "all" is used, all registered plugins are included.
+ strPlugs:"",
+
+ makeButtons: function(){
+ // summary:
+ // Internal. create buttons.
+ this.buttons = [];
+ this.plugins = [];
+
+ var x = this.padding, y = this.padding, w = this.size, h = this.size, r = this.radius, g = this.margin,
+ sym = dojox.drawing.library.icons,
+ s = {place:"BR", size:2, mult:4};
+
+ if(this.strTools){
+ var toolAr = [];
+ var tools = dojox.drawing.getRegistered("tool");
+ var toolMap = {};
+ for(var nm in tools){
+ var tool = this.util.abbr(nm);
+ toolMap[tool] = tools[nm];
+ if(this.strTools=="all"){
+ toolAr.push(tool);
+ var details = dojox.drawing.getRegistered("tool",nm);
+ if(details.secondary){
+ toolAr.push(details.secondary.name);
+ }
+ }
+ }
+ if(this.strTools!="all"){
+ var toolTmp = this.strTools.split(",");
+ dojo.forEach(toolTmp, function(tool){
+ tool = dojo.trim(tool);
+ toolAr.push(tool);
+ var details = dojox.drawing.getRegistered("tool",toolMap[tool].name);
+ if(details.secondary){
+ toolAr.push(details.secondary.name);
+ }
+ }, this);
+ //dojo.map(toolAr, function(t){ return dojo.trim(t); });
+ }
+
+ dojo.forEach(toolAr, function(t){
+ t = dojo.trim(t);
+ var secondary = false;
+ if(t.indexOf("Secondary")>-1){
+ var prim = t.substring(0,t.indexOf("Secondary"));
+ var sec = dojox.drawing.getRegistered("tool",toolMap[prim].name).secondary;
+ var label = sec.label;
+ this[t] = sec.funct;
+ if(sec.setup){ dojo.hitch(this, sec.setup)(); };
+ var btn = this.toolDrawing.addUI("button", {data:{x:x, y:y, width:w, height:h/2, r:r}, toolType:t, secondary:true, text:label, shadow:s, scope:this, callback:this[t]});
+ if(sec.postSetup){ dojo.hitch(this, sec.postSetup, btn)(); };
+ secondary = true;
+ } else {
+ var btn = this.toolDrawing.addUI("button", {data:{x:x, y:y, width:w, height:h, r:r}, toolType:t, icon:sym[t], shadow:s, scope:this, callback:"onToolClick"});
+ }
+ dojox.drawing.register(btn, "button");
+ this.buttons.push(btn);
+ if(this.strSelected==t){
+ btn.select();
+ this.selected = btn;
+ this.drawing.setTool(btn.toolType);
+ }
+ if(this.horizontal){
+ x += h + g;
+ }else{
+ var space = secondary ? h/2 + g : h + g;
+ y += space;
+ }
+ }, this);
+ }
+
+ if(this.horizontal){
+ x += this.toolPlugGap;
+ }else{
+ y += this.toolPlugGap;
+ }
+
+ if(this.strPlugs){
+ var plugAr = [];
+ var plugs = dojox.drawing.getRegistered("plugin");
+ var plugMap = {};
+ for(var nm in plugs){
+ var abbr = this.util.abbr(nm);
+ plugMap[abbr] = plugs[nm];
+ if(this.strPlugs=="all"){ plugAr.push(abbr); }
+ }
+ if(this.strPlugs!="all"){
+ plugAr = this.strPlugs.split(",");
+ dojo.map(plugAr, function(p){ return dojo.trim(p); });
+ }
+
+ dojo.forEach(plugAr, function(p){
+ var t = dojo.trim(p);
+ //console.log(" plugin:", p);
+ if(plugMap[p].button != false){
+ var btn = this.toolDrawing.addUI("button", {data:{x:x, y:y, width:w, height:h, r:r}, toolType:t, icon:sym[t], shadow:s, scope:this, callback:"onPlugClick"});
+ dojox.drawing.register(btn, "button");
+ this.plugins.push(btn);
+
+ if(this.horizontal){
+ x += h + g;
+ }else{
+ y += h + g;
+ }
+ }
+
+ var addPlug = {}
+ plugMap[p].button == false ? addPlug = {name:this.drawing.stencilTypeMap[p]} : addPlug = {name:this.drawing.stencilTypeMap[p], options:{button:btn}};
+ this.drawing.addPlugin(addPlug);
+ }, this);
+ }
+
+ dojo.connect(this.drawing, "onRenderStencil", this, "onRenderStencil");
+ },
+
+ onRenderStencil: function(/* Object */stencil){
+ // summary:
+ // Stencil render event.
+ if(this.drawing.defaults.clickMode){
+ this.drawing.mouse.setCursor("default");
+ this.selected && this.selected.deselect();
+ this.selected = null;
+ }
+
+ },
+
+ addTool: function(){
+ // TODO: add button here
+ },
+
+ addPlugin: function(){
+ // TODO: add button here
+ },
+
+ addBack: function(){
+ // summary:
+ // Internal. Adds the back, behind the toolbar.
+ this.toolDrawing.addUI("rect", {data:{x:0, y:0, width:this.width, height:this.size + (this.padding*2), fill:"#ffffff", borderWidth:0}});
+ },
+
+ onToolClick: function(/*Object*/button){
+ // summary:
+ // Tool click event. May be connected to.
+ //
+ if(this.drawing.defaults.clickMode){ this.drawing.mouse.setCursor("crosshair"); }
+ dojo.forEach(this.buttons, function(b){
+ if(b.id==button.id){
+ b.select();
+ this.selected = b;
+ this.drawing.setTool(button.toolType)
+ }else{
+ if(!b.secondary){ b.deselect(); }
+ }
+ },this)
+ },
+
+ onPlugClick: function(/*Object*/button){
+ // summary:
+ // Plugin click event. May be connected to.
+ },
+
+ _mixprops: function(/*Array*/props, /*Object | Node*/objNode){
+ // summary:
+ // Internally used for mixing in props from an object or
+ // from a dom node.
+ dojo.forEach(props, function(p){
+ this[p] = objNode.tagName
+ ? dojo.attr(objNode, p)===null ? this[p] : dojo.attr(objNode, p)
+ : objNode[p]===undefined ? this[p] : objNode[p];
+ }, this);
+ }
+
+});
+
+}
+
+}};});
|
