RE: Mouse events using PickManipulationRendererJ3D (and brushing)

  • To: "Flaggs, Don" <don.flaggs@xxxxxxxx>
  • Subject: RE: Mouse events using PickManipulationRendererJ3D (and brushing)
  • From: Bill Hibbard <billh@xxxxxxxxxxxxx>
  • Date: Wed, 24 Nov 2004 13:06:38 -0600 (CST)
Hi Don,

> Since I'm not changing the data, but only picking values, I really don't
> need to use a CellImpl/doAction()approach with it's spurious mouse
> behavior.  Using a DisplayListener/displayChanged() approach watching
> for a right mouse event seems to work fine for picking while maintaining
> all other mouse functionality, so that's the way to go.  So anyway, by
> keeping all the "picking" code inside the method call the same and by
> just replacing the CellImpl/doAction() wrapper code with a
> DisplayListener/displayChanged() equivalent results in expected mouse
> behavior.

This sounds like a good solution.

The behavior is very mysterious, because we've never seen
anything like it and its hard to imagine how it can happen.
Its even more mysterious that it goes away when the code
is moved from a CellImpl.doAction() to a displayChanged().

But at least you have a solution.

Cheers,
Bill

> -----Original Message-----
> From: Flaggs, Don
> Sent: Monday, November 22, 2004 6:38 PM
> To: 'Bill Hibbard'
> Cc: visad@xxxxxxxxxxxxxxxx
> Subject: RE: Mouse events using PickManipulationRendererJ3D (and
> brushing) problems ...
>
>
> Bill,
>
> Attached here is the console output from a session where the problem
> appeared.  It's mostly generated by your DisplayEvent.toString() method
> to show what mouse activity the DisplayImpl was seeing.  The pick event
> messages come from a println() within the CellImpl.doAction().  The 1st
> set of output shows right mouse events correctly resulting in pick
> events from the CellImpl.doAction().  The 2nd set of output first
> generated a cursor upon left mouse press, and then a pick event upon
> left mouse release!?!  I'm going to try and instrument the code a little
> more...  Any ideas while I do that?
>
> thanks...  dlf
>
>
> >>>>  GOOD INTERACTION  <<<<
> Display event: DisplayEvent: Display=plotID:3, Id=MOUSE_PRESSED, X=291,
> Y=211, remoteId=0
> Display event: DisplayEvent: Display=plotID:3, Id=MOUSE_PRESSED_RIGHT,
> X=291, Y=211, remoteId=0
> >>>  got a pick event
> >>> object picked: index: 232
>  k: 0   value: 118.0
>  k: 1   value: 7914.57275390625
>  k: 2   value: 456.741943359375
>  k: 3   value: 257.7852478027344
>  k: 4   value: 307.7412109375
>  k: 5   value: 247.43136596679688
>  k: 6   value: 343.8174743652344
>  k: 7   value: 182.00833129882812
>  k: 8   value: 345.41107177734375
>  k: 9   value: 314.0792541503906
>  k: 10   value: 351.0933532714844
>  k: 11   value: 261.0024108886719
>  k: 12   value: -2286.75
>  k: 13   value: 232.0
>  k: 14   value: 1.0
> Display event: DisplayEvent: Display=plotID:3, Id=FRAME_DONE, X=0, Y=0,
> remoteId=0
> Display event: DisplayEvent: Display=plotID:3, Id=TRANSFORM_DONE, X=0,
> Y=0, remoteId=0
> Display event: DisplayEvent: Display=plotID:3, Id=FRAME_DONE, X=0, Y=0,
> remoteId=0
>
>
> >>>>  INCORRECT INTERACTION (left mouse with drag)  <<<<
> Display event: DisplayEvent: Display=plotID:3, Id=MOUSE_PRESSED_LEFT,
> X=85, Y=77, remoteId=0
> Display event: DisplayEvent: Display=plotID:3, Id=FRAME_DONE, X=0, Y=0,
> remoteId=0
> Display event: DisplayEvent: Display=plotID:3, Id=FRAME_DONE, X=0, Y=0,
> remoteId=0
> Display event: DisplayEvent: Display=plotID:3, Id=FRAME_DONE, X=0, Y=0,
> remoteId=0
> Display event: DisplayEvent: Display=plotID:3, Id=FRAME_DONE, X=0, Y=0,
> remoteId=0
> Display event: DisplayEvent: Display=plotID:3, Id=FRAME_DONE, X=0, Y=0,
> remoteId=0
> Display event: DisplayEvent: Display=plotID:3, Id=FRAME_DONE, X=0, Y=0,
> remoteId=0
> Display event: DisplayEvent: Display=plotID:3, Id=FRAME_DONE, X=0, Y=0,
> remoteId=0
> Display event: DisplayEvent: Display=plotID:3, Id=FRAME_DONE, X=0, Y=0,
> remoteId=0
> Display event: DisplayEvent: Display=plotID:3, Id=FRAME_DONE, X=0, Y=0,
> remoteId=0
> Display event: DisplayEvent: Display=plotID:3, Id=MOUSE_RELEASED, X=149,
> Y=130, remoteId=0
> Display event: DisplayEvent: Display=plotID:3, Id=MOUSE_RELEASED_LEFT,
> X=149, Y=130, remoteId=0
> >>>  got a pick event
> >>> object picked: index: 1170
>  k: 0   value: 674.0
>  k: 1   value: 6776.08056640625
>  k: 2   value: 525.112548828125
>  k: 3   value: 278.3368835449219
>  k: 4   value: 258.8907775878906
>  k: 5   value: 259.7996520996094
>  k: 6   value: 116.74113464355469
>  k: 7   value: 138.6013641357422
>  k: 8   value: 242.25827026367188
>  k: 9   value: 246.7772216796875
>  k: 10   value: 195.46710205078125
>  k: 11   value: 142.10330200195312
>  k: 12   value: -17572.4453125
>  k: 13   value: 1170.0
>  k: 14   value: 1.0
> Display event: DisplayEvent: Display=plotID:3, Id=TRANSFORM_DONE, X=0,
> Y=0, remoteId=0
> Display event: DisplayEvent: Display=plotID:3, Id=FRAME_DONE, X=0, Y=0,
> remoteId=0
>
>
>
> -----Original Message-----
> From: Bill Hibbard [mailto:billh@xxxxxxxxxxxxx]
> Sent: Thursday, November 18, 2004 1:28 PM
> To: Flaggs, Don
> Cc: visad@xxxxxxxxxxxxxxxx
> Subject: RE: Mouse events using PickManipulationRendererJ3D (and
> brushing) problems ...
>
>
> Don,
>
> Then the behavior you describe is a great mystery. I don't
> recall ever hearing about a similar problem. If you can
> send me your application so I can run it. Even better would
> be a small test program that generates the problem.
>
> Bill
>
> On Thu, 18 Nov 2004, Flaggs, Don wrote:
>
> > 1) we're hopefully not doing anything but using their default
> behaviors,
> > assuming that using the PickManipulationRendererJ3D doesn't invalid
> > "standard" mouse behaviors and events specific to each button remain
> as
> > they should???
> > 2) we're just using SelectRangeWidget functionality.
> >
> > -----Original Message-----
> > From: Bill Hibbard [mailto:billh@xxxxxxxxxxxxx]
> > Sent: Tuesday, November 16, 2004 3:19 AM
> > To: Flaggs, Don
> > Cc: visad@xxxxxxxxxxxxxxxx
> > Subject: Re: Mouse events using PickManipulationRendererJ3D (and
> > brushing) problems ...
> >
> >
> > Hi Don,
> >
> > > We're putting together an application where we're creating multiple
> > 2D/3D scatterplot views of the same data using all the usual widgets,
> > which works fine.  The next hurdle is adding picking so that the user
> > can see a complete listing of all data associated with the picked
> > object.  We've following the "cookbook" from one of your examples, and
> > on the surface things appear to work.  The problem is that after using
> > the right mouse button for picking, which works correctly, subsequent
> > mouse events using other buttons are hosed, e.g., the left mouse now
> > brings up the 3D cursor, and when released causes a doAction() to be
> > fired.  All this of course means that the usual left mouse button
> > fuctionality is lost.
> >
> > Are you calling MouseHelper.setFunctionMap()?
> > Or MouseHelper.setEnableCombos()? Or are you
> > using a custom extension of MouseBehavior?
> > These are the only way I know to modify mouse
> > button behaviors. If you've found a bug, we've
> > never seen this sort of thing before (which
> > doesn't mean its impossible).
> >
> > > One other thing that we've noticed is that after brushing one of the
> > data fields to exclude specific data values, we still see some of the
> > excluded points appearing in the display, or at least the values for
> > them returned when they are picked by a getValues() call says that
> > they're there...
> >
> > How are you excluding points? By actually
> > constructing new Fields with those points
> > removed? Or merely by SelectRangeWidgets?
> >
> > Thanks,
> > Bill
> >
> >
>
>