Class InfoPanel

  • All Implemented Interfaces:
    java.awt.event.ActionListener, java.awt.image.ImageObserver, java.awt.MenuContainer, java.beans.PropertyChangeListener, java.io.Serializable, java.util.EventListener, javax.accessibility.Accessible

    public final class InfoPanel
    extends FreeColPanel
    implements java.beans.PropertyChangeListener
    The InfoPanel is a wrapper for several informative displays in the lower right corner.
    See Also:
    Serialized Form
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      private static class  InfoPanel.InfoPanelMode  
      • Nested classes/interfaces inherited from class javax.swing.JPanel

        javax.swing.JPanel.AccessibleJPanel
      • Nested classes/interfaces inherited from class javax.swing.JComponent

        javax.swing.JComponent.AccessibleJComponent
      • Nested classes/interfaces inherited from class java.awt.Container

        java.awt.Container.AccessibleAWTContainer
      • Nested classes/interfaces inherited from class java.awt.Component

        java.awt.Component.AccessibleAWTComponent, java.awt.Component.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private java.awt.Font font
      The font for the end turn message.
      private ImageLibrary lib
      The image library to use for the font.
      private static java.util.logging.Logger logger  
      private MapTransform mapTransform
      The associated map transform when in MAP mode.
      private InfoPanel.InfoPanelMode mode
      The panel mode.
      private java.awt.event.MouseAdapter mouseAdapter
      The mouse listener for the various subpanels.
      static java.awt.Dimension PREFERRED_SIZE
      Preferred size for non-skinned panel.
      private static int PRODUCTION
      Number of goods/production items to show.
      private java.awt.Image skin
      An optional background image (the standard one has shape).
      private static int SLACK
      A small pixel gap.
      private static int TEXT_WIDTH
      Pixel width of text area beside icon.
      private Tile tile
      The associated tile when in TILE mode.
      private Unit unit
      The associated unit when in UNIT mode.
      private boolean useSkin
      Use the info panel skin.
      • 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_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

      Constructors 
      Constructor Description
      InfoPanel​(FreeColClient freeColClient)
      The constructor that will add the items to this panel.
      InfoPanel​(FreeColClient freeColClient, boolean useSkin)
      The constructor that will add the items to this panel.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      private static void addLabels​(javax.swing.JPanel panel, java.util.List<javax.swing.JLabel> labels, int max)
      Add labels to a panel with MigLayout, on one line.
      private InfoPanel.InfoPanelMode changeMode​(InfoPanel.InfoPanelMode newMode)
      Change the panel mode.
      private void fillEndPanel()
      Fill in an end turn message into a new panel and add it.
      private MapTransform fillMapPanel​(MapTransform mapTransform)
      Fill map transform information into a new panel and add it.
      private Tile fillTilePanel​(Tile tile)
      Fill tile information into a new panel and add it.
      private Unit fillUnitPanel​(Unit unit)
      Fill unit information into a new panel and add it.
      private Tile getTile()
      Get the mode-dependent associated tile.
      private MigPanel newPanel​(java.awt.LayoutManager layout)
      Get a new MigPanel with specified layout and size it to fit neatly.
      void paintComponent​(java.awt.Graphics graphics)
      void propertyChange​(java.beans.PropertyChangeEvent event)
      void refresh()
      Refresh this panel.
      private void setPanel​(MigPanel panel)
      Size, place and request redraw of the given panel.
      void update()
      Update this InfoPanel to end turn mode.
      void update​(MapTransform mapTransform)
      Update this InfoPanel to map mode with a given transform.
      void update​(Tile tile)
      Update this InfoPanel to tile mode with a given tile.
      void update​(Unit unit)
      Update this InfoPanel to unit mode with a given unit.
      void updateLayoutIfNeeded()  
      • Methods inherited from class javax.swing.JPanel

        getAccessibleContext, getUI, paramString, setUI, updateUI
      • 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, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, 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, 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
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Field Detail

      • logger

        private static final java.util.logging.Logger logger
      • TEXT_WIDTH

        private static final int TEXT_WIDTH
        Pixel width of text area beside icon.
        See Also:
        Constant Field Values
      • PRODUCTION

        private static final int PRODUCTION
        Number of goods/production items to show.
        See Also:
        Constant Field Values
      • PREFERRED_SIZE

        public static final java.awt.Dimension PREFERRED_SIZE
        Preferred size for non-skinned panel.
      • lib

        private final ImageLibrary lib
        The image library to use for the font.
      • font

        private java.awt.Font font
        The font for the end turn message.
      • skin

        private java.awt.Image skin
        An optional background image (the standard one has shape).
      • mouseAdapter

        private final java.awt.event.MouseAdapter mouseAdapter
        The mouse listener for the various subpanels.
      • mapTransform

        private MapTransform mapTransform
        The associated map transform when in MAP mode.
      • tile

        private Tile tile
        The associated tile when in TILE mode.
      • unit

        private Unit unit
        The associated unit when in UNIT mode.
      • useSkin

        private boolean useSkin
        Use the info panel skin.
    • Constructor Detail

      • InfoPanel

        public InfoPanel​(FreeColClient freeColClient)
        The constructor that will add the items to this panel.
        Parameters:
        freeColClient - The FreeColClient for the game.
      • InfoPanel

        public InfoPanel​(FreeColClient freeColClient,
                         boolean useSkin)
        The constructor that will add the items to this panel.
        Parameters:
        freeColClient - The FreeColClient for the game.
        useSkin - Use the info panel skin.
    • Method Detail

      • updateLayoutIfNeeded

        public void updateLayoutIfNeeded()
      • newPanel

        private MigPanel newPanel​(java.awt.LayoutManager layout)
        Get a new MigPanel with specified layout and size it to fit neatly.
        Parameters:
        layout - The LayoutManager for the panel.
        Returns:
        The new MigPanel.
      • setPanel

        private void setPanel​(MigPanel panel)
        Size, place and request redraw of the given panel.
        Parameters:
        panel - The new panel to display.
      • getTile

        private Tile getTile()
        Get the mode-dependent associated tile.
        Returns:
        The Tile associated with this panel.
      • changeMode

        private InfoPanel.InfoPanelMode changeMode​(InfoPanel.InfoPanelMode newMode)
        Change the panel mode. The important job here is to clear out all the old settings.
        Parameters:
        newMode - The new InfoPanelMode.
        Returns:
        The old InfoPanelMode.
      • fillEndPanel

        private void fillEndPanel()
        Fill in an end turn message into a new panel and add it.
      • fillMapPanel

        private MapTransform fillMapPanel​(MapTransform mapTransform)
        Fill map transform information into a new panel and add it.
        Parameters:
        mapTransform - The MapTransform to display.
        Returns:
        The MapTransform.
      • fillTilePanel

        private Tile fillTilePanel​(Tile tile)
        Fill tile information into a new panel and add it.
        Parameters:
        tile - The Tile to display.
        Returns:
        The Tile.
      • addLabels

        private static void addLabels​(javax.swing.JPanel panel,
                                      java.util.List<javax.swing.JLabel> labels,
                                      int max)
        Add labels to a panel with MigLayout, on one line.
        Parameters:
        panel - The JPanel to add to.
        labels - A list of JLabels to add.
        max - The maximum number of labels to put on a line
      • fillUnitPanel

        private Unit fillUnitPanel​(Unit unit)
        Fill unit information into a new panel and add it.
        Parameters:
        unit - The Unit to display.
        Returns:
        The Unit.
      • update

        public void update()
        Update this InfoPanel to end turn mode.
      • update

        public void update​(MapTransform mapTransform)
        Update this InfoPanel to map mode with a given transform.
        Parameters:
        mapTransform - The MapTransform to display.
      • update

        public void update​(Tile tile)
        Update this InfoPanel to tile mode with a given tile.
        Parameters:
        tile - The displayed Tile.
      • update

        public void update​(Unit unit)
        Update this InfoPanel to unit mode with a given unit.
        Parameters:
        unit - The displayed Unit.
      • refresh

        public void refresh()
        Refresh this panel. Apparently this is necessary when adding the info panel back into the canvas with the skinned corner, otherwise the unit does not get displayed. TODO: Explain why, or fix so we do not need this.
      • paintComponent

        public void paintComponent​(java.awt.Graphics graphics)
        Overrides:
        paintComponent in class javax.swing.JComponent
      • propertyChange

        public void propertyChange​(java.beans.PropertyChangeEvent event)
        Specified by:
        propertyChange in interface java.beans.PropertyChangeListener