| 
       メソッド 
       | 
      
       説明 
       | 
    
    
      | 
       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)。 
       |