# Class MetaPanel

java.lang.Object
java.awt.Component
java.awt.Container
javax.swing.JComponent
javax.swing.JPanel
uk.ac.starlink.vo.MetaPanel

All Implemented Interfaces:
  `ImageObserver, MenuContainer, Serializable, Accessible, Scrollable`

public class MetaPanel extends JPanel implements Scrollable
Panel for displaying metadata under headings. It is designed to be contained in a scrollpane with vertical scrolling.

Since:
  16 Feb 2015
Author:
  Mark Taylor
See Also:
  - Serialized Form

## Nested Class Summary

### Nested classes/interfaces inherited from class JPanel

`JPanel.AccessibleJPanel`

### Nested classes/interfaces inherited from class JComponent

`JComponent.AccessibleJComponent`

### Nested classes/interfaces inherited from class Container

`Container.AccessibleAWTContainer`

### Nested classes/interfaces inherited from class Component

`Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy`

## Field Summary

### Fields inherited from class JComponent

`listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW`

### Fields inherited from class Component

`accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT`

### Fields inherited from interface ImageObserver

`ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH`

## Constructor Summary

Constructors
Constructor
Description
`MetaPanel()`
Constructor.

## Method Summary

Modifier and Type
Method
Description
`JTextComponent`
`addHtmlField(String heading)`
Adds a field for displaying a text item formatted as HTML text.
`JTextComponent`
`addLineField(String heading)`
Adds a field for displaying a single-line item.
`JTextComponent`
`addMultiLineField(String heading)`
Adds a field for displaying a text item with potentially multiple lines.
`void`
`addTextLine(String txt)`
Adds a heading with no associated field.
`JTextComponent`
`addUrlField(String heading, Consumer<URL> urlHandler)`
Adds a field intended to contain a clickable URL.
`Dimension`
`getPreferredScrollableViewportSize()`
`int`
`getScrollableBlockIncrement(Rectangle visibleRect, int orientation, int direction)`
`boolean`
`getScrollableTracksViewportHeight()`
`boolean`
`getScrollableTracksViewportWidth()`
`int`
`getScrollableUnitIncrement(Rectangle visibleRect, int orientation, int direction)`
`static String`
`mapToHtml(Map<String,?> map)`
Converts a string-keyed map to an HTML string suitable for display in an HTML text field of a metapanel.
`void`
`setFieldText(JTextComponent field, String text)`
Sets the content of a field.
`void`
`setLogo(Icon logoIcon)`
Sets an image to be displayed at the top of this panel.
`void`
`setLogoUrl(URL iconUrl)`
Sets the URL of an image to be displayed at the top of this panel.

### Methods inherited from class JPanel

`getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUI`

### Methods 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, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, 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, 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 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 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 Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

## Constructor Details

### MetaPanel

public MetaPanel()
Constructor.

## Method Details

### addLineField

public JTextComponent addLineField(String heading)
Adds a field for displaying a single-line item.

Parameters:
  `heading` - item heading text
Returns:
  component whose content can be set

### addMultiLineField

public JTextComponent addMultiLineField(String heading)
Adds a field for displaying a text item with potentially multiple lines.

Parameters:
  `heading` - item heading text
Returns:
  component whose content can be set

### addHtmlField

public JTextComponent addHtmlField(String heading)
Adds a field for displaying a text item formatted as HTML text.

Parameters:
  `heading` - item heading text
Returns:
  component whose content can be set

### addUrlField

public JTextComponent addUrlField(String heading, Consumer<URL> urlHandler)
Adds a field intended to contain a clickable URL. If a non-null UrlHandler is supplied, it is invoked when the user clicks on this field.

Parameters:
  `heading` - item heading text
  `urlHandler` - handler used when the field is clicked on; may be null

### addTextLine

public void addTextLine(String txt)
Adds a heading with no associated field.

Parameters:
  `txt` - text content

### setFieldText

public void setFieldText(JTextComponent field, String text)
Sets the content of a field. As well as the obvious, it fixes it so that after the text is added it's positioned correctly.

Parameters:
  `field` - field
  `text` - new content

### setLogo

public void setLogo(Icon logoIcon)
Sets an image to be displayed at the top of this panel.

Parameters:
  `logoIcon` - image, may be null

### setLogoUrl

public void setLogoUrl(URL iconUrl)
Sets the URL of an image to be displayed at the top of this panel. This will take care not to block the GUI even if the image is slow to load.

Parameters:
  `iconUrl` - URL of icon

### getPreferredScrollableViewportSize

public Dimension getPreferredScrollableViewportSize()

Specified by:
  `getPreferredScrollableViewportSize` in interface `Scrollable`

### getScrollableUnitIncrement

public int getScrollableUnitIncrement(Rectangle visibleRect, int orientation, int direction)

Specified by:
  `getScrollableUnitIncrement` in interface `Scrollable`

### getScrollableBlockIncrement

public int getScrollableBlockIncrement(Rectangle visibleRect, int orientation, int direction)

Specified by:
  `getScrollableBlockIncrement` in interface `Scrollable`

### getScrollableTracksViewportWidth

public boolean getScrollableTracksViewportWidth()

Specified by:
  `getScrollableTracksViewportWidth` in interface `Scrollable`

### getScrollableTracksViewportHeight

public boolean getScrollableTracksViewportHeight()

Specified by:
  `getScrollableTracksViewportHeight` in interface `Scrollable`

### mapToHtml

public static String mapToHtml(Map<String,?> map)
Converts a string-keyed map to an HTML string suitable for display in an HTML text field of a metapanel.

Parameters:
  `map` - map containing display items
Returns:
  renderable HTML representation of `map`