Package com.pixelmed.display

# Class DicomImageBlackout

java.lang.Object
java.awt.Component
java.awt.Container
java.awt.Window
java.awt.Frame
javax.swing.JFrame
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

Nested Classes
Modifier and Type
Class
Description
`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.PreviousActionListener`
`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, Window.Type`

## 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

Fields
Modifier and Type
Field
Description
`protected DicomImageBlackout.ApplyActionListener`
`applyActionListener`
`protected JButton`
`blackoutApplyButton`
`protected JButton`
`blackoutNextButton`
`protected JButton`
`blackoutPreviousButton`
`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 boolean`
`deferredDecompression`
`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 DicomImageBlackout.PreviousActionListener`
`previousActionListener`
`protected int`
`previousColumns`
`protected Vector`
`previousPersistentDrawingShapes`
`protected int`
`previousRows`
`protected File`
`redactedJPEGFile`
`protected ResourceBundle`
`resourceBundle`
`protected static String`
`resourceBundleName`
`protected DicomImageBlackout.SaveActionListener`
`saveActionListener`
`protected SourceImage`
`sImg`
`protected DicomImageBlackout.StatusNotificationHandler`
`statusNotificationHandler`
`protected boolean`
`usedjpegblockredaction`
`protected boolean`
`usePixelPaddingBlackoutValue`
`protected JCheckBox`
`usePixelPaddingBlackoutValueCheckBox`
`protected boolean`
`useZeroBlackoutValue`
`protected JCheckBox`
`useZeroBlackoutValueCheckBox`

### Fields inherited from class javax.swing.JFrame

`accessibleContext, rootPane, rootPaneCheckingEnabled`

### Fields inherited from class java.awt.Frame

`ICONIFIED, MAXIMIZED_BOTH, MAXIMIZED_HORIZ, MAXIMIZED_VERT, NORMAL`

### 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`

### Fields inherited from interface javax.swing.WindowConstants

`DISPOSE_ON_CLOSE, DO_NOTHING_ON_CLOSE, EXIT_ON_CLOSE, HIDE_ON_CLOSE`

## Constructor Summary

Constructors
Constructor
Description
`DicomImageBlackout(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.
`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

Modifier and Type
Method
Description
`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`
`recordStateOfDrawingShapesForFileChange()`
`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, getExtendedState, getFrames, getIconImage, getMaximizedBounds, getMenuBar, getState, getTitle, isResizable, isUndecorated, remove, removeNotify, setBackground, setExtendedState, setMaximizedBounds, setMenuBar, setOpacity, setResizable, setShape, setState, setTitle, setUndecorated`

### Methods inherited from class java.awt.Window

`addPropertyChangeListener, addPropertyChangeListener, addWindowFocusListener, addWindowListener, addWindowStateListener, createBufferStrategy, createBufferStrategy, getBackground, getBufferStrategy, getFocusableWindowState, getFocusCycleRootAncestor, getFocusOwner, getFocusTraversalKeys, getIconImages, getInputContext, getListeners, getLocale, getModalExclusionType, getMostRecentFocusOwner, getOpacity, getOwnedWindows, getOwner, getOwnerlessWindows, getShape, getToolkit, getType, getWarningString, getWindowFocusListeners, getWindowListeners, getWindows, getWindowStateListeners, isActive, isAlwaysOnTop, isAlwaysOnTopSupported, isAutoRequestFocus, isFocusableWindow, isFocusCycleRoot, isFocused, isLocationByPlatform, isOpaque, isShowing, isValidateRoot, pack, paint, processEvent, processWindowFocusEvent, processWindowStateEvent, removeWindowFocusListener, removeWindowListener, removeWindowStateListener, setAlwaysOnTop, setAutoRequestFocus, setBounds, setBounds, setCursor, setFocusableWindowState, setFocusCycleRoot, setIconImages, setLocation, setLocation, setLocationByPlatform, setLocationRelativeTo, setMinimumSize, setModalExclusionType, setSize, setSize, setType, setVisible, toBack, toFront`

### Methods inherited from class java.awt.Container

`add, add, add, add, add, addContainerListener, applyComponentOrientation, areFocusTraversalKeysSet, doLayout, findComponentAt, findComponentAt, getAlignmentX, getAlignmentY, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalPolicy, getInsets, getLayout, getMaximumSize, getMinimumSize, getMousePosition, getPreferredSize, invalidate, isAncestorOf, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, list, list, paintComponents, print, printComponents, processContainerEvent, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusTraversalKeys, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setFont, transferFocusDownCycle, validate, validateTree`

### Methods inherited from class java.awt.Component

`add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, checkImage, checkImage, coalesceEvents, contains, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBaseline, getBaselineResizeBehavior, getBounds, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphicsConfiguration, getHeight, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocation, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getSize, getTreeLock, getWidth, getX, getY, hasFocus, imageUpdate, isBackgroundSet, isCursorSet, isDisplayable, isDoubleBuffered, isEnabled, isFocusable, isFocusOwner, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isValid, isVisible, list, list, list, 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, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, requestFocusInWindow, revalidate, setComponentOrientation, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeysEnabled, setForeground, setIgnoreRepaint, setLocale, setMaximumSize, setMixingCutoutShape, setName, setPreferredSize, 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`

## Field Details

### resourceBundleName

protected static String resourceBundleName

### resourceBundle

protected ResourceBundle resourceBundle

### 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

### usedjpegblockredaction

protected boolean usedjpegblockredaction

### deferredDecompression

protected boolean deferredDecompression

### redactedJPEGFile

protected File redactedJPEGFile

### 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

### previousActionListener

protected DicomImageBlackout.PreviousActionListener previousActionListener

### blackoutApplyButton

protected JButton blackoutApplyButton

### blackoutSaveButton

protected JButton blackoutSaveButton

### blackoutNextButton

protected JButton blackoutNextButton

### blackoutPreviousButton

protected JButton blackoutPreviousButton

## Constructor Details

### DicomImageBlackout

public DicomImageBlackout(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:
  `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`

### 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 or null if use default for locale
  `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`

## Method Details

### recordStateOfDrawingShapesForFileChange

protected void recordStateOfDrawingShapesForFileChange()

### 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

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