com.icesoft.pdf.ri.common
Class SwingViewBuilder

java.lang.Object
  extended bycom.icesoft.pdf.ri.common.SwingViewBuilder

public class SwingViewBuilder
extends Object

The purpose of this class is to facilitate in the building of user interface components that are used to view and interact with PDF Documents.

As such, there are three main scenarios that are covered.

  1. Building a standalone Viewer JFrame that will behave much as a full-featured PDF viewing application.
  2. Building an embeddable PDF Viewer JPanel, which can easily be added into any existing client application, augmenting its cababilities to include the capacity for viewing PDF Documents.
  3. Building a subset of the above, using the various building block methods in this class to construct GUI components that provide certain aspects of the overall functionality, and adding those into your application as desired.

Building a standalone window

This is the main entry point for building a JFrame containing all of the graphical user interface elements necessary for viewing PDF files.

The hierarchy of the methods that are invoked to construct the complete GUI is provided below for your reference. You may choose to use any of the individual methods to construct a sub-set of the complete GUI that meets your specific requirements. This also provides you flexibility in the containers that you add the components into and the overall layout of the application, etc.


public JFrame buildViewerFrame()

Building an embeddable component

This is the main entry point for building a JPanel containing all of the GUI elements necessary for viewing PDF files. The main differences between this and buildViewerFrame() are:

The following hierarchy of methods that are invoked to construct the complete Component GUI is provided for your reference. You may choose to use any of the individual methods below to construct a sub-set of the complete GUI that meets your specific requirements. This also provides you flexibility in the containers that you add the components into and the overall layout of the application, etc.


public JPanel buildViewerPanel()

Since:
2.0
Author:
Mark Collette

Field Summary
protected  Font buttonFont
           
protected static float[] DEFAULT_ZOOM_LEVELS
           
protected  int documentPageFitMode
           
protected  int documentViewType
           
protected  boolean haveMadeAToolBar
           
protected  ResourceBundle messageBundle
           
protected  boolean showButtonText
           
static int TOOL_BAR_STYLE_FIXED
           
static int TOOL_BAR_STYLE_FLOATING
           
protected  int toolbarStyle
           
protected  SwingController viewerController
           
protected  float[] zoomLevels
           
 
Constructor Summary
SwingViewBuilder(SwingController c)
          Construct a SwingVewBuilder with all of the default settings
SwingViewBuilder(SwingController c, Font bf, boolean bt, int ts, float[] zl, int documentViewType, int documentPageFitMode)
          Construct a SwingVewBuilder with whichever settings you desire
SwingViewBuilder(SwingController c, int documentViewType, int documentPageFitMode)
          Construct a SwingVewBuilder with all of the default settings
 
Method Summary
protected  void addToMenu(JMenu menu, JMenuItem mi)
           
protected  void addToMenuBar(JMenuBar menuBar, JMenu menu)
           
protected  void addToToolBar(JToolBar toolbar, JComponent comp)
           
 JMenuItem buildAboutMenuItem()
           
 JMenuItem buildBringAllToFrontMenuItem()
           
protected  Font buildButtonFont()
           
 JMenuItem buildCloseMenuItem()
           
 JMenuBar buildCompleteMenuBar()
           
 JToolBar buildCompleteToolBar(boolean embeddableComponent)
           
 void buildContents(Container cp, boolean embeddableComponent)
          The Container will contain the PDF document's current page visualization and document outline if available.
 JTextField buildCurrentPageNumberTextField()
           
 JMenu buildDocumentMenu()
           
 JMenuItem buildExitMenuItem()
           
 JMenuItem buildExportSVGMenuItem()
           
 JMenuItem buildExportTextMenuItem()
           
 JMenu buildFileMenu()
           
 JButton buildFirstPageButton()
           
 JMenuItem buildFirstPageMenuItem()
           
 JToggleButton buildFitActualSizeButton()
           
 JMenuItem buildFitActualSizeMenuItem()
           
 JToggleButton buildFitPageButton()
           
 JMenuItem buildFitPageMenuItem()
           
 JToolBar buildFitToolBar()
           
 JToggleButton buildFitWidthButton()
           
 JMenuItem buildFitWidthMenuItem()
           
 JMenuItem buildGoToPageMenuItem()
           
 JMenu buildHelpMenu()
           
 JMenuItem buildInformationMenuItem()
           
 JButton buildLastPageButton()
           
 JMenuItem buildLastPageMenuItem()
           
 JMenuItem buildMinimiseAllMenuItem()
           
 JButton buildNextPageButton()
           
 JMenuItem buildNextPageMenuItem()
           
 JLabel buildNumberOfPagesLabel()
           
 JButton buildOpenFileButton()
           
 JMenuItem buildOpenFileMenuItem()
           
 JMenuItem buildOpenURLMenuItem()
           
 JComponent buildOutlineComponents()
           
 JToolBar buildPageNavigationToolBar()
           
 JToggleButton buildPageViewFacingPageConToggleButton()
           
 JToggleButton buildPageViewFacingPageNonConToggleButton()
           
 JToggleButton buildPageViewSinglePageConToggleButton()
           
 JToggleButton buildPageViewSinglePageNonConToggleButton()
           
 JToggleButton buildPanToolButton()
           
 JMenuItem buildPermissionsMenuItem()
           
 JButton buildPreviousPageButton()
           
 JMenuItem buildPreviousPageMenuItem()
           
 JButton buildPrintButton()
           
 JMenuItem buildPrintMenuItem()
           
 JMenuItem buildPrintSetupMenuItem()
           
 JButton buildRotateLeftButton()
           
 JMenuItem buildRotateLeftMenuItem()
           
 JButton buildRotateRightButton()
           
 JMenuItem buildRotateRightMenuItem()
           
 JToolBar buildRotateToolBar()
           
 JButton buildSaveAsFileButton()
           
 JMenuItem buildSaveAsFileMenuItem()
           
 JButton buildSearchButton()
           
 JMenuItem buildSearchMenuItem()
           
 SearchPanel buildSearchPanel()
           
 JMenuItem buildShowHideToolBarMenuItem()
           
 JButton buildShowHideUtilityPaneButton()
           
 JMenuItem buildShowHideUtilityPaneMenuItem()
           
 JPanel buildStatusPanel()
           
 JToolBar buildToolToolBar()
           
 JSplitPane buildUtilityAndDocumentSplitPane(boolean embeddableComponent)
           
 JTabbedPane buildUtilityTabbedPane()
           
 JToolBar buildUtilityToolBar(boolean embeddableComponent)
           
 JFrame buildViewerFrame()
          This is a standard method for creating a standalone JFrame, that would behave as a fully functional PDF Viewer application.
 JPanel buildViewerPanel()
          Used by the Applet and Pilot RI code to create an embeddable panel for viewing PDF files, as opposed to buildViewerFrame(), which makes a standalone JFrame
 JMenu buildViewMenu()
           
 void buildWindowListMenuItems(JMenu menu)
           
 JMenu buildWindowMenu()
           
 JComboBox buildZoomCombBox()
           
 JButton buildZoomInButton()
           
 JMenuItem buildZoomInMenuItem()
           
 JToggleButton buildZoomInToolButton()
           
 JButton buildZoomOutButton()
           
 JMenuItem buildZoomOutMenuItem()
           
 JToggleButton buildZoomOutToolButton()
           
 JToolBar buildZoomToolBar()
           
protected  void commonToolBarSetup(JToolBar toolbar, boolean isMainToolBar)
           
protected  JMenuItem makeMenuItem(String text, KeyStroke accel)
          Utility method for creating a menu item.
protected  JMenuItem makeMenuItem(String text, String imageName, KeyStroke accel)
          Utility method for creating a menu item with an image.
protected  JButton makeToolbarButton(String title, String toolTip, String imageName, Font font)
          Utility method for creating a toolbar button.
protected  JToggleButton makeToolbarToggleButton(String title, String toolTip, String imageName, Font font)
          Utility method for creating toggle buttons.
protected  void reflectComponentSetFocusable(Component comp, boolean val)
          void java.awt.Component.setFocusable(boolean) does not exist in Java 1.3.
protected  void reflectJToolBarSetRollover(JToolBar jtoolbar, boolean val)
          void javax.swing.JToolBar.setRollover(boolean) does not exist in Java 1.3.
protected  void shortenDocumentOrigins(List windowDocOriginList)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

TOOL_BAR_STYLE_FLOATING

public static final int TOOL_BAR_STYLE_FLOATING
See Also:
Constant Field Values

TOOL_BAR_STYLE_FIXED

public static final int TOOL_BAR_STYLE_FIXED
See Also:
Constant Field Values

DEFAULT_ZOOM_LEVELS

protected static final float[] DEFAULT_ZOOM_LEVELS

viewerController

protected SwingController viewerController

buttonFont

protected Font buttonFont

showButtonText

protected boolean showButtonText

toolbarStyle

protected int toolbarStyle

zoomLevels

protected float[] zoomLevels

haveMadeAToolBar

protected boolean haveMadeAToolBar

documentViewType

protected int documentViewType

documentPageFitMode

protected int documentPageFitMode

messageBundle

protected ResourceBundle messageBundle
Constructor Detail

SwingViewBuilder

public SwingViewBuilder(SwingController c)
Construct a SwingVewBuilder with all of the default settings

Parameters:
c - SwingController that will interact with the GUI

SwingViewBuilder

public SwingViewBuilder(SwingController c,
                        int documentViewType,
                        int documentPageFitMode)
Construct a SwingVewBuilder with all of the default settings

Parameters:
c - SwingController that will interact with the GUI

SwingViewBuilder

public SwingViewBuilder(SwingController c,
                        Font bf,
                        boolean bt,
                        int ts,
                        float[] zl,
                        int documentViewType,
                        int documentPageFitMode)
Construct a SwingVewBuilder with whichever settings you desire

Parameters:
c - SwingController that will interact with the GUI
Method Detail

buildViewerFrame

public JFrame buildViewerFrame()
This is a standard method for creating a standalone JFrame, that would behave as a fully functional PDF Viewer application.

Returns:
a JFrame containing the PDF document's current page visualization, menu bar, accelerator buttons, and document outline if available.
See Also:
buildViewerPanel()

buildViewerPanel

public JPanel buildViewerPanel()
Used by the Applet and Pilot RI code to create an embeddable panel for viewing PDF files, as opposed to buildViewerFrame(), which makes a standalone JFrame

Returns:
JPanel containing the PDF document's current page visualization, menu bar, accelerator buttons, and document outline if available.
See Also:
buildViewerFrame()

buildContents

public void buildContents(Container cp,
                          boolean embeddableComponent)
The Container will contain the PDF document's current page visualization and document outline if available.

Parameters:
cp - Container in which to put components for viewing PDF documents

buildCompleteMenuBar

public JMenuBar buildCompleteMenuBar()

buildFileMenu

public JMenu buildFileMenu()

buildOpenFileMenuItem

public JMenuItem buildOpenFileMenuItem()

buildOpenURLMenuItem

public JMenuItem buildOpenURLMenuItem()

buildCloseMenuItem

public JMenuItem buildCloseMenuItem()

buildSaveAsFileMenuItem

public JMenuItem buildSaveAsFileMenuItem()

buildExportTextMenuItem

public JMenuItem buildExportTextMenuItem()

buildExportSVGMenuItem

public JMenuItem buildExportSVGMenuItem()

buildPermissionsMenuItem

public JMenuItem buildPermissionsMenuItem()

buildInformationMenuItem

public JMenuItem buildInformationMenuItem()

buildPrintSetupMenuItem

public JMenuItem buildPrintSetupMenuItem()

buildPrintMenuItem

public JMenuItem buildPrintMenuItem()

buildExitMenuItem

public JMenuItem buildExitMenuItem()

buildViewMenu

public JMenu buildViewMenu()

buildFitActualSizeMenuItem

public JMenuItem buildFitActualSizeMenuItem()

buildFitPageMenuItem

public JMenuItem buildFitPageMenuItem()

buildFitWidthMenuItem

public JMenuItem buildFitWidthMenuItem()

buildZoomInMenuItem

public JMenuItem buildZoomInMenuItem()

buildZoomOutMenuItem

public JMenuItem buildZoomOutMenuItem()

buildRotateLeftMenuItem

public JMenuItem buildRotateLeftMenuItem()

buildRotateRightMenuItem

public JMenuItem buildRotateRightMenuItem()

buildShowHideToolBarMenuItem

public JMenuItem buildShowHideToolBarMenuItem()

buildShowHideUtilityPaneMenuItem

public JMenuItem buildShowHideUtilityPaneMenuItem()

buildDocumentMenu

public JMenu buildDocumentMenu()

buildFirstPageMenuItem

public JMenuItem buildFirstPageMenuItem()

buildPreviousPageMenuItem

public JMenuItem buildPreviousPageMenuItem()

buildNextPageMenuItem

public JMenuItem buildNextPageMenuItem()

buildLastPageMenuItem

public JMenuItem buildLastPageMenuItem()

buildSearchMenuItem

public JMenuItem buildSearchMenuItem()

buildGoToPageMenuItem

public JMenuItem buildGoToPageMenuItem()

buildWindowMenu

public JMenu buildWindowMenu()

buildMinimiseAllMenuItem

public JMenuItem buildMinimiseAllMenuItem()

buildBringAllToFrontMenuItem

public JMenuItem buildBringAllToFrontMenuItem()

buildWindowListMenuItems

public void buildWindowListMenuItems(JMenu menu)

shortenDocumentOrigins

protected void shortenDocumentOrigins(List windowDocOriginList)

buildHelpMenu

public JMenu buildHelpMenu()

buildAboutMenuItem

public JMenuItem buildAboutMenuItem()

buildCompleteToolBar

public JToolBar buildCompleteToolBar(boolean embeddableComponent)

buildUtilityToolBar

public JToolBar buildUtilityToolBar(boolean embeddableComponent)

buildOpenFileButton

public JButton buildOpenFileButton()

buildSaveAsFileButton

public JButton buildSaveAsFileButton()

buildPrintButton

public JButton buildPrintButton()

buildSearchButton

public JButton buildSearchButton()

buildShowHideUtilityPaneButton

public JButton buildShowHideUtilityPaneButton()

buildPageNavigationToolBar

public JToolBar buildPageNavigationToolBar()

buildFirstPageButton

public JButton buildFirstPageButton()

buildPreviousPageButton

public JButton buildPreviousPageButton()

buildNextPageButton

public JButton buildNextPageButton()

buildLastPageButton

public JButton buildLastPageButton()

buildCurrentPageNumberTextField

public JTextField buildCurrentPageNumberTextField()

buildNumberOfPagesLabel

public JLabel buildNumberOfPagesLabel()

buildZoomToolBar

public JToolBar buildZoomToolBar()

buildZoomOutButton

public JButton buildZoomOutButton()

buildZoomCombBox

public JComboBox buildZoomCombBox()

buildZoomInButton

public JButton buildZoomInButton()

buildFitToolBar

public JToolBar buildFitToolBar()

buildFitActualSizeButton

public JToggleButton buildFitActualSizeButton()

buildFitPageButton

public JToggleButton buildFitPageButton()

buildFitWidthButton

public JToggleButton buildFitWidthButton()

buildRotateToolBar

public JToolBar buildRotateToolBar()

buildRotateLeftButton

public JButton buildRotateLeftButton()

buildRotateRightButton

public JButton buildRotateRightButton()

buildToolToolBar

public JToolBar buildToolToolBar()

buildPanToolButton

public JToggleButton buildPanToolButton()

buildZoomInToolButton

public JToggleButton buildZoomInToolButton()

buildZoomOutToolButton

public JToggleButton buildZoomOutToolButton()

buildUtilityAndDocumentSplitPane

public JSplitPane buildUtilityAndDocumentSplitPane(boolean embeddableComponent)

buildUtilityTabbedPane

public JTabbedPane buildUtilityTabbedPane()

buildOutlineComponents

public JComponent buildOutlineComponents()

buildSearchPanel

public SearchPanel buildSearchPanel()

buildStatusPanel

public JPanel buildStatusPanel()

buildPageViewSinglePageConToggleButton

public JToggleButton buildPageViewSinglePageConToggleButton()

buildPageViewFacingPageConToggleButton

public JToggleButton buildPageViewFacingPageConToggleButton()

buildPageViewSinglePageNonConToggleButton

public JToggleButton buildPageViewSinglePageNonConToggleButton()

buildPageViewFacingPageNonConToggleButton

public JToggleButton buildPageViewFacingPageNonConToggleButton()

makeToolbarButton

protected JButton makeToolbarButton(String title,
                                    String toolTip,
                                    String imageName,
                                    Font font)
Utility method for creating a toolbar button.

Parameters:
title - display text for the menu item
toolTip - tool tip text
imageName - display image name
font - display font
Returns:
a button with the specified characteristics.

makeToolbarToggleButton

protected JToggleButton makeToolbarToggleButton(String title,
                                                String toolTip,
                                                String imageName,
                                                Font font)
Utility method for creating toggle buttons.

Parameters:
title - display text for the menu item
toolTip - tool tip text
imageName - display image name
font - display font
Returns:
a toggle button with the specified characteristics.

makeMenuItem

protected JMenuItem makeMenuItem(String text,
                                 KeyStroke accel)
Utility method for creating a menu item.

Parameters:
text - display text for the menu item
Returns:
menu item complete with text and action listener

makeMenuItem

protected JMenuItem makeMenuItem(String text,
                                 String imageName,
                                 KeyStroke accel)
Utility method for creating a menu item with an image.

Parameters:
text - display text for the menu item
imageName - display image for the menu item
Returns:
memu item complete with text, image and action listener

reflectJToolBarSetRollover

protected void reflectJToolBarSetRollover(JToolBar jtoolbar,
                                          boolean val)
void javax.swing.JToolBar.setRollover(boolean) does not exist in Java 1.3. Since it was introduced in Java 1.4, so we use reflection to call it, if it exists. We don't treat it as an error if this fails, since it's only an enhancement, and is not critical.

Parameters:
jtoolbar - javax.swing.JToolBar to call setRollover( val ) on
val - Argument to jtoolbar.setRollover( val )

reflectComponentSetFocusable

protected void reflectComponentSetFocusable(Component comp,
                                            boolean val)
void java.awt.Component.setFocusable(boolean) does not exist in Java 1.3. Since it was introduced in Java 1.4, so we use reflection to call it, if it exists. We don't treat it as an error if this fails, since it's only an enhancement, and is not critical.

Parameters:
comp - java.awt.Component to call setFocusable( val ) on
val - Argument to comp.setFocusable( val )

commonToolBarSetup

protected void commonToolBarSetup(JToolBar toolbar,
                                  boolean isMainToolBar)

buildButtonFont

protected Font buildButtonFont()

addToToolBar

protected void addToToolBar(JToolBar toolbar,
                            JComponent comp)

addToMenu

protected void addToMenu(JMenu menu,
                         JMenuItem mi)

addToMenuBar

protected void addToMenuBar(JMenuBar menuBar,
                            JMenu menu)