aboutsummaryrefslogtreecommitdiff
path: root/includes/js/dojox/sketch/Toolbar.js
blob: 73dc82c43ce2a2e99e38fe1c24809dc94caabab3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
if(!dojo._hasResource["dojox.sketch.Toolbar"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
dojo._hasResource["dojox.sketch.Toolbar"] = true;
dojo.provide("dojox.sketch.Toolbar");

dojo.require("dojox.sketch.Annotation");
dojo.require("dijit.Toolbar");
dojo.require("dijit.form.Button");
dojo.require("dijit.form.Slider");

dojo.declare("dojox.sketch.ButtonGroup", null, {
	constructor: function(){
		this._childMaps={};
		this._children=[];
	},
	add: function(/*_Plugin*/ plugin){
		this._childMaps[plugin]=plugin.connect(plugin,'onActivate',dojo.hitch(this,'_resetGroup',plugin));
		this._children.push(plugin);
	},
//	remove: function(/*_Plugin*/ plugin){
//		widget.disconnect(this._childMaps[widget.id]);
//		delete this._childMaps[widget.id];
//		this._children.splice(this._children.indexOf(widget.id),1);
//	},
	_resetGroup: function(p){
		var cs=this._children;
		dojo.forEach(cs,function(c){
			if(p!=c && c['attr']){
				c.attr('checked',false);
			}
		});
	}
});

dojo.declare("dojox.sketch.Toolbar", dijit.Toolbar, {
	figure: null,
	plugins: null,
	postCreate: function(){
		this.inherited(arguments);
		this.shapeGroup=new dojox.sketch.ButtonGroup;

		this.connect(this.figure,'onLoad','reset');
		if(!this.plugins){
			this.plugins=['Slider','Lead','SingleArrow','DoubleArrow','Underline','Preexisting'];
		}
		this._plugins=[];

		dojo.forEach(this.plugins,function(obj){
			var name=dojo.isString(obj)?obj:obj.name;
			var p=new dojox.sketch.tools[name](obj.args||{});
			this._plugins.push(p);
			p.setFigure(this.figure);
			p.setToolbar(this);
			if(!this._defaultTool && p.button){
				this._defaultTool=p;
			}
		},this);
	},
	destroy: function(){
		dojo.forEach(this._plugins,function(p){
			p.destroy();
		});
		this.inherited(arguments);
		delete this._defaultTool;
		delete this._plugins;
	},
	addGroupItem: function(/*_Plugin*/item,group){
		if(group!='toolsGroup'){
			console.error('not supported group '+group);
			return;
		}

		this.shapeGroup.add(item);
	},
	reset: function(){
		this._defaultTool.activate();
	},
	_setShape: function(s){
		if(!this.figure.surface) return;
		//	now do the action.
		if(this.figure.hasSelections()){
			for(var i=0; i<this.figure.selected.length; i++){
				var before=this.figure.selected[i].serialize();
				this.figure.convert(this.figure.selected[i], s);
				this.figure.history.add(ta.CommandTypes.Convert, this.figure.selected[i], before);
			}
		}
	}
});

dojox.sketch.makeToolbar=function(node,figure){
	var toolbar=new dojox.sketch.Toolbar({"figure":figure});
	node.appendChild(toolbar.domNode);
	return toolbar;
};

}