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.
Hi Isaak, I am not sure. Maybe your code did not make it to the list. So I am forwarding your e-mail. I did not use the PickManipulationRenderer myself, so I can't help you. Desiree oooooooooooooooooooooooooooooooooooooooooooooooo Desiree Hilbring Institut fuer Photogrammetrie und Fernerkundung Universitaet Karlsruhe, Germany email: hilbring@xxxxxxxxxxxxxxxxxxxx # 0721 6083676 oooooooooooooooooooooooooooooooooooooooooooooooo ---------- Forwarded message ---------- Date: Sat, 10 Aug 2002 03:36:23 -0400 From: "Brobbey,Isaac" <IBBrobbey@xxxxxxxxxxxxxxx> To: "'hilbring@xxxxxxxxxxxxxxxxxxxx'" <hilbring@xxxxxxxxxxxxxxxxxxxx> hello: I have a little problem with the PickManipulationRendererJ3D and the range selection, the attached code compiles and runs fine, but the only problem is that, at run time, when i enter a range value it doesnt work as it is supposed to.Secondly the PickManipulationRendererJ3D cannot pick any sample when i right click. Is it because i try to add two data references to the display ? i am confused here. The "spikes" in the display corresponds to the ratio values in the file flatxx.txt, so i expect that when i right click, the PickManipulationRendererJ3D should execute the getClosedIndex()method and pick the corresponding sample, but it is not happening. i am not sure if i am doing something wrong since i am "new" to visad, i dont have much experience with visad.I have spent about three days trying to find it out, but from the top-level, i think the doAction() method in the cellImpl() method is not working but i dont really know what i am missing in the code, and i will be glad to know any workaround. I appreciate your time and hope to hear from you very soon. Isaac Center for Vascular Biology code// import javax.swing.JFrame; import visad.*; import visad.java3d.DisplayImplJ3D; import visad.util.*; import java.awt.*; import javax.swing.*; import java.awt.event.*; import java.rmi.RemoteException; import visad.bom.PickManipulationRendererJ3D; import visad.java3d.DirectManipulationRendererJ3D; import visad.data.text.TextAdapter; import java.io.BufferedWriter.*; import java.io.FileOutputStream; import java.io.FilePermission; import java.io.*; import java.util.Vector; import java.util.Iterator; import java.util.StringTokenizer; public class Spikesxx //implements ActionListener { // number of spikes along X axis private static final int NUM_SPIKES_X = 5; // number of spikes along Y axis private static final int NUM_SPIKES_Y = 5; // increase density value to make spikes "thinner" // decrease density value to make spikes "thicker" private static final int DENSITY = 5; private static final int MAX_HEIGHT = 100; // The RangeWidget private static RangeWidget ranWid; public static String Name=null; public static double Pi; public static double ratiox=0; public static double massx; public static Vector sue; public static double bex; public static Double lex; public static void main(String[] args) throws Exception { Integer2DSet set = new Integer2DSet( DENSITY * NUM_SPIKES_X, DENSITY * NUM_SPIKES_Y); RealType xtype = RealType.getRealType("x"); RealType ytype = RealType.getRealType("y"); RealType ratio = RealType.getRealType("ratio"); FunctionType type = new FunctionType( new RealTupleType(xtype, ytype), ratio); FlatField field = new FlatField(type, set); final FieldImpl fieldx = (FieldImpl) new TextAdapter("flat54xe.txt").getData(); int i=-1; double[][] samples = new double[1][DENSITY * NUM_SPIKES_X * DENSITY * NUM_SPIKES_Y]; for (int y=0; y<DENSITY * NUM_SPIKES_Y; y++) { for (int x=0; x<DENSITY * NUM_SPIKES_X; x++) { int ndx = y * DENSITY * NUM_SPIKES_X + x; if (x % DENSITY == 0 && y % DENSITY == 0 ) { i+=1; Tuple data = (Tuple)fieldx.getSample(i); System.out.println("Ratio = " + ((Real)data.getComponent(0)).getValue()+ ", "); samples[0][ndx] =((Real)data.getComponent(0)).getValue(); //else samples[0][ndx] =0; } else samples[0][ndx] =-1*Math.random();//((Double)sue.get()).doubleValue(); } } field.setSamples(samples); DisplayImplJ3D display = new DisplayImplJ3D("display"); // display.getGraphicsModeControl().setTextureEnable(false); GraphicsModeControl gmc = display.getGraphicsModeControl(); //gmc.setPointSize(5.0f); gmc.setTextureEnable(false); gmc.setScaleEnable(true); //freeze the screen ScalarMap xmap0=new ScalarMap(xtype, Display.XAxis); xmap0.getAxisScale().setScreenBased(false); display.addMap(xmap0); display.addMap(new ScalarMap(ytype, Display.YAxis)); display.addMap(new ScalarMap(ratio, Display.ZAxis)); display.addMap(new ScalarMap(ratio, Display.RGB)); // This is NEW! // Create a RangeWidget with the ScalarMap timeMap java.util.Vector mapVector = display.getMapVector(); final int numMaps = mapVector.size(); ScalarMap map1color = (ScalarMap )mapVector.elementAt(numMaps-1); JPanel panel = new JPanel(); panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); panel.add(new LabeledColorWidget(map1color)); ranWid = new RangeWidget(new ScalarMap(xtype, Display.XAxis)); DataReferenceImpl ref = new DataReferenceImpl("ref"); DataReferenceImpl refx = new DataReferenceImpl("refx"); final PickManipulationRendererJ3D pmr3d = new PickManipulationRendererJ3D(); ref.setData(field); refx.setData(fieldx); display.addReference(ref); display.addReferences(pmr3d,refx); //cellImpl computation and data retrieval CellImpl cellfield2d = new CellImpl() { private boolean nice = true; public void doAction() throws VisADException,RemoteException { if (nice) nice = false; else { int i = pmr3d.getCloseIndex(); System.out.println("i="+i); //System.out.println("3-D Field picked, index = " + i); //System.out.println("value = " + field.getSample(i)); Tuple data = (Tuple)fieldx.getSample(i); Set domainSet = fieldx.getDomainSet(); float[][] values = domainSet.indexToValue(new int[] { i }); } } }; cellfield2d.addReference(refx); //create a panel and add your buttons JFrame frame = new JFrame("Protein-Spikes,neuron(cvb) Isaac"); //frame.getContentPane().setLayout(new GridLayout(1,2) ); //frame.getContentPane().add("South",subViewOne()); //frame.getContentPane().setLayout(new FlowLayout()); frame.getContentPane().add(display.getComponent()); // make a panel JPanel big_panel = new JPanel(); big_panel.setLayout(new BorderLayout()); big_panel.add("Center", ranWid); big_panel.add("South", subViewOne()); big_panel.add("North", panel); // Add the RangeWidget to the frame JFrame jframe2=new JFrame("Protein-Spikes Controls,neuron(cvb) copyright*2002 Isaac"); jframe2.setContentPane(big_panel); jframe2.pack(); jframe2.setVisible(true); //frame.getContentPane().add(ranWid ); frame.setSize(600, 500); Util.centerWindow(frame); frame.setVisible(true); } private static JPanel subViewOne() { JButton A; JPanel main = new JPanel(); main.setLayout(new FlowLayout(FlowLayout.LEFT,5,5)); ImageIcon buttonx; buttonx = new ImageIcon("screen.JPEG"); A=new JButton("select range",buttonx); // A.addActionListener(this); //main.addButtons("Images/"); //homeButton.addActionListener(this); main.add(A); //main.add(widgetPanel); return main; } public static void actionPerformed (java.awt.event.ActionEvent e) { String aix = e.getActionCommand(); if(aix.equals("")) { ; } } } //data file flatxx.txt (isotopicMass, pi) -> (Ratio,name(Text)) Ratio, isotopicMass, pi,name(Text) 69 22100 2 "ACTIN23w_HUMAN" 20 22100 1.5 "ACTIN_HUMAN" 90 22100 2.5 "ACTIN_HUMAN" 79 12100 1.5 "ACTIN2xf_HUMAN" 50 12100 1 "ACTIN_HUMAN" 10 12100 3 "ACTIN_HUMAN"
visad
archives: