org.crosswire.bibledesktop.book

## Class MultiBookPane

- java.lang.Object
- - java.awt.Component
  - - java.awt.Container
    - - javax.swing.JComponent
      - - javax.swing.JSplitPane
        - - org.crosswire.bibledesktop.book.MultiBookPane

- All Implemented Interfaces:
    ImageObserver, MenuContainer, PropertyChangeListener, Serializable, EventListener, Accessible, BookDataDisplay, org.crosswire.jsword.book.BookProvider

      public class MultiBookPane
      extends JSplitPane
      implements BookDataDisplay

  Builds a panel on which all the non-Bible books and their entries are visible.
  Author:
    Joe Walker, DM Smith
  See Also:
    `for license details.`, Serialized Form

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from class javax.swing.JSplitPane

      `JSplitPane.AccessibleJSplitPane`

    - ### Nested classes/interfaces inherited from class javax.swing.JComponent

      `JComponent.AccessibleJComponent`

    - ### Nested classes/interfaces inherited from class java.awt.Container

      `Container.AccessibleAWTContainer`

    - ### Nested classes/interfaces inherited from class java.awt.Component

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

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `private org.crosswire.jsword.book.Book` | `book`
    `private JList` | `bookList`
    `private Component` | `commentaryPicker`
    `private JList` | `dictionaryKeyList`
    `private Component` | `dictionaryKeyScroller`
    `private BookDataDisplay` | `display` The display of OSIS data
    `private Component` | `genBookKeyScroller`
    `private JTree` | `genBookKeyTree`
    `private static org.slf4j.Logger` | `log` The log stream
    `private static long` | `serialVersionUID` Serialization ID
    `protected BibleComboBoxModelSet` | `set`
    `private JSplitPane` | `sptMain`

    - ### Fields inherited from class javax.swing.JSplitPane

      `BOTTOM, CONTINUOUS_LAYOUT_PROPERTY, continuousLayout, DIVIDER, DIVIDER_LOCATION_PROPERTY, DIVIDER_SIZE_PROPERTY, dividerSize, HORIZONTAL_SPLIT, LAST_DIVIDER_LOCATION_PROPERTY, lastDividerLocation, LEFT, leftComponent, ONE_TOUCH_EXPANDABLE_PROPERTY, oneTouchExpandable, orientation, ORIENTATION_PROPERTY, RESIZE_WEIGHT_PROPERTY, RIGHT, rightComponent, TOP, VERTICAL_SPLIT`

    - ### 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 org.crosswire.bibledesktop.display.BookDataDisplay

      `COMPARE_BOOKS`

    - ### Fields inherited from interface java.awt.image.ImageObserver

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

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `MultiBookPane()` Setup the GUI

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addKeyChangeListener(KeyChangeListener listener)` Add a listener for when the key changes.
    `void` | `addURIEventListener(URIEventListener listener)` Add a listener for when someone clicks on a browser 'link'
    `void` | `clearBookData()` Clear any BookData that is displayed.
    `void` | `copy()` Copy the selection to the clipboard
    `private Component` | `createBookPicker()` Create a book picker of all non-bibles
    `private Component` | `createCommentaryPicker()` Build a tree for a GenBook
    `private Component` | `createDictionaryPicker()` Build a tree for a GenBook
    `private Component` | `createGenBookPicker()` Build a tree for a GenBook
    `org.crosswire.jsword.book.Book[]` | `getBooks()`
    `Component` | `getComponent()` Accessor for the Swing component
    `org.crosswire.jsword.book.Book` | `getFirstBook()`
    `org.crosswire.jsword.passage.Key` | `getKey()` The Book Key that we are displaying, or null if we are not displaying anything
    `private void` | `init()` GUI initializer
    `(package private) void` | `newBook()` Called when someone selects a new Dictionary
    `(package private) void` | `newEntry()` Called when someone selects a new entry from the current dictionary
    `void` | `propertyChange(PropertyChangeEvent evt)`
    `private void` | `readObject(ObjectInputStream is)` Serialization support.
    `void` | `refresh()` Cause the BookData to be re-displayed.
    `void` | `removeKeyChangeListener(KeyChangeListener listener)` Remove a listener for when the key changes.
    `void` | `removeURIEventListener(URIEventListener listener)` Remove a listener for when someone clicks on a browser 'link'
    `void` | `selectBook(org.crosswire.jsword.book.Book selectedBook)`
    `(package private) void` | `selected()` Something has been (un)selected in the tree
    `void` | `setBookData(org.crosswire.jsword.book.Book[] books, org.crosswire.jsword.passage.Key key)` Set the BookData to be displayed.
    `void` | `setCompareBooks(boolean compare)` Establish whether books in the book array should be compared.
    `void` | `setKey(org.crosswire.jsword.passage.Key key)` Accessor for the current passage
    `void` | `setWord(String data)` See if the current dictionary has a mention of the word in question.
    `(package private) void` | `updateDisplay()`

    - ### Methods inherited from class javax.swing.JSplitPane

      `addImpl, getAccessibleContext, getBottomComponent, getDividerLocation, getDividerSize, getLastDividerLocation, getLeftComponent, getMaximumDividerLocation, getMinimumDividerLocation, getOrientation, getResizeWeight, getRightComponent, getTopComponent, getUI, getUIClassID, isContinuousLayout, isOneTouchExpandable, isValidateRoot, paintChildren, paramString, remove, remove, removeAll, resetToPreferredSizes, setBottomComponent, setContinuousLayout, setDividerLocation, setDividerLocation, setDividerSize, setLastDividerLocation, setLeftComponent, setOneTouchExpandable, setOrientation, setResizeWeight, setRightComponent, setTopComponent, 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, paint, paintBorder, 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 java.awt.Container

      `add, add, add, add, add, addContainerListener, 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, 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, getPeer, 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, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, 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

    - #### display

          private transient BookDataDisplay display

      The display of OSIS data

    - #### book

          private transient org.crosswire.jsword.book.Book book

    - #### set

          protected transient BibleComboBoxModelSet set

    - #### commentaryPicker

          private Component commentaryPicker

    - #### genBookKeyScroller

          private Component genBookKeyScroller

    - #### genBookKeyTree

          private JTree genBookKeyTree

    - #### bookList

          private JList bookList

    - #### sptMain

          private JSplitPane sptMain

    - #### dictionaryKeyScroller

          private Component dictionaryKeyScroller

    - #### dictionaryKeyList

          private JList dictionaryKeyList

    - #### log

          private static final org.slf4j.Logger log

      The log stream

    - #### serialVersionUID

          private static final long serialVersionUID

      Serialization ID
      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### MultiBookPane

          public MultiBookPane()

      Setup the GUI

  - ### Method Detail

    - #### init

          private void init()

      GUI initializer

    - #### clearBookData

          public void clearBookData()

      Description copied from interface: `BookDataDisplay`
      Clear any BookData that is displayed. This is equivalent to: `setBookData(null, null)`.
      Specified by:
        `clearBookData` in interface `BookDataDisplay`

    - #### setBookData

          public void setBookData(org.crosswire.jsword.book.Book[] books,
                         org.crosswire.jsword.passage.Key key)

      Description copied from interface: `BookDataDisplay`
      Set the BookData to be displayed. The data to be displayed is specified as a books and key rather than the more obvious BookData (the result of reading books using a key) since some displays may wish so split up the display and only look up smaller sections at a time.
      Specified by:
        `setBookData` in interface `BookDataDisplay`
      Parameters:
        `books` - The Books to read data from
        `key` - The key to read from the given book

    - #### setCompareBooks

          public void setCompareBooks(boolean compare)

      Description copied from interface: `BookDataDisplay`
      Establish whether books in the book array should be compared.
      Specified by:
        `setCompareBooks` in interface `BookDataDisplay`

    - #### refresh

          public void refresh()

      Description copied from interface: `BookDataDisplay`
      Cause the BookData to be re-displayed.
      Specified by:
        `refresh` in interface `BookDataDisplay`

    - #### getComponent

          public Component getComponent()

      Description copied from interface: `BookDataDisplay`
      Accessor for the Swing component
      Specified by:
        `getComponent` in interface `BookDataDisplay`

    - #### copy

          public void copy()

      Description copied from interface: `BookDataDisplay`
      Copy the selection to the clipboard
      Specified by:
        `copy` in interface `BookDataDisplay`

    - #### getKey

          public org.crosswire.jsword.passage.Key getKey()

      Description copied from interface: `BookDataDisplay`
      The Book Key that we are displaying, or null if we are not displaying anything
      Specified by:
        `getKey` in interface `BookDataDisplay`
      Returns:
        The current key

    - #### addKeyChangeListener

          public void addKeyChangeListener(KeyChangeListener listener)

      Description copied from interface: `BookDataDisplay`
      Add a listener for when the key changes.
      Specified by:
        `addKeyChangeListener` in interface `BookDataDisplay`

    - #### removeKeyChangeListener

          public void removeKeyChangeListener(KeyChangeListener listener)

      Description copied from interface: `BookDataDisplay`
      Remove a listener for when the key changes.
      Specified by:
        `removeKeyChangeListener` in interface `BookDataDisplay`

    - #### propertyChange

          public void propertyChange(PropertyChangeEvent evt)

      Specified by:
        `propertyChange` in interface `PropertyChangeListener`

    - #### addURIEventListener

          public void addURIEventListener(URIEventListener listener)

      Description copied from interface: `BookDataDisplay`
      Add a listener for when someone clicks on a browser 'link'
      Specified by:
        `addURIEventListener` in interface `BookDataDisplay`
      Parameters:
        `listener` - The listener to add

    - #### removeURIEventListener

          public void removeURIEventListener(URIEventListener listener)

      Description copied from interface: `BookDataDisplay`
      Remove a listener for when someone clicks on a browser 'link'
      Specified by:
        `removeURIEventListener` in interface `BookDataDisplay`
      Parameters:
        `listener` - The listener to remove

    - #### getBooks

          public org.crosswire.jsword.book.Book[] getBooks()

      Specified by:
        `getBooks` in interface `org.crosswire.jsword.book.BookProvider`

    - #### getFirstBook

          public org.crosswire.jsword.book.Book getFirstBook()

      Specified by:
        `getFirstBook` in interface `org.crosswire.jsword.book.BookProvider`

    - #### setWord

          public void setWord(String data)

      See if the current dictionary has a mention of the word in question. LATER(joe): add a background task to highlight other dictionaries that have the word.

    - #### setKey

          public void setKey(org.crosswire.jsword.passage.Key key)

      Accessor for the current passage

    - #### selectBook

          public void selectBook(org.crosswire.jsword.book.Book selectedBook)

    - #### createBookPicker

          private Component createBookPicker()

      Create a book picker of all non-bibles
      Returns:
        The scrollable picker

    - #### createCommentaryPicker

          private Component createCommentaryPicker()

      Build a tree for a GenBook

    - #### createDictionaryPicker

          private Component createDictionaryPicker()

      Build a tree for a GenBook

    - #### createGenBookPicker

          private Component createGenBookPicker()

      Build a tree for a GenBook

    - #### newBook

          final void newBook()

      Called when someone selects a new Dictionary

    - #### updateDisplay

          final void updateDisplay()

    - #### newEntry

          final void newEntry()

      Called when someone selects a new entry from the current dictionary

    - #### selected

          void selected()

      Something has been (un)selected in the tree

    - #### readObject

          private void readObject(ObjectInputStream is)
                           throws IOException,
                                  ClassNotFoundException

      Serialization support.
      Parameters:
        `is` -
      Throws:
        `IOException`
        `ClassNotFoundException`