Java Drawing DrawTop

Language

JP  US  UK

 

Page Manager

 H. Jyounishi, Tokyo Japan
 

Frame (Index), No frame                 version:0.3(latest)  

Summary:
This page describes the classes to manage multiple pages of shape objects by using an ArrayList. An object in the ArrayList represents a page containing a ContainerList, ViewData and UndoDrawManager.
このページでClass on this page: PageManager, PageData, ViewData, ViewUtil

1. Class PageManager
public class PageManager

This class manages multiple pages and provides the methods to insert a new page (PageData object), delete the current page, change the current page to other page, write page data to a file and read page data from a file.
The multiple pages and their order can be displayed in the dialog (DialogOfPageLayout) as follow.


Figure 1. Page layout dialog

Field Description
PageList
private ArrayList PageList
The ArrayList storing PageData objects corresponding to multiple pages.
=>Figure 2
CurrentPage
private int CurrentPage
The current page number being displayed on the screen (1,2,.....n).
versions
String[] versions
The array of the strings representing the versions of file format.

Method Description
init
public void init()
Creates new ArrayList object for the PageList and calls the insertNewPage method.
setPageList
public void setPageList(ArrayList pageList)
Parameters:
pageList - The ArrayList object.
Processing:
Sets the pageList to the PageList field. This method is used in the readPageList method.
getPageList
public ArrayList getPageList()
Returns the PageList.
getCurrentPage
public int getCurrentPage()
Returns the CurrentPage.
getUndoDrawManager
public UndoDrawManager getUndoDrawManager()
Returns the UndoDrawManager object of the current page.
=>PageData
showTopPage
public void showTopPage()
Saves the current page to the PageList by the saveCurrentPage method and shows the top page by the showPage method.
This method is called by the ExecCommand.exec().
showLastPage
public void showLastPage()
Saves the current page to the PageList by the saveCurrentPage method and shows the last page by the showPage method.
This method is called by the ExecCommand.exec().
initApp private void initApp()
∙ Deselcts all the shape elements on the screen.
∙ Deletes all the temporary shapes and texts on the screen.
showNextPage
public void showNextPage()
Saves the current page to the PageList by the saveCurrentPage method and shows the next page by the showPage method.
This method is called by the ExecCommand.exec().
showPreviousPage
public void showPreviousPage()
Saves the current page to the PageList by the saveCurrentPage method and shows the previous page by the showPage method. This method is called by the ExecCommand.exec().
insertNewPage
public void insertNewPage()
Inserts a new page before or after the current page.
This method is called by the ExecCommand.exec().
∙ Saves the current page to the PageList by the saveCurrentPage method.
∙ Calls the JOptionPane.showInputDialog method to inquire the user whether to insert before the current page or after that.
∙ Creates a new PageData object with a new ContainerList (ArrayList) and a new UndoDrawManager.
∙ Adds the new PageData object to the PageList.
∙ Shows the new page by the showPage method.
deletePage
public void deletePage()
Deletes the current page.
This method is called by the ExecCommand.exec().
∙ Calls the JOptionPane.showConfirmDialog method to confirm the user for deleting the current page. If the user's reply is "No", then returns.
∙ Deletes the current page from the PageList.
∙ If the deleted page is the last page of the PageList, then shows the previous page, otherwise shows the next page. If no page remains after deletion, then shows the warning message by the JOptionPane.showMessageDialog method and inserts a new page by the insertNewPage method.
movePage
public void movePage(int selectedPage, int moveTo)
Parameter:
selectedPage - The number of the page to be moved.
moveTo - The page number which the selected page is moved to.
1≤moveTo ≤ (The number of the total pages +1)
Processing:
This method is called by the DialogOfPageLayout class to change the pages layout - the order of the pages.
pageSetup
public void pageSetup(int sheetSize, int orientation)
Parameters:
sheetSize - The sheet size.

The sheet sizes are defined in the DrawParameters such as DrawParameters.A4, DrawParameters.A3 and so on.

orientation - The sheet orientation such as DrawParameters.Landscape, DrawParameters.Portrait
Processing:
This method is called by the DialogOfPageSetupAction class. Sets the parameters to the corresponding fields of the DrawParameters.
showPage
private int showPage(int selectedPage)
This method is called by the FileIO.fileOpen() and the methods of this class.
Parameters:
selectedPage - The number of the page to be shown.
1≤selectedPage ≤ The number of the total pages
Returns:
0: normal end
-1: The selected page is not found.
Processing:
∙ Retrieves the PageData object from the PageList and Retrieves the ContainerList and ViewData from the PageData.
∙ Sets the ContainerList to the ContainerManager and the ViewData to the field of DrawParameters by the ViewDataUtil.setViewData method.
saveCurrentPage
private void saveCurrentPage()
This method is called by the FileIO.save(), FileIO.saveAs(), DialogOfPageLayout and the methods of this class.
Processing:
Save the PageData of the current page on display to the PageList.
Gets the ContainerList from the ContainerManager and the ViewData by the ViewUtil.getViewData method, then sets them to the PageData.
getContainersList
public ArrayList getContainerList(int page)
This method is called by the DialogOfPageLayoutPrintableDrawPage etc. and the methods of this class.
Returns the ContainerList stored in the PageData object of the page in the PageList.
getViewData
public ViewData getViewData(int page)
Returns the ViewData stored in the PageData object of the page in the PageList.


2. Class PageData return=>page top
public class PageData implements Serializable

Field
Description
ContainerList
ArrayList ContainerList
The ArrayList object which is storing the shape objects of a page and managed by the ContainerManager.
=>ContainerList
viewData
ViewData viewData
A ViewData object for a page which consists of a sheet size, sheet orientation, scale factor, a left top position of view and so on.
undoDrawManager
UndoDrawManager undoDrawManager
An UndoDrawManager object for a page which stores undoable edit objects of the page.

Method
Description
Constractor
public PageData(ArrayList containerList, ViewData viewData, UndoDrawManager undoManager)
Sets the parameters to the corresponding fields.
setContainerList
public void setContainerList(ArrayList containerList)
Sets the parameter to the ContainerList.
setViewData
public void setViewData(ViewData viewData)
Sets the parameter to the viewData.
getUndoDrawManager
public UndoDrawManager getUndoDrawManager()
Returns the undoDrawManager.
toString
public String toString()
Returns the string representing this object.


3. Class ViewData return=>page top
public class ViewData implements Serializable
The ViewData object is used to manege the view data of each page. It is set to the PageData object together with the ContainerList and UndoDrawManager objects.
Field
Description
scale
public double scale
The scale factor
sheetSize
public int sheetSize
The sheet size. DrawParameters.A4, DrawParameters.A3 and so on.
drawPanelWidth
public int drawPanelWidth
The width of the DrawPanel.
drawPanelHeight
public int drawPanelHeight
The height of the DrawPanel.
sheetOrientation
public int sheetOrientation
The sheet orientation.DrawParameters.Landscape or DrawParameters.Portrait.
viewPosition
public Point viewPosition
The view position. The position set by the JViewport.setViewPosition.

Method
Description
toString
public String toString()
Returns the string representing this object.
writeViewData
(static)
public static int writeViewData(ObjectOutputStream out, ViewData viewData, String version)
Writes the ViewData object to the file.
readViewData
(static)
public static ViewData readViewData(ObjectInputStream in)
Reads the ViewData object from the file.


4. Class ViewUtil return=>page top
public class ViewUtil

Method
Description
zoom
(static)
public void zoom(double scale)
∙ Zooms in/out the shape objects on the DrawPanel.

A shape displayed at the center of the viewport keeps its position in the viewport after zooming.

=>The light blue elliptic shape in the Figure 3
∙ The size of the DrawPanel is set by the JComponent.setPreferredSize(Dimension preferredSize) in zooming operation.

The zooming of the shape objects drawn on the DrawPanel is performed by the g2.setScale(scale,scale) in the DrawPanel.paintBuffer(Graphics g) and the drawing method of the ShapeContainer.drawShape(Graphics g).

Parameters:
scale - The scale factor to be set.
Processing:
∙ Calculates the point on the DrawPanel corresponding the ViewPort center after zooming by the SwingUtilities.convertPoint method.
∙ Calculates the ViewPosition of the ViewPanel using the above calculated point and sets the ViewPosition to the ViewPort.
∙ Calls the setView method.
getViewPanel
(static)
public JPanel getViewPanel(JPanel drawPanel)
Parameter:
drawPanel - The DrawPanel object.
=>Figure 2
Returns:
The panel object (ViewPanel in the Figure 2).
Processing:
If the parent of the DrawPanel doesn't exist, then this method creates a new panel object (ViewPanel) and adds the DrawPanel to the new panel.
If the parent of the DrawPanel exists, then returns the parent.
setView
(static)
public void setView(double scale, Point viewLeftTop)
Parameters:
scale - The scale factor
viewLeftTop - The view coordinates of the ViewPanel corresponding to the upper left corner of the viewport.
This ponts is described as the ViewPosition in the JViewport in the Java api.
=>Figure 2
Processing:
∙ Caluculates the size of the DrawPanel after zooming.

Gets the current sheet size by the getSheetSizeByPixel method of the DrawParameters.
Determnes the size of the DrawPanel as scale*sheetSize and sets it by the JComponent.setPreferredSize(Dimension size) method.

∙ Gets the ViewPanel by the getViewPanel method and sets it to the viewport of the JScrollPane.

JViewport viewport=scrollPane.getViewport();
viewport.setView(viewPanel);

∙ Sets the ViewPosition of the ViewPanel to the viewport.

viewport.setViewPosition(new Point((int)viewLeftTopX,(int)viewLeftTopY));

∙ Finally calls the revalidate method of the DrawPanel.
moveView
(static)
public static void moveView(Point mousePosition)
Parameters:
mousePosition - The current mouse position.
Processing:
If the mousePosition is located outside the view port, then moves the view (substantially, it's the DrawPanel) toward the mousePosition.
The amount of the move is predefined by the constant (currently 5 pixels). To move the view, calls the setView method with a new viewPosition.
getViewData
(static)
public static ViewData getViewData()
Returns the current view conditions by the ViewData object.
setViewData
(static)
public static void setViewData(ViewData data)
Sets the data to the current view conditions.
getViewPosition
(static)
public static Point getViewPosition()
Returns the current view position.


(a) Configuration of the window


(b) Expanding the window horizontally(c) Shrinking the window

Figure 2 Configuration of the window




Scale factor: 100%

Zoom in to the scale factor of 141%

Figure 3 Zoom



Copyright (c) 2009-2013
All other trademarks are property of their respective owners.