メソッド
|
説明
|
start
|
public void start()
∙ activateListenerを呼んで、MouseListener, MouseMotionListenerをListenerPanelに設定する。
(注) start, endメソッドはコマンドの分岐処理を行うExecCommandから呼ばれる。
図形作成時に画面をドラッグして図形領域を決めるわけだが、
この時にSelectionLSが動作してはまずいのでendメソッドでSelectionLSを停止し、
画面のドラッグが終了するとstartメソッドでSelectionLSを起動する。
|
end |
public void end()
∙ activateListener(false) を呼んで、MouseListener, MouseMotionListenerをListenerPanelから削除する。
∙ マウスドラッグに使うフィールドの初期化を実行。
draggedRectangle=null; draggedStartPoint=null; draggedEndPoint=null;
|
isMouseListener |
boolean isMouseListener(MouseListener listener)
∙ ListenerPaneにMouseListenerが設定されているかの問い合わせ。
|
isMouseMotionListener |
public boolean isMouseMotionListener(MouseMotionListener listener)
∙ ListenerPanelにMouseMotionListenerが設定されているかの問い合わせ。
|
activateListener |
private void activateListener(boolean activate)
∙ MouseListener, MouseMotionListenerをListenerPanelに設定する/解除する。
|
addSelectionListener |
public void addSelectionListener(SelectionListener listener)
SelectionLSオブジェクトが図形を選択したときにイベントを受け取るために、SelectionListenerをインプリメントしたオブジェクトを登録する。 |
removeSelectionListener |
public void removeSelectionListener(SelectionListener listener)
上記登録したオブジェクトをlistenerListから削除する。 |
removeSelectionListener |
public void removeSelectionListener()
listenerListからすべてのオブジェクトを削除する。 |
fireEvent |
public void fireEvent(SelectionEvent event)
SelectionLSオブジェクトが図形を選択したときに、listenerListに登録されているオブジェクトに通知する。 |
mousePressed
|
public void mousePressed(MouseEvent e)
∙ staticフィールド変数popupTriggerの設定
=>
PopupTriggerの取得
∙ マウス右ボタンが押されたか否かのチェック。フィールド変数ctrlにセット。
これはmouseClickedメソッドで参照する。
∙ マウスボタンが図形の選択ボックスを押した場合、図形の移動∙ リサイズコマンドを起動する。
=>このクラスのprepareMoveResizeCommandメソッドを実行する。
|
mouseDragged
|
public void mouseDragged(MouseEvent e)
マウスドラッグによって作られる領域に含まれる全ての図形を選択する。
このメソッドではフィールド変数draggedRectangleにドラッグ領域を設定するだけで、
実際の選択処理はドラッグ領域が確定するmouseRelesedメソッドで行う。
右下から左上に向かってドラッグする場合の矩形領域の作り方に注意。
(注)ドラッグ領域の表示はthis.drawDraggedRectangleメソッドで行う。
|
mouseReleased |
public void mouseReleased(MouseEvent e)
mouseReleasedでドラッグ領域領域(フィールド変数draggedRectangle)が確定するので、
このクラスのexecSelectionを呼んで図形の選択処理を行う。
if(this.draggedRectangle!=null) execSelection(cont, this.draggedRectangle);
|
mouseClicked |
public void mouseClicked(MouseEvent e)
∙ クリック時にShft keyまたはCtrl keyが押されていたかをチェック。
∙ このクラスのprepareClickedPointCommand メソッドを呼ぶ。
∙ このクラスのexecSelectionを呼び出し図形の選択処理を行う。
∙ ポップアップメニューの起動
このクラスのフィールド変数popupTriggerとMousePositionLS.popupTriggerがともにtrueで、
マウスイベントの処理が全て終了していれば、ExecPopupMenuクラスの
showメソッドを呼んでポップアップメニューを起動する。
=>
ポップアップメニューの起動
|
mouseEntered |
public void mouseEntered(MouseEvent e)
∙ なにもしない
|
mouseExited |
public void mouseExited(MouseEvent e)
∙ なにもしない
|
mouseMoved |
public void mouseMoved(MouseEvent e)
∙ なにもしない
|
inEditableTextArea |
private boolean inEditableTextArea(double X, double Y)
点(X,Y)が編集可能なテキストボックスの内部にあるか否かを判定する。この領域ではマウスをクリックしても図形は選択されないようにする。編集可能なテキストボックスはContainerManager.getEditableTextBoxメソッドで取得できる。 |
drawDraggedRectangle |
public void drawDraggedRectangle(Graphics g)
DrawPanelのpaintメソッドから呼ばれる。
∙ マウスドラッグで図形を選択する場合にドラッグ領域を点線枠で描画する。
|
execSelection |
public void execSelection(int ctrl, Rectangle2D draggedRectangle)
引数:
ctrl - 0/1/2
Shift/Ctrlキーを押しながらマウスをドラッグまたはクリックすると1または2が設定される。
この場合は続けて図形を選択する。
draggedRectangle - マウスドラッグによる選択領域。クリックのときはdraggedRectangle =null。
処理:
前記1. (1) (2)の選択規則に従って図形選択を行う。
mouseClicked、mouseReleasedメソッドから呼ばれる。
mouseReleasedメソッドから呼ばれる場合はdraggedRectangle内の図形が選ばれているので一般には複数の図形が選択され。
mouseClickedメソッドから呼ばれる場合は選択図形は
1個でdraggedRectangleはnull。
(1) Shape tab (操作説明書
Shape tab) を開く。
javax.swing.JTabbedPane.のsetSelectedIndexメソッドを呼ぶ。
(2) draggedRectangle!=nullの場合
selectInDraggedAreaメソッドを呼ぶ。MousePositionInfoオブジェクトの配列を受け取る。
このオブジェクトは選択図形を保持している。.
(3) draggedRectangle==null (マウスクリック)の場合
MousePositionLSのgetMousePositionInfoForSelectionメソッドを呼ぶ。選択候補の図形はMousePositionInfoオブジェクトから取得できる。
(4) PaintStyle.setPaintStyleToMenu メソッドを呼んで、
図形のペイントスタイル(PaintStyle)をツールバーのコンポーネントに設定する。
(5) FontStyle.setFontStyleToMenuメソッドを呼んで、
テキストボックスが保持するテキストのフォントスタイル(FontStyle)をツールバーのコンポーネントに設定する。
|
execSelectionByDrag |
public void execSelectionByDrag(int ctrl, Rectangle2D draggedArea)
引数:
ctrl - 0/1/2
Shift/Ctrlキーを押しながらマウスをドラッグすると1または2が設定される。
この場合は続けて図形を選択する。
draggedRectangle - マウスドラッグによる選択領域。
処理:
mouseReleased メソッドから呼ばれる。
(1)selectInDraggedArea メソッドを呼び、
MousePositionInfoオブジェクトの配列を受け取る。
(2) 前記1. (1) (2)の選択規則に従って図形選択を行う。
MousePositionInfoオブジェクトから図形を取得して処理する。
|
selectInDraggedArea |
private MousePositionInfo[] selectInDraggedArea(Rectangle2D draggedRectangle)
上のexecSelectionByDragから呼ばれる。
図形を囲む矩形領域(BoundingBox)がドラッグ領域に含まれていれば選択されたと見なしMousePositionを作成して配列で返す。
|
execSelectionByClick |
public void execSelectionByClick(int ctrl)
引数:
ctrl - 0/1/2
Shift/Ctrlキーを押しながらマウスをクリックすると1または2が設定される。
処理: 前記1. (1) (2)の選択規則に従って図形選択を行う。
(1)MousePositionLS.getMousePositionInfoForSelection メソッドでMousePositionInfoオブジェクト(一般には複数)を取得する。
このときMousePositionInfoオブジェクトがなければすべての図形の選択を解除する。
取得したMousePositionInfoオブジェクトは一般には複数で優先順位の高い順に配列に格納されている。
(2)最も優先順位の高いのMousePositionInfoから図形を取得し、選択処理を行う。
選択のクリック点がテキストボックス内部ならばそのテキストボックスをselectTextBoxメソッドで編集可能にする。
(3)SelectionEventを作成し、
fireEventメソッドでSelectionListenerインターフェイス
を実装したオブジェクトにEventを送る。
|
selectTextBox
|
private void selectTextBox(ShapeContainer selectedContainer, MousePositionInfo
info, int ctrl)
引数:
selectedContainer - テキストボックスを持つShapeContainerオブジェクト。
info - この引数からクリック点を取り出し、 ShapeContainer.makeTextBoxEditable メソッドでカーソル(キャレット)位置を設定する。
ctrl - 0/1/2
Shift/Ctrlキーを押しながらマウスをドラッグすると1または2が設定される。この場合は続けて図形を選択する。
処理:
図形選択のクリック点がTextBox内部のとき、ShapeContainer.makeTextBoxEditable
を呼んでそのTextBoxをeditable(編集可能)にする。
|
selectAll |
public void selectAll(boolean select)
∙ 表示中のすべての図形を選択/非選択状態にする。コマンドの分岐処理を行うExecCommandから呼ばれる。
|
prepareMoveResize
Command |
public void prepareMoveResizeCommand(MousePositionInfo mouseInfo, MouseEvent
e)
マウスで選択ボックス、リサイズハンドル上などを押したときに、mousePressedメソッドからこのメソッドが呼ばれる。
∙ マウスで押した位置により、図形の移動か、リサイズかを判定する。
∙ 図形の移動またはリサイズコマンドを作成し、ExecCommandを呼ぶ。
|
prepareClickedPointCommand
|
public void prepareClickedPointCommand(Point2D point)
mouseClickedメソッドでクリックを検出したときに、CLICKEDPOINTコマンドを作成し、
ExecCommand.execメソッドを呼んでコマンドを実行する。
(注)現在のところ図形をペーストする前にペースト位置を指定するために使用している。
|
mouseEventCompleted
|
public boolean mouseEventCompleted()
∙ mousePressed, mouseDragged, mouseReleased, mouseClickedの一連の動作が完了したか否かを問い合わせるメソッド。
∙ MousePositionLSとSelectionLSから呼ばれる。
|
allMouseEvent
Completed
|
public boolean allMouseEventCompleted()
∙ ListenerPanelに登録されているmouseListener, mouseMotionListenerをインプリメントしたクラスのmousePressed,
mouseDragged, mouseReleased, mouseClickedの一連の動作が完了したか否かを問い合わせるメソッド。
=>
ポップアップメニューの起動
|