com.pixelmed.display
Class DicomImageBlackout

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by java.awt.Window
              extended by java.awt.Frame
                  extended by javax.swing.JFrame
                      extended by com.pixelmed.display.DicomImageBlackout
All Implemented Interfaces:
ImageObserver, MenuContainer, Serializable, Accessible, RootPaneContainer, WindowConstants
Direct Known Subclasses:
DicomCleaner.OurDicomImageBlackout

public class DicomImageBlackout
extends JFrame

This class displays images and allows the user to black out burned-in annotation, and save the result.

A main method is provided, which can be supplied with a list of file names or pop up a file chooser dialog.

See Also:
Serialized Form

Nested Class Summary
protected  class DicomImageBlackout.ApplyActionListener
           
protected  class DicomImageBlackout.ApplySaveAllActionListener
           
 class DicomImageBlackout.BurnedInAnnotationFlagAction
          A class of values for the Burned in Annotation action argument of the DicomImageBlackout() constructor.
protected  class DicomImageBlackout.CancelActionListener
           
protected  class DicomImageBlackout.CenterMaximumAfterInitialSizeLayout
           
protected  class DicomImageBlackout.CineSliderChangeListener
           
 class DicomImageBlackout.DefaultStatusNotificationHandler
          A default status notification implementation, which just writes everything to stderr.
protected  class DicomImageBlackout.NextActionListener
           
protected  class DicomImageBlackout.OverlaysChangeListener
           
protected  class DicomImageBlackout.PixelPaddingBlackoutValueChangeListener
           
protected  class DicomImageBlackout.SaveActionListener
           
 class DicomImageBlackout.StatusNotificationHandler
          An abstract class for the user of to supply a callback notification method, supplied as an argument of the DicomImageBlackout() constructor.
protected  class DicomImageBlackout.ZeroBlackoutValueChangeListener
           
 
Nested classes/interfaces inherited from class javax.swing.JFrame
JFrame.AccessibleJFrame
 
Nested classes/interfaces inherited from class java.awt.Frame
Frame.AccessibleAWTFrame
 
Nested classes/interfaces inherited from class java.awt.Window
Window.AccessibleAWTWindow
 
Nested classes/interfaces inherited from class java.awt.Container
Container.AccessibleAWTContainer
 
Nested classes/interfaces inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy
 
Field Summary
protected  DicomImageBlackout.ApplyActionListener applyActionListener
           
protected  JButton blackoutApplyButton
           
protected  JButton blackoutNextButton
           
protected  JButton blackoutSaveButton
           
protected  int burnedinflag
           
protected  boolean burnInOverlays
           
protected  boolean changesWereMade
           
protected  JSlider cineSlider
           
protected  DicomImageBlackout.CineSliderChangeListener cineSliderChangeListener
           
protected  JPanel cineSliderControlsPanel
           
protected  String currentFileName
           
protected  int currentFileNumber
           
protected  String[] dicomFileNames
           
protected  SingleImagePanel imagePanel
           
protected  JLabel imagesRemainingLabel
           
protected  AttributeList list
           
protected  Box mainPanel
           
protected  JPanel multiPanel
           
protected  DicomImageBlackout.NextActionListener nextActionListener
           
protected  String ourAETitle
           
protected  EventContext ourEventContext
           
protected  com.pixelmed.display.DicomImageBlackout.OurFrameSelectionChangeListener ourFrameSelectionChangeListener
           
protected  int previousColumns
           
protected  Vector previousPersistentDrawingShapes
           
protected  int previousRows
           
protected  DicomImageBlackout.SaveActionListener saveActionListener
           
protected  SourceImage sImg
           
protected  DicomImageBlackout.StatusNotificationHandler statusNotificationHandler
           
protected  boolean usePixelPaddingBlackoutValue
           
protected  JCheckBox usePixelPaddingBlackoutValueCheckBox
           
protected  boolean useZeroBlackoutValue
           
protected  JCheckBox useZeroBlackoutValueCheckBox
           
 
Fields inherited from class javax.swing.JFrame
accessibleContext, EXIT_ON_CLOSE, rootPane, rootPaneCheckingEnabled
 
Fields inherited from class java.awt.Frame
CROSSHAIR_CURSOR, DEFAULT_CURSOR, E_RESIZE_CURSOR, HAND_CURSOR, ICONIFIED, MAXIMIZED_BOTH, MAXIMIZED_HORIZ, MAXIMIZED_VERT, MOVE_CURSOR, N_RESIZE_CURSOR, NE_RESIZE_CURSOR, NORMAL, NW_RESIZE_CURSOR, S_RESIZE_CURSOR, SE_RESIZE_CURSOR, SW_RESIZE_CURSOR, TEXT_CURSOR, W_RESIZE_CURSOR, WAIT_CURSOR
 
Fields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
 
Fields inherited from interface javax.swing.WindowConstants
DISPOSE_ON_CLOSE, DO_NOTHING_ON_CLOSE, HIDE_ON_CLOSE
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
DicomImageBlackout(String title, String[] dicomFileNames, DicomImageBlackout.StatusNotificationHandler snh, int burnedinflag)
          Opens a window to display the supplied list of DICOM files to allow them to have burned in annotation blacked out.
 
Method Summary
protected  void addSingleImagePanelToMultiPanelAndEstablishLayout()
           
protected  void addSingleImagePanelToMultiPanelAndEstablishLayoutWithCenterMaximumAfterInitialSizeLayout()
           
protected  void buildUIComponents()
           
protected  Dimension changeDimensionToFitInMaximumAvailable(Dimension useDimension, Dimension maxDimension, boolean onlySmaller)
           
protected  void createCineSliderIfNecessary(int min, int max, int value)
           
 void deconstruct()
           
 void dispose()
           
protected  void finalize()
           
protected  double getScaleFactorToFitInMaximumAvailable(double useWidth, double useHeight, double maxWidth, double maxHeight)
           
protected  void loadDicomFileOrDirectory(File currentFile)
          Load the named DICOM file and display it in the image panel.
protected  void loadDicomFileOrDirectory(String dicomFileName)
          Load the named DICOM file and display it in the image panel.
static void main(String[] arg)
          The method to invoke the application.
protected  void recordStateOfDrawingShapesForNextFile()
           
protected  Dimension reduceDimensionToFitInMaximumAvailable(Dimension useDimension)
           
protected  void showUIComponents()
           
protected  void updateDisplayedFileNumber(int current, int total)
           
 
Methods inherited from class javax.swing.JFrame
addImpl, createRootPane, frameInit, getAccessibleContext, getContentPane, getDefaultCloseOperation, getGlassPane, getGraphics, getJMenuBar, getLayeredPane, getRootPane, getTransferHandler, isDefaultLookAndFeelDecorated, isRootPaneCheckingEnabled, paramString, processWindowEvent, remove, repaint, setContentPane, setDefaultCloseOperation, setDefaultLookAndFeelDecorated, setGlassPane, setIconImage, setJMenuBar, setLayeredPane, setLayout, setRootPane, setRootPaneCheckingEnabled, setTransferHandler, update
 
Methods inherited from class java.awt.Frame
addNotify, getCursorType, getExtendedState, getFrames, getIconImage, getMaximizedBounds, getMenuBar, getState, getTitle, isResizable, isUndecorated, remove, removeNotify, setCursor, setExtendedState, setMaximizedBounds, setMenuBar, setResizable, setState, setTitle, setUndecorated
 
Methods inherited from class java.awt.Window
addPropertyChangeListener, addPropertyChangeListener, addWindowFocusListener, addWindowListener, addWindowStateListener, applyResourceBundle, applyResourceBundle, createBufferStrategy, createBufferStrategy, getBufferStrategy, getFocusableWindowState, getFocusCycleRootAncestor, getFocusOwner, getFocusTraversalKeys, getGraphicsConfiguration, getIconImages, getInputContext, getListeners, getLocale, getModalExclusionType, getMostRecentFocusOwner, getOwnedWindows, getOwner, getOwnerlessWindows, getToolkit, getWarningString, getWindowFocusListeners, getWindowListeners, getWindows, getWindowStateListeners, hide, isActive, isAlwaysOnTop, isAlwaysOnTopSupported, isFocusableWindow, isFocusCycleRoot, isFocused, isLocationByPlatform, isShowing, pack, postEvent, processEvent, processWindowFocusEvent, processWindowStateEvent, removeWindowFocusListener, removeWindowListener, removeWindowStateListener, reshape, setAlwaysOnTop, setBounds, setBounds, setCursor, setFocusableWindowState, setFocusCycleRoot, setIconImages, setLocationByPlatform, setLocationRelativeTo, setMinimumSize, setModalExclusionType, setSize, setSize, setVisible, show, toBack, toFront
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getAlignmentX, getAlignmentY, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalPolicy, getInsets, getLayout, getMaximumSize, getMinimumSize, getMousePosition, getPreferredSize, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paint, paintComponents, preferredSize, print, printComponents, processContainerEvent, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusTraversalKeys, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setFont, 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, contains, createImage, createImage, createVolatileImage, createVolatileImage, disable, disableEvents, dispatchEvent, enable, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBaseline, getBaselineResizeBehavior, getBounds, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getHeight, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocation, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getSize, getTreeLock, getWidth, getX, getY, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isDoubleBuffered, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isPreferredSizeSet, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, prepareImage, prepareImage, printAll, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processKeyEvent, processMouseEvent, processMouseMotionEvent, processMouseWheelEvent, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resize, resize, setBackground, setComponentOrientation, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeysEnabled, setForeground, setIgnoreRepaint, setLocale, setLocation, setLocation, setMaximumSize, setName, setPreferredSize, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface java.awt.MenuContainer
getFont, postEvent
 

Field Detail

ourAETitle

protected String ourAETitle

dicomFileNames

protected String[] dicomFileNames

currentFileName

protected String currentFileName

currentFileNumber

protected int currentFileNumber

mainPanel

protected Box mainPanel

multiPanel

protected JPanel multiPanel

imagePanel

protected SingleImagePanel imagePanel

list

protected AttributeList list

sImg

protected SourceImage sImg

changesWereMade

protected boolean changesWereMade

previousRows

protected int previousRows

previousColumns

protected int previousColumns

previousPersistentDrawingShapes

protected Vector previousPersistentDrawingShapes

cineSliderControlsPanel

protected JPanel cineSliderControlsPanel

cineSliderChangeListener

protected DicomImageBlackout.CineSliderChangeListener cineSliderChangeListener

cineSlider

protected JSlider cineSlider

imagesRemainingLabel

protected JLabel imagesRemainingLabel

ourEventContext

protected EventContext ourEventContext

burnInOverlays

protected boolean burnInOverlays

useZeroBlackoutValue

protected boolean useZeroBlackoutValue

usePixelPaddingBlackoutValue

protected boolean usePixelPaddingBlackoutValue

useZeroBlackoutValueCheckBox

protected JCheckBox useZeroBlackoutValueCheckBox

usePixelPaddingBlackoutValueCheckBox

protected JCheckBox usePixelPaddingBlackoutValueCheckBox

ourFrameSelectionChangeListener

protected com.pixelmed.display.DicomImageBlackout.OurFrameSelectionChangeListener ourFrameSelectionChangeListener

burnedinflag

protected int burnedinflag

statusNotificationHandler

protected DicomImageBlackout.StatusNotificationHandler statusNotificationHandler

applyActionListener

protected DicomImageBlackout.ApplyActionListener applyActionListener

saveActionListener

protected DicomImageBlackout.SaveActionListener saveActionListener

nextActionListener

protected DicomImageBlackout.NextActionListener nextActionListener

blackoutApplyButton

protected JButton blackoutApplyButton

blackoutSaveButton

protected JButton blackoutSaveButton

blackoutNextButton

protected JButton blackoutNextButton
Constructor Detail

DicomImageBlackout

public DicomImageBlackout(String title,
                          String[] dicomFileNames,
                          DicomImageBlackout.StatusNotificationHandler snh,
                          int burnedinflag)

Opens a window to display the supplied list of DICOM files to allow them to have burned in annotation blacked out.

Each file will be processed sequentially, with the edited pixel data overwriting the original file.

Parameters:
title - the string to use in the title bar of the window
dicomFileNames - the list of file names to process, if null a file chooser dialog will be raised
snh - an instance of StatusNotificationHandler; if null, a default handler will be used that writes to stderr
burnedinflag - whether or not and under what circumstances to to add/change BurnedInAnnotation attribute; takes one of the values of BurnedInAnnotationFlagAction
Throws:
DicomException
Method Detail

recordStateOfDrawingShapesForNextFile

protected void recordStateOfDrawingShapesForNextFile()

createCineSliderIfNecessary

protected void createCineSliderIfNecessary(int min,
                                           int max,
                                           int value)
Parameters:
min - minimum frame number, starting from 1
max - number of frames
value - frame number, starting from 1

updateDisplayedFileNumber

protected void updateDisplayedFileNumber(int current,
                                         int total)

loadDicomFileOrDirectory

protected void loadDicomFileOrDirectory(String dicomFileName)

Load the named DICOM file and display it in the image panel.

Parameters:
dicomFileName -

loadDicomFileOrDirectory

protected void loadDicomFileOrDirectory(File currentFile)

Load the named DICOM file and display it in the image panel.

Parameters:
currentFile -

getScaleFactorToFitInMaximumAvailable

protected double getScaleFactorToFitInMaximumAvailable(double useWidth,
                                                       double useHeight,
                                                       double maxWidth,
                                                       double maxHeight)

changeDimensionToFitInMaximumAvailable

protected Dimension changeDimensionToFitInMaximumAvailable(Dimension useDimension,
                                                           Dimension maxDimension,
                                                           boolean onlySmaller)

reduceDimensionToFitInMaximumAvailable

protected Dimension reduceDimensionToFitInMaximumAvailable(Dimension useDimension)

addSingleImagePanelToMultiPanelAndEstablishLayout

protected void addSingleImagePanelToMultiPanelAndEstablishLayout()

addSingleImagePanelToMultiPanelAndEstablishLayoutWithCenterMaximumAfterInitialSizeLayout

protected void addSingleImagePanelToMultiPanelAndEstablishLayoutWithCenterMaximumAfterInitialSizeLayout()

showUIComponents

protected void showUIComponents()

buildUIComponents

protected void buildUIComponents()

deconstruct

public void deconstruct()

dispose

public void dispose()
Overrides:
dispose in class Window

finalize

protected void finalize()
                 throws Throwable
Overrides:
finalize in class Object
Throws:
Throwable

main

public static void main(String[] arg)

The method to invoke the application.

Parameters:
arg - optionally, a list of files; if absent a file dialog is presented