com.lowagie.rups.controller

## Class PdfReaderController

- java.lang.Object
- - java.util.Observable
  - - com.lowagie.rups.controller.PdfReaderController

All Implemented Interfaces:
  java.util.Observer

    public class PdfReaderController
    extends java.util.Observable
    implements java.util.Observer

Controls the GUI components that get their content from iText's PdfReader.

### Field Summary

Fields
`protected javax.swing.JTabbedPane` `editorTabs` Tabbed Pane containing other components.
`protected FormTree` `form` Treeview of the form.
`protected javax.swing.JTabbedPane` `navigationTabs` Tabbed Pane containing other components.
`protected TreeNodeFactory` `nodes` The factory producing tree nodes.
`protected PdfObjectPanel` `objectPanel` A panel that will show PdfObjects.
`protected OutlineTree` `outlines` Treeview of the outlines.
`protected PagesTable` `pages` JTable with all the pages and their labels.
`protected PdfTree` `pdfTree` Treeview of the PDF file.
`protected StreamTextArea` `streamArea` A panel that will show a stream.
`protected XRefTable` `xref` JTable corresponding with the CrossReference table.

### Constructor Summary

Constructors
Constructor and Description
`PdfReaderController(javax.swing.event.TreeSelectionListener treeSelectionListener, PageSelectionListener pageSelectionListener)` Constructs the PdfReaderController.

### Method Summary

Methods
`javax.swing.JTabbedPane` `getEditorTabs()` Getter for the tabs with the editor windows (to which the Console window will be added).
`javax.swing.JTabbedPane` `getNavigationTabs()` Getter for the tabs that allow you to navigate through the PdfTree quickly (pages, form, outlines, xref table).
`PdfObjectPanel` `getObjectPanel()` Getter for the panel that will show the contents of a PDF Object (except for PdfStreams: only the Stream Dictionary will be shown; the content stream is shown in a StreamTextArea object).
`PdfTree` `getPdfTree()` Getter for the PDF Tree.
`StreamTextArea` `getStreamArea()` Getter for the object that holds the TextArea with the content stream of a PdfStream object.
`void` `gotoPage(int pageNumber)` Selects the row in the pageTable that corresponds with a certain page number.
`void` `notifyObservers(java.lang.Object obj)` The GUI components that show the internals of a PDF file, can only be shown if all objects are loaded into the IndirectObjectFactory using the ObjectLoader.
`void` `render(PdfObject object)` Renders the syntax of a PdfObject in the objectPanel.
`void` `selectNode(int objectNumber)` Selects a node in the PdfTree.
`void` `selectNode(PdfObjectTreeNode node)` Selects a node in the PdfTree.
`void` `startObjectLoader(PdfFile file)` Starts loading the PDF Objects in background.
`void` `update(java.util.Observable observable, java.lang.Object obj)` Forwards updates from the RupsController to the Observers of this class.

### Methods inherited from class java.util.Observable

`addObserver, clearChanged, countObservers, deleteObserver, deleteObservers, hasChanged, notifyObservers, setChanged`

### Methods inherited from class java.lang.Object

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

### Field Detail

#### pdfTree

    protected PdfTree pdfTree

Treeview of the PDF file.

#### navigationTabs

    protected javax.swing.JTabbedPane navigationTabs

Tabbed Pane containing other components.

#### pages

    protected PagesTable pages

JTable with all the pages and their labels.

#### outlines

    protected OutlineTree outlines

Treeview of the outlines.

#### form

    protected FormTree form

Treeview of the form.

#### xref

    protected XRefTable xref

JTable corresponding with the CrossReference table.

#### objectPanel

    protected PdfObjectPanel objectPanel

A panel that will show PdfObjects.

#### editorTabs

    protected javax.swing.JTabbedPane editorTabs

Tabbed Pane containing other components.

#### streamArea

    protected StreamTextArea streamArea

A panel that will show a stream.

#### nodes

    protected TreeNodeFactory nodes

The factory producing tree nodes.

### Constructor Detail

#### PdfReaderController

    public PdfReaderController(javax.swing.event.TreeSelectionListener treeSelectionListener,
                       PageSelectionListener pageSelectionListener)

Constructs the PdfReaderController. This is an Observable object to which all iText related GUI components are added as Observers.

Parameters:
  `treeSelectionListener` - when somebody selects a tree node, this listener listens to the event
  `pageSelectionListener` - when somebody changes a page, this listener changes accordingly

### Method Detail

#### getPdfTree

    public PdfTree getPdfTree()

Getter for the PDF Tree.

Returns:
  the PdfTree object

#### getNavigationTabs

    public javax.swing.JTabbedPane getNavigationTabs()

Getter for the tabs that allow you to navigate through the PdfTree quickly (pages, form, outlines, xref table).

Returns:
  a JTabbedPane

#### getObjectPanel

    public PdfObjectPanel getObjectPanel()

Getter for the panel that will show the contents of a PDF Object (except for PdfStreams: only the Stream Dictionary will be shown; the content stream is shown in a StreamTextArea object).

Returns:
  the PdfObjectPanel

#### getEditorTabs

    public javax.swing.JTabbedPane getEditorTabs()

Getter for the tabs with the editor windows (to which the Console window will be added).

#### getStreamArea

    public StreamTextArea getStreamArea()

Getter for the object that holds the TextArea with the content stream of a PdfStream object.

Returns:
  a StreamTextArea

#### startObjectLoader

    public void startObjectLoader(PdfFile file)

Starts loading the PDF Objects in background.

Parameters:
  `file` - the wrapper object that holds the PdfReader as member variable

#### notifyObservers

    public void notifyObservers(java.lang.Object obj)

The GUI components that show the internals of a PDF file, can only be shown if all objects are loaded into the IndirectObjectFactory using the ObjectLoader. As soon as this is done, the GUI components are notified.

Overrides:
  `notifyObservers` in class `java.util.Observable`
Parameters:
  `obj` - in this case the Object should be an ObjectLoader
See Also:
  `Observable.notifyObservers(java.lang.Object)`

#### selectNode

    public void selectNode(PdfObjectTreeNode node)

Selects a node in the PdfTree.

Parameters:
  `node` - a node in the PdfTree

#### selectNode

    public void selectNode(int objectNumber)

Selects a node in the PdfTree.

Parameters:
  `objectNumber` - a number of a node in the PdfTree

#### render

    public void render(PdfObject object)

Renders the syntax of a PdfObject in the objectPanel. If the object is a PDF Stream, then the stream is shown in the streamArea too.

#### gotoPage

    public void gotoPage(int pageNumber)

Selects the row in the pageTable that corresponds with a certain page number.

Parameters:
  `pageNumber` - the page number that needs to be selected

#### update

    public void update(java.util.Observable observable,
              java.lang.Object obj)

Forwards updates from the RupsController to the Observers of this class.

Specified by:
  `update` in interface `java.util.Observer`
Parameters:
  `observable` - this should be the RupsController
  `obj` - the object that has to be forwarded to the observers of PdfReaderController
See Also:
  `Observer.update(java.util.Observable, java.lang.Object)`