/* Text palette to enter text and to choose font */
|
|
|
|
|
|
define([
|
|
'sugar-web/graphics/palette',
|
|
'mustache'
|
|
], function(palette, mustache) {
|
|
|
|
var textpalette = {};
|
|
|
|
/* We setup the palette with fonts */
|
|
textpalette.TextPalette = function(invoker, primaryText) {
|
|
palette.Palette.call(this, invoker, primaryText);
|
|
this.getPalette().id = "fontpalette";
|
|
this.fontChangeEvent = document.createEvent('CustomEvent');
|
|
this.fontChangeEvent.initCustomEvent('fontChange', true, true, {
|
|
'family': 'Arial'
|
|
});
|
|
this.template = '<center><table><tbody>' + '{{#rows}}' + '<tr>' + '{{#.}}' + '<td>' + '<button lineHeight="{{lineHeight}}" title="{{fontFamily}}" style="height:55px; width:55px; background-size:40px !important; background: #fff url({{ icon }}) no-repeat center; "></button>' + '</td>' + '{{/.}}' + '</tr>' + '{{/rows}}' + '</tbody></table></center>' + '<br/>';
|
|
var rows = [
|
|
[{
|
|
icon: 'icons/font-arial.svg',
|
|
lineHeight: '0.7',
|
|
fontFamily: 'Arial'
|
|
}, {
|
|
icon: 'icons/font-comic-sans.svg',
|
|
lineHeight: '0.8',
|
|
fontFamily: 'Comic Sans MS'
|
|
}, {
|
|
icon: 'icons/font-verdana.svg',
|
|
lineHeight: '0.8',
|
|
fontFamily: 'Verdana'
|
|
}]
|
|
];
|
|
var textsElem = document.createElement('div');
|
|
textsElem.innerHTML = mustache.render(this.template, {
|
|
rows: rows
|
|
});
|
|
this.setContent([textsElem]);
|
|
var buttons = textsElem.querySelectorAll('button');
|
|
var that = this;
|
|
|
|
function popDownOnButtonClick(event) {
|
|
for (var i = 0; i < buttons.length; i++) {
|
|
buttons[i].style.border = '0px solid #000';
|
|
}
|
|
event.target.style.border = '1px solid #f00';
|
|
that.popDown();
|
|
}
|
|
for (var i = 0; i < buttons.length; i++) {
|
|
buttons[i].addEventListener('click', function(e) {
|
|
for (var i = 0; i < buttons.length; i++) {
|
|
buttons[i].style.border = '0px solid #000';
|
|
}
|
|
e.target.style.border = '1px solid #f00';
|
|
that.fontChangeEvent.detail.family = e.target.title;
|
|
that.getPalette().dispatchEvent(that.fontChangeEvent);
|
|
that.popDown();
|
|
});
|
|
}
|
|
popDownOnButtonClick({
|
|
target: buttons[0]
|
|
});
|
|
};
|
|
|
|
var setFont = function (font) {
|
|
var buttons = this.getPalette().querySelectorAll('button');
|
|
for (var i = 0; i < buttons.length; i++) {
|
|
if (font == buttons[i].title)
|
|
buttons[i].style.border = '1px solid #f00';
|
|
else
|
|
buttons[i].style.border = '0px solid #000';
|
|
}
|
|
};
|
|
|
|
var addEventListener = function(type, listener, useCapture) {
|
|
return this.getPalette().addEventListener(type, listener, useCapture);
|
|
};
|
|
|
|
textpalette.TextPalette.prototype = Object.create(palette.Palette.prototype, {
|
|
setFont: {
|
|
value: setFont,
|
|
enumerable: true,
|
|
configurable: true,
|
|
writable: true
|
|
},
|
|
addEventListener: {
|
|
value: addEventListener,
|
|
enumerable: true,
|
|
configurable: true,
|
|
writable: true
|
|
}
|
|
});
|
|
return textpalette;
|
|
});
|