colorbutton.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. ///import core
  2. ///import uicore
  3. ///import ui/colorpicker.js
  4. ///import ui/popup.js
  5. ///import ui/splitbutton.js
  6. (function() {
  7. var utils = baidu.editor.utils,
  8. uiUtils = baidu.editor.ui.uiUtils,
  9. ColorPicker = baidu.editor.ui.ColorPicker,
  10. Popup = baidu.editor.ui.Popup,
  11. SplitButton = baidu.editor.ui.SplitButton,
  12. ColorButton = (baidu.editor.ui.ColorButton = function(options) {
  13. this.initOptions(options);
  14. this.initColorButton();
  15. });
  16. ColorButton.prototype = {
  17. initColorButton: function() {
  18. var me = this;
  19. this.popup = new Popup({
  20. content: new ColorPicker({
  21. noColorText: me.editor.getLang("clearColor"),
  22. editor: me.editor,
  23. onpickcolor: function(t, color) {
  24. me._onPickColor(color);
  25. },
  26. onpicknocolor: function(t, color) {
  27. me._onPickNoColor(color);
  28. }
  29. }),
  30. editor: me.editor
  31. });
  32. this.initSplitButton();
  33. },
  34. _SplitButton_postRender: SplitButton.prototype.postRender,
  35. postRender: function() {
  36. this._SplitButton_postRender();
  37. this.getDom("button_body").appendChild(
  38. uiUtils.createElementByHtml(
  39. '<div id="' + this.id + '_colorlump" class="edui-colorlump"></div>'
  40. )
  41. );
  42. this.getDom().className += " edui-colorbutton";
  43. },
  44. setColor: function(color) {
  45. this.getDom("colorlump").style.backgroundColor = color;
  46. this.color = color;
  47. },
  48. _onPickColor: function(color) {
  49. if (this.fireEvent("pickcolor", color) !== false) {
  50. this.setColor(color);
  51. this.popup.hide();
  52. }
  53. },
  54. _onPickNoColor: function(color) {
  55. if (this.fireEvent("picknocolor") !== false) {
  56. this.popup.hide();
  57. }
  58. }
  59. };
  60. utils.inherits(ColorButton, SplitButton);
  61. })();