bibliothek.extension.gui.dock.preference
Class AbstractPreferenceDialog<M extends PreferenceModel>

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by javax.swing.JPanel
                  extended by bibliothek.extension.gui.dock.preference.AbstractPreferenceDialog<M>
Type Parameters:
M - What kind of model this dialog can show
All Implemented Interfaces:
ImageObserver, MenuContainer, Serializable, Accessible
Direct Known Subclasses:
PreferenceDialog, PreferenceTreeDialog

public abstract class AbstractPreferenceDialog<M extends PreferenceModel>
extends JPanel

An abstract dialog used to show the content of some PreferenceModel. The exact graphical user interface for the model depends on the subclass.
Note: clients using this panel have to call destroy(). The only time destroy() has not to be called is if the dialog was shown using openDialog(Component, boolean) and destroyOnClose was set to true.

Author:
Benjamin Sigg
See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class javax.swing.JPanel
JPanel.AccessibleJPanel
 
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
 
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
  AbstractPreferenceDialog(boolean destroyOnClose)
          Creates a new dialog.
protected AbstractPreferenceDialog(boolean init, M model, boolean destroyOnClose)
          A constructor which does not initialize this dialog.
  AbstractPreferenceDialog(M model, boolean destroyOnClose)
          Creates a new dialog using the given model.
 
Method Summary
 void close()
          Makes the dialog invisible.
 void destroy()
          Allows this dialog to free any resources that it used.
 void doApply()
          Applies all changes but does not close the dialog.
 void doCancel()
          Closes the dialog without saving and changes
 void doOk()
          Applies all changes and closes the dialog.
 void doReset()
          Resets all preferences to the value they had when the dialog opened
protected abstract  JComponent getContent()
          Gets the component which will show the model of this dialog.
 M getModel()
          Gets the model which is shown on this dialog.
protected  void init(M model, boolean destroyOnClose)
          Creates the contents of this dialog.
 boolean isDestroyOnClose()
          Tells whether destroy() is called automatically or not.
 void openDialog(Component owner, boolean modal)
          Opens the dialog (if not yet open) and lets the user make the changes of the preferences.
 void setDestroyOnClose(boolean destroyOnClose)
          If set to true then destroy() is automatically called if this dialog is closed
 void setModel(M model)
          Sets the model of this dialog.
protected abstract  void setModelForContent(M model)
          Informs subclasses that the model has changed and that they might setup the content again.
 
Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUI
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, 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, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, 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
 
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
 

Constructor Detail

AbstractPreferenceDialog

public AbstractPreferenceDialog(boolean destroyOnClose)
Creates a new dialog.

Parameters:
destroyOnClose - if set to true, then destroy() is automatically called if close() is called. Clients have to call destroy() manually if they are not using openDialog(Component, boolean).

AbstractPreferenceDialog

public AbstractPreferenceDialog(M model,
                                boolean destroyOnClose)
Creates a new dialog using the given model.

Parameters:
model - the model to use
destroyOnClose - if set to true, then destroy() is automatically called if close() is called. Clients have to call destroy() manually if they are not using openDialog(Component, boolean).

AbstractPreferenceDialog

protected AbstractPreferenceDialog(boolean init,
                                   M model,
                                   boolean destroyOnClose)
A constructor which does not initialize this dialog. Subclasses must call init(PreferenceModel, boolean) to finish constructing this dialog.

Parameters:
init - whether to call init(PreferenceModel, boolean).
model - the model to use, can be null
destroyOnClose - if set to true, then destroy() is automatically called if close() is called. Clients have to call destroy() manually if they are not using openDialog(Component, boolean).
Method Detail

init

protected void init(M model,
                    boolean destroyOnClose)
Creates the contents of this dialog.

Parameters:
model - the model to use, can be null
destroyOnClose - if set to true, then destroy() is automatically called if close() is called. Clients have to call destroy() manually if they are not using openDialog(Component, boolean).

getContent

protected abstract JComponent getContent()
Gets the component which will show the model of this dialog.

Returns:
the component

setModelForContent

protected abstract void setModelForContent(M model)
Informs subclasses that the model has changed and that they might setup the content again.

Parameters:
model - the new model, can be null

setModel

public void setModel(M model)
Sets the model of this dialog.

Parameters:
model - the new model

getModel

public M getModel()
Gets the model which is shown on this dialog.

Returns:
the model

openDialog

public void openDialog(Component owner,
                       boolean modal)
Opens the dialog (if not yet open) and lets the user make the changes of the preferences. This method will call PreferenceModel.read() and PreferenceModel.write() to reset or to apply the changes of the user.

Parameters:
owner - the owner of the dialog
modal - whether the dialog should be modal

doOk

public void doOk()
Applies all changes and closes the dialog.


doApply

public void doApply()
Applies all changes but does not close the dialog.


doCancel

public void doCancel()
Closes the dialog without saving and changes


doReset

public void doReset()
Resets all preferences to the value they had when the dialog opened


close

public void close()
Makes the dialog invisible.


destroy

public void destroy()
Allows this dialog to free any resources that it used. Should be called once this dialog is no longer used, otherwise memory leaks can appear.


isDestroyOnClose

public boolean isDestroyOnClose()
Tells whether destroy() is called automatically or not.

Returns:
whether to free resources
See Also:
setDestroyOnClose(boolean)

setDestroyOnClose

public void setDestroyOnClose(boolean destroyOnClose)
If set to true then destroy() is automatically called if this dialog is closed

Parameters:
destroyOnClose - whether to free resources