Page Menu
Home
Code
Search
Configure Global Search
Log In
Files
F947157
_DndSelectingManager.js
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
10 KB
Subscribers
None
_DndSelectingManager.js
View Options
/*
Copyright (c) 2004-2009, 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.enhanced.dnd._DndSelectingManager"
]){
dojo
.
_hasResource
[
"dojox.grid.enhanced.dnd._DndSelectingManager"
]
=
true
;
dojo
.
provide
(
"dojox.grid.enhanced.dnd._DndSelectingManager"
);
dojo
.
require
(
"dojox.grid.util"
);
dojo
.
require
(
"dojox.grid._Builder"
);
dojo
.
require
(
"dojox.grid.enhanced.dnd._DndGrid"
);
dojo
.
require
(
"dojox.grid.enhanced.dnd._DndBuilder"
);
dojo
.
require
(
"dojox.grid.enhanced.dnd._DndRowSelector"
);
dojo
.
require
(
"dojox.grid.enhanced.dnd._DndFocusManager"
);
dojo
.
declare
(
"dojox.grid.enhanced.dnd._DndSelectingManager"
,
null
,{
typeSelectingMode
:
[],
selectingDisabledTypes
:
[],
drugSelectionStart
:
null
,
drugCurrentPoint
:
null
,
drugMode
:
null
,
keepState
:
false
,
extendSelect
:
false
,
headerNodes
:
null
,
selectedCells
:
null
,
selectedColumns
:
[],
selectedClass
:
"dojoxGridRowSelected"
,
autoScrollRate
:
1000
,
constructor
:
function
(
_1
){
this
.
grid
=
_1
;
this
.
typeSelectingMode
=
[];
this
.
selectingDisabledTypes
=
[];
this
.
selectedColumns
=
[];
this
.
drugSelectionStart
=
new
Object
();
this
.
drugCurrentPoint
=
new
Object
();
this
.
resetStartPoint
();
this
.
extendGridForDnd
(
_1
);
this
.
selectedCells
=
[];
dojo
.
connect
(
this
.
grid
,
"_onFetchComplete"
,
dojo
.
hitch
(
this
,
"refreshColumnSelection"
));
dojo
.
connect
(
this
.
grid
.
scroller
,
"scroll"
,
dojo
.
hitch
(
this
,
"refreshColumnSelection"
));
dojo
.
subscribe
(
this
.
grid
.
rowSelectionChangedTopic
,
dojo
.
hitch
(
this
,
function
(
_2
){
try
{
if
(
_2
.
grid
==
this
.
grid
&&
_2
!=
this
){
this
.
cleanCellSelection
();
}
}
catch
(
e
){
}
}));
},
extendGridForDnd
:
function
(
_3
){
var
_4
=
_3
.
constructor
;
_3
.
mixin
(
_3
,
dojo
.
hitch
(
new
dojox
.
grid
.
enhanced
.
dnd
.
_DndGrid
(
this
)));
_3
.
constructor
=
_4
;
_3
.
mixin
(
_3
.
focus
,
new
dojox
.
grid
.
enhanced
.
dnd
.
_DndFocusManager
());
_3
.
mixin
(
_3
.
selection
,{
clickSelect
:
function
(){
}});
dojo
.
forEach
(
_3
.
views
.
views
,
function
(
_5
){
_3
.
mixin
(
_5
.
content
,
new
dojox
.
grid
.
enhanced
.
dnd
.
_DndBuilder
());
_3
.
mixin
(
_5
.
header
,
new
dojox
.
grid
.
enhanced
.
dnd
.
_DndHeaderBuilder
());
if
(
_5
.
declaredClass
==
"dojox.grid._RowSelector"
){
_3
.
mixin
(
_5
,
new
dojox
.
grid
.
enhanced
.
dnd
.
_DndRowSelector
());
}
dojox
.
grid
.
util
.
funnelEvents
(
_5
.
contentNode
,
_5
,
"doContentEvent"
,[
"mouseup"
]);
dojox
.
grid
.
util
.
funnelEvents
(
_5
.
headerNode
,
_5
,
"doHeaderEvent"
,[
"mouseup"
]);
});
dojo
.
forEach
(
this
.
grid
.
dndDisabledTypes
,
function
(
_6
){
this
.
disableSelecting
(
_6
);
},
this
);
this
.
disableFeatures
();
},
disableFeatures
:
function
(){
if
(
this
.
selectingDisabledTypes
[
"cell"
]){
this
.
cellClick
=
function
(){
};
this
.
drugSelectCell
=
function
(){
};
}
if
(
this
.
selectingDisabledTypes
[
"row"
]){
this
.
drugSelectRow
=
function
(){
};
}
if
(
this
.
selectingDisabledTypes
[
"col"
]){
this
.
selectColumn
=
function
(){
};
this
.
drugSelectColumn
=
function
(){
};
}
},
disableSelecting
:
function
(
_7
){
this
.
selectingDisabledTypes
[
_7
]
=
true
;
},
isInSelectingMode
:
function
(
_8
){
return
!!
this
.
typeSelectingMode
[
_8
];
},
setInSelectingMode
:
function
(
_9
,
_a
){
this
.
typeSelectingMode
[
_9
]
=
_a
;
},
getSelectedRegionInfo
:
function
(){
var
_b
=
[],
_c
=
""
;
if
(
this
.
selectedColumns
.
length
>
0
){
_c
=
"col"
;
dojo
.
forEach
(
this
.
selectedColumns
,
function
(
_d
,
_e
){
!!
_d
&&
_b
.
push
(
_e
);
});
}
else
{
if
(
this
.
grid
.
selection
.
getSelectedCount
()
>
0
){
_c
=
"row"
;
_b
=
dojox
.
grid
.
Selection
.
prototype
.
getSelected
.
call
(
this
.
grid
.
selection
);
}
}
return
{
"selectionType"
:
_c
,
"selectedIdx"
:
_b
};
},
clearInSelectingMode
:
function
(){
this
.
typeSelectingMode
=
[];
},
getHeaderNodes
:
function
(){
return
this
.
headerNodes
==
null
?
dojo
.
query
(
"[role*='columnheader']"
,
this
.
grid
.
viewsHeaderNode
)
:
this
.
headerNode
;
},
_range
:
function
(
_f
,
_10
,
_11
){
var
s
=
(
_f
>=
0
?
_f
:
_10
),
e
=
_10
;
if
(
s
>
e
){
e
=
s
;
s
=
_10
;
}
for
(
var
i
=
s
;
i
<=
e
;
i
++
){
_11
(
i
);
}
},
cellClick
:
function
(
_12
,
_13
){
if
(
_12
>
this
.
exceptColumnsTo
){
this
.
grid
.
selection
.
clear
();
this
.
publishRowChange
();
var
_14
=
this
.
getCellNode
(
_12
,
_13
);
this
.
cleanAll
();
this
.
addCellToSelection
(
_14
);
}
},
setDrugStartPoint
:
function
(
_15
,
_16
){
this
.
drugSelectionStart
.
colIndex
=
_15
;
this
.
drugSelectionStart
.
rowIndex
=
_16
;
this
.
drugCurrentPoint
.
colIndex
=
_15
;
this
.
firstOut
=
true
;
var
_17
=
dojo
.
connect
(
dojo
.
doc
,
"onmousemove"
,
dojo
.
hitch
(
this
,
function
(
e
){
this
.
outRangeValue
=
e
.
clientY
-
dojo
.
coords
(
this
.
grid
.
domNode
).
y
-
this
.
grid
.
domNode
.
offsetHeight
;
if
(
this
.
outRangeValue
>
0
){
if
(
this
.
drugSelectionStart
.
colIndex
==-
1
){
if
(
!
this
.
outRangeY
){
this
.
autoRowScrollDrug
(
e
);
}
}
else
{
if
(
this
.
drugSelectionStart
.
rowIndex
==-
1
){
}
else
{
this
.
autoCellScrollDrug
(
e
);
}
}
}
else
{
this
.
firstOut
=
true
;
this
.
outRangeY
=
false
;
}
}));
var
_18
=
dojo
.
connect
(
dojo
.
doc
,
"onmouseup"
,
dojo
.
hitch
(
this
,
function
(
e
){
this
.
outRangeY
=
false
;
dojo
.
disconnect
(
_18
);
dojo
.
disconnect
(
_17
);
this
.
grid
.
onMouseUp
(
e
);
}));
},
autoRowScrollDrug
:
function
(
e
){
this
.
outRangeY
=
true
;
this
.
autoSelectNextRow
();
},
autoSelectNextRow
:
function
(){
if
(
this
.
grid
.
select
.
outRangeY
){
this
.
grid
.
scrollToRow
(
this
.
grid
.
scroller
.
firstVisibleRow
+
1
);
this
.
drugSelectRow
(
this
.
drugCurrentPoint
.
rowIndex
+
1
);
setTimeout
(
dojo
.
hitch
(
this
,
"autoSelectNextRow"
,
this
.
drugCurrentPoint
.
rowIndex
+
1
),
this
.
getAutoScrollRate
());
}
},
autoCellScrollDrug
:
function
(
e
){
var
_19
=
null
;
dojo
.
forEach
(
this
.
getHeaderNodes
(),
function
(
_1a
){
var
_1b
=
dojo
.
coords
(
_1a
);
if
(
e
.
clientX
>=
_1b
.
x
&&
e
.
clientX
<=
_1b
.
x
+
_1b
.
w
){
_19
=
Number
(
_1a
.
attributes
.
getNamedItem
(
"idx"
).
value
);
}
});
if
(
_19
!=
this
.
drugCurrentPoint
.
colIndex
||
this
.
firstOut
){
if
(
!
this
.
firstOut
){
this
.
colChanged
=
true
;
this
.
drugCurrentPoint
.
colIndex
=
_19
;
}
this
.
firstOut
=
false
;
this
.
outRangeY
=
true
;
dojo
.
hitch
(
this
,
"autoSelectCellInNextRow"
)();
}
},
autoSelectCellInNextRow
:
function
(){
if
(
this
.
grid
.
select
.
outRangeY
){
this
.
grid
.
scrollToRow
(
this
.
grid
.
scroller
.
firstVisibleRow
+
1
);
this
.
drugSelectCell
(
this
.
drugCurrentPoint
.
colIndex
,
this
.
drugCurrentPoint
.
rowIndex
+
1
);
if
(
this
.
grid
.
select
.
colChanged
){
this
.
grid
.
select
.
colChanged
=
false
;
}
else
{
setTimeout
(
dojo
.
hitch
(
this
,
"autoSelectCellInNextRow"
,
this
.
drugCurrentPoint
.
rowIndex
+
1
),
this
.
getAutoScrollRate
());
}
}
},
getAutoScrollRate
:
function
(){
return
this
.
autoScrollRate
;
},
resetStartPoint
:
function
(){
if
(
this
.
drugSelectionStart
.
colIndex
==-
1
&&
this
.
drugSelectionStart
.
rowIndex
==-
1
){
return
;
}
this
.
lastDrugSelectionStart
=
dojo
.
clone
(
this
.
drugSelectionStart
);
this
.
drugSelectionStart
.
colIndex
=-
1
;
this
.
drugSelectionStart
.
rowIndex
=-
1
;
},
restorLastDragPoint
:
function
(){
this
.
drugSelectionStart
=
dojo
.
clone
(
this
.
lastDrugSelectionStart
);
},
drugSelectCell
:
function
(
_1c
,
_1d
){
this
.
cleanAll
();
this
.
drugCurrentPoint
.
columnIndex
=
_1c
;
this
.
drugCurrentPoint
.
rowIndex
=
_1d
;
var
_1e
,
_1f
,
_20
,
_21
;
if
(
_1d
<
this
.
drugSelectionStart
.
rowIndex
){
_1e
=
_1d
;
_1f
=
this
.
drugSelectionStart
.
rowIndex
;
}
else
{
_1e
=
this
.
drugSelectionStart
.
rowIndex
;
_1f
=
_1d
;
}
if
(
_1c
<
this
.
drugSelectionStart
.
colIndex
){
_20
=
_1c
;
_21
=
this
.
drugSelectionStart
.
colIndex
;
}
else
{
_20
=
this
.
drugSelectionStart
.
colIndex
;
_21
=
_1c
;
}
for
(
var
i
=
_20
;
i
<=
_21
;
i
++
){
this
.
addColumnRangeToSelection
(
i
,
_1e
,
_1f
);
}
},
selectColumn
:
function
(
_22
){
this
.
addColumnToSelection
(
_22
);
},
drugSelectColumn
:
function
(
_23
){
this
.
selectColumnRange
(
this
.
drugSelectionStart
.
colIndex
,
_23
);
},
drugSelectColumnToMax
:
function
(
dir
){
if
(
dir
==
"left"
){
this
.
selectColumnRange
(
this
.
drugSelectionStart
.
colIndex
,
0
);
}
else
{
this
.
selectColumnRange
(
this
.
drugSelectionStart
.
colIndex
,
this
.
getHeaderNodes
().
length
-
1
);
}
},
selectColumnRange
:
function
(
_24
,
_25
){
if
(
!
this
.
keepState
){
this
.
cleanAll
();
}
this
.
_range
(
_24
,
_25
,
dojo
.
hitch
(
this
,
"addColumnToSelection"
));
},
addColumnToSelection
:
function
(
_26
){
this
.
selectedColumns
[
_26
]
=
true
;
dojo
.
toggleClass
(
this
.
getHeaderNodes
()[
_26
],
"dojoxGridHeaderSelected"
,
true
);
this
.
_rangCellsInColumn
(
_26
,
-
1
,
Number
.
POSITIVE_INFINITY
,
this
.
addCellToSelection
);
},
addColumnRangeToSelection
:
function
(
_27
,
_28
,
to
){
var
_29
=
this
.
grid
.
views
;
var
_2a
=
[];
var
_2b
=
this
;
dojo
.
forEach
(
_29
.
views
,
function
(
_2c
){
dojo
.
forEach
(
this
.
getViewRowNodes
(
_2c
.
rowNodes
),
function
(
_2d
,
_2e
){
if
(
!
_2d
){
return
;
}
if
(
_2e
>=
_28
&&
_2e
<=
to
){
dojo
.
forEach
(
_2d
.
firstChild
.
rows
[
0
].
cells
,
function
(
_2f
){
if
(
_2f
&&
_2f
.
attributes
&&
(
idx
=
_2f
.
attributes
.
getNamedItem
(
"idx"
))
&&
Number
(
idx
.
value
)
==
_27
){
_2b
.
addCellToSelection
(
_2f
);
}
});
}
},
this
);
},
this
);
},
_rangCellsInColumn
:
function
(
_30
,
_31
,
to
,
_32
){
var
_33
=
this
.
grid
.
views
;
var
_34
=
[];
var
_35
=
this
;
dojo
.
forEach
(
_33
.
views
,
function
(
_36
){
dojo
.
forEach
(
this
.
getViewRowNodes
(
_36
.
rowNodes
),
function
(
_37
,
_38
){
if
(
!
_37
){
return
;
}
if
(
_38
>=
_31
&&
_38
<=
to
){
dojo
.
forEach
(
_37
.
firstChild
.
rows
[
0
].
cells
,
function
(
_39
){
if
(
_39
&&
_39
.
attributes
&&
(
idx
=
_39
.
attributes
.
getNamedItem
(
"idx"
))
&&
Number
(
idx
.
value
)
==
_30
){
_32
(
_39
,
_35
);
}
});
}
},
this
);
},
this
);
},
drugSelectRow
:
function
(
_3a
){
this
.
drugCurrentPoint
.
rowIndex
=
_3a
;
this
.
cleanCellSelection
();
this
.
clearDrugDivs
();
var
_3b
=
this
.
grid
.
selection
;
_3b
.
_beginUpdate
();
if
(
!
this
.
keepState
){
_3b
.
deselectAll
();
}
_3b
.
selectRange
(
this
.
drugSelectionStart
.
rowIndex
,
_3a
);
_3b
.
_endUpdate
();
this
.
publishRowChange
();
},
drugSelectRowToMax
:
function
(
dir
){
if
(
dir
==
"up"
){
this
.
drugSelectRow
(
0
);
}
else
{
this
.
drugSelectRow
(
this
.
grid
.
rowCount
);
}
},
getCellNode
:
function
(
_3c
,
_3d
){
var
_3e
=
[],
_3f
=
null
;
var
_40
=
this
.
grid
.
views
;
for
(
var
i
=
0
,
v
,
n
;(
v
=
_40
.
views
[
i
])
&&
(
n
=
v
.
getRowNode
(
_3d
));
i
++
){
_3e
.
push
(
n
);
}
dojo
.
forEach
(
_3e
,
dojo
.
hitch
(
function
(
_41
,
_42
){
if
(
_3f
){
return
;
}
var
_43
=
dojo
.
query
(
"[idx='"
+
_3c
+
"']"
,
_41
);
if
(
_43
&&
_43
[
0
]){
_3f
=
_43
[
0
];
}
}));
return
_3f
;
},
addCellToSelection
:
function
(
_44
,
_45
){
if
(
!
_45
){
_45
=
this
;
}
_45
.
selectedCells
[
_45
.
selectedCells
.
length
]
=
_44
;
dojo
.
toggleClass
(
_44
,
_45
.
selectedClass
,
true
);
},
isColSelected
:
function
(
_46
){
return
this
.
selectedColumns
[
_46
];
},
isRowSelected
:
function
(
_47
){
return
this
.
grid
.
selection
.
selected
[
_47
];
},
isContinuousSelection
:
function
(
_48
){
var
_49
=-
1
;
for
(
var
i
=
0
;
i
<
_48
.
length
;
i
++
){
if
(
!
_48
[
i
]){
continue
;
}
if
(
_49
<
0
||
i
-
_49
==
1
){
_49
=
i
;
}
else
{
if
(
i
-
_49
>=
2
){
return
false
;
}
}
}
return
_49
>=
0
?
true
:
false
;
},
cleanCellSelection
:
function
(){
dojo
.
forEach
(
this
.
selectedCells
,
dojo
.
hitch
(
this
,
"removeCellSelectedState"
));
this
.
selectedCells
=
[];
dojo
.
forEach
(
this
.
selectedColumns
,
function
(
_4a
,
_4b
){
if
(
_4a
){
dojo
.
toggleClass
(
this
.
getHeaderNodes
()[
_4b
],
"dojoxGridHeaderSelected"
,
false
);
}
},
this
);
this
.
selectedColumns
=
[];
this
.
grid
.
edit
.
isEditing
()
&&
this
.
grid
.
edit
.
apply
();
},
removeCellSelectedState
:
function
(
_4c
){
dojo
.
toggleClass
(
_4c
,
this
.
selectedClass
,
false
);
},
cleanAll
:
function
(){
this
.
cleanCellSelection
();
this
.
grid
.
selection
.
clear
();
this
.
publishRowChange
();
},
refreshColumnSelection
:
function
(){
dojo
.
forEach
(
this
.
selectedColumns
,
dojo
.
hitch
(
this
,
function
(
_4d
,
_4e
){
if
(
_4d
){
this
.
grid
.
select
.
addColumnToSelection
(
_4e
);
}
}));
},
inSelectedArea
:
function
(
_4f
,
_50
){
return
this
.
selectedColumns
[
_4f
]
||
this
.
gird
.
selection
.
selecteded
[
_50
];
},
publishRowChange
:
function
(){
dojo
.
publish
(
this
.
grid
.
rowSelectionChangedTopic
,[
this
]);
},
getViewRowNodes
:
function
(
_51
){
var
_52
=
[];
for
(
i
in
_51
){
_52
.
push
(
_51
[
i
]);
}
return
_52
;
},
getFirstSelected
:
function
(){
return
dojo
.
hitch
(
this
.
grid
.
selection
,
dojox
.
grid
.
Selection
.
prototype
.
getFirstSelected
)();
},
getLastSelected
:
function
(){
var
_53
=
this
.
grid
.
selection
.
selected
;
for
(
var
i
=
_53
.
length
-
1
;
i
>=
0
;
i
--
){
if
(
_53
[
i
]){
return
i
;
}
}
return
-
1
;
}});
}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sat, Apr 26, 10:34 (1 d, 5 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
26761
Default Alt Text
_DndSelectingManager.js (10 KB)
Attached To
rZEDHG ZedLegacy
Event Timeline
Log In to Comment