зеркало из https://github.com/mozilla/gecko-dev.git
Fixing multiple selection for event tree.
This commit is contained in:
Родитель
dfc82c5cca
Коммит
4d78722eee
|
@ -78,7 +78,7 @@ h1 {
|
|||
|
||||
<td id="mozver">
|
||||
<h1>
|
||||
<a id="mozlink" href="http://www.mozilla.org/projects/calendar/" target="_new">Mozilla Calendar 2002082615-cal</a>
|
||||
<a id="mozlink" href="http://www.mozilla.org/projects/calendar/" target="_new">Mozilla Calendar 2002082716-cal</a>
|
||||
</h1>
|
||||
<script type="application/x-javascript">
|
||||
// using try..catch to handle empty useragents and other cases where the regex fails to apply
|
||||
|
|
|
@ -379,7 +379,9 @@
|
|||
<textbox id="unifinder-search-field" onkeypress="unifinderSearchKeyPress( this, event )" flex="1"/>
|
||||
</box>
|
||||
</hbox>
|
||||
<tree id="unifinder-search-results-listbox" flex="1" seltype="multiple" enableColumnDrag="false">
|
||||
<tree id="unifinder-search-results-listbox" flex="1"
|
||||
onselect="unifinderClickEvent( event )"
|
||||
seltype="multiple" enableColumnDrag="false">
|
||||
<treecols id="unifinder-search-results-tree-cols">
|
||||
<treecol id="unifinder-search-results-tree-col-title"
|
||||
persist="hidden ordinal width" flex="1"
|
||||
|
@ -401,8 +403,8 @@
|
|||
flex="1" label="&calendar.unifinder.tree.categories.label;"/>
|
||||
</treecols>
|
||||
|
||||
<treechildren tooltip="savetip" onmousemove="changeToolTipTextForEvent( event )"
|
||||
onclick="unifinderClickEvent( event )"
|
||||
<treechildren tooltip="savetip"
|
||||
onmousemove="changeToolTipTextForEvent( event )"
|
||||
onkeypress="if (event.keyCode == 13) unifinderEditCommand();"
|
||||
ondragover="return( false );"
|
||||
ondblclick="unifinderDoubleClickEvent( event )"
|
||||
|
|
|
@ -133,6 +133,7 @@ function MonthView( calendarWindow )
|
|||
|
||||
//dump( "\nIn Month view, eventSelectionArray.length is "+EventSelectionArray.length );
|
||||
var i = 0;
|
||||
|
||||
for( i = 0; i < EventSelectionArray.length; i++ )
|
||||
{
|
||||
//dump( "\nin Month view, going to try and get the event boxes with name 'month-view-event-box-"+EventSelectionArray[i].id+"'" );
|
||||
|
|
|
@ -133,6 +133,7 @@ function MonthView( calendarWindow )
|
|||
|
||||
//dump( "\nIn Month view, eventSelectionArray.length is "+EventSelectionArray.length );
|
||||
var i = 0;
|
||||
|
||||
for( i = 0; i < EventSelectionArray.length; i++ )
|
||||
{
|
||||
//dump( "\nin Month view, going to try and get the event boxes with name 'month-view-event-box-"+EventSelectionArray[i].id+"'" );
|
||||
|
|
|
@ -46,34 +46,39 @@
|
|||
*/
|
||||
const UnifinderTreeName = "unifinder-search-results-listbox";
|
||||
|
||||
var gCalendarEventTreeClicked = false; //set this to true when the calendar event tree is clicked
|
||||
//to allow for multiple selection
|
||||
|
||||
function calendarUnifinderInit( )
|
||||
{
|
||||
var unifinderEventSelectionObserver =
|
||||
{
|
||||
onSelectionChanged : function( EventSelectionArray )
|
||||
{
|
||||
var SearchTree = document.getElementById( "unifinder-search-results-listbox" );
|
||||
|
||||
SearchTree.setAttribute( "suppressonselect", "true" );
|
||||
|
||||
SearchTree.treeBoxObject.selection.select( -1 );
|
||||
|
||||
if( EventSelectionArray.length > 0 )
|
||||
if( gCalendarEventTreeClicked === false )
|
||||
{
|
||||
for( i = 0; i < EventSelectionArray.length; i++ )
|
||||
var SearchTree = document.getElementById( "unifinder-search-results-listbox" );
|
||||
|
||||
SearchTree.treeBoxObject.selection.select( -1 );
|
||||
|
||||
if( EventSelectionArray.length > 0 )
|
||||
{
|
||||
var SearchTreeItem = document.getElementById( "search-unifinder-treeitem-"+EventSelectionArray[i].id );
|
||||
|
||||
if( SearchTreeItem )
|
||||
for( i = 0; i < EventSelectionArray.length; i++ )
|
||||
{
|
||||
var Index = SearchTree.contentView.getIndexOfItem( SearchTreeItem );
|
||||
var SearchTreeItem = document.getElementById( "search-unifinder-treeitem-"+EventSelectionArray[i].id );
|
||||
|
||||
SearchTree.treeBoxObject.ensureRowIsVisible( Index );
|
||||
if( SearchTreeItem )
|
||||
{
|
||||
var Index = SearchTree.contentView.getIndexOfItem( SearchTreeItem );
|
||||
|
||||
SearchTree.treeBoxObject.selection.select( Index );
|
||||
SearchTree.treeBoxObject.ensureRowIsVisible( Index );
|
||||
|
||||
SearchTree.treeBoxObject.selection.select( Index );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
gCalendarEventTreeClicked = false;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -127,7 +132,7 @@ var unifinderEventDataSourceObserver =
|
|||
{
|
||||
if( !gICalLib.batchMode )
|
||||
{
|
||||
unifinderRefresh();
|
||||
unifinderRefresh();
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -236,16 +241,42 @@ function getCalendarEventFromEvent( event )
|
|||
|
||||
function unifinderClickEvent( event )
|
||||
{
|
||||
var tree = document.getElementById( UnifinderTreeName );
|
||||
var ThisEvent = getCalendarEventFromEvent( event );
|
||||
var ArrayOfEvents = new Array( ThisEvent );
|
||||
var ArrayOfEvents = new Array( );
|
||||
|
||||
gCalendarEventTreeClicked = true;
|
||||
|
||||
//get the selected events from the tree
|
||||
var tree = document.getElementById( UnifinderTreeName );
|
||||
var start = new Object();
|
||||
var end = new Object();
|
||||
var numRanges = tree.view.selection.getRangeCount();
|
||||
|
||||
for (var t=0; t<numRanges; t++){
|
||||
tree.view.selection.getRangeAt(t,start,end);
|
||||
for (var v=start.value; v<=end.value; v++){
|
||||
//dump( "\n in unifinder click event, v is "+v );
|
||||
try {
|
||||
var treeitem = tree.treeBoxObject.view.getItemAtIndex( v );
|
||||
}
|
||||
catch( e )
|
||||
{
|
||||
return;
|
||||
}
|
||||
var eventId = treeitem.getAttribute("eventId");
|
||||
ArrayOfEvents.push( gICalLib.fetchEvent( eventId ) );
|
||||
}
|
||||
}
|
||||
/*var tree = document.getElementById( UnifinderTreeName );
|
||||
|
||||
var ThisEvent = getCalendarEventFromEvent( event );
|
||||
|
||||
*/
|
||||
gCalendarWindow.EventSelection.setArrayToSelection( ArrayOfEvents );
|
||||
|
||||
if( ArrayOfEvents.length == 1 )
|
||||
{
|
||||
/*start date is either the next or last occurence, or the start date of the event */
|
||||
var eventStartDate = getNextOrPreviousRecurrence( ThisEvent );
|
||||
var eventStartDate = getNextOrPreviousRecurrence( gICalLib.fetchEvent( eventId ) );
|
||||
|
||||
/* you need this in case the current day is not visible. */
|
||||
gCalendarWindow.currentView.goToDay( eventStartDate, true);
|
||||
|
@ -310,6 +341,8 @@ function unifinderDeleteCommand( DoNotConfirm )
|
|||
}
|
||||
else if( SelectedItems.length > 1 )
|
||||
{
|
||||
gICalLib.batchMode = true;
|
||||
|
||||
if( !DoNotConfirm )
|
||||
{
|
||||
if( confirm( "Are you sure you want to delete everything?" ) )
|
||||
|
@ -331,6 +364,8 @@ function unifinderDeleteCommand( DoNotConfirm )
|
|||
gICalLib.deleteEvent( ThisItem.id );
|
||||
}
|
||||
}
|
||||
|
||||
gICalLib.batchMode = false;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -469,9 +504,6 @@ function setUnifinderEventTreeItem( treeItem, calendarEvent )
|
|||
{
|
||||
treeItem.calendarEvent = calendarEvent;
|
||||
treeItem.setAttribute( "eventId", calendarEvent.id );
|
||||
treeItem.setAttribute( "onmouseover", "changeToolTipTextForEvent( event )" );
|
||||
treeItem.setAttribute( "ondblclick" , "unifinderDoubleClickEvent(event)" );
|
||||
treeItem.setAttribute( "onclick" , "unifinderClickEvent(event)" );
|
||||
treeItem.setAttribute( "calendarevent", "true" );
|
||||
treeItem.setAttribute( "id", "search-unifinder-treeitem-"+calendarEvent.id );
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче