ix.iface.ui
Class AbstractEditorPanel

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 ix.iface.ui.AbstractEditorPanel
All Implemented Interfaces:
IXEditorPanel, java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible
Direct Known Subclasses:
ListEditorPanel, MiniConstraintPanel, ThingEditorPanel

public abstract class AbstractEditorPanel
extends javax.swing.JPanel
implements IXEditorPanel

A simple panel with a label (title), a component, and optional buttons. The given label will be at the top, the given component at the left and buttons with given labels on the right. Adds the given listener to the buttons and the list.

See Also:
Serialized Form

Nested Class Summary
 class AbstractEditorPanel.ListRightClickMenuItem
           
 
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
 javax.swing.border.TitledBorder border
          The panel's border (if it has one)
 IXButPanel butPanel
          A sub-panel containing buttons
protected  javax.swing.JButton deminBut
           
protected  javax.swing.ImageIcon deminIcon
           
 boolean isBordered
           
 javax.swing.JComponent itemComponent
          The panel's item that may contain data.
protected  javax.swing.JButton minBut
           
protected  javax.swing.ImageIcon minIcon
           
 javax.swing.JLabel nameLabel
          The panel's label (title)
(package private)  java.awt.GridBagConstraints oldGBC
           
(package private)  javax.swing.JPopupMenu rightClickMenu
           
protected  javax.swing.JScrollPane scrollPan
          A scroll-panel for the component (if required)
protected  javax.swing.ImageIcon xDeminIcon
           
protected  javax.swing.ImageIcon xMinIcon
           
 
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
AbstractEditorPanel(boolean minimisable)
          Creates a panel with a label (top left) or a border (depending on the default) Other components (a JComponent and a button panel) are usually added via one of the other constructors; the label text is set in other constructors.
AbstractEditorPanel(boolean minimisable, boolean makeBorder)
          Creates a panel as above but with a given border setting.
AbstractEditorPanel(java.util.EventListener ml, boolean makeBorder, java.lang.String label, boolean minimisable, javax.swing.JComponent component)
          Creates a panel with a title and a component (left).
AbstractEditorPanel(java.util.EventListener ml, boolean makeBorder, java.lang.String label, boolean minimisable, javax.swing.JComponent component, java.lang.String[] buttons)
          Creates a panel with a title, component (left) and buttons (right).
AbstractEditorPanel(java.util.EventListener ml, boolean makeBorder, java.lang.String label, javax.swing.JComponent component)
           
AbstractEditorPanel(java.util.EventListener ml, boolean makeBorder, java.lang.String label, javax.swing.JComponent component, java.lang.String[] buttons)
           
AbstractEditorPanel(java.util.EventListener ml, java.lang.String label, boolean minimisable, javax.swing.JComponent component)
          Creates a panel with a title and a component (left) as above with default border/label.
AbstractEditorPanel(java.util.EventListener ml, java.lang.String label, boolean minimisable, javax.swing.JComponent component, java.lang.String[] buttons)
          Creates a panel as above but with the default border/label setting.
AbstractEditorPanel(java.util.EventListener ml, java.lang.String label, boolean minimisable, java.lang.String[] buttons)
          Creates a panel with a label (top left) and buttons (right) only.
AbstractEditorPanel(java.util.EventListener ml, java.lang.String label, javax.swing.JComponent component)
           
AbstractEditorPanel(java.util.EventListener ml, java.lang.String label, javax.swing.JComponent component, java.lang.String[] buttons)
           
AbstractEditorPanel(java.util.EventListener ml, java.lang.String label, java.lang.String[] buttons)
           
 
Method Summary
 void addComponentListener(java.util.EventListener ml)
           
 void adviseMinimise()
           
 void dataSet(java.lang.Object data)
           
 void deMinimise()
           
 javax.swing.JPopupMenu ensureRightClickMenu()
           
abstract  java.lang.Object getData()
          Gets the current data of the panel's item component.
 javax.swing.JComponent getItemComponent()
          Gets the component of the panel.
 java.lang.String getName()
          Gets the panel's name (the label)
 boolean hasData()
           
 boolean isListItem()
          Checks whether the item component can take lists (e.g.
static boolean isListItem(javax.swing.JComponent component)
           
 boolean isMinimisable()
           
 boolean isMinimised()
           
static boolean isScrollItem(javax.swing.JComponent component)
           
 void larger()
           
protected  void makePanelComponent(java.util.EventListener ml, javax.swing.JComponent component)
          Puts the component into the panel (left) and sets the title.
 javax.swing.JPopupMenu makeRightClickMenu(java.util.HashSet buttons)
           
 void minimise()
          Minimises the component and the rest of the editor
abstract  void removeData()
          Removes all data from the item component
abstract  void setData(java.lang.Object data)
          Sets the current data of the item component.
 void setEnabled(boolean isEditable)
          Makes the item (not) editable and enables (disables) the buttons and the component (needed for right-click)
 void setLabel(java.lang.String label)
          Sets the panel's label
abstract  boolean setRenderer(javax.swing.ListCellRenderer r)
          Sets the renderer if the itemComponent is a JList or a JComboBox;
 void smaller()
           
 
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, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, 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, 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

isBordered

public boolean isBordered

butPanel

public IXButPanel butPanel
A sub-panel containing buttons


scrollPan

protected javax.swing.JScrollPane scrollPan
A scroll-panel for the component (if required)


nameLabel

public javax.swing.JLabel nameLabel
The panel's label (title)


border

public javax.swing.border.TitledBorder border
The panel's border (if it has one)


itemComponent

public javax.swing.JComponent itemComponent
The panel's item that may contain data. There are methods for setting and getting data for JList and JTextComponent items


minIcon

protected javax.swing.ImageIcon minIcon

deminIcon

protected javax.swing.ImageIcon deminIcon

xDeminIcon

protected javax.swing.ImageIcon xDeminIcon

xMinIcon

protected javax.swing.ImageIcon xMinIcon

minBut

protected javax.swing.JButton minBut

deminBut

protected javax.swing.JButton deminBut

rightClickMenu

javax.swing.JPopupMenu rightClickMenu

oldGBC

java.awt.GridBagConstraints oldGBC
Constructor Detail

AbstractEditorPanel

public AbstractEditorPanel(boolean minimisable)
Creates a panel with a label (top left) or a border (depending on the default) Other components (a JComponent and a button panel) are usually added via one of the other constructors; the label text is set in other constructors.


AbstractEditorPanel

public AbstractEditorPanel(boolean minimisable,
                           boolean makeBorder)
Creates a panel as above but with a given border setting. If there is a border, the title of the panel will appear in the border, otherwise it will appear in a label at the top left of the panel. Other components (a JComponent and a button panel) are usually added via one of the other constructors; the label text is set in other constructors.


AbstractEditorPanel

public AbstractEditorPanel(java.util.EventListener ml,
                           boolean makeBorder,
                           java.lang.String label,
                           boolean minimisable,
                           javax.swing.JComponent component)
Creates a panel with a title and a component (left). If the border-flag is set, the title will go into the border, otherwise a label will be used (top left). If the component is a JList or a JTextArea, it is made scrollable Also used by AbstractEditorPanel constructors that have buttons.

Parameters:
ml - the listener that is interested in component events
makeBorder - a flag determining whether the title is set in a border (true) or a label (false).
label - a string that is used as the label (title of the panel).
component - the component at the left of the panel

AbstractEditorPanel

public AbstractEditorPanel(java.util.EventListener ml,
                           boolean makeBorder,
                           java.lang.String label,
                           javax.swing.JComponent component)

AbstractEditorPanel

public AbstractEditorPanel(java.util.EventListener ml,
                           java.lang.String label,
                           boolean minimisable,
                           javax.swing.JComponent component)
Creates a panel with a title and a component (left) as above with default border/label.

Parameters:
ml - the listener that is interested in component events
label - a string that is used as the label (title of the panel).
component - the component at the left of the panel

AbstractEditorPanel

public AbstractEditorPanel(java.util.EventListener ml,
                           java.lang.String label,
                           javax.swing.JComponent component)

AbstractEditorPanel

public AbstractEditorPanel(java.util.EventListener ml,
                           java.lang.String label,
                           boolean minimisable,
                           java.lang.String[] buttons)
Creates a panel with a label (top left) and buttons (right) only.

Parameters:
ml - the listener that is interested in button events
label - a string that is used as the label (title of the panel).
buttons - an array of strings that are button labels

AbstractEditorPanel

public AbstractEditorPanel(java.util.EventListener ml,
                           java.lang.String label,
                           java.lang.String[] buttons)

AbstractEditorPanel

public AbstractEditorPanel(java.util.EventListener ml,
                           boolean makeBorder,
                           java.lang.String label,
                           boolean minimisable,
                           javax.swing.JComponent component,
                           java.lang.String[] buttons)
Creates a panel with a title, component (left) and buttons (right). The title goes either into a label (top left) or into a border, depening on the parameter. Calls AbstractEditorPanel(EventListener, label, JComponent) and makes the buttons itself.

Parameters:
ml - the listener that is interested in component events
makeBorder - a flag determining whether the title is set in a border (true) or a label (false).
label - a string that is used as the label (title of the panel).
component - the component at the left of the panel
buttons - an array of strings that are button labels

AbstractEditorPanel

public AbstractEditorPanel(java.util.EventListener ml,
                           boolean makeBorder,
                           java.lang.String label,
                           javax.swing.JComponent component,
                           java.lang.String[] buttons)

AbstractEditorPanel

public AbstractEditorPanel(java.util.EventListener ml,
                           java.lang.String label,
                           boolean minimisable,
                           javax.swing.JComponent component,
                           java.lang.String[] buttons)
Creates a panel as above but with the default border/label setting.

Parameters:
ml - the listener that is interested in component events
label - a string that is used as the label (title of the panel).
component - the component at the left of the panel
buttons - an array of strings that are button labels

AbstractEditorPanel

public AbstractEditorPanel(java.util.EventListener ml,
                           java.lang.String label,
                           javax.swing.JComponent component,
                           java.lang.String[] buttons)
Method Detail

makePanelComponent

protected void makePanelComponent(java.util.EventListener ml,
                                  javax.swing.JComponent component)
Puts the component into the panel (left) and sets the title. If the border-flag is set, the title will go into the border, otherwise a label will be used (top left). If the component is a JList, JTable or a JTextArea, it is made scrollable Also used by AbstractEditorPanel constructors that have buttons.

Parameters:
ml - the listener that is interested in component events
label - a string that is used as the label (title of the panel).
component - the component at the left of the panel

ensureRightClickMenu

public javax.swing.JPopupMenu ensureRightClickMenu()

makeRightClickMenu

public javax.swing.JPopupMenu makeRightClickMenu(java.util.HashSet buttons)

addComponentListener

public void addComponentListener(java.util.EventListener ml)

setLabel

public void setLabel(java.lang.String label)
Sets the panel's label

Specified by:
setLabel in interface IXEditorPanel

getItemComponent

public javax.swing.JComponent getItemComponent()
Gets the component of the panel.

Specified by:
getItemComponent in interface IXEditorPanel
Returns:
the JComponent that is at the left of the panel

isListItem

public boolean isListItem()
Description copied from interface: IXEditorPanel
Checks whether the item component can take lists (e.g. JList/JComboBox)

Specified by:
isListItem in interface IXEditorPanel

isListItem

public static boolean isListItem(javax.swing.JComponent component)

isScrollItem

public static boolean isScrollItem(javax.swing.JComponent component)

getName

public java.lang.String getName()
Gets the panel's name (the label)

Specified by:
getName in interface IXEditorPanel
Overrides:
getName in class java.awt.Component

setEnabled

public void setEnabled(boolean isEditable)
Makes the item (not) editable and enables (disables) the buttons and the component (needed for right-click)

Specified by:
setEnabled in interface IXEditorPanel
Overrides:
setEnabled in class javax.swing.JComponent

minimise

public void minimise()
Minimises the component and the rest of the editor

Specified by:
minimise in interface IXEditorPanel

deMinimise

public void deMinimise()
Specified by:
deMinimise in interface IXEditorPanel

smaller

public void smaller()
Specified by:
smaller in interface IXEditorPanel

larger

public void larger()
Specified by:
larger in interface IXEditorPanel

adviseMinimise

public void adviseMinimise()

isMinimised

public boolean isMinimised()
Specified by:
isMinimised in interface IXEditorPanel

isMinimisable

public boolean isMinimisable()

hasData

public boolean hasData()

dataSet

public void dataSet(java.lang.Object data)

getData

public abstract java.lang.Object getData()
Description copied from interface: IXEditorPanel
Gets the current data of the panel's item component.

Specified by:
getData in interface IXEditorPanel
Returns:
an array of objects that are the current data model of the list

setData

public abstract void setData(java.lang.Object data)
Description copied from interface: IXEditorPanel
Sets the current data of the item component.

Specified by:
setData in interface IXEditorPanel
Parameters:
data - an object that is to be put into the item component NOTE: this should call dataSet(data) when it's done

removeData

public abstract void removeData()
Description copied from interface: IXEditorPanel
Removes all data from the item component

Specified by:
removeData in interface IXEditorPanel

setRenderer

public abstract boolean setRenderer(javax.swing.ListCellRenderer r)
Description copied from interface: IXEditorPanel
Sets the renderer if the itemComponent is a JList or a JComboBox;

Specified by:
setRenderer in interface IXEditorPanel
Returns:
true if the renderer was set, false if not.