1
0
mirror of https://tt-rss.org/git/tt-rss.git synced 2024-07-03 13:00:51 +02:00
ttrss/lib/dijit/_editor/plugins/TextColor.js.uncompressed.js
2012-08-14 18:59:18 +04:00

120 lines
3.0 KiB
JavaScript

define("dijit/_editor/plugins/TextColor", [
"require",
"dojo/colors", // colors.fromRgb
"dojo/_base/declare", // declare
"dojo/_base/lang",
"../_Plugin",
"../../form/DropDownButton"
], function(require, colors, declare, lang, _Plugin, DropDownButton){
/*=====
var _Plugin = dijit._editor._Plugin;
=====*/
// module:
// dijit/_editor/plugins/TextColor
// summary:
// This plugin provides dropdown color pickers for setting text color and background color
var TextColor = declare("dijit._editor.plugins.TextColor", _Plugin, {
// summary:
// This plugin provides dropdown color pickers for setting text color and background color
//
// description:
// The commands provided by this plugin are:
// * foreColor - sets the text color
// * hiliteColor - sets the background color
// Override _Plugin.buttonClass to use DropDownButton (with ColorPalette) to control this plugin
buttonClass: DropDownButton,
// useDefaultCommand: Boolean
// False as we do not use the default editor command/click behavior.
useDefaultCommand: false,
_initButton: function(){
this.inherited(arguments);
// Setup to lazy load ColorPalette first time the button is clicked
var self = this;
this.button.loadDropDown = function(callback){
require(["../../ColorPalette"], lang.hitch(this, function(ColorPalette){
this.dropDown = new ColorPalette({
value: self.value,
onChange: function(color){
self.editor.execCommand(self.command, color);
}
});
callback();
}));
};
},
updateState: function(){
// summary:
// Overrides _Plugin.updateState(). This updates the ColorPalette
// to show the color of the currently selected text.
// tags:
// protected
var _e = this.editor;
var _c = this.command;
if(!_e || !_e.isLoaded || !_c.length){
return;
}
if(this.button){
var disabled = this.get("disabled");
this.button.set("disabled", disabled);
if(disabled){ return; }
var value;
try{
value = _e.queryCommandValue(_c)|| "";
}catch(e){
//Firefox may throw error above if the editor is just loaded, ignore it
value = "";
}
}
if(value == ""){
value = "#000000";
}
if(value == "transparent"){
value = "#ffffff";
}
if(typeof value == "string"){
//if RGB value, convert to hex value
if(value.indexOf("rgb")> -1){
value = colors.fromRgb(value).toHex();
}
}else{ //it's an integer(IE returns an MS access #)
value =((value & 0x0000ff)<< 16)|(value & 0x00ff00)|((value & 0xff0000)>>> 16);
value = value.toString(16);
value = "#000000".slice(0, 7 - value.length)+ value;
}
this.value = value;
var dropDown = this.button.dropDown;
if(dropDown && value !== dropDown.get('value')){
dropDown.set('value', value, false);
}
}
});
// Register this plugin.
_Plugin.registry["foreColor"] = function(){
return new TextColor({command: "foreColor"});
};
_Plugin.registry["hiliteColor"] = function(){
return new TextColor({command: "hiliteColor"});
};
return TextColor;
});