Class JXTipOfTheDay
- All Implemented Interfaces:
ImageObserver, MenuContainer, Serializable, Accessible, Scrollable, AlphaPaintable, BackgroundPaintable
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
Componentis displayed in the dialog. - Icon
- The
Iconis wrapped in aJLabeland displayed in the dialog. - others
- The object is converted to a
Stringby calling itstoStringmethod. The result is wrapped in aJEditorPaneorJTextAreaand 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:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic interfaceUsed in conjunction with theshowDialog(Component, ShowOnStartupChoice)to save the "Show tips on startup" choice.Nested classes/interfaces inherited from class JPanel
JPanel.AccessibleJPanelNested classes/interfaces inherited from class JComponent
JComponent.AccessibleJComponentNested classes/interfaces inherited from class Container
Container.AccessibleAWTContainerNested classes/interfaces inherited from class Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final StringUsed when generating PropertyChangeEvents for the "currentTip" propertyprivate intprivate TipOfTheDayModelstatic final StringKey used to store the status of the "Show tip on startup" checkbox"static final StringJXTipOfTheDay pluggable UI key swingx/TipOfTheDayUIFields inherited from class JXPanel
fakeTransparentFields inherited from class JComponent
listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOWFields inherited from class Component
accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENTFields inherited from interface ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH -
Constructor Summary
ConstructorsConstructorDescriptionConstructs a newJXTipOfTheDaywith an empty TipOfTheDayModelJXTipOfTheDay(TipOfTheDayModel model) Constructs a newJXTipOfTheDayshowing tips from the given TipOfTheDayModel. -
Method Summary
Modifier and TypeMethodDescriptionprotected JDialogcreateDialog(Component parentComponent, JXTipOfTheDay.ShowOnStartupChoice choice) static voidforceShowOnStartup(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.intgetModel()getUI()Gets the UI object which implements the Linvalid input: '&F' for this component.Returns the name of the Linvalid input: '&F' class that renders this component.static booleanisShowingOnStartup(Preferences showOnStartupPref) voidnextTip()Shows the next tip in the list.voidShows the previous tip in the list.voidsetCurrentTip(int currentTip) Sets the index of the tip to showvoidsetModel(TipOfTheDayModel model) voidsetUI(TipOfTheDayUI ui) Sets the Linvalid input: '&F' object that renders this component.voidshowDialog(Component parentComponent) Pops up a "Tip of the day" dialog.booleanshowDialog(Component parentComponent, Preferences showOnStartupPref) Pops up a "Tip of the day" dialog.booleanshowDialog(Component parentComponent, Preferences showOnStartupPref, boolean force) Pops up a "Tip of the day" dialog.booleanshowDialog(Component parentComponent, JXTipOfTheDay.ShowOnStartupChoice choice) Pops up a "Tip of the day" dialog.booleanshowDialog(Component parentComponent, JXTipOfTheDay.ShowOnStartupChoice choice, boolean force) Pops up a "Tip of the day" dialog.voidupdateUI()Notification from theUIManagerthat the Linvalid input: '&F' has changed.Methods inherited from class JXPanel
getAlpha, getBackgroundPainter, getEffectiveAlpha, getPainterChangeListener, getPreferredScrollableViewportSize, getScrollableBlockIncrement, getScrollableHeightHint, getScrollableTracksViewportHeight, getScrollableTracksViewportWidth, getScrollableUnitIncrement, getScrollableWidthHint, installRepaintManager, isAlpha, isInheritAlpha, isOpaque, isOpaquePatch, isPaintBorderInsets, isPaintingBackground, isPaintingOrigin, isPatch, isTransparentBackground, paint, paintComponent, paintComponentPatch, setAlpha, setBackgroundPainter, setInheritAlpha, setOpaque, setOpaquePatch, setPaintBorderInsets, setScrollableHeightHint, setScrollableTracksViewportHeight, setScrollableTracksViewportWidth, setScrollableWidthHint, uninstallRepaintManagerMethods inherited from class JPanel
getAccessibleContext, paramString, setUIMethods inherited from class 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, updateMethods inherited from class 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, validateTreeMethods inherited from class 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
-
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:
-
model
-
currentTip
private int currentTip
-
-
Constructor Details
-
JXTipOfTheDay
public JXTipOfTheDay()Constructs a newJXTipOfTheDaywith an empty TipOfTheDayModel -
JXTipOfTheDay
Constructs a newJXTipOfTheDayshowing tips from the given TipOfTheDayModel.- Parameters:
model-
-
-
Method Details
-
updateUI
-
setUI
Sets the Linvalid input: '&F' object that renders this component.- Parameters:
ui- theTipOfTheDayUILinvalid input: '&F' object- See Also:
-
getUI
Gets the UI object which implements the Linvalid input: '&F' for this component. -
getUIClassID
Returns the name of the Linvalid input: '&F' class that renders this component.- Overrides:
getUIClassIDin 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. Ifchoiceis 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.ShowOnStartupChoiceobject.- 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. Ifchoiceis not null, the method first checks ifforceis 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.ShowOnStartupChoiceobject.- 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
-