123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183 |
- /*
- Copyright (c) 2004-2012, 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["dojox.editor.plugins.StatusBar"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
- dojo._hasResource["dojox.editor.plugins.StatusBar"] = true;
- dojo.provide("dojox.editor.plugins.StatusBar");
- dojo.require("dijit.Toolbar");
- dojo.require("dijit._editor._Plugin");
- dojo.require("dojox.layout.ResizeHandle");
- dojo.require("dojo.i18n");
- dojo.requireLocalization("dojox.editor.plugins", "StatusBar", null, "");
- dojo.experimental("dojox.editor.plugins.StatusBar");
- dojo.declare("dojox.editor.plugins._StatusBar", [dijit._Widget, dijit._Templated],{
- // templateString: String
- // Template for the widget. Currently using table to get the alignment behavior and
- // bordering I wanted. Would prefer not to use table, though.
- templateString: '<div class="dojoxEditorStatusBar">' +
- '<table><tbody><tr>'+
- '<td class="dojoxEditorStatusBarText" tabindex="-1" aria-role="presentation" aria-live="aggressive"><span dojoAttachPoint="barContent"> </span></td>' +
- '<td><span dojoAttachPoint="handle"></span></td>' +
- '</tr></tbody><table>'+
- '</div>',
- _getValueAttr: function(){
- // summary:
- // Over-ride to get the value of the status bar from the widget.
- // tags:
- // Protected
- return this.barContent.innerHTML;
- },
- _setValueAttr: function(str){
- // summary:
- // Over-ride to set the value of the status bar from the widget.
- // If no value is set, it is replaced with a non-blocking space.
- // str: String
- // The string to set as the status bar content.
- // tags:
- // protected
- if(str){
- str = dojo.trim(str);
- if(!str){
- str = " ";
- }
- }else{
- str = " ";
- }
- this.barContent.innerHTML = str;
- }
- });
- dojo.declare("dojox.editor.plugins.StatusBar",dijit._editor._Plugin,{
- // summary:
- // This plugin provides StatusBar cabability to the editor.
- // Basically a footer bar where status can be published. It also
- // puts a resize handle on the status bar, allowing you to resize the
- // editor via mouse.
- // statusBar: [protected]
- // The status bar and resizer.
- statusBar: null,
- // resizer: [public] Boolean
- // Flag indicating that a resizer should be shown or not. Default is true.
- // There are cases (such as using center pane border container to autoresize the editor
- // That a resizer is not valued.
- resizer: true,
- setEditor: function(editor){
- // summary:
- // Over-ride for the setting of the editor.
- // editor: Object
- // The editor to configure for this plugin to use.
- this.editor = editor;
- this.statusBar = new dojox.editor.plugins._StatusBar();
- if(this.resizer){
- this.resizeHandle = new dojox.layout.ResizeHandle({targetId: this.editor, activeResize: true}, this.statusBar.handle);
- this.resizeHandle.startup();
- }else{
- dojo.style(this.statusBar.handle.parentNode, "display", "none");
- }
- var pos = null;
- if(editor.footer.lastChild){
- pos = "after";
- }
- dojo.place(this.statusBar.domNode, editor.footer.lastChild || editor.footer, pos);
- this.statusBar.startup();
- this.editor.statusBar = this;
- // Register a pub-sub event to listen for status bar messages, in addition to being available off
- // the editor as a property 'statusBar'
- this._msgListener = dojo.subscribe(this.editor.id + "_statusBar", dojo.hitch(this, this._setValueAttr));
- },
- _getValueAttr: function(){
- // summary:
- // Over-ride to get the value of the status bar from the widget.
- // tags:
- // protected
- return this.statusBar.get("value");
- },
- _setValueAttr: function(str){
- // summary:
- // Over-ride to set the value of the status bar from the widget.
- // If no value is set, it is replaced with a non-blocking space.
- // str: String
- // The String value to set in the bar.
- // tags:
- // protected
- this.statusBar.set("value", str);
- },
- set: function(attr, val){
- // summary:
- // Quick and dirty implementation of 'set' pattern
- // attr:
- // The attribute to set.
- // val:
- // The value to set it to.
- if(attr){
- var fName = "_set" + attr.charAt(0).toUpperCase() + attr.substring(1, attr.length) + "Attr";
- if(dojo.isFunction(this[fName])){
- this[fName](val);
- }else{
- this[attr] = val;
- }
- }
- },
- get: function(attr){
- // summary:
- // Quick and dirty implementation of 'get' pattern
- // attr:
- // The attribute to get.
- if(attr){
- var fName = "_get" + attr.charAt(0).toUpperCase() + attr.substring(1, attr.length) + "Attr";
- var f = this[fName];
- if(dojo.isFunction(f)){
- return this[fName]();
- }else{
- return this[attr];
- }
- }
- return null;
- },
- destroy: function(){
- // summary:
- // Over-ride to clean up the breadcrumb toolbar.
- if(this.statusBar){
- this.statusBar.destroy();
- delete this.statusBar;
- }
- if(this.resizeHandle){
- this.resizeHandle.destroy();
- delete this.resizeHandle;
- }
- if(this._msgListener){
- dojo.unsubscribe(this._msgListener);
- delete this._msgListener;
- }
- delete this.editor.statusBar;
- }
- });
- // Register this plugin.
- dojo.subscribe(dijit._scopeName + ".Editor.getPlugin",null,function(o){
- if(o.plugin){ return; }
- var name = o.args.name.toLowerCase();
- if(name === "statusbar"){
- var resizer = ("resizer" in o.args)?o.args.resizer:true;
- o.plugin = new dojox.editor.plugins.StatusBar({resizer: resizer});
- }
- });
- }
|