ui.recognizer
Class JSpectra

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by ui.recognizer.JSpectra
All Implemented Interfaces:
ImageObserver, MenuContainer, Serializable

public class JSpectra
extends JComponent

A JSpectra is a kind of JComponent which represents a spectra. The JSpectra contains an instance of Spectra which can be interpreted either as a continuous spectrum or a discrete series of spectral lines depending on the type of Spectra. Can be scaled and rotated. Can contain a movable cursor. Contains zero or more zones which can be highlighted. Cantains zero or more icons indicating interesting features and 'bookmarks' (as tooltips of the icons) Can be constructed by providing a file name for a spectra data text file.

Author:
John Talbot
See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class javax.swing.JComponent
JComponent.AccessibleJComponent
 
Nested classes/interfaces inherited from class java.awt.Container
Container.AccessibleAWTContainer
 
Nested classes/interfaces inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BltBufferStrategy, Component.FlipBufferStrategy
 
Field Summary
protected  boolean continuous
           
static int DEFAULT_HEIGHT
           
static double DEFAULT_OFFSET
           
static double DEFAULT_SCALE
           
static int DEFAULT_WIDTH
           
protected  double maxWavelength
           
protected  double minWavelength
           
protected  double offset
           
protected  double scale
           
protected  boolean showAxisLabels
           
protected  boolean showTics
           
protected  Spectra spectra
          The spectra object containing the spectra data
protected  int spectraHeight
           
protected  BufferedImage spectraImage
          The spectra image with a one to one correspondence between spectra sample points and pixels.
protected  int spectraWidth
          The width of the spectra in pixels (should this be a floating point number ?)
 
Fields inherited from class javax.swing.JComponent
accessibleContext, listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
 
Fields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
JSpectra(Spectra aSpectra)
           
JSpectra(Spectra aSpectra, double aScale, double anOffset, boolean aShowTics, boolean aShowAxisLabels, double aMinWavelength, double aMaxWavelength, boolean aContinuous)
           
 
Method Summary
 BufferedImage createContinuousSpectraImage(Spectra aSpectra)
          Create a continous spectra in which there is a one to one correspondence between spectra sample points and pixels.
 BufferedImage createDiscreteSpectraImage(Spectra aSpectra)
          Create a discrete spectra which consists of a sum of overlapping gaussians representing the spectral lines.
 BufferedImage createSpectraImage(Spectra aSpectra)
          Create a buffered image containing the spectra.
 double getMaxWavelength()
           
 double getMinWavelength()
          Get the minimum wavelength of this JSpectra label.
 double getOffset()
          Get the intensity offset constant to add to the spectra intensity
 int getPoints()
          Get points in the spectra
 double getScale()
          Get the intensity scale factor to multiply the spectra intensity
 Spectra getSpectra()
          Get the spectra object from this JSpectra.
 int getSpectraHeight()
           
 BufferedImage getSpectraImage()
          Get the spectra image representing a one to one correspondence between spectra sample points and pixels.
 int getSpectraWidth()
          Get the width of the JSpectra label in pixels (image of spectra may be smaller) This should be the same as preferred size.
 boolean isContinuous()
          Is the Spectra continuous or does it represent a discrete set of lines ?
 boolean isShowAxisLabels()
          Are the axis labels plotted ?
 boolean isShowTics()
          Are the tics shown ?
 int mapWavelengthToPixel(double aWavelength)
          Convert or map a wavelength to the corresponding position in the JLabel.
 void paintComponent(Graphics g)
           
 void setContinuous(boolean aContinuous)
           
 void setMaxWavelength(double aWavelength)
           
 void setMinWavelength(double aWavelength)
           
 void setOffset(double anOffset)
           
 void setScale(double aScale)
           
 void setShowAxisLabels(boolean aShowAxisLabels)
           
 void setShowTics(boolean aShowTics)
           
 void setSpectra(Spectra aSpectra)
           
 void setSpectraHeight(int aHeight)
           
 void setSpectraImage(BufferedImage anImage)
          Set the spectra image representing a one to one correspondence between spectra sample points and pixels.
 void setSpectraWidth(int aWidth)
           
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getAccessibleContext, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getUIClassID, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintImmediately, paintImmediately, paramString, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update, updateUI
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusBackward, transferFocusDownCycle, validate, validateTree
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

DEFAULT_WIDTH

public static final int DEFAULT_WIDTH
See Also:
Constant Field Values

DEFAULT_HEIGHT

public static final int DEFAULT_HEIGHT
See Also:
Constant Field Values

DEFAULT_SCALE

public static final double DEFAULT_SCALE
See Also:
Constant Field Values

DEFAULT_OFFSET

public static final double DEFAULT_OFFSET
See Also:
Constant Field Values

spectra

protected Spectra spectra
The spectra object containing the spectra data


spectraWidth

protected int spectraWidth
The width of the spectra in pixels (should this be a floating point number ?)


spectraHeight

protected int spectraHeight

minWavelength

protected double minWavelength

maxWavelength

protected double maxWavelength

spectraImage

protected BufferedImage spectraImage
The spectra image with a one to one correspondence between spectra sample points and pixels.


scale

protected double scale

offset

protected double offset

showTics

protected boolean showTics

showAxisLabels

protected boolean showAxisLabels

continuous

protected boolean continuous
Constructor Detail

JSpectra

public JSpectra(Spectra aSpectra)

JSpectra

public JSpectra(Spectra aSpectra,
                double aScale,
                double anOffset,
                boolean aShowTics,
                boolean aShowAxisLabels,
                double aMinWavelength,
                double aMaxWavelength,
                boolean aContinuous)
Method Detail

createSpectraImage

public BufferedImage createSpectraImage(Spectra aSpectra)
Create a buffered image containing the spectra.

Parameters:
aSpectra - the spectra data

createContinuousSpectraImage

public BufferedImage createContinuousSpectraImage(Spectra aSpectra)
Create a continous spectra in which there is a one to one correspondence between spectra sample points and pixels.


createDiscreteSpectraImage

public BufferedImage createDiscreteSpectraImage(Spectra aSpectra)
Create a discrete spectra which consists of a sum of overlapping gaussians representing the spectral lines.


paintComponent

public void paintComponent(Graphics g)
Overrides:
paintComponent in class JComponent

getSpectra

public Spectra getSpectra()
Get the spectra object from this JSpectra.

Returns:
a spectra object containing the spectra data.

setSpectra

public void setSpectra(Spectra aSpectra)

isContinuous

public boolean isContinuous()
Is the Spectra continuous or does it represent a discrete set of lines ?


setContinuous

public void setContinuous(boolean aContinuous)

isShowTics

public boolean isShowTics()
Are the tics shown ?


setShowTics

public void setShowTics(boolean aShowTics)

isShowAxisLabels

public boolean isShowAxisLabels()
Are the axis labels plotted ?


setShowAxisLabels

public void setShowAxisLabels(boolean aShowAxisLabels)

getSpectraImage

public BufferedImage getSpectraImage()
Get the spectra image representing a one to one correspondence between spectra sample points and pixels.

Returns:
a buffered image representing the spectra at the optimum graphical resolution

setSpectraImage

public void setSpectraImage(BufferedImage anImage)
Set the spectra image representing a one to one correspondence between spectra sample points and pixels.

Parameters:
anImage - a buffered image representing the spectra

getScale

public double getScale()
Get the intensity scale factor to multiply the spectra intensity


setScale

public void setScale(double aScale)

getOffset

public double getOffset()
Get the intensity offset constant to add to the spectra intensity


setOffset

public void setOffset(double anOffset)

getPoints

public int getPoints()
Get points in the spectra


getSpectraWidth

public int getSpectraWidth()
Get the width of the JSpectra label in pixels (image of spectra may be smaller) This should be the same as preferred size.


setSpectraWidth

public void setSpectraWidth(int aWidth)

getSpectraHeight

public int getSpectraHeight()

setSpectraHeight

public void setSpectraHeight(int aHeight)

getMinWavelength

public double getMinWavelength()
Get the minimum wavelength of this JSpectra label. This is not the minimum wavelength of the Spectra object which it contains. Usually this is less than the actual spectra.

Returns:
the wavelength at which the JSpectra starts

setMinWavelength

public void setMinWavelength(double aWavelength)

getMaxWavelength

public double getMaxWavelength()

setMaxWavelength

public void setMaxWavelength(double aWavelength)

mapWavelengthToPixel

public int mapWavelengthToPixel(double aWavelength)
Convert or map a wavelength to the corresponding position in the JLabel.

Returns:
a pixel position equivalent to the wavelength or -1 if out of range