@JavaBean public class JXTipOfTheDay extends JXPanel
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 is displayed in the dialog.
Icon is wrapped in a JLabel and
displayed in the dialog.
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.| Modifier and Type | Class and Description |
|---|---|
static interface |
JXTipOfTheDay.ShowOnStartupChoice
Used in conjunction with the
showDialog(Component, ShowOnStartupChoice) to save the
"Show tips on startup" choice. |
JPanel.AccessibleJPanelJComponent.AccessibleJComponentContainer.AccessibleAWTContainerComponent.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy| Modifier and Type | Field and Description |
|---|---|
static String |
CURRENT_TIP_CHANGED_KEY
Used when generating PropertyChangeEvents for the "currentTip" property
|
static String |
PREFERENCE_KEY
Key used to store the status of the "Show tip on startup" checkbox"
|
static String |
uiClassID
JXTipOfTheDay pluggable UI key swingx/TipOfTheDayUI
|
listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOWaccessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENTABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH| Constructor and Description |
|---|
JXTipOfTheDay()
Constructs a new
JXTipOfTheDay with an empty
TipOfTheDayModel |
JXTipOfTheDay(TipOfTheDayModel model)
Constructs a new
JXTipOfTheDay showing tips from the given
TipOfTheDayModel. |
| Modifier and Type | Method and Description |
|---|---|
protected 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 to
showDialog(Component, Preferences) will be visible to the user. |
int |
getCurrentTip() |
TipOfTheDayModel |
getModel() |
TipOfTheDayUI |
getUI()
Gets the UI object which implements the L&F for this component.
|
String |
getUIClassID()
Returns the name of the L&F class that renders this component.
|
static boolean |
isShowingOnStartup(Preferences showOnStartupPref) |
void |
nextTip()
Shows the next tip in the list.
|
void |
previousTip()
Shows the previous tip in the list.
|
void |
setCurrentTip(int currentTip)
Sets the index of the tip to show
|
void |
setModel(TipOfTheDayModel model) |
void |
setUI(TipOfTheDayUI ui)
Sets the L&F object that renders this component.
|
void |
showDialog(Component parentComponent)
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.
|
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.
|
void |
updateUI()
Notification from the
UIManager that the L&F has changed. |
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, setScrollableWidthHintgetAccessibleContext, paramString, setUIaddAncestorListener, 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, updateadd, 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, validateTreeaction, 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, 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, transferFocusBackward, transferFocusUpCyclepublic static final String uiClassID
public static final String PREFERENCE_KEY
public static final String CURRENT_TIP_CHANGED_KEY
public JXTipOfTheDay()
JXTipOfTheDay with an empty
TipOfTheDayModelpublic JXTipOfTheDay(TipOfTheDayModel model)
JXTipOfTheDay showing tips from the given
TipOfTheDayModel.model - public void updateUI()
UIManager that the L&F has changed.
Replaces the current UI object with the latest version from the
UIManager.updateUI in class JPanelJComponent.updateUI()public void setUI(TipOfTheDayUI ui)
ui - the TipOfTheDayUI L&F objectUIDefaults.getUI(javax.swing.JComponent)public TipOfTheDayUI getUI()
public String getUIClassID()
getUIClassID in class JPaneluiClassIDJComponent.getUIClassID(),
UIDefaults.getUI(javax.swing.JComponent)public TipOfTheDayModel getModel()
public void setModel(TipOfTheDayModel model)
public int getCurrentTip()
public void setCurrentTip(int currentTip)
currentTip - IllegalArgumentException - if currentTip is not within the bounds [0,
getModel().getTipCount()[.public void nextTip()
public void previousTip()
public void showDialog(Component parentComponent) throws HeadlessException
parentComponent - HeadlessException - if GraphicsEnvironment.isHeadless() returns true.GraphicsEnvironment.isHeadless()public boolean showDialog(Component parentComponent, Preferences showOnStartupPref) throws HeadlessException
parentComponent - showOnStartupPref - HeadlessException - if GraphicsEnvironment.isHeadless() returns true.IllegalArgumentException - if showOnStartupPref is nullGraphicsEnvironment.isHeadless()public boolean showDialog(Component parentComponent, Preferences showOnStartupPref, boolean force) throws HeadlessException
parentComponent - showOnStartupPref - force - if true, the dialog is displayed even if the Preferences is set to
hide the dialogHeadlessException - if GraphicsEnvironment.isHeadless() returns true.IllegalArgumentException - if showOnStartupPref is nullGraphicsEnvironment.isHeadless()public boolean showDialog(Component parentComponent, JXTipOfTheDay.ShowOnStartupChoice choice)
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.parentComponent - choice - HeadlessException - if GraphicsEnvironment.isHeadless() returns true.GraphicsEnvironment.isHeadless()public boolean showDialog(Component parentComponent, JXTipOfTheDay.ShowOnStartupChoice choice, boolean force)
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.parentComponent - choice - force - if true, the dialog is displayed even if
JXTipOfTheDay.ShowOnStartupChoice.isShowingOnStartup() is falseHeadlessException - if GraphicsEnvironment.isHeadless() returns true.GraphicsEnvironment.isHeadless()public static boolean isShowingOnStartup(Preferences showOnStartupPref)
showOnStartupPref - public static void forceShowOnStartup(Preferences showOnStartupPref)
showDialog(Component, Preferences) will be visible to the user.showOnStartupPref - protected JDialog createDialog(Component parentComponent, JXTipOfTheDay.ShowOnStartupChoice choice)
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.parentComponent - choice - Copyright © 2017. All Rights Reserved.