1 define(['libs/jquery', 'libs/underscore', 'modules/documentToolbar/actionView', 'libs/text!./template.html'], function($, _, actionView, template) {
6 return function(sandbox) {
13 node: $(_.template(template)()),
14 getOption: function(option) {
15 return this.node.find('.rng-module-documentToolbar-toolbarOption[data-option=' + option +']').val();
17 addAction: function(group, actionDescription) {
18 var action = sandbox.createAction(actionDescription.actionName, actionDescription.actionConfig),
20 addedActions.push(action);
21 view = actionView.create(action);
23 _.pairs(contextParams).forEach(function(pair) {
26 action.updateContextParam(name, value);
29 group.append(view.dom);
30 action.on('actionExecuted', function(ret) {
31 sandbox.publish('actionExecuted', action, ret);
34 view.on('hover', function() {
35 sandbox.publish('actionHovered', action);
37 view.on('leave', function() {
38 sandbox.publish('actionOff', action);
41 addActionsGroup: function() {
43 div.addClass('rng-module-documentToolbar-toolbarGroup');
44 this.node.append(div);
49 var setContextParam = function(what, ctx) {
50 contextParams[what] = ctx;
51 addedActions.forEach(function(action) {
52 action.updateContextParam(what, contextParams[what]);
56 sandbox.registerKeyHandler('keydown', function(e) {
57 if(e.keyCode === 17) {
58 addedActions.forEach(function(action) {
59 action.updateKeyParam('ctrl', true);
63 sandbox.registerKeyHandler('keyup', function(e) {
64 if(e.keyCode === 17) {
65 addedActions.forEach(function(action) {
66 action.updateKeyParam('ctrl', false);
73 var config = sandbox.getConfig().toolbar || {};
74 config.forEach(function(actionsGroup) {
75 var group = view.addActionsGroup();
76 actionsGroup.forEach(function(actionDescription) {
77 if(typeof actionDescription === 'string') {
78 actionDescription = {actionName: actionDescription, actionConfig: {}};
80 view.addAction(group, actionDescription);
83 sandbox.publish('ready');
85 getView: function() { return view.node; },
86 setDocumentFragment: function(fragment) {
88 document = fragment.document;
89 document.on('operationEnd', function() {
90 setContextParam('document', document);
92 setContextParam('document', document);
94 setContextParam('fragment', fragment);
97 setCanvas: function(_canvas) {
98 setContextParam('canvas', _canvas);
101 canvas.on('changed', function() {
102 setContextParam('canvas', _canvas);
106 getOption: function(option) { return view.getOption(option); }