org.jdesktop.swingx
Class JXTipOfTheDay
java.lang.Object
java.awt.Component
java.awt.Container
javax.swing.JComponent
javax.swing.JPanel
org.jdesktop.swingx.JXPanel
org.jdesktop.swingx.JXTipOfTheDay
- All Implemented Interfaces:
- ImageObserver, MenuContainer, Serializable, Accessible, Scrollable
public class JXTipOfTheDay
- extends JXPanel
Provides the "Tip of The Day" pane and dialog.
Tips are retrieved from the TipOfTheDayModel
.
In the most common usage, a tip (as returned by
TipOfTheDayModel.Tip.getTip()
) is just a
String
. However, the return type of this method is actually
Object
. Its interpretation depends on its type:
- Component
- The
Component
is displayed in the dialog.
- Icon
- The
Icon
is wrapped in a JLabel
and
displayed in the dialog.
- others
- The object is converted to a
String
by calling its
toString
method. The result is wrapped in a
JEditorPane
or JTextArea
and displayed.
JXTipOfTheDay finds its tips in its TipOfTheDayModel
.
Such model can be programmatically built using DefaultTipOfTheDayModel
and DefaultTip
but
the TipLoader
provides a convenient method to
build a model and its tips from a Properties
object.
Example:
Let's consider a file tips.properties with the following content:
tip.1.description=This is the first time! Plain text.
tip.2.description=<html>This is <b>another tip</b>, it uses HTML!
tip.3.description=A third one
To load and display the tips:
Properties tips = new Properties();
tips.load(new FileInputStream("tips.properties"));
TipOfTheDayModel model = TipLoader.load(tips);
JXTipOfTheDay totd = new JXTipOfTheDay(model);
totd.showDialog(someParentComponent);
Additionally, JXTipOfTheDay
features an option enabling the end-user
to choose to not display the "Tip Of The Day" dialog. This user choice can be stored
in the user Preferences
but JXTipOfTheDay
also
supports custom storage through the JXTipOfTheDay.ShowOnStartupChoice
interface.
Preferences userPreferences = Preferences.userRoot().node("myApp");
totd.showDialog(someParentComponent, userPreferences);
In this code, the first time showDialog is called, the dialog will be made
visible and the user will have the choice to not display it again in the future
(usually this is controlled by a checkbox "Show tips on startup"). If the user
unchecks the option, subsequent calls to showDialog will not display the dialog.
As the choice is saved in the user Preferences, it will persist when the application is relaunched.
- See Also:
TipLoader
,
TipOfTheDayModel
,
TipOfTheDayModel.Tip
,
showDialog(Component, Preferences)
,
showDialog(Component, ShowOnStartupChoice)
,
Serialized Form
Constructor Summary |
JXTipOfTheDay()
Constructs a new JXTipOfTheDay with an empty
TipOfTheDayModel |
JXTipOfTheDay(TipOfTheDayModel model)
Constructs a new JXTipOfTheDay showing tips from the given
TipOfTheDayModel. |
Methods inherited from class org.jdesktop.swingx.JXPanel |
getAlpha, getBackgroundPainter, getEffectiveAlpha, getPreferredScrollableViewportSize, getScrollableBlockIncrement, getScrollableTracksViewportHeight, getScrollableTracksViewportWidth, getScrollableUnitIncrement, isInheritAlpha, isPaintBorderInsets, paint, paintComponent, setAlpha, setBackgroundPainter, setInheritAlpha, setPaintBorderInsets, setScrollableTracksViewportHeight, setScrollableTracksViewportWidth |
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, paintBorder, paintChildren, 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 |
uiClassID
public static final String uiClassID
- JXTipOfTheDay pluggable UI key swingx/TipOfTheDayUI
- See Also:
- Constant Field Values
PREFERENCE_KEY
public static final String PREFERENCE_KEY
- Key used to store the status of the "Show tip on startup" checkbox"
- See Also:
- Constant Field Values
CURRENT_TIP_CHANGED_KEY
public static final String CURRENT_TIP_CHANGED_KEY
- Used when generating PropertyChangeEvents for the "currentTip" property
- See Also:
- Constant Field Values
JXTipOfTheDay
public JXTipOfTheDay()
- Constructs a new
JXTipOfTheDay
with an empty
TipOfTheDayModel
JXTipOfTheDay
public JXTipOfTheDay(TipOfTheDayModel model)
- Constructs a new
JXTipOfTheDay
showing tips from the given
TipOfTheDayModel.
- Parameters:
model
-
updateUI
public void updateUI()
- Notification from the
UIManager
that the L&F has changed.
Replaces the current UI object with the latest version from the
UIManager
.
- Overrides:
updateUI
in class JPanel
- See Also:
JComponent.updateUI()
setUI
public void setUI(TipOfTheDayUI ui)
- Sets the L&F object that renders this component.
- Parameters:
ui
- the TipOfTheDayUI
L&F object- See Also:
UIDefaults.getUI(javax.swing.JComponent)
getUI
public TipOfTheDayUI getUI()
- Gets the UI object which implements the L&F for this component.
- Overrides:
getUI
in class JPanel
- Returns:
- the TipOfTheDayUI object that implements the TipOfTheDayUI L&F
getUIClassID
public String getUIClassID()
- Returns the name of the L&F class that renders this component.
- Overrides:
getUIClassID
in class JPanel
- Returns:
- the string
uiClassID
- See Also:
JComponent.getUIClassID()
,
UIDefaults.getUI(javax.swing.JComponent)
getModel
public TipOfTheDayModel getModel()
setModel
public void setModel(TipOfTheDayModel model)
getCurrentTip
public int getCurrentTip()
setCurrentTip
public void setCurrentTip(int currentTip)
- Sets the index of the tip to show
- Parameters:
currentTip
-
- Throws:
IllegalArgumentException
- if currentTip is not within the bounds [0,
getModel().getTipCount()[.
nextTip
public void nextTip()
- Shows the next tip in the list. It cycles the tip list.
previousTip
public void previousTip()
- Shows the previous tip in the list. It cycles the tip list.
showDialog
public void showDialog(Component parentComponent)
throws HeadlessException
- Pops up a "Tip of the day" dialog.
- Parameters:
parentComponent
-
- Throws:
HeadlessException
- if GraphicsEnvironment.isHeadless() returns true.- See Also:
GraphicsEnvironment.isHeadless()
showDialog
public boolean showDialog(Component parentComponent,
Preferences showOnStartupPref)
throws HeadlessException
- Pops up a "Tip of the day" dialog. Additionally, it saves the state of the
"Show tips on startup" checkbox in a key named "ShowTipOnStartup" in the
given Preferences.
- Parameters:
parentComponent
- showOnStartupPref
-
- Returns:
- true if the user chooses to see the tips again, false otherwise.
- Throws:
HeadlessException
- if GraphicsEnvironment.isHeadless() returns true.
IllegalArgumentException
- if showOnStartupPref is null- See Also:
GraphicsEnvironment.isHeadless()
showDialog
public boolean showDialog(Component parentComponent,
Preferences showOnStartupPref,
boolean force)
throws HeadlessException
- Pops up a "Tip of the day" dialog. Additionally, it saves the state of the
"Show tips on startup" checkbox in a key named "ShowTipOnStartup" in the
given Preferences.
- Parameters:
parentComponent
- showOnStartupPref
- force
- if true, the dialog is displayed even if the Preferences is set to
hide the dialog
- Returns:
- true if the user chooses to see the tips again, false
otherwise.
- Throws:
HeadlessException
- if GraphicsEnvironment.isHeadless() returns true.
IllegalArgumentException
- if showOnStartupPref is null- See Also:
GraphicsEnvironment.isHeadless()
showDialog
public boolean showDialog(Component parentComponent,
JXTipOfTheDay.ShowOnStartupChoice choice)
- Pops up a "Tip of the day" dialog.
If
choice
is not null, the method first checks if
JXTipOfTheDay.ShowOnStartupChoice.isShowingOnStartup()
is true before showing the
dialog.
Additionally, it saves the state of the "Show tips on startup" checkbox
using the given JXTipOfTheDay.ShowOnStartupChoice
object.
- Parameters:
parentComponent
- choice
-
- Returns:
- true if the user chooses to see the tips again, false otherwise.
- Throws:
HeadlessException
- if GraphicsEnvironment.isHeadless() returns true.- See Also:
GraphicsEnvironment.isHeadless()
showDialog
public boolean showDialog(Component parentComponent,
JXTipOfTheDay.ShowOnStartupChoice choice,
boolean force)
- Pops up a "Tip of the day" dialog.
If
choice
is not null, the method first checks if
force
is true or if
JXTipOfTheDay.ShowOnStartupChoice.isShowingOnStartup()
is true before showing the
dialog.
Additionally, it saves the state of the "Show tips on startup" checkbox
using the given JXTipOfTheDay.ShowOnStartupChoice
object.
- Parameters:
parentComponent
- choice
- force
- if true, the dialog is displayed even if
JXTipOfTheDay.ShowOnStartupChoice.isShowingOnStartup()
is false
- Returns:
- true if the user chooses to see the tips again, false otherwise.
- Throws:
HeadlessException
- if GraphicsEnvironment.isHeadless() returns true.- See Also:
GraphicsEnvironment.isHeadless()
isShowingOnStartup
public static boolean isShowingOnStartup(Preferences showOnStartupPref)
- Parameters:
showOnStartupPref
-
- Returns:
- true if the key named "ShowTipOnStartup" is not set to false
forceShowOnStartup
public static void forceShowOnStartup(Preferences showOnStartupPref)
- Removes the value set for "ShowTipOnStartup" in the given Preferences to
ensure the dialog shown by a later call to
showDialog(Component, Preferences)
will be visible to the user.
- Parameters:
showOnStartupPref
-
createDialog
protected JDialog createDialog(Component parentComponent,
JXTipOfTheDay.ShowOnStartupChoice choice)
- Calls
TipOfTheDayUI.createDialog(Component, JXTipOfTheDay.ShowOnStartupChoice)
.
This method can be overriden in order to control things such as the
placement of the dialog or its title.
- Parameters:
parentComponent
- choice
-
- Returns:
- a JDialog to show this TipOfTheDay pane