Hi Andre, 

I'm slowly getting back on my feet. Thanks for your continued support! 

This is a really good catch below and I like your solution to the problem. 
Please file a bug report with patch. Thanks much in advance! 


Dave 

Message: 1 
Date: Mon, 12 Feb 2007 11:09:26 +0100 (CET) 
From: " Andr? Dietisheim " <[EMAIL PROTECTED]> 
Subject: [nebula-dev] [compositetable] sorting looses row-changes 
To: <[EMAIL PROTECTED]>, <[email protected]> 
Message-ID: 
<[EMAIL PROTECTED]> 
Content-Type: text/plain; charset=iso-8859-1 

Hi Dave 

I hope that you're back up on your feets! 
I just found another arrive/depart related bug and I wanted to discuss the 
solution I suggest: 

The bug occours when the model gets sorted. I have a snippet 
(CompositeTableSnippetDebug changed to native headers) and I could post it 
together with a bugzilla entry. Sorting a model does not trigger an 
appropriate requestDepartEvent so that changes in a column widget gets 
written back to the model before sorting it. 
Your sorting code in Snippet5 has a table.refreshAllRows() after executing 
Arrays.sort(). I thought firing fireRequestRowChangeEvent() in 
refreshTable(). But this does not help as this is too late (topRow does 
not reflect the proper state as the model is already sorted). Changes are 
written at the wrong model offset. 
Another issue here is that currentRow (aka the currently selected row in 
the model) does either match the changed model and should be cleared & set 
back in user code. 
I therefore suggest having a clearSelection()-method in compositeTable and 
InternalCompositeTable a user programmer should call before sorting and 
setting selection after sorting. My solution looks like that: 

snippet5: 
private static class Header extends AbstractNativeHeader { 
... 
protected boolean sortOnColumn(int column, int sortDirection) { 
table.clearSelection(); 
... 
Arrays.sort(swtCommitters, comparator); 
table.refreshAllRows(); 
table.setSelection(); 
} 

CompositeTable: 
public void clearSelection() { 
if (contentPane == null) { 
return; 
} 
contentPane.clearSelection(); 
} 

InternalCompositeTable: 
public void clearSelection() { 
Control toFocus = getControl(currentColumn, currentRow); 
if (fireRequestRowChangeEvent()) { 
if (toFocus != null) { 
toFocus.notifyListeners(SWT.FocusOut, new Event()); 
} 
} 
} 

For proper bug-handling I could post all this to bugzilla together with my 
patch. 
I'd love to get your feedback! 

Regards 
Andr� 


> Hi Dave 
> 
> Wish you good recovery! Have a good rest (we all stressed IT workers 
> need it from time to time :-( 
> 
> Greetings 
> Andr� 
> 
>> Hi Andre 
>> 
>> Thanks for your concern and thanks for the bug report! 
>> 
>> Doctor gave antibiotics and said it would be four days before I really 
>> start feeling better. :-( 
>> 
>> 
>> Dave 
>> ---------------------------------------------------------------------- 
>> 
>> Message: 1 
>> Date: Mon, 5 Feb 2007 10:29:15 +0100 (CET) 
>> From: " Andr? Dietisheim " <[EMAIL PROTECTED]> 
>> Subject: Re: [nebula-dev] [compositetable] bug: changes in topRow == 0 
>> To: <[email protected]> 
>> Message-ID: 
>> <[EMAIL PROTECTED]> 
>> Content-Type: text/plain; charset=iso-8859-1 
>> 
>> Hi Dave! 
>> 
>> hope you're back up on feets again! 
>> You're welcome! :-)) I'd really like to use it in my client (I am 
>> coding 
>> sort of highly extended database browser for the swiss railways) to 
>> replace the current tableViewer so I'll have to code until its bugfree 
>> and has all features I need. But I admit your table is very 
>> intersting stuff! 
>> 
>> I posted the next bug + patch I found when testing on my gtk-box @ 
>> home. I hope you don't mind me refactoring a bit, it helped me best 
>> to understand the code and I think its valuable for anybody trying to 
>> understand the code. 
>> 
>> Greetings 
>> Andr��� 
>> 
>> 
>> 
>> 
>> 
> 
> 
> -- 
> Andr� Dietisheim 
> Stv-Bereichsleiter Products 
> 
> Puzzle ITC GmbH 
> Eigerplatz 4 
> CH-3007 Bern 
> Telefon +41 31 370 22 00 
> Mobile +41 76 423 03 02 
> Fax +41 31 370 22 01 
> 
> Puzzle ist Mitglied der ODF Alliance: 
> <http://www.puzzle.ch/odfalliance/> 
> 
> 
> _______________________________________________ 
> nebula-dev mailing list 
> [email protected] 
> https://dev.eclipse.org/mailman/listinfo/nebula-dev 
> 
> 
> !DSPAM:45c8a5f6134643936241041! 


-- 
Andr� Dietisheim 
Stv-Bereichsleiter Products 

Puzzle ITC GmbH 
Eigerplatz 4 
CH-3007 Bern 
Telefon +41 31 370 22 00 
Mobile +41 76 423 03 02 
Fax +41 31 370 22 01 

Puzzle ist Mitglied der ODF Alliance: 
<http://www.puzzle.ch/odfalliance/> 




------------------------------ 

_______________________________________________ 
nebula-dev mailing list 
[email protected] 
https://dev.eclipse.org/mailman/listinfo/nebula-dev 


End of nebula-dev Digest, Vol 11, Issue 9 
***************************************** 
_______________________________________________
nebula-dev mailing list
[email protected]
https://dev.eclipse.org/mailman/listinfo/nebula-dev

Reply via email to