メソッド
|
説明
|
Constructor
|
public PagePanel()
setPageLayoutを呼んで、DrawPagePanelに表示する全ページのレイアウトを決める。
|
paint
|
public void paint(Graphics g)
paintメソッドでは、ページが選択されたときにそのページを囲む太枠を表示する、選択ページを移動したときに移動先に太い縦線を表示する処理を行う。
なお配置される各ページの中を描画するのはdrawPageメソッドの仕事である。
|
setPageLayout
|
private void setPageLayout()
∙ xNumOfFrames とyNumOfFramesを計算する。
これらの値はscroll paneのサイズ、getPageFrameSizeの戻り値, gapの示すギャップの大きさ、そして総ページ数から計算できる。
∙ getPagePanelSize の戻り値をこのパネルのサイズ(preferred size)として設定。
∙ getPageFrameRectsメソッドを呼んで戻り値をpageFrameRectsに設定。
∙ このオブジェクトのrevalidateメソッドを呼ぶ。
|
getPageFrameSize |
private Dimension getPageFrameSize()
このメソッドはsetPageLayoutから呼ばれる。
戻り値:
ページデータを表示する小さなフレームのサイズ。現在はA4横の1/8のサイズを返す。
|
getPagePanelSize |
private Dimension getPagePanelSize()
このメソッドはsetPageLayoutから呼ばれる。
戻り値:
このPagePanelオブジェクトのサイズを返す。
|
getPageFrameRects
|
private Rectangle2D[] getPageFrameRects()
このメソッドはsetPageLayoutから呼ばれる。
戻り値:
各ページを表示する矩形(フレーム)の配列を返す。xNumOfFrames とyNumOfFramesが与えられgetPageFrameSizeで矩形(フレーム)のサイズが戻るので、簡単に計算できる。
|
drawPage
|
private void drawPage(Graphics g, int pageIndex, Rectangle2D rect)
引数:
pageIndex - 表示するページにインデックス (pageIndex>=1)
rect - 表示領域を表す矩形。
処理:
∙ pageIndexに該当する ContainerList を新規作成の ContainerManagerに設定、pageIndexに該当するViewData も次のように取得する。
PageManager pageManager=ObjectTable.getPageManager();
ArrayList list=pageManager.getContainerList(pageIndex);
ViewData viewData=pageManager.getViewData(pageIndex);
ContainerManager containerManager=new ContainerManager();
containerManager.setContainerList(list);
∙ getScaleメソッドを呼んで、rectに収まるように描くための倍率を計算する。
∙ もし用紙の向きが縦ならば、Graphics2D(g2)に90度回転を設定する。
∙ ContainerList の図形オブジェクトをShapeContainerのdrawShapeメソッドで描画する。
∙ "page-n"の文字列をrectの下に描画。
|
getScale |
private double getScale(ViewData viewData, Rectangle2D rect)
引数:
vieData - ViewData オブジェクト.
rect - ContainerListの図形オブジェクトを描画する領域。
Returns:
rect内に描画するための倍率を返す。
|
mousePressed
|
public void mousePressed(MouseEvent e)
ptInsideメソッドでマウスの現在位置を含むページ番号を求める。含むページがあればそのページを選択ページとし、ページ番号(>=1)をselectedPageにセットする。なければselectedPage=0。
|
mouseDragged
|
public void mouseDragged(MouseEvent e)
getNearestGapメソッドで現在のマウス位置に最も近いギャップ番号を求め、gapIndexにセット。gapIndexを見てギャップ位置にpaintメソッドで縦線を表示する(図4)。
|
mouseReleased
|
public void mouseReleased(MouseEvent e)
マウスを離すときに、選択ページの移動先が決定する。PageManager.movePageメソッドで選択ページ(selectedPage)をgapIndexの位置に移動する。
|
mouseClicked
|
public void mouseClicked(MouseEvent e)
何もしない。
|
mouseEntered
|
public void mouseEntered(MouseEvent e)
Nothing is done.
|
mouseExited
|
public void mouseExited(MouseEvent e)
Nothing is done.
|
mouseMoved
|
public void mouseMoved(MouseEvent e)
Nothing is done.
|
ptInside
|
public int ptInside(Point2D point)
pointが表示中のページ領域のどれかに含まれるかをチェックする。含まれる場合にページインデックス番を返す。どのpageRectanglesにも含まれないときは-1を返す。
|
getNearestGap
|
public int getNearestGap(Point2D point)
pointに最も近いギャップを求めギャップ番号を返す。ギャップ番号(index)は、1ページの前がindex=0、1ページの後ろ2ページの手前がindex=1、……である(図3)。
|