net.sf.freecol.client.gui.panel
Class ColopediaPanel

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by javax.swing.JPanel
                  extended by net.sf.freecol.client.gui.panel.FreeColPanel
                      extended by net.sf.freecol.client.gui.panel.ColopediaPanel
All Implemented Interfaces:
java.awt.event.ActionListener, java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, java.util.EventListener, javax.accessibility.Accessible, javax.swing.event.TreeSelectionListener

public final class ColopediaPanel
extends FreeColPanel
implements javax.swing.event.TreeSelectionListener

This panel displays the Colopedia.

See Also:
Serialized Form

Nested Class Summary
static class ColopediaPanel.PanelType
           
 
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
private static java.awt.Font arrowFont
           
private  javax.swing.JPanel detailPanel
           
private  javax.swing.JLabel header
           
private  javax.swing.JPanel listPanel
           
private static java.util.logging.Logger logger
           
private static java.text.DecimalFormat modifierFormat
           
private static int MODIFIERS_PER_ROW
           
private  java.util.Map<java.lang.String,javax.swing.tree.DefaultMutableTreeNode> nodeMap
           
private  java.lang.String none
           
private  javax.swing.JTree tree
           
 
Fields inherited from class net.sf.freecol.client.gui.panel.FreeColPanel
bigHeaderFont, BORDER_COLOR, CELLBORDER, COLUMNS, defaultFont, editable, emptyMargin, LEFTCELLBORDER, LINK_COLOR, margin, mediumHeaderFont, OK, okButton, okCommand, smallHeaderFont, styleContext, TOPCELLBORDER, TOPLEFTCELLBORDER, WARNING_COLOR
 
Fields inherited from class javax.swing.JComponent
accessibleContext, 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
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
ColopediaPanel(Canvas parent, ColopediaPanel.PanelType panelType, FreeColGameObjectType objectType)
          The constructor that will add the items to this panel.
 
Method Summary
 void actionPerformed(java.awt.event.ActionEvent event)
          This function analyses an event and calls the right methods to take care of the user's requests.
 void appendRequiredAbilities(javax.swing.text.StyledDocument doc, BuildableType buildableType)
           
private  void buildBuildingDetail(BuildingType buildingType)
          Builds the details panel for the given building.
private  void buildBuildingSubtree(javax.swing.tree.DefaultMutableTreeNode parent)
          Builds the buttons for all the buildings.
private  void buildEuropeanNationTypeDetail(EuropeanNationType nationType)
          Builds the details panel for the given nation type.
private  void buildFatherDetail(FoundingFather father)
          Builds the details panel for the given founding father.
private  void buildFathersSubtree(javax.swing.tree.DefaultMutableTreeNode parent)
          Builds the buttons for all the founding fathers.
private  void buildGoodsDetail(GoodsType type)
          Builds the details panel for the given goods.
private  void buildIndianNationTypeDetail(IndianNationType nationType)
          Builds the details panel for the given nation type.
private  javax.swing.tree.DefaultMutableTreeNode buildItem(FreeColGameObjectType type, javax.swing.ImageIcon icon)
           
private  void buildNationDetail(Nation nation)
          Builds the details panel for the given nation.
private  void buildNationTypesSubtree(javax.swing.tree.DefaultMutableTreeNode parent)
          Builds the buttons for all the nation types.
private  void buildResourceDetail(ResourceType type)
          Builds the details panel for the given resource.
private
<T extends FreeColGameObjectType>
javax.swing.tree.DefaultMutableTreeNode
buildSubTree(ColopediaPanel.PanelType panelType, java.util.List<T> types, double scale)
           
private  void buildTerrainDetail(TileType tileType)
          Builds the details panel for the given tile.
private  void buildTerrainSubtree(javax.swing.tree.DefaultMutableTreeNode parent)
          Builds the buttons for all the tiles.
private  javax.swing.JTree buildTree()
          Builds the JTree which represents the navigation menu and then returns it
private  void buildUnitDetail(UnitType type)
          Builds the details panel for the given unit.
private
<T extends BuildableType>
boolean
filterBuildables(java.util.List<T> input, java.util.List<T> output, GoodsType type)
           
 javax.swing.JLabel getAbilityComponent(Ability ability)
           
private  javax.swing.JButton getButton(FreeColGameObjectType type)
           
private  javax.swing.JButton getButton(FreeColGameObjectType type, java.lang.String text, javax.swing.ImageIcon icon)
           
static javax.swing.JTextArea getDefaultTextArea(java.lang.String text)
          Returns a text area with standard settings suitable for use in FreeCol dialogs.
private  java.lang.String getFeatureAsString(Feature feature)
           
private  java.lang.String getFeatureName(Feature feature)
           
private  javax.swing.JButton getGoodsButton(GoodsType goodsType)
           
private  javax.swing.JButton getGoodsButton(GoodsType goodsType, int amount)
           
private  javax.swing.JButton getGoodsButton(GoodsType goodsType, java.lang.String text)
           
 java.lang.String getModifierAsString(Modifier modifier)
           
 javax.swing.JComponent getModifierComponent(Modifier modifier)
           
 ColopediaPanel.PanelType getPanelType(FreeColGameObjectType type)
          Returns the PanelType to be used for the given FreeColGameObjectType.
private  javax.swing.JButton getResourceButton(ResourceType resourceType)
           
private  javax.swing.JButton getUnitButton(AbstractUnit unit)
           
private  javax.swing.JButton getUnitButton(UnitType unitType)
           
private  javax.swing.JButton getUnitButton(UnitType unitType, Unit.Role role)
           
 void initialize(ColopediaPanel.PanelType panelType, FreeColGameObjectType type)
          Prepares this panel to be displayed.
 void initialize(FreeColGameObjectType type)
          Prepares this panel to be displayed.
 void selectDetail(ColopediaPanel.PanelType panelType, FreeColGameObjectType type)
           
 void valueChanged(javax.swing.event.TreeSelectionEvent event)
          This function analyses a tree selection event and calls the right methods to take care of building the requested unit's details.
 
Methods inherited from class net.sf.freecol.client.gui.panel.FreeColPanel
addClosingCallback, createColonyButton, createEventForwardingMouseListener, createEventForwardingMouseMotionListener, enterPressesWhenFocused, getCanvas, getClientOptions, getController, getDefaultHeader, getDefaultTextArea, getDefaultTextPane, getDefaultTextPane, getFreeColClient, getGame, getLibrary, getLinkButton, getModifierFormat, getMyPlayer, getSavedPosition, getSavedSize, getSortedColonies, getSpecification, isEditable, localizedLabel, localizedLabel, notifyClose, requestFocus, restoreSavedSize, restoreSavedSize, setCancelComponent, setEditable, sortModifiers
 
Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, 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, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, 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, 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, transferFocusBackward, 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, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, 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, 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

arrowFont

private static final java.awt.Font arrowFont

modifierFormat

private static final java.text.DecimalFormat modifierFormat

none

private final java.lang.String none

MODIFIERS_PER_ROW

private static final int MODIFIERS_PER_ROW
See Also:
Constant Field Values

header

private javax.swing.JLabel header

listPanel

private javax.swing.JPanel listPanel

detailPanel

private javax.swing.JPanel detailPanel

tree

private javax.swing.JTree tree

nodeMap

private java.util.Map<java.lang.String,javax.swing.tree.DefaultMutableTreeNode> nodeMap
Constructor Detail

ColopediaPanel

public ColopediaPanel(Canvas parent,
                      ColopediaPanel.PanelType panelType,
                      FreeColGameObjectType objectType)
The constructor that will add the items to this panel.

Parameters:
parent - The parent of this panel.
Method Detail

initialize

public void initialize(ColopediaPanel.PanelType panelType,
                       FreeColGameObjectType type)
Prepares this panel to be displayed.

Parameters:
panelType - - the panel type
type - - the FreeColGameObjectType of the item to be displayed

initialize

public void initialize(FreeColGameObjectType type)
Prepares this panel to be displayed.

Parameters:
type - - the FreeColGameObjectType of the item to be displayed

getPanelType

public ColopediaPanel.PanelType getPanelType(FreeColGameObjectType type)
Returns the PanelType to be used for the given FreeColGameObjectType.

Parameters:
type - - the FreeColGameObjectType of the item to be displayed
Returns:
the PanelType

selectDetail

public void selectDetail(ColopediaPanel.PanelType panelType,
                         FreeColGameObjectType type)

buildTree

private javax.swing.JTree buildTree()
Builds the JTree which represents the navigation menu and then returns it

Returns:
The navigation tree.

buildSubTree

private <T extends FreeColGameObjectType> javax.swing.tree.DefaultMutableTreeNode buildSubTree(ColopediaPanel.PanelType panelType,
                                                                                               java.util.List<T> types,
                                                                                               double scale)

buildTerrainSubtree

private void buildTerrainSubtree(javax.swing.tree.DefaultMutableTreeNode parent)
Builds the buttons for all the tiles.

Parameters:
parent -

buildBuildingSubtree

private void buildBuildingSubtree(javax.swing.tree.DefaultMutableTreeNode parent)
Builds the buttons for all the buildings.

Parameters:
parent -

buildFathersSubtree

private void buildFathersSubtree(javax.swing.tree.DefaultMutableTreeNode parent)
Builds the buttons for all the founding fathers.

Parameters:
parent -

buildNationTypesSubtree

private void buildNationTypesSubtree(javax.swing.tree.DefaultMutableTreeNode parent)
Builds the buttons for all the nation types.

Parameters:
parent -

buildItem

private javax.swing.tree.DefaultMutableTreeNode buildItem(FreeColGameObjectType type,
                                                          javax.swing.ImageIcon icon)

getButton

private javax.swing.JButton getButton(FreeColGameObjectType type,
                                      java.lang.String text,
                                      javax.swing.ImageIcon icon)

getButton

private javax.swing.JButton getButton(FreeColGameObjectType type)

getResourceButton

private javax.swing.JButton getResourceButton(ResourceType resourceType)

getGoodsButton

private javax.swing.JButton getGoodsButton(GoodsType goodsType)

getGoodsButton

private javax.swing.JButton getGoodsButton(GoodsType goodsType,
                                           int amount)

getGoodsButton

private javax.swing.JButton getGoodsButton(GoodsType goodsType,
                                           java.lang.String text)

getUnitButton

private javax.swing.JButton getUnitButton(AbstractUnit unit)

getUnitButton

private javax.swing.JButton getUnitButton(UnitType unitType,
                                          Unit.Role role)

getUnitButton

private javax.swing.JButton getUnitButton(UnitType unitType)

buildTerrainDetail

private void buildTerrainDetail(TileType tileType)
Builds the details panel for the given tile.

Parameters:
tileType - The TileType

buildResourceDetail

private void buildResourceDetail(ResourceType type)
Builds the details panel for the given resource.

Parameters:
type - The ResourceType

buildUnitDetail

private void buildUnitDetail(UnitType type)
Builds the details panel for the given unit.

Parameters:
type - - the UnitType

buildGoodsDetail

private void buildGoodsDetail(GoodsType type)
Builds the details panel for the given goods.

Parameters:
type - The GoodsType

filterBuildables

private <T extends BuildableType> boolean filterBuildables(java.util.List<T> input,
                                                           java.util.List<T> output,
                                                           GoodsType type)

buildBuildingDetail

private void buildBuildingDetail(BuildingType buildingType)
Builds the details panel for the given building.

Parameters:
buildingType - The BuildingType

buildFatherDetail

private void buildFatherDetail(FoundingFather father)
Builds the details panel for the given founding father.

Parameters:
father - - the FoundingFather

buildNationDetail

private void buildNationDetail(Nation nation)
Builds the details panel for the given nation.

Parameters:
nation - - the Nation

buildEuropeanNationTypeDetail

private void buildEuropeanNationTypeDetail(EuropeanNationType nationType)
Builds the details panel for the given nation type.

Parameters:
nationType - - the EuropeanNationType

buildIndianNationTypeDetail

private void buildIndianNationTypeDetail(IndianNationType nationType)
Builds the details panel for the given nation type.

Parameters:
nationType - - the IndianNationType

valueChanged

public void valueChanged(javax.swing.event.TreeSelectionEvent event)
This function analyses a tree selection event and calls the right methods to take care of building the requested unit's details.

Specified by:
valueChanged in interface javax.swing.event.TreeSelectionListener
Parameters:
event - The incoming TreeSelectionEvent.

getDefaultTextArea

public static javax.swing.JTextArea getDefaultTextArea(java.lang.String text)
Returns a text area with standard settings suitable for use in FreeCol dialogs.

Parameters:
text - The text to display in the text area.
Returns:
a text area with standard settings suitable for use in FreeCol dialogs.

getFeatureName

private java.lang.String getFeatureName(Feature feature)

getFeatureAsString

private java.lang.String getFeatureAsString(Feature feature)

getModifierAsString

public java.lang.String getModifierAsString(Modifier modifier)

getModifierComponent

public javax.swing.JComponent getModifierComponent(Modifier modifier)

getAbilityComponent

public javax.swing.JLabel getAbilityComponent(Ability ability)

appendRequiredAbilities

public void appendRequiredAbilities(javax.swing.text.StyledDocument doc,
                                    BuildableType buildableType)
                             throws javax.swing.text.BadLocationException
Throws:
javax.swing.text.BadLocationException

actionPerformed

public void actionPerformed(java.awt.event.ActionEvent event)
This function analyses an event and calls the right methods to take care of the user's requests.

Specified by:
actionPerformed in interface java.awt.event.ActionListener
Overrides:
actionPerformed in class FreeColPanel
Parameters:
event - The incoming ActionEvent.