edu.wisc.ssec.mcidasv.control
Class MultiSpectralControl

java.lang.Object
  extended by ucar.unidata.collab.SharableImpl
      extended by ucar.unidata.idv.control.DisplayControlBase
          extended by ucar.unidata.idv.control.DisplayControlImpl
              extended by edu.wisc.ssec.mcidasv.control.HydraControl
                  extended by edu.wisc.ssec.mcidasv.control.MultiSpectralControl
All Implemented Interfaces:
ActionListener, ItemListener, PropertyChangeListener, EventListener, HyperlinkListener, Sharable, DataChangeListener, DisplayControl, Prototypable, ControlListener, DisplayListener

public class MultiSpectralControl
extends HydraControl


Nested Class Summary
 class MultiSpectralControl.ColorEditor
           
 class MultiSpectralControl.ColorRenderer
           
 class MultiSpectralControl.HackyDragDropRowUI
           
private static class MultiSpectralControl.ProbeTableModel
           
private static class MultiSpectralControl.Spectrum
           
 
Nested classes/interfaces inherited from class ucar.unidata.idv.control.DisplayControlImpl
DisplayControlImpl.SideLegendLabel
 
Field Summary
private  JButton addProbe
           
private static int DEFAULT_FLAGS
           
private  MultiSpectralDisplay display
           
private  DisplayMaster displayMaster
           
private  McIDASVHistogramWrapper histoWrapper
           
(package private)  JTextField maxBox
           
(package private)  JTextField minBox
           
private  String PARAM
           
private  int probesSeen
           
private  JTable probeTable
           
private  float rangeMax
           
private  float rangeMin
           
private  JButton removeProbe
           
private  JScrollPane scrollPane
           
private  List<MultiSpectralControl.Spectrum> spectra
           
private  List<Hashtable<String,Object>> spectraProperties
           
private  JTextField wavenumbox
           
 
Fields inherited from class ucar.unidata.idv.control.DisplayControlImpl
categories, colorScaleInfo, colorScales, contourInfo, contourInfoParams, contourWidget, controlContext, ctw, dataSelection, defaultView, defaultViewManager, DISPLAY_LIST_NAME, displayListTable, displayListUsesColor, displayMasters, displayUnit, helpUrl, initNoteText, instantiatedWithNoData, noteTextArea, noteWrapper, paramName, requestProperties, selectRangeWidget, settingVisibility, sharables, showNoteText, skipSlider, version, viewManagers, ZFUDGE
 
Fields inherited from class ucar.unidata.idv.control.DisplayControlBase
CMD_BARBSIZE, CMD_COLORS, CMD_COLORTABLE, CMD_INTERVAL, CMD_LEVEL, CMD_LINEWIDTH, CMD_POPUP, CMD_REMOVE, DEFAULT_POINT_SIZE, DEFAULT_SAMPLING_MODE, FIND_ALL, FIND_CATEGORY, FIND_CLASS, FIND_SPECIAL, FIND_THIS, FIND_WITHDATA, FIND_WITHTHISDATA, FIND_WITHTHISFIELD, FIND_WITHTHISVIEW, FLAG_COLOR, FLAG_COLORTABLE, FLAG_COLORUNIT, FLAG_CONTOUR, FLAG_DATACONTROL, FLAG_DISPLAYUNIT, FLAG_LINEWIDTH, FLAG_NONE, FLAG_SELECTRANGE, FLAG_SKIPFACTOR, FLAG_SMOOTHING, FLAG_TEXTUREQUALITY, FLAG_TIMERANGE, FLAG_ZPOSITION, GRID_INSETS, ICON_LOCK, ICON_REMOVE, ICON_UNLOCK, LABEL_NONE, log_, MACRO_DATASOURCENAME, MACRO_DISPLAYNAME, MACRO_DISPLAYUNIT, MACRO_FHOUR, MACRO_LONGNAME, MACRO_POSITION, MACRO_SHORTNAME, MACRO_STATION, MACRO_TIMESTAMP, MACRO_VALUE, NEAREST_NEIGHBOR, PREF_DISPLAYLIST_TEMPLATE, PREF_EXTRALABEL_TEMPLATE, PREF_LEGENDLABEL_TEMPLATE, PROP_REMOVED, SETTINGS_GROUP_DISPLAY, SETTINGS_GROUP_FLAGS, SHARE_CHOICES, SHARE_COLOR, SHARE_COLORSCALE, SHARE_COLORTABLE, SHARE_DISPLAYUNIT, SHARE_POSITION, SHARE_SELECTRANGE, SHARE_SKIPVALUE, SHARE_TRANSECT, SHARE_VISIBILITY, WEIGHTED_AVERAGE
 
Fields inherited from interface ucar.unidata.idv.DisplayControl
BOTTOM_LEGEND, DEFAULT_PROBEFORMAT, PREF_PREFIX, PREF_PROBEFORMAT, PREF_REMOVEONWINDOWCLOSE, PREF_SAMPLING_MODE, PREF_STANDALONE_REMOVEONCLOSE, PREF_STANDALONE_REMOVEONCLOSE_ASK, PROP_LEGENDICON, RASTERMODE_SHOWALL, RASTERMODE_SHOWNONRASTER, RASTERMODE_SHOWRASTER, SIDE_LEGEND
 
Constructor Summary
MultiSpectralControl()
           
 
Method Summary
protected  void addSpectra(Color... colors)
          Uses a variable-length array of Colors to create new readout probes using the specified colors.
 MultiSpectralControl.Spectrum addSpectrum(Color color)
          Creates a new ReadoutProbe with the specified Color.
protected  void clearViewManagers()
          Runs through the list of ViewManager-s and tells each to destroy.
protected  void contrastStretch(double low, double high)
           
 Container doMakeContents()
           
protected  JComponent doMakeWidgetComponent()
           
 void doRemove()
           
 MapProjection getDataProjection()
           
 DataSelection getDataSelection()
           
private  JComponent getDisplayTab()
           
private  JComponent getHistogramTabComponent()
           
protected  ColorTable getInitialColorTable()
           
protected  Range getInitialRange()
           
protected  MultiSpectralDisplay getMultiSpectralDisplay()
           
 List<Hashtable<String,Object>> getSpectraProperties()
           
 void handleChannelChange(float newChan)
           
 void handleChannelChange(float newChan, boolean update)
           
 boolean init(DataChoice choice)
           
 void initDone()
           
static float[] minmax(float[] values)
           
 void pokeSpectra()
          Makes each ReadoutProbe in this display control attempt to redisplay its readout value.
 void removeSpectra()
          Iterates through the list of MultiSpectralControl.Spectrums that manage each ReadoutProbe associated with this display control and calls MultiSpectralControl.Spectrum.removeValueDisplay() in an effort to remove this control's probes.
 void removeSpectrum(int index)
          Attempts to remove the MultiSpectralControl.Spectrum at the given index.
 void resetColorTable()
           
 void setDataSelection(DataSelection newSelection)
           
 void setDisplayVisibility(boolean on)
          Overridden by McIDAS-V so that "hide" probes when their display is turned off.
 void setSpectraProperties(List<Hashtable<String,Object>> props)
           
private  void updateHistogramTab()
           
 boolean updateImage(float newChan)
           
protected  void updateList(List<MultiSpectralControl.Spectrum> updatedSpectra)
           
 
Methods inherited from class edu.wisc.ssec.mcidasv.control.HydraControl
updateRange
 
Methods inherited from class ucar.unidata.idv.control.DisplayControlImpl
actionPerformed, activateDisplays, addAttributedDisplayable, addAttributedDisplayable, addAttributedDisplayable, addAttributeFlags, addCheckBoxSettings, addDataChoice, addDisplayable, addDisplayable, addDisplayable, addDisplayable, addDisplayable, addDisplayable, addDisplayMaster, addDisplaySettings, addLabelMacros, addNewData, addNoteText, addPropertiesComponents, addPropertyChangeListener, addRemovable, addSharable, addTimeModeWidget, addToControlContext, addToRangeMenu, addToRangeMenu, addToRangeMenu, addViewManager, appendDataChoices, applyAttributesToDisplayables, applyColor, applyColorScaleInfo, applyColorTable, applyColorUnit, applyContourInfo, applyDisplaySetting, applyDisplayUnit, applyLineWidth, applyPreferences, applyProperties, applyProperties, applyPropertyValues, applyRange, applySelectRange, applySkipFactor, applySmoothing, applyTextureQuality, applyTimeRange, applyZPosition, boundsClose, canBeDocked, canExportData, canSaveDataInCache, captureWindow, centerOnDisplay, changeColorUnit, changeDisplayUnit, checkFlag, checkIfDataOk, checkImageSize, clearDataInstance, clearPrototype, close, colorUnitChanged, controlChanged, convertColorRange, convertRange, createDisplayListDisplayable, createIdvWindow, dataChanged, deactivateDisplays, debug, displayableToFront, displayChanged, displayControlFailed, displayUnitChanged, doApplyProperties, doExport, doInitialUpdateLegendAndList, doMakeBottomLegendComponent, doMakeChangeColorMenu, doMakeChangeColorMenu, doMakeChangeParameterMenuItem, doMakeColorControl, doMakeColorControl, doMakeColorScales, doMakeDataInstance, doMakeMenuBar, doMakeMenuBarMenus, doMakePointSizeWidget, doMakeRemoveControl, doMakeSideLegendComponent, doMakeSkipFactorSlider, doMakeTextureSlider, doMakeVisibilityControl, doMakeWindow, doMakeZPositionSlider, exportDisplayedData, findDisplayInfo, findDisplays, findDisplays, firePropertyChangeEvent, firstFrameDone, formatForCursorReadout, getActive, getAnimation, getAnimation, getAnimation, getAnimation, getAnimationInfo, getAnimationWidget, getAttributeFlags, getCachedData, getCanDoRemoveAll, getCategories, getChangeParameterLabel, getCollapseLegend, getColor, getColorDimness, getColorScaleInfo, getColorTable, getColorTableForDisplayable, getColorTableToApply, getColorTableWidget, getColorUnit, getColorUnitName, getColorWidgetLabel, getComponentHolder, getContents, getContourInfo, getControlChangeSleepTime, getControlContext, getControlMenus, getControlWidgets, getCursorReadout, getCursorReadoutInner, getCursorReadoutInner, getData, getDataChoice, getDataChoices, getDataForDisplayList, getDataInstance, getDataInstance, getDataProjectionForMenu, getDataProjectionLabel, getDataSources, getDataTimeRange, getDataTimeRange, getDataTimeSet, getDebugDetails, getDefaultColorScaleInfo, getDefaultDisplayListTemplate, getDefaultDistanceUnit, getDefaultFastRendering, getDefaultSamplingMode, getDefaultSamplingModeValue, getDefaultView, getDefaultViewDescriptor, getDefaultViewManager, getDetailsContents, getDisplayAltitudeType, getDisplayCategory, getDisplayCenter, getDisplayConventions, getDisplayedData, getDisplayId, getDisplayInfos, getDisplayListColor, getDisplayListData, getDisplayListDisplayable, getDisplayListTemplate, getDisplayMaster, getDisplayName, getDisplayScale, getDisplayUnit, getDisplayUnit, getDisplayUnitName, getDisplayVisibility, getDoCursorReadout, getEditMenuItems, getEditMenuItems, getExpandedInTabs, getExtraLabelTemplate, getExtraLegendComponent, getExtraMenus, getFileMenuItems, getFileMenuItems, getGraphicsConfiguration, getGrid, getGrid, getHadDataChoices, getHaveInitialized, getHelpIds, getHelpMenuItems, getId, getIdv, getImage, getImage, getInitDataChoices, getInitialFastRendering, getInitialZPosition, getInternalAnimation, getInternalAnimation, getIsRaster, getIsTimeDriver, getLabel, getLastFileMenuItems, getLegendButtons, getLegendComponent, getLegendLabel, getLegendLabels, getLegendLabelTemplate, getLegendToolTip, getLineWidth, getLineWidthWidget, getLineWidthWidgetLabel, getLockVisibilityToggle, getLongParamName, getMacroNames, getMainPanel, getMainPanelSize, getMakeWindow, getMapDisplay, getMapViewManager, getMapViewProjection, getMenuLabel, getMyDataChoices, getNavigatedDisplay, getNoteText, getObjectStore, getOkToFireEvents, getOldColorTableOrInitialColorTable, getOriginalDataChoicesLabel, getOuterContents, getPointSize, getProperty, getProperty, getPropertyDisplayName, getRange, getRangeForColorTable, getRangeToApply, getRawDataUnit, getRequestProperties, getSamplingModeName, getSamplingModeValue, getSamplingModeValue, getSaveMenuItems, getSelectRange, getSelectRangeEnabled, getSelectRangeWidget, getSettingsPanel, getShortParamName, getShowInDisplayList, getShowInLegend, getShowInTabs, getShowNoteText, getSkipValue, getSkipWidgetLabel, getSmoothingFactor, getSmoothingType, getSomeAnimation, getStore, getTemplateName, getTextureQuality, getTextureQualityLabel, getTimeSet, getTitle, getTransientProperty, getUnitForColor, getUseFastRendering, getUsesTimeDriver, getUseTimesInAnimation, getVersion, getVerticalValue, getViewAnimation, getViewContext, getViewer, getViewManager, getViewManager, getViewManager, getViewManagerClassNames, getViewManagerForCapture, getViewManagers, getViewMenuItems, getViewMenuItems, getVisbilityAnimationPause, getWasUnPersisted, getWindow, getWindowSize, getWindowVisible, getWindowX, getWindowY, getZPosition, getZPositionSliderLabel, guiExported, guiImported, handleDisplayChanged, handleWindowClosing, hasMapProjection, hasTimeMacro, haveDataTimes, haveParameterDefaults, hide, hyperlinkUpdate, inGlobeDisplay, init, init, init, initAfterUnPersistence, initAfterUnPersistence, initAsPrototype, initAsTemplate, initBasic, initializeWithNewData, initWindow, isDisplay3D, isDisplayUnitAlsoColorUnit, isGuiShown, isInitDone, isInTransectView, isInViewManager, itemStateChanged, makeChangeColorMenuItems, makeLegendLabel, makeLockButton, makeRemoveButton, moveTo, notifyViewManagersOfChange, parseProperties, popup, popupDataDialog, popupDataDialog, popupDataDialog, processRequestProperties, projectionChanged, propertyChange, putTransientProperty, reallySetAttributeFlags, receiveShareData, redoGuiLayout, reloadDataSource, reloadDataSourceInThread, removeDataChoice, removeDisplayable, removeDisplayables, removeDisplayables, removeOnWindowClose, removePropertyChangeListener, resetData, resetDimness, resetViewManager, revertToDefaultColorTable, revertToDefaultColorTable, revertToDefaultRange, revertToDefaultRange, saveAsFavorite, saveAsParameterDefaults, saveAsPrototype, saveAsTemplate, saveDataChoiceInCache, saveImage, selectDataChoices, setAnimationInfo, setAnimationSet, setAttributeFlags, setCachedData, setCanDoRemoveAll, setCategories, setCollapseLegend, setColor, setColorBrighter, setColorDimmer, setColorDimness, setColorScaleInfo, setColorScaleVisible, setColorTable, setColorTable, setColorTableName, setColorUnit, setColorUnitName, setComponentHolder, setContents, setContourInfo, setContourInfoParams, setData, setData, setDataChoices, setDataInstance, setDataInstances, setDataTimeRange, setDefaultSamplingMode, setDefaultView, setDisplayableVisibility, setDisplayableVisiblity, setDisplayActive, setDisplayCategory, setDisplayId, setDisplayInactive, setDisplayListColor, setDisplayListColor, setDisplayListProperties, setDisplayListTemplate, setDisplayName, setDisplayUnit, setDisplayUnitName, setDoCursorReadout, setExpandedInTabs, setExtraLabelTemplate, setHadDataChoices, setHelpUrl, setId, setInitDataChoices, setInitialSettings, setInitialViewManager, setIsRaster, setIsTimeDriver, setLabelAsPreference, setLegendBackground, setLegendForeground, setLegendLabel, setLegendLabelTemplate, setLineWidth, setLockVisibilityToggle, setMainPanelDimensions, setMainPanelSize, setMakeWindow, setName, setNameFromUser, setNewColorUnit, setNewDisplayUnit, setNoteText, setOkToFireEvents, setOriginalDataChoicesLabel, setParamName, setPersistedVisadData, setPointSize, setProjectionInView, setProjectionInView, setProperty, setRange, setRange, setSelectRange, setSelectRangeEnabled, setSettingsDisplayUnit, setSharedColorScaleInfo, setShowInDisplayList, setShowInLegend, setShowInTabs, setShowNoteText, setSkipValue, setSmoothingFactor, setSmoothingType, setTemplateName, setTextureQuality, setTitle, setUnitForColor, setUseFastRendering, setUsesTimeDriver, setUseTimesInAnimation, setVersion, setViewer, setViewManagerClassNames, setVisbilityAnimationPause, setWindowSize, setWindowVisible, setWindowX, setWindowY, setZPosition, setZPosition, shouldAddAnimationListener, shouldAddControlListener, shouldAddDisplayListener, shouldApplyFastRendering, shouldBeDocked, shouldWindowBeVisible, show, showColorControlWidget, showColorDialog, showColorDialog, showColorScaleDialog, showColorScales, showColorSwatches, showContourPropertiesDialog, showDetails, showDisplaySettingsDialog, showHelp, showLegendMenu, showNormalCursor, showProperties, showTimeRangeDialog, showWaitCursor, timeChanged, toFront, toggleNoteTextArea, toggleVisibilityForVectorGraphicsRendering, toggleWindow, toString, transectChanged, updateAnimation, updateDataInstance, updateDataSelection, updateDisplayList, updateGridDataInstance, updateLegendAndList, updateLegendLabel, updateLockButton, useSmoothingFactor, useZPosition, viewManagerChanged, viewManagerDestroyed, viewpointChanged, writeTestArchive, xxxsetDisplayActive, zSliderChanged
 
Methods inherited from class ucar.unidata.idv.control.DisplayControlBase
boxToEarth, boxToEarth, boxToEarth, boxToEarth, boxToEarth, boxToScreen, calculateRectangle, createStationTfo, earthToBox, earthToBox, earthToBoxTuple, earthToScreen, formatLevels, getLabeledReal, getLevelReal, getScreenCenter, getSelectedStation, getTmpProperty, isLeftButtonDown, logException, logException, makeEarthLocation, putTmpProperty, removeTmpProperty, screenToBox, screenToBox, screenToEarth, setStations, setStations, toBox, toEarth, userErrorMessage, userMessage
 
Methods inherited from class ucar.unidata.collab.SharableImpl
applySharableProperties, doShare, doShare, doShareExternal, doShareInternal, getReceiveShareTime, getSharablePropertiesComponent, getShareGroup, getSharing, getUniqueId, initSharable, removeSharable, setReceiveShareTime, setShareGroup, setSharing, setUniqueId, showSharableDialog
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface ucar.unidata.idv.DisplayControl
getTmpProperty, putTmpProperty, removeTmpProperty
 
Methods inherited from interface ucar.unidata.collab.Sharable
getReceiveShareTime, getShareGroup, getSharing, getUniqueId, setReceiveShareTime
 

Field Detail

PARAM

private String PARAM

DEFAULT_FLAGS

private static final int DEFAULT_FLAGS
See Also:
Constant Field Values

display

private MultiSpectralDisplay display

displayMaster

private DisplayMaster displayMaster

wavenumbox

private final JTextField wavenumbox

minBox

final JTextField minBox

maxBox

final JTextField maxBox

spectraProperties

private final List<Hashtable<String,Object>> spectraProperties

spectra

private final List<MultiSpectralControl.Spectrum> spectra

histoWrapper

private McIDASVHistogramWrapper histoWrapper

rangeMin

private float rangeMin

rangeMax

private float rangeMax

probesSeen

private int probesSeen

probeTable

private final JTable probeTable

scrollPane

private final JScrollPane scrollPane

addProbe

private final JButton addProbe

removeProbe

private final JButton removeProbe
Constructor Detail

MultiSpectralControl

public MultiSpectralControl()
Method Detail

init

public boolean init(DataChoice choice)
             throws VisADException,
                    RemoteException
Overrides:
init in class DisplayControlImpl
Throws:
VisADException
RemoteException

initDone

public void initDone()
Overrides:
initDone in class DisplayControlImpl

setDisplayVisibility

public void setDisplayVisibility(boolean on)
Overridden by McIDAS-V so that "hide" probes when their display is turned off. Otherwise users can wind up with probes on the screen which aren't associated with any displayed data.

Specified by:
setDisplayVisibility in interface DisplayControl
Overrides:
setDisplayVisibility in class DisplayControlImpl
Parameters:
on - true if we're visible, false otherwise.
See Also:
DisplayControl.setDisplayVisibility(boolean)

setSpectraProperties

public void setSpectraProperties(List<Hashtable<String,Object>> props)

getSpectraProperties

public List<Hashtable<String,Object>> getSpectraProperties()

updateList

protected void updateList(List<MultiSpectralControl.Spectrum> updatedSpectra)

addSpectra

protected void addSpectra(Color... colors)
Uses a variable-length array of Colors to create new readout probes using the specified colors.

Parameters:
colors - Variable length array of Colors. Shouldn't be null.

addSpectrum

public MultiSpectralControl.Spectrum addSpectrum(Color color)
Creates a new ReadoutProbe with the specified Color.

Parameters:
color - Color of the new ReadoutProbe. null values are not allowed.
Returns:
MultiSpectralControl.Spectrum wrapper for the newly created ReadoutProbe.
Throws:
NullPointerException - if color is null.

removeSpectrum

public void removeSpectrum(int index)
Attempts to remove the MultiSpectralControl.Spectrum at the given index.

Parameters:
index - Index of the probe to be removed (within spectra).

removeSpectra

public void removeSpectra()
Iterates through the list of MultiSpectralControl.Spectrums that manage each ReadoutProbe associated with this display control and calls MultiSpectralControl.Spectrum.removeValueDisplay() in an effort to remove this control's probes.

See Also:
spectra

pokeSpectra

public void pokeSpectra()
Makes each ReadoutProbe in this display control attempt to redisplay its readout value.

Sometimes the probes don't initialize correctly and this method is a stop-gap solution.


getDataSelection

public DataSelection getDataSelection()
Overrides:
getDataSelection in class DisplayControlImpl

setDataSelection

public void setDataSelection(DataSelection newSelection)
Overrides:
setDataSelection in class DisplayControlImpl

getDataProjection

public MapProjection getDataProjection()
Specified by:
getDataProjection in interface DisplayControl
Overrides:
getDataProjection in class DisplayControlImpl

minmax

public static float[] minmax(float[] values)

getInitialRange

protected Range getInitialRange()
                         throws VisADException,
                                RemoteException
Overrides:
getInitialRange in class DisplayControlImpl
Throws:
VisADException
RemoteException

getInitialColorTable

protected ColorTable getInitialColorTable()
Overrides:
getInitialColorTable in class DisplayControlImpl

doMakeContents

public Container doMakeContents()
Overrides:
doMakeContents in class DisplayControlImpl

doRemove

public void doRemove()
              throws VisADException,
                     RemoteException
Specified by:
doRemove in interface DisplayControl
Overrides:
doRemove in class DisplayControlImpl
Throws:
VisADException
RemoteException

clearViewManagers

protected void clearViewManagers()
Runs through the list of ViewManager-s and tells each to destroy. Creates a new viewManagers list.

Overrides:
clearViewManagers in class DisplayControlImpl

doMakeWidgetComponent

protected JComponent doMakeWidgetComponent()
Overrides:
doMakeWidgetComponent in class DisplayControlImpl

getMultiSpectralDisplay

protected MultiSpectralDisplay getMultiSpectralDisplay()
Specified by:
getMultiSpectralDisplay in class HydraControl

updateImage

public boolean updateImage(float newChan)

handleChannelChange

public void handleChannelChange(float newChan)
Overrides:
handleChannelChange in class HydraControl

handleChannelChange

public void handleChannelChange(float newChan,
                                boolean update)

getDisplayTab

private JComponent getDisplayTab()

getHistogramTabComponent

private JComponent getHistogramTabComponent()

updateHistogramTab

private void updateHistogramTab()

resetColorTable

public void resetColorTable()

contrastStretch

protected void contrastStretch(double low,
                               double high)