NOTICE: This version of the NSF Unidata web site (archive.unidata.ucar.edu) is no longer being updated.
Current content can be found at unidata.ucar.edu.
To learn about what's going on, see About the Archive Site.
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. 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... A snippet of source code is attached below that shows what we're doing. Again, as long as we're just picking with the right mouse, everything works fine, but when we start to mingle left/right mouse interactions, we're hosed. thanks... dlf // set up object picking for J3D plot if ( plotType.equalsIgnoreCase ( "scatter3D" ) ) { pmrJ3D = new PickManipulationRendererJ3D(); dr = plotObj.getDisplayImpl().getDisplayRenderer(); dr.setPickThreshhold( 0.05f ); // add data ref to plot try { plotObj.getDisplayImpl().addReferences( pmrJ3D, masterSplitPane.getDataRef() ); CellImpl cellField = new CellImpl() { private boolean first = true; public void doAction() throws VisADException, RemoteException { System.out.println(">>> got an event"); if( first ) first = false; else { int i = pmrJ3D.getCloseIndex(); System.out.println(">>> object picked: index: " + i ); FlatField ff = (FlatField)masterSplitPane.getDataRef().getData(); double[] pickedPt = ff.getValues( i ); JPanel resultsPanel = new JPanel(); resultsPanel.setLayout( new BoxLayout ( resultsPanel, BoxLayout.Y_AXIS ) ); for( int k=0; k<pickedPt.length; k++ ) { System.out.println(" k: " + k + " value: " + pickedPt[k]); resultsPanel.add( new JLabel( realType[k].getName() + ": " + String.valueOf(pickedPt[k] ))); } JOptionPane.showMessageDialog( parent, resultsPanel, "Picked Design Point", JOptionPane.PLAIN_MESSAGE, null); first = true; } } }; cellField.addReference( masterSplitPane.getDataRef() ); } catch ( Exception e3 ) { e3.printStackTrace (); } } > -----Original Message----- > From: Flaggs, Don > Sent: Monday, October 25, 2004 6:13 PM > To: 'visad@xxxxxxxxxxxxxxxx' > Subject: Sharing brushing (DISPLAY.SelectRange) across multiple displays > > Hi all, > > I'm putting together an application where I'd like to create multiple 2D/3D > scatterplot views of the same data, to include brushing. Assigning the same > data refs to the multiple views works great. Is there an easy way of > effectively doing the same kind of thing with SelectRangeWidget(s) or > something else such that "brushing" is automatically reflected in all views? > The VisAD documentation for SelectRangeWidget currently says "The > DisplayRealType of smap ... should already be added to a Display" which > implies that the standard brushing is display-specific. > > thanks in advance... dlf
visad
archives: