Class JXTipOfTheDay
- All Implemented Interfaces:
ImageObserver
,MenuContainer
,Serializable
,Accessible
,Scrollable
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 aJLabel
and displayed in the dialog. - others
- The object is converted to a
String
by calling itstoString
method. The result is wrapped in aJEditorPane
orJTextArea
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.-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic interface
Used in conjunction with theshowDialog(Component, ShowOnStartupChoice)
to save the "Show tips on startup" choice.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.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final String
Used when generating PropertyChangeEvents for the "currentTip" propertystatic final String
Key used to store the status of the "Show tip on startup" checkbox"static final String
JXTipOfTheDay pluggable UI key swingx/TipOfTheDayUIFields inherited from class javax.swing.JComponent
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
accessibleContext, 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
ConstructorsConstructorDescriptionConstructs a newJXTipOfTheDay
with an empty TipOfTheDayModelJXTipOfTheDay
(TipOfTheDayModel model) Constructs a newJXTipOfTheDay
showing tips from the given TipOfTheDayModel. -
Method Summary
Modifier and TypeMethodDescriptionprotected JDialog
createDialog
(Component parentComponent, JXTipOfTheDay.ShowOnStartupChoice choice) static void
forceShowOnStartup
(Preferences showOnStartupPref) Removes the value set for "ShowTipOnStartup" in the given Preferences to ensure the dialog shown by a later call toshowDialog(Component, Preferences)
will be visible to the user.int
getModel()
getUI()
Gets the UI object which implements the LaF for this component.Returns the name of the LaF class that renders this component.static boolean
isShowingOnStartup
(Preferences showOnStartupPref) void
nextTip()
Shows the next tip in the list.void
Shows the previous tip in the list.void
setCurrentTip
(int currentTip) Sets the index of the tip to showvoid
setModel
(TipOfTheDayModel model) void
setUI
(TipOfTheDayUI ui) Sets the LaF object that renders this component.void
showDialog
(Component parentComponent) Pops up a "Tip of the day" dialog.boolean
showDialog
(Component parentComponent, Preferences showOnStartupPref) Pops up a "Tip of the day" dialog.boolean
showDialog
(Component parentComponent, Preferences showOnStartupPref, boolean force) Pops up a "Tip of the day" dialog.boolean
showDialog
(Component parentComponent, JXTipOfTheDay.ShowOnStartupChoice choice) Pops up a "Tip of the day" dialog.boolean
showDialog
(Component parentComponent, JXTipOfTheDay.ShowOnStartupChoice choice, boolean force) Pops up a "Tip of the day" dialog.void
updateUI()
Notification from theUIManager
that the LaF has changed.Methods inherited from class org.jdesktop.swingx.JXPanel
getAlpha, getBackgroundPainter, getEffectiveAlpha, getPainterChangeListener, getPreferredScrollableViewportSize, getScrollableBlockIncrement, getScrollableHeightHint, getScrollableTracksViewportHeight, getScrollableTracksViewportWidth, getScrollableUnitIncrement, getScrollableWidthHint, isAlpha, isInheritAlpha, isOpaque, isOpaquePatch, isPaintBorderInsets, isPaintingBackground, isPaintingOrigin, isPatch, isTransparentBackground, paint, paintComponent, paintComponentPatch, setAlpha, setBackgroundPainter, setInheritAlpha, setOpaque, setOpaquePatch, setPaintBorderInsets, setScrollableHeightHint, setScrollableTracksViewportHeight, setScrollableTracksViewportWidth, setScrollableWidthHint
Methods inherited from class javax.swing.JPanel
getAccessibleContext, paramString, setUI
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, getBaseline, getBaselineResizeBehavior, 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, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOptimizedDrawingEnabled, isPaintingForPrint, 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, 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, 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, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, 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, requestFocus, requestFocus, requestFocusInWindow, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
-
Field Details
-
uiClassID
JXTipOfTheDay pluggable UI key swingx/TipOfTheDayUI- See Also:
-
PREFERENCE_KEY
Key used to store the status of the "Show tip on startup" checkbox"- See Also:
-
CURRENT_TIP_CHANGED_KEY
Used when generating PropertyChangeEvents for the "currentTip" property- See Also:
-
-
Constructor Details
-
JXTipOfTheDay
public JXTipOfTheDay()Constructs a newJXTipOfTheDay
with an empty TipOfTheDayModel -
JXTipOfTheDay
Constructs a newJXTipOfTheDay
showing tips from the given TipOfTheDayModel.- Parameters:
model
-
-
-
Method Details
-
updateUI
public void updateUI()Notification from theUIManager
that the LaF has changed. Replaces the current UI object with the latest version from theUIManager
. -
setUI
Sets the LaF object that renders this component.- Parameters:
ui
- theTipOfTheDayUI
LaF object- See Also:
-
getUI
Gets the UI object which implements the LaF for this component. -
getUIClassID
Returns the name of the LaF class that renders this component.- Overrides:
getUIClassID
in classJPanel
- Returns:
- the string
uiClassID
- See Also:
-
getModel
-
setModel
-
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
Pops up a "Tip of the day" dialog.- Parameters:
parentComponent
-- Throws:
HeadlessException
- if GraphicsEnvironment.isHeadless() returns true.- See Also:
-
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:
-
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:
-
showDialog
Pops up a "Tip of the day" dialog. Ifchoice
is not null, the method first checks ifJXTipOfTheDay.ShowOnStartupChoice.isShowingOnStartup()
is true before showing the dialog. Additionally, it saves the state of the "Show tips on startup" checkbox using the givenJXTipOfTheDay.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:
-
showDialog
public boolean showDialog(Component parentComponent, JXTipOfTheDay.ShowOnStartupChoice choice, boolean force) Pops up a "Tip of the day" dialog. Ifchoice
is not null, the method first checks ifforce
is true or ifJXTipOfTheDay.ShowOnStartupChoice.isShowingOnStartup()
is true before showing the dialog. Additionally, it saves the state of the "Show tips on startup" checkbox using the givenJXTipOfTheDay.ShowOnStartupChoice
object.- Parameters:
parentComponent
-choice
-force
- if true, the dialog is displayed even ifJXTipOfTheDay.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:
-
isShowingOnStartup
- Parameters:
showOnStartupPref
-- Returns:
- true if the key named "ShowTipOnStartup" is not set to false
-
forceShowOnStartup
Removes the value set for "ShowTipOnStartup" in the given Preferences to ensure the dialog shown by a later call toshowDialog(Component, Preferences)
will be visible to the user.- Parameters:
showOnStartupPref
-
-
createDialog
CallsTipOfTheDayUI.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
-