Class PicturePanel
java.lang.Object
java.awt.Component
java.awt.Container
javax.swing.JComponent
javax.swing.JPanel
org.htmlparser.lexerapplications.thumbelina.PicturePanel
- All Implemented Interfaces:
ComponentListener,HierarchyListener,MouseListener,ImageObserver,MenuContainer,Serializable,EventListener,Accessible,Scrollable
public class PicturePanel
extends JPanel
implements MouseListener, Scrollable, ComponentListener, HierarchyListener
Hold and display a group of pictures.
- Author:
- derrick
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class javax.swing.JPanel
JPanel.AccessibleJPanelNested classes/interfaces inherited from class javax.swing.JComponent
JComponent.AccessibleJComponentNested classes/interfaces inherited from class java.awt.Container
Container.AccessibleAWTContainerNested classes/interfaces inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected static final intScrolling block increment (both directions).protected TileSetThe display mosaic.protected DimensionThe preferred size of this component.protected ThumbelinaThe thumbelina object in use.protected static final intScrolling unit increment (both directions).Fields inherited from class javax.swing.JComponent
listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOWFields inherited from class java.awt.Component
accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENTFields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidadjustClipForInsets(Graphics graphics) Adjust the graphics clip region to account for insets.voidbringToTop(Picture picture) Move the given picture to the top of the Z order.protected DimensionCompute the preferred size of the component.voidcomponentHidden(ComponentEvent event) Invoked when the component has been made invisible.voidcomponentMoved(ComponentEvent event) Invoked when the component's position changes.voidcomponentResized(ComponentEvent event) Invoked when the container's size changes.voidcomponentShown(ComponentEvent event) Invoked when the component has been made visible.protected voidDraw an image on screen.Find a picture with the given URL in the panel.Returns the preferred size of the viewport for a view component.Get the preferred size of the component.intgetScrollableBlockIncrement(Rectangle visibleRect, int orientation, int direction) Components that display logical rows or columns should compute the scroll increment that will completely expose one block of rows or columns, depending on the value of orientation.booleanReturn true if a viewport should always force the height of this Scrollable to match the height of the viewport.booleanReturn true if a viewport should always force the width of thisScrollableto match the width of the viewport.intgetScrollableUnitIncrement(Rectangle visibleRect, int orientation, int direction) Components that display logical rows or columns should compute the scroll increment that will completely expose one new row or column, depending on the value of orientation.voidhierarchyChanged(HierarchyEvent event) Handles this components ancestor being added to a container.voidmouseClicked(MouseEvent event) Invoked when the mouse button has been clicked (pressed and released) on a component.voidmouseEntered(MouseEvent event) Invoked when the mouse enters a component.voidmouseExited(MouseEvent event) Invoked when the mouse exits a component.voidmousePressed(MouseEvent event) Handle left click on a picture by bringing it to the top.voidmouseReleased(MouseEvent event) Invoked when a mouse button has been released on a component.voidPaints this component.voidreset()Clears the panel, discarding any existing images.voidsetPreferredSize(Dimension dimension) Sets the preferred size of this component.voidUpdates this component.Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUIMethods 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, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, 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, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardActionMethods 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, validateTreeMethods 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
-
UNIT_INCREMENT
protected static final int UNIT_INCREMENTScrolling unit increment (both directions).- See Also:
-
BLOCK_INCREMENT
protected static final int BLOCK_INCREMENTScrolling block increment (both directions).- See Also:
-
mThumbelina
The thumbelina object in use. -
mMosaic
The display mosaic. -
mPreferredSize
The preferred size of this component.nullinitially, caches the results ofcalculatePreferredSize ().
-
-
Constructor Details
-
PicturePanel
Creates a new instance of PicturePanel- Parameters:
thumbelina- TheThumeblinathis panel is associated with.
-
-
Method Details
-
reset
public void reset()Clears the panel, discarding any existing images. -
bringToTop
Move the given picture to the top of the Z order. Adds it, even it if it doesn't exist. Also puts the URL in the url text of the status bar.- Parameters:
picture- The picture being brought forward.
-
find
Find a picture with the given URL in the panel. This should really only be used to discover if the picture is still visible. There could be more than one picture with the given URL because it may be partially obscured by another picture, in which case the pieces are each given their own picture object, but all point at the sameURLandImage.- Parameters:
url- The url to locate.- Returns:
- The first picture encountered in the panel, or null if the picture was not found.
-
draw
Draw an image on screen.- Parameters:
picture- The picture to draw.add- Iftrue, the picture is added to the history.
-
update
Updates this component.- Overrides:
updatein classJComponent- Parameters:
graphics- The graphics context in which to update the component.
-
adjustClipForInsets
Adjust the graphics clip region to account for insets.- Parameters:
graphics- The graphics object to set the clip region for.
-
paint
Paints this component. Runs through the list of tiles and for every one that intersects the clip region performs adrawImage().- Overrides:
paintin classJComponent- Parameters:
graphics- The graphics context used to paint with.
-
getPreferredSize
Get the preferred size of the component.- Overrides:
getPreferredSizein classJComponent- Returns:
- The dimension of this component.
-
setPreferredSize
Sets the preferred size of this component.- Overrides:
setPreferredSizein classJComponent- Parameters:
dimension- The new value to use forgetPreferredSize()until recalculated.
-
calculatePreferredSize
Compute the preferred size of the component. Computes the minimum bounding rectangle covering all the pictures in the panel. It then does some funky stuff to handle embedding in the view port of a scroll pane, basically asking up the ancestor heirarchy what size is available, and filling it.- Returns:
- The optimal dimension for this component.
-
mouseClicked
Invoked when the mouse button has been clicked (pressed and released) on a component. Not used.- Specified by:
mouseClickedin interfaceMouseListener- Parameters:
event- The object providing details of the mouse event.
-
mouseReleased
Invoked when a mouse button has been released on a component. Not used.- Specified by:
mouseReleasedin interfaceMouseListener- Parameters:
event- The object providing details of the mouse event.
-
mouseEntered
Invoked when the mouse enters a component. Not used.- Specified by:
mouseEnteredin interfaceMouseListener- Parameters:
event- The object providing details of the mouse event.
-
mouseExited
Invoked when the mouse exits a component. Not used.- Specified by:
mouseExitedin interfaceMouseListener- Parameters:
event- The object providing details of the mouse event.
-
mousePressed
Handle left click on a picture by bringing it to the top.- Specified by:
mousePressedin interfaceMouseListener- Parameters:
event- The object providing details of the mouse event.
-
getPreferredScrollableViewportSize
Returns the preferred size of the viewport for a view component. For example the preferredSize of a JList component is the size required to accommodate all of the cells in its list however the value of preferredScrollableViewportSize is the size required for JList.getVisibleRowCount() rows. A component without any properties that would effect the viewport size should just return getPreferredSize() here.- Specified by:
getPreferredScrollableViewportSizein interfaceScrollable- Returns:
- The preferredSize of a JViewport whose view is this Scrollable.
- See Also:
-
getScrollableUnitIncrement
Components that display logical rows or columns should compute the scroll increment that will completely expose one new row or column, depending on the value of orientation. Ideally, components should handle a partially exposed row or column by returning the distance required to completely expose the item.Scrolling containers, like JScrollPane, will use this method each time the user requests a unit scroll.
- Specified by:
getScrollableUnitIncrementin interfaceScrollable- Parameters:
visibleRect- The view area visible within the viewportorientation- Either SwingConstants.VERTICAL or SwingConstants.HORIZONTAL.direction- Less than zero to scroll up/left, greater than zero for down/right.- Returns:
- The "unit" increment for scrolling in the specified direction. This value should always be positive.
-
getScrollableBlockIncrement
Components that display logical rows or columns should compute the scroll increment that will completely expose one block of rows or columns, depending on the value of orientation.Scrolling containers, like JScrollPane, will use this method each time the user requests a block scroll.
- Specified by:
getScrollableBlockIncrementin interfaceScrollable- Parameters:
visibleRect- The view area visible within the viewportorientation- Either SwingConstants.VERTICAL or SwingConstants.HORIZONTAL.direction- Less than zero to scroll up/left, greater than zero for down/right.- Returns:
- The "block" increment for scrolling in the specified direction. This value should always be positive.
-
getScrollableTracksViewportWidth
public boolean getScrollableTracksViewportWidth()Return true if a viewport should always force the width of thisScrollableto match the width of the viewport. For example a normal text view that supported line wrapping would return true here, since it would be undesirable for wrapped lines to disappear beyond the right edge of the viewport. Note that returning true for a Scrollable whose ancestor is a JScrollPane effectively disables horizontal scrolling.Scrolling containers, like JViewport, will use this method each time they are validated.
- Specified by:
getScrollableTracksViewportWidthin interfaceScrollable- Returns:
trueif a viewport should force the Scrollables width to match its own.
-
getScrollableTracksViewportHeight
public boolean getScrollableTracksViewportHeight()Return true if a viewport should always force the height of this Scrollable to match the height of the viewport. For example a columnar text view that flowed text in left to right columns could effectively disable vertical scrolling by returning true here.Scrolling containers, like JViewport, will use this method each time they are validated.
- Specified by:
getScrollableTracksViewportHeightin interfaceScrollable- Returns:
trueif a viewport should force the Scrollables height to match its own.
-
componentResized
Invoked when the container's size changes. Un-caches the preferred size.- Specified by:
componentResizedin interfaceComponentListener- Parameters:
event- The resize event.
-
componentMoved
Invoked when the component's position changes. Not used.- Specified by:
componentMovedin interfaceComponentListener- Parameters:
event- The component event.
-
componentShown
Invoked when the component has been made visible. Not used.- Specified by:
componentShownin interfaceComponentListener- Parameters:
event- The component event.
-
componentHidden
Invoked when the component has been made invisible. Not used.- Specified by:
componentHiddenin interfaceComponentListener- Parameters:
event- The component event.
-
hierarchyChanged
Handles this components ancestor being added to a container. Registers this component as a listener for size changes on the ancestor so that we may un-cache the prefereed size and force a recalculation.- Specified by:
hierarchyChangedin interfaceHierarchyListener- Parameters:
event- The heirarchy event.
-