Changeset 2068


Ignore:
Timestamp:
01/10/07 18:25:20 (13 years ago)
Author:
curtis
Message:

Add min and max color scaling for intensity plot.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/loci/apps/slim/SlimPlotter.java

    r1934 r2068  
    9696  // GUI components for intensity pane 
    9797  private JSlider cSlider; 
     98  private JLabel minLabel, maxLabel; 
     99  private JSlider minSlider, maxSlider; 
    98100  private JCheckBox cToggle; 
    99101 
     
    126128  private DataReferenceImpl decayRef, fitRef, resRef; 
    127129  private DisplayImpl iPlot, decayPlot; 
     130  private ScalarMap intensityMap; 
    128131  private AnimationControl ac; 
    129132 
     
    322325    iPlot.addMap(new ScalarMap(xType, Display.XAxis)); 
    323326    iPlot.addMap(new ScalarMap(yType, Display.YAxis)); 
    324     iPlot.addMap(new ScalarMap(vType, Display.RGB)); 
     327    intensityMap = new ScalarMap(vType, Display.RGB); 
     328    iPlot.addMap(intensityMap); 
    325329    iPlot.addMap(new ScalarMap(cType, Display.Animation)); 
    326330    DataReferenceImpl intensityRef = new DataReferenceImpl("intensity"); 
     
    546550    masterWindow.setContentPane(masterPane); 
    547551    JPanel intensityPane = new JPanel(); 
    548     intensityPane.setLayout(new BorderLayout()); 
     552    intensityPane.setLayout(new BoxLayout(intensityPane, BoxLayout.Y_AXIS)); 
    549553    JPanel iPlotPane = new JPanel() { 
    550554      private int height = 380; 
     
    564568    iPlotPane.setLayout(new BorderLayout()); 
    565569    iPlotPane.add(iPlot.getComponent(), BorderLayout.CENTER); 
    566     intensityPane.add(iPlotPane, BorderLayout.CENTER); 
     570    intensityPane.add(iPlotPane); 
    567571 
    568572    setProgress(progress, 970); // estimate: 97% 
     
    571575    JPanel sliderPane = new JPanel(); 
    572576    sliderPane.setLayout(new BoxLayout(sliderPane, BoxLayout.X_AXIS)); 
    573     intensityPane.add(sliderPane, BorderLayout.SOUTH); 
     577    intensityPane.add(sliderPane); 
    574578    cSlider = new JSlider(1, channels, 1); 
    575579    cSlider.setToolTipText( 
     
    589593    cToggle.setEnabled(channels > 1); 
    590594    sliderPane.add(cToggle); 
     595 
     596    JPanel minMaxPane = new JPanel(); 
     597    minMaxPane.setLayout(new BoxLayout(minMaxPane, BoxLayout.X_AXIS)); 
     598    intensityPane.add(minMaxPane); 
     599 
     600    JPanel minPane = new JPanel(); 
     601    minPane.setLayout(new BoxLayout(minPane, BoxLayout.Y_AXIS)); 
     602    minMaxPane.add(minPane); 
     603    minLabel = new JLabel("min=0"); 
     604    minLabel.setAlignmentX(JLabel.CENTER_ALIGNMENT); 
     605    minPane.add(minLabel); 
     606    minSlider = new JSlider(0, max, 0); 
     607    minSlider.setToolTipText("TODO"); 
     608    minSlider.setMajorTickSpacing(max); 
     609    int minor = max / 16; 
     610    if (minor < 1) minor = 1; 
     611    minSlider.setMinorTickSpacing(minor); 
     612    minSlider.setPaintTicks(true); 
     613    minSlider.addChangeListener(this); 
     614    minSlider.setBorder(new EmptyBorder(0, 5, 8, 5)); 
     615    minPane.add(minSlider); 
     616 
     617    JPanel maxPane = new JPanel(); 
     618    maxPane.setLayout(new BoxLayout(maxPane, BoxLayout.Y_AXIS)); 
     619    minMaxPane.add(maxPane); 
     620    maxLabel = new JLabel("max=" + max); 
     621    maxLabel.setAlignmentX(JLabel.CENTER_ALIGNMENT); 
     622    maxPane.add(maxLabel); 
     623    maxSlider = new JSlider(0, max, max); 
     624    maxSlider.setToolTipText("TODO"); 
     625    maxSlider.setMajorTickSpacing(max); 
     626    maxSlider.setMinorTickSpacing(minor); 
     627    maxSlider.setPaintTicks(true); 
     628    maxSlider.addChangeListener(this); 
     629    maxSlider.setBorder(new EmptyBorder(0, 5, 8, 5)); 
     630    maxPane.add(maxSlider); 
    591631 
    592632    intensityRef.setData(field); 
     
    936976      cToggle.addActionListener(this); 
    937977    } 
     978    else if (src == minSlider) { 
     979      int min = minSlider.getValue(); 
     980      int max = maxSlider.getMaximum(); 
     981      maxSlider.setMajorTickSpacing(max - min); 
     982      int minor = (max - min) / 16; 
     983      if (minor < 1) minor = 1; 
     984      maxSlider.setMinorTickSpacing(minor); 
     985      maxSlider.setMinimum(min); 
     986      minLabel.setText("min=" + min); 
     987      rescaleMinMax(); 
     988    } 
     989    else if (src == maxSlider) { 
     990      int max = maxSlider.getValue(); 
     991      minSlider.setMajorTickSpacing(max); 
     992      int minor = max / 16; 
     993      if (minor < 1) minor = 1; 
     994      minSlider.setMinorTickSpacing(minor); 
     995      minSlider.setMaximum(max); 
     996      maxLabel.setText("max=" + max); 
     997      rescaleMinMax(); 
     998    } 
    938999    else if (src == numCurves) plotData(true, false, true); 
    9391000  } 
     
    13181379  } 
    13191380 
     1381  private void rescaleMinMax() { 
     1382    int min = minSlider.getValue(); 
     1383    int max = maxSlider.getValue(); 
     1384    try { intensityMap.setRange(min, max); } 
     1385    catch (VisADException exc) { exc.printStackTrace(); } 
     1386    catch (RemoteException exc) { exc.printStackTrace(); } 
     1387  } 
     1388 
    13201389  // -- Utility methods -- 
    13211390 
Note: See TracChangeset for help on using the changeset viewer.