summaryrefslogtreecommitdiff
path: root/js/dojo-1.6/dojox/grid/_Selector.js
diff options
context:
space:
mode:
authorTristan Zur <tzur@web.web.ccwn.org>2014-03-27 22:27:47 +0100
committerTristan Zur <tzur@web.web.ccwn.org>2014-03-27 22:27:47 +0100
commitb62676ca5d3d6f6ba3f019ea3f99722e165a98d8 (patch)
tree86722cb80f07d4569f90088eeaea2fc2f6e2ef94 /js/dojo-1.6/dojox/grid/_Selector.js
Initial commit of intern.ccwn.org contentsHEADmaster
Diffstat (limited to 'js/dojo-1.6/dojox/grid/_Selector.js')
-rw-r--r--js/dojo-1.6/dojox/grid/_Selector.js227
1 files changed, 227 insertions, 0 deletions
diff --git a/js/dojo-1.6/dojox/grid/_Selector.js b/js/dojo-1.6/dojox/grid/_Selector.js
new file mode 100644
index 0000000..37880dd
--- /dev/null
+++ b/js/dojo-1.6/dojox/grid/_Selector.js
@@ -0,0 +1,227 @@
+/*
+ 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["dojox.grid._Selector"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dojox.grid._Selector"] = true;
+dojo.provide("dojox.grid._Selector");
+
+dojo.require("dojox.grid.Selection");
+dojo.require("dojox.grid._View");
+dojo.require("dojox.grid._Builder");
+
+(function(){
+ dojox.grid._InputSelectorHeaderBuilder = dojo.extend(function(view){
+ dojox.grid._HeaderBuilder.call(this, view);
+ },dojox.grid._HeaderBuilder.prototype,{
+ generateHtml: function(){
+ var w = this.view.contentWidth || 0;
+ var selectedCount = this.view.grid.selection.getSelectedCount();
+ var checked = (selectedCount && selectedCount == this.view.grid.rowCount) ? ' dijitCheckBoxChecked dijitChecked' : '';
+ return '<table style="width:' + w + 'px;" ' +
+ 'border="0" cellspacing="0" cellpadding="0" ' +
+ 'role="presentation"><tr><th style="text-align: center;">' +
+ '<div class="dojoxGridCheckSelector dijitReset dijitInline dijitCheckBox' + checked + '"></div></th></tr></table>';
+ },
+ doclick: function(e){
+ var selectedCount = this.view.grid.selection.getSelectedCount();
+
+ this.view._selectionChanging = true;
+ if(selectedCount==this.view.grid.rowCount){
+ this.view.grid.selection.deselectAll();
+ }else{
+ this.view.grid.selection.selectRange(0, this.view.grid.rowCount-1);
+ }
+ this.view._selectionChanging = false;
+ this.view.onSelectionChanged();
+ return true;
+ }
+ });
+
+ dojox.grid._SelectorContentBuilder = dojo.extend(function(view){
+ dojox.grid._ContentBuilder.call(this, view);
+ },dojox.grid._ContentBuilder.prototype,{
+ generateHtml: function(inDataIndex, inRowIndex){
+ var w = this.view.contentWidth || 0;
+ return '<table class="dojoxGridRowbarTable" style="width:' + w + 'px;" border="0" ' +
+ 'cellspacing="0" cellpadding="0" role="presentation"><tr>' +
+ '<td style="text-align: center;" class="dojoxGridRowbarInner">' + this.getCellContent(inRowIndex) + '</td></tr></table>';
+ },
+ getCellContent: function(inRowIndex){
+ return '&nbsp;';
+ },
+ findTarget: function(){
+ var t = dojox.grid._ContentBuilder.prototype.findTarget.apply(this, arguments);
+ return t;
+ },
+ domouseover: function(e){
+ this.view.grid.onMouseOverRow(e);
+ },
+ domouseout: function(e){
+ if(!this.isIntraRowEvent(e)){
+ this.view.grid.onMouseOutRow(e);
+ }
+ },
+ doclick: function(e){
+ var idx = e.rowIndex;
+ var selected = this.view.grid.selection.isSelected(idx);
+ var mode = this.view.grid.selection.mode;
+
+ if(!selected){
+ if(mode == 'single'){
+ this.view.grid.selection.select(idx);
+ }else if(mode != 'none'){
+ this.view.grid.selection.addToSelection(idx);
+ }
+ }else{
+ this.view.grid.selection.deselect(idx);
+ }
+
+ return true;
+ }
+ });
+
+ dojox.grid._InputSelectorContentBuilder = dojo.extend(function(view){
+ dojox.grid._SelectorContentBuilder.call(this, view);
+ },dojox.grid._SelectorContentBuilder.prototype,{
+ getCellContent: function(rowIndex){
+ var v = this.view;
+ var type = v.inputType == "checkbox" ? "CheckBox" : "Radio";
+ var checked = !!v.grid.selection.isSelected(rowIndex) ? ' dijit' + type + 'Checked dijitChecked' : '';
+ return '<div class="dojoxGridCheckSelector dijitReset dijitInline dijit' + type + checked + '"></div>';
+ }
+ });
+
+ dojo.declare("dojox.grid._Selector", dojox.grid._View, {
+ inputType: '',
+ selectionMode: '',
+
+ // summary:
+ // Custom grid view. If used in a grid structure, provides a small selectable region for grid rows.
+ defaultWidth: "2em",
+ noscroll: true,
+ padBorderWidth: 2,
+
+ _contentBuilderClass: dojox.grid._SelectorContentBuilder,
+
+ postCreate: function(){
+ this.inherited(arguments);
+
+ if(this.selectionMode){
+ this.grid.selection.mode = this.selectionMode;
+ }
+ this.connect(this.grid.selection, 'onSelected', 'onSelected');
+ this.connect(this.grid.selection, 'onDeselected', 'onDeselected');
+ },
+ buildRendering: function(){
+ this.inherited(arguments);
+ this.scrollboxNode.style.overflow = "hidden";
+ },
+ getWidth: function(){
+ return this.viewWidth || this.defaultWidth;
+ },
+ resize: function(){
+ this.adaptHeight();
+ },
+ setStructure: function(s){
+ this.inherited(arguments);
+ if(s.defaultWidth){
+ this.defaultWidth = s.defaultWidth;
+ }
+ },
+ adaptWidth: function(){
+ // Only calculate this here - rather than every call to buildRowContent
+ if(!("contentWidth" in this) && this.contentNode){
+ this.contentWidth = this.contentNode.offsetWidth - this.padBorderWidth;
+ }
+ },
+ // styling
+ doStyleRowNode: function(inRowIndex, inRowNode){
+ var n = [ "dojoxGridRowbar dojoxGridNonNormalizedCell" ];
+ if(this.grid.rows.isOver(inRowIndex)){
+ n.push("dojoxGridRowbarOver");
+ }
+ if(this.grid.selection.isSelected(inRowIndex)){
+ n.push("dojoxGridRowbarSelected");
+ }
+ inRowNode.className = n.join(" ");
+ },
+ // event handlers
+ onSelected: function(inIndex){
+ this.grid.updateRow(inIndex);
+ },
+ onDeselected: function(inIndex){
+ this.grid.updateRow(inIndex);
+ }
+ });
+ if(!dojox.grid._View.prototype._headerBuilderClass &&
+ !dojox.grid._View.prototype._contentBuilderClass){
+ dojox.grid._Selector.prototype.postCreate = function(){
+ this.connect(this.scrollboxNode,"onscroll","doscroll");
+ dojox.grid.util.funnelEvents(this.contentNode, this, "doContentEvent", [ 'mouseover', 'mouseout', 'click', 'dblclick', 'contextmenu', 'mousedown' ]);
+ dojox.grid.util.funnelEvents(this.headerNode, this, "doHeaderEvent", [ 'dblclick', 'mouseover', 'mouseout', 'mousemove', 'mousedown', 'click', 'contextmenu' ]);
+ if(this._contentBuilderClass){
+ this.content = new this._contentBuilderClass(this);
+ }else{
+ this.content = new dojox.grid._ContentBuilder(this);
+ }
+ if(this._headerBuilderClass){
+ this.header = new this._headerBuilderClass(this);
+ }else{
+ this.header = new dojox.grid._HeaderBuilder(this);
+ }
+ //BiDi: in RTL case, style width='9000em' causes scrolling problem in head node
+ if(!dojo._isBodyLtr()){
+ this.headerNodeContainer.style.width = "";
+ }
+ this.connect(this.grid.selection, 'onSelected', 'onSelected');
+ this.connect(this.grid.selection, 'onDeselected', 'onDeselected');
+ };
+ }
+
+ dojo.declare("dojox.grid._RadioSelector", dojox.grid._Selector, {
+ inputType: 'radio',
+ selectionMode: 'single',
+
+ _contentBuilderClass: dojox.grid._InputSelectorContentBuilder,
+
+ buildRendering: function(){
+ this.inherited(arguments);
+ this.headerNode.style.visibility = "hidden";
+ },
+
+ renderHeader: function(){}
+ });
+
+ dojo.declare("dojox.grid._CheckBoxSelector", dojox.grid._Selector, {
+ inputType: 'checkbox',
+ _headerBuilderClass: dojox.grid._InputSelectorHeaderBuilder,
+ _contentBuilderClass: dojox.grid._InputSelectorContentBuilder,
+ postCreate: function(){
+ this.inherited(arguments);
+ this.connect(this.grid, 'onSelectionChanged', 'onSelectionChanged');
+ this.connect(this.grid, 'updateRowCount', '_updateVisibility');
+ },
+ renderHeader: function(){
+ this.inherited(arguments);
+ this._updateVisibility(this.grid.rowCount);
+ },
+ _updateVisibility: function(rowCount){
+ this.headerNode.style.visibility = rowCount ? "" : "hidden";
+ },
+ onSelectionChanged: function(){
+ if(this._selectionChanging){ return; }
+ var inputDiv = dojo.query('.dojoxGridCheckSelector', this.headerNode)[0];
+ var g = this.grid;
+ var s = (g.rowCount && g.rowCount == g.selection.getSelectedCount());
+ g.allItemsSelected = s||false;
+ dojo.toggleClass(inputDiv, "dijitChecked", g.allItemsSelected);
+ dojo.toggleClass(inputDiv, "dijitCheckBoxChecked", g.allItemsSelected);
+ }
+ });
+})();
+
+}