mirror of
https://github.com/inverse-inc/sogo.git
synced 2026-06-10 21:09:50 +00:00
JavaScript rows selection improvements
Monotone-Parent: fe48391f8342ece1fa8c34044cf6b2fa38e02918 Monotone-Revision: 8c77afb1abc1cfa1e4e6fdd86195aca95b508f1a Monotone-Author: flachapelle@inverse.ca Monotone-Date: 2009-02-27T19:42:44 Monotone-Branch: ca.inverse.sogo
This commit is contained in:
@@ -96,39 +96,36 @@ Element.addMethods(
|
||||
|
||||
getSelectedNodes: function(element) {
|
||||
element = $(element);
|
||||
var selArray = new Array();
|
||||
|
||||
for (var i = 0; i < element.childNodes.length; i++) {
|
||||
node = element.childNodes.item(i);
|
||||
if (node.nodeType == 1
|
||||
&& isNodeSelected(node))
|
||||
selArray.push(node);
|
||||
}
|
||||
|
||||
return selArray;
|
||||
|
||||
if (!element.selectedElements)
|
||||
element.selectedElements = new Array();
|
||||
|
||||
return element.selectedElements;
|
||||
},
|
||||
|
||||
getSelectedNodesId: function(element) {
|
||||
element = $(element);
|
||||
var selArray = new Array();
|
||||
|
||||
for (var i = 0; i < element.childNodes.length; i++) {
|
||||
node = element.childNodes.item(i);
|
||||
if (node.nodeType == 1
|
||||
&& isNodeSelected(node)) {
|
||||
selArray.push(node.getAttribute("id")); }
|
||||
|
||||
var selArray = new Array();
|
||||
if (element.selectedElements) {
|
||||
for (var i = 0; i < element.selectedElements.length; i++) {
|
||||
var node = element.selectedElements[i];
|
||||
selArray.push(node.getAttribute("id"));
|
||||
}
|
||||
}
|
||||
else
|
||||
element.selectedElements = new Array();
|
||||
|
||||
return selArray;
|
||||
},
|
||||
|
||||
onContextMenu: function(element, event) {
|
||||
element = $(element);
|
||||
var popup = element.sogoContextMenu;
|
||||
|
||||
if (document.currentPopupMenu)
|
||||
hideMenu(document.currentPopupMenu);
|
||||
|
||||
var popup = element.sogoContextMenu;
|
||||
var menuTop = Event.pointerY(event);
|
||||
var menuLeft = Event.pointerX(event);
|
||||
var heightDiff = (window.height()
|
||||
@@ -162,6 +159,15 @@ Element.addMethods(
|
||||
selectElement: function(element) {
|
||||
element = $(element);
|
||||
element.addClassName('_selected');
|
||||
|
||||
var parent = element.up();
|
||||
if (!parent.selectedElements)
|
||||
// Selected nodes are kept in a array at the
|
||||
// container level.
|
||||
parent.selectedElements = new Array();
|
||||
for (var i = 0; i < parent.selectedElements.length; i++)
|
||||
if (parent.selectedElements[i] == element) return;
|
||||
parent.selectedElements.push(element); // use index instead ?
|
||||
},
|
||||
|
||||
selectRange: function(element, startIndex, endIndex) {
|
||||
@@ -192,16 +198,20 @@ Element.addMethods(
|
||||
deselect: function(element) {
|
||||
element = $(element);
|
||||
element.removeClassName('_selected');
|
||||
},
|
||||
|
||||
var parent = element.up();
|
||||
if (parent.selectedElements)
|
||||
parent.selectedElements = parent.selectedElements.without(element);
|
||||
},
|
||||
|
||||
deselectAll: function(element) {
|
||||
element = $(element);
|
||||
for (var i = 0; i < element.childNodes.length; i++) {
|
||||
var node = element.childNodes.item(i);
|
||||
if (node.nodeType == 1)
|
||||
$(node).deselect();
|
||||
if (element.selectedElements) {
|
||||
for (var i = 0; i < element.selectedElements.length; i++)
|
||||
element.selectedElements[i].removeClassName('_selected');
|
||||
element.selectedElements = null;
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
setCaretTo: function(element, pos) {
|
||||
element = $(element);
|
||||
|
||||
@@ -256,8 +256,8 @@ function openMailTo(senderMailTo) {
|
||||
|
||||
if (mailto.length > 0)
|
||||
openMailComposeWindow(ApplicationBaseURL
|
||||
+ "../Mail/compose?mailto=" + mailto
|
||||
+ ((subject.length > 0)?"?subject="+subject:""));
|
||||
+ "../Mail/compose?mailto=" + encodeURI(mailto)
|
||||
+ ((subject.length > 0)?"?subject=" + encodeURI(subject):""));
|
||||
|
||||
return false; /* stop following the link */
|
||||
}
|
||||
@@ -592,6 +592,7 @@ function onRowClick(event) {
|
||||
$(node.parentNode).selectRange(lastClickedRow, rowIndex);
|
||||
} else if (isNodeSelected(node)) {
|
||||
$(node).deselect();
|
||||
rowIndex = null;
|
||||
} else {
|
||||
$(node).selectElement();
|
||||
}
|
||||
@@ -609,7 +610,8 @@ function onRowClick(event) {
|
||||
parentNode.fire("mousedown");
|
||||
}
|
||||
}
|
||||
lastClickedRow = rowIndex;
|
||||
if (rowIndex)
|
||||
lastClickedRow = rowIndex;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user