You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
106 lines
2.8 KiB
JavaScript
106 lines
2.8 KiB
JavaScript
/*
|
|
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
|
|
*/
|
|
|
|
|
|
if(!dojo._hasResource["dijit._editor.plugins.TextColor"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
|
|
dojo._hasResource["dijit._editor.plugins.TextColor"] = true;
|
|
dojo.provide("dijit._editor.plugins.TextColor");
|
|
dojo.require("dijit._editor._Plugin");
|
|
dojo.require("dijit.ColorPalette");
|
|
|
|
|
|
dojo.declare("dijit._editor.plugins.TextColor", dijit._editor._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: dijit.form.DropDownButton,
|
|
|
|
// useDefaultCommand: Boolean
|
|
// False as we do not use the default editor command/click behavior.
|
|
useDefaultCommand: false,
|
|
|
|
constructor: function(){
|
|
this.dropDown = new dijit.ColorPalette();
|
|
this.connect(this.dropDown, "onChange", function(color){
|
|
this.editor.execCommand(this.command, color);
|
|
|
|
});
|
|
},
|
|
|
|
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 = dojo.colorFromRgb(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;
|
|
|
|
}
|
|
|
|
if(value !== this.dropDown.get('value')){
|
|
this.dropDown.set('value', value, false);
|
|
}
|
|
}
|
|
});
|
|
|
|
// Register this plugin.
|
|
dojo.subscribe(dijit._scopeName + ".Editor.getPlugin", null, function(o){
|
|
if(o.plugin){
|
|
return;
|
|
}
|
|
switch(o.args.name){
|
|
case "foreColor":
|
|
case "hiliteColor":
|
|
o.plugin = new dijit._editor.plugins.TextColor({
|
|
command: o.args.name
|
|
});
|
|
}
|
|
});
|
|
|
|
}
|