[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Newsgroup Home]
|
[news.eclipse.platform] Re: TreeViewerFocusCellManager support for SWT.MULTI
|
Tom,
There are essentially two scenerios that I need to support. Editing cells,
and selecting elements for delete or drag, and drop. The current
implementation works correctly for editing, but I need to be able to select
multiple elements for deleting and drag and drop. As you mentioned in an
earlier post, the selection part of SWT.MULTI is functional, but the
FocusCellOwnerDrawnHighlighter is not highlighting the entire selection. So
all did was add a filter in the Listener in
FocusCellOwnerDrawnHighlighter.hookListener(final ColunnViewer) to only
modify the highlighted cells when the selection size==1.
In short all I had to do was chang the following line in
FocusCellOwnerDrawnHighlighter.hookListener(final ColunnViewer) from
if ((event.detail & SWT.SELECTED) > 0) {
to
if ((event.detail & SWT.SELECTED) > 0 &&
((StructuredSelection)viewer.getSelection()).size()==1) {
While reviewing the change using snippet 48 I noticed that sometimes the row
area to the right of the last column is highlighted, and sometimes it is
not.
Regards,
GB
"Tom Schindl" <tom.schindl@xxxxxxxxxxxxxxx> wrote in message
news:gnk1ui$np$1@xxxxxxxxxxxxxxxxxxxx
> Greg Babcock schrieb:
>> Tom,
>>
>> Thanks for the timely response and the insight.
>>
>> One of the things I realized is that if the SWT.MULTI flag is set the
>> highligted cell is probably (I have only done limited testing) belongs to
>> the last element in the selection list. It may be wise to add an Assert
>> !SWT.MULTI to the FocusCellOwnerDrawHighlighter.
>>
>> In any case I have been able to get the selection behavior I was looking
>> for
>> by only performing cell highlighing when there is a single selection.
>> Instead of going though the effort to link in the source for the entire
>> jface class to my I just copied the FocusCellOwnerDrawHighlighter class
>> to
>> my workspace and made the modification. To do so I had to replace
>> viewer.getViewerRowFromItem(event.item); with focusCell.getViewerRow();
>> because the first one was hidden. Under what circumstances would the two
>> methods return different results?
>
>
> When a ViewerCell is detached from the viewer we clone it because we
> internally reuse the ViewerRow and Viewercell IIRC.
>
> I guess I didn't get what you describe do you have a fully running
> example so that I can see the modified behaviour? Maybe it is feasable
> and a common use case so that we could provide a switch between the 2?
>
> Tom
>
> --
> B e s t S o l u t i o n . at
> --------------------------------------------------------------------
> Tom Schindl JFace-Committer
> --------------------------------------------------------------------