Java Drawing DrawTop

Language

JP  US  UK

 

コマンド処理

 H. Jyounishi, Tokyo Japan
 

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

要旨:コマンドを定義するクラス、受け付けたコマンドを処理するオブジェクトにディスパッチするクラス、ポッポアップメニューを実行するクラスからなる。

このページで説明するクラス: Command, ExecCommand, ExecCommandUtil, ExecPopupMenu
重要事項コマンドディスパッチ一覧, CreateShapeLSの強制終了


1. 概要
クラス
説明
Command
・コマンドを定義する。
・staticメソッドは、全コマンドのコマンドId(整数)、コマンド名、コマンドガイダンスなどの設定を行なう。
ExecCommand
・コマンドの分岐処理を行う。
ExecCommandUtil ・ExecCommandで使うメソッドを集めたクラス。
ExecPopuuMenu
・マウス右ボタンを押したときに、押した場所に応じたポップアップメニューを表示する。


2. Commandクラス 戻る=>page top
・コンストラクタによりコマンドオブジェクトを作成する。

このコマンドオブジェクトをExecCommand.execメソッドに渡すと、 execメソッドでコマンドディスパッチを行い実行コードを呼び出す。

・コマンドIdを表すstatic 整数値(commandId)の一覧を定義する。コマンドIdに対するコマンド名(commandString)も定義する。
・各コマンドのガイダンステキストを定義する。キーはcommandId。
・コマンドの呼び出し元を表すstatic整数値(callFrom)を定義する。その文字列表現(callFromString)も定義する。
・動作モードを表すstatic整数値(mode)を定義する。その文字列表現(modeString)も定義する。

フィールド
説明
commandId
int commandId
コマンドId
callFrom
int callFrom
コマンドの呼び出し元
params
Object[] params
コマンドパラメータ

フィールド(static)
説明
NEW, OPEN,
SAVE
, SAVEAS

public final static int NEW: 新規ファイル.
public final static int OPEN: ファイルオープン
public final static int SAVE:ファイルセーブ
public final static int SAVEAS: 名前をつけてセーブ
PAGE,
NEXT_PAGE
,
PREVIOUS_PAGE,
LAST_PAGE,
TOP_PAGE
INSERT_NEW_PAGE,
DELETE_PAGE
,
PAGE_SETUP,
PAGE_LAYOUT

public final static int PAGE: ページ
public final static int NEXT_PAGE: 次のページを表示
public final static int PREVIOUS_PAGE: 前のページを表示
public final static int LAST_PAGE: 最後のページを表示
public final static int TOP_PAGE: 先頭のページを表示
public final static int INSERT_NEW_PAGE: 新しいページを挿入
public final static int DELETE_PAGE: 表示されているページを削除
public final static int PAGE_SETUP: ページのフォーマット(サイズ、向きなど)を設定する。
public final static int PAGE_LAYOUT: ページのレイアウトを表示、変更する。
PRINT, EXIT
public final static int PRINT: 印刷する
public final static int EXIT: 終了
EDIT, CUT, COPY,
PASTE, DEL, SELECT_ALL

public final static int EDIT: 編集
public final static int CUT: 切り取り (図形/テキスト)
public final static int COPY: コピー (図形/テキスト)
public final static int PASTE: 貼り付け (図形/テキスト)
public final static int DEL: 削除 (図形/テキスト)
public final static int SELECT_ALL: 全ての図形を選択
UNDO, REDO
public final static int UNDO: 元へ戻す
public final static int REDO: 再実行
CLICKEDPOINT, SELECTION
public final static int CLICKEDPOINT: キャンバスをクリック
public final static int SELECTION: 図形選択
SHAPE, TEXT_BOX,
RECTANGLE,
ROUND_RECTANGLE
,
ELLIPSE, IMAGE,
COMPONENT_SHAPE

public final static int SHAPE: 図形作成
public final static int TEXT_BOX: テキストボックス作成
public final static int RECTANGLE: 矩形作成
public final static int ROUND_RECTANGLE: 丸み付き矩形作成
public final static int ELLIPSE: 楕円/円作成
public final static int IMAGE: 画像作成
public final static int COMPONENT_SHAPE: 図形ライブラリィの図形を作成
LINE,
ARROW
,
DOUBLE_ARROW
,
POLYLINE,
CUBIC_CURVE
,
GENERAL_CURVE
,
AUTO_SHAPE_FIRST,
AUTO_SHAPE_LAST

public final static int LINE: 直線の作成
public final static int ARROW: 矢印線の作成
public final static int DOUBLE_ARROW: 両端矢印線の作成
public final static int POLYLINE: 折れ線の作成
public final static int CUBIC_CURVE: 区分的三次曲線(スプライン)の作成
public final static int GENERAL_CURVE: 一般曲線の作成
public final static int AUTO_SHAPE_FIRST: 図形作成コマンドの最初の番号
public final static int AUTO_SHAPE_LAST: 図形作成コマンドの最後の番号
AUX,
CENTER_LINE,
LINE_BISECTOR,
ANGLE_BISECTOR
public final static int AUX:
public final static int CENTER_LINE:
public final static int LINE_BISECTOR:
public final static int ANGLE_BISECTOR:
LIB public final static int LIB: 図形ライブラリィの表示、登録、削除
MOVE,
RESIZE
,
MOVE_ENDPT

public final static int MOVE: 図形の移動
public final static int RESIZE: 図形のリサイズ
public final static int MOVE_ENDPT: 直線/折れ線/曲線の端点を移動する。
UTIL,
ADD_TEXT_BOX,
TRANSLATE,
ROTATE, FLIP,
CUT_SHAPE,
CONNECT_CURVES

public final static int UTIL: ユーティリティ
public final static int ADD_TEXT_BOX: テキストボックスを図形に追加
public final static int TRANSLATE: 図形の平行移動
public final static int ROTATE: 図形の回転移動
public final static int FLIP: 図形の鏡映変換.
public final static int CUT_SHAPE: 図形の切断
public final static int CONNECT_CURVES: 曲線の接続
MODIFY_SHAPE,
MOVE_POINT, MOVE_EDGE,
ADD_POINT,
DELETE_POINT

public final static int MODIFY_SHAPE: 図形の変形
public final static int MOVE_POINT: 折れ線/区分的三次曲線の節点移動
public final static int MOVE_EDGE: 折れ線の線分移動
public final static int ADD_POINT: 折れ線/区分的三次曲線に節点を追加
public final static int DELETE_POINT: 折れ線/区分的三次曲線の節点を削除
SETTING, AUTO_ALIGN, ENABLE_CONNECTOR, FREE_DIRECTION, KEEP_XY_DIRECTION,
KEEP_DIRECTION,
TO_NEAREST_PT,
DRAW_NODE_POINTS

public final static int SETTING: 条件パラメータを設定
public final static int AUTO_ALIGN: 自動整列機能をオンにする
public final static int ENABLE_CONNECTOR: コネクター機能をオンにする。
public final static int FREE_DIRECTION: ターゲット図形が移動、リサイズされたときに、コネクターは自由に方向を変えて追随する。
public final static int KEEP_XY_DIRECTION: x, y方向コネクターは方向を変えずに追随する。
public final static int KEEP_DIRECTION:
public final static int TO_NEAREST_PT:
public final static int DRAW_NODE_POINTS: 折れ線/区分的三次曲線の節点を表示する
SHAPE_FORMAT,
DRAW_PANEL_INFORMATION

public final static int SHAPE_FORMAT: ダイアログで図形フォーマット、データを表示する。
public final static int DRAW_PANEL_INFORMATION: ダイアログで表示パネル上の図形、リスナーの一覧を表示する。
FONT, FONT_FAMILY, FONT_SIZE, BOLD, ITALIC, UNDERLINE,
SUBSCRIPT,
SUPERSCRIPT
,
FONT_COLOR

public final static int FONT: フォント属性を表示する。
public final static int FONT_FAMILY: フォントの種類
public final static int FONT_SIZE: フォントサイズ
public final static int BOLD: 細字/太字
public final static int ITALIC: イタリック
public final static int UNDERLINE: アンダーライン
public final static int SUBSCRIPT: 下付き
public final static int SUPERSCRIPT: 上付き
public final static int FONT_COLOR: フォントの色
TEXTBOX_LAYOUT public final static int TEXTBOX_LAYOUT: テキストボックスのレイアウト(余白マージン、ライン幅)
TEXT_ALIGN,
TEXT_ALIGN_LEFT,
TEXT_ALIGN_CENTER,
TEXT_ALIGN_RIGHT

public final static int TEXT_ALIGN: テキストの配置
public final static int TEXT_ALIGN_LEFT:左寄せ
public final static int TEXT_ALIGN_CENTER:中央寄せ
public final static int TEXT_ALIGN_RIGHT: 右寄せ
FILL_COLOR,
LINE_COLOR,
LINE_WIDTH,
LINE_STROKE,
ARROW_STYLE

public final static int FILL_COLOR: 図形の塗りつぶし色
public final static int LINE_COLOR: 境界線の色
public final static int LINE_WIDTH: 境界線の幅
public final static int LINE_STROKE: 境界線の線種(実線、点線...))
public final static int ARROW_STYLE: 矢印のスタイル(形、片側/両側)
Z_ORDER, MOVE_TO_FRONT, MOVE_TO_BACK, MOVE_FORWARD, MOVE_BACKWARD public final static int Z_ORDER: 図形のz方向順番
public final static int MOVE_TO_FRONT: 前面へ移動
public final static int MOVE_TO_BACK: 背面に移動
public final static int MOVE_FORWARD: 前方に移動
public final static int MOVE_BACKWARD: 後方へ移動
ALIGN,
ALIGN_LEFT,
ALIGN_CENTER,
ALIGN_RIGHT,
ALIGN_TOP,
ALIGN_MIDDLE,
ALIGN_BOTTOM

public final static int ALIGN: 図形の配置
public final static int ALIGN_LEFT: 左寄せ
public final static int ALIGN_CENTER: 中央寄せ
public final static int ALIGN_RIGHT: 右寄せ
public final static int ALIGN_TOP: 上寄せ
public final static int ALIGN_MIDDLE: 中寄せ
public final static int ALIGN_BOTTOM:下寄せ
GROUP, UNGROUP
public final static int GROUP: 図形のグループ化
public final static int UNGROUP:グループ解除
ZOOM, ZOOM_TO
public final static int ZOOM: 倍率指定ダイアログ表示
public final static int ZOOM_TO: 倍率設定
DEBUG,
TEST,
GEOMTEST,
DRAW_BOUNDING_BOX,
DRAW_CHARACTERISTIC_PT,
DRAW_TEXTLAYOUT_BOUND
, CONNECTION_TEST
public final static int DEBUG: デバッグの種類指定
public final static int TEST: テストの種類指定
public final static int GEOMTEST: 幾何計算のテスト
public final static int DRAW_BOUNDING_BOX: 図形を囲む矩形の表示
public final static int DRAW_CHARACTERISTIC_PT: 図形の特徴点を表示
public final static int DRAW_TEXTLAYOUT_BOUND: テキストを囲む矩形を表示
public final static int CONNECTION_TEST: 接続点を表示する。
DRAWPANEL_POPUP_MENU,
SHAPE_POPUP_MENU,
GROUP_POPUP_MENU

public final static int DRAWPANEL_POPUP_MENU: 描画パネルのポップアップメニュー
public final static int SHAPE_POPUP_MENU: 図形のポップアップメニュー
public final static int GROUP_POPUP_MENU: グループ図形のポップアップメニュー
ORIGINAL_TYPE,
ENABLE_RESIZING
KEEP_ASPECT_RATIO
KEEP_LINE_DIRECTION
KEEP_CONNECTOR_CONNECTIONS
ENABLE_UNGROUPING
public final static int ORIGINAL_TYPE
public final static int ENABLE_RESIZING
public final static int KEEP_ASPECT_RATIO
public final static int KEEP_LINE_DIRECTION
public final static int KEEP_CONNECTOR_CONNECTIONS
public final static int ENABLE_UNGROUPING
ABORT_COMMAND
public final static int ABORT_COMMAND: コマンド実行を中止
commandString
static String[] commandString =new String[200]
上記コマンドの文字列表現を格納する配列。
NORMAL_MODE,
CREATING_MODE
MOVING_MODE,
RESIZING_MODE,
MOVING_ENDPT_MODE,
MODIFYING_SHAPE_MODE

(mode)
public static final int NORMAL_MODE=0: 通常モード
public static final int CREATING_MODE=1: 図形作成モード.
public static final int MOVING_MODE=2; 図形移動モード
public static final int RESIZING_MODE=3; リサイズモード
public static final int MOVING_ENDPT_MODE=4; 端点移動モード
public static final int MODIFYING_SHAPE_MODE=5: 図形変形モード
modeString
public static final String[] modeString=new String[10];
モードの文字列表現を格納する配列。
callFromMenu, callFromMousePositionLS, callFromSelectionLS, callFromMouseListene, callFromDialog
(callFrom)
public static final int callFromMenu
public static final int callFromMousePositionLS
public static final int callFromSelectionLS
public static final int callFromMouseListener
public static final int callFromDialog

コマンドを発行したオブジェクトの種類
callFromString
final static String[] callFromString
上記種類の文字列表現

メソッド
説明
コンストラクタ
public Command()
setAllCommandString、setAllGuidanceText、setAllModeStringメソッドを実行して初期設定を行なう。
コンストラクタ
public Command(int commandId, int callFrom, Object[] params)
引数をフィールド変数に設定しコマンドオブジェクトを作成する。
このコマンドオブジェクトをExecCommand.execメソッドに渡すと、execメソッドでコマンドディスパッチを行い実行コードを呼び出す。
getCommandId
public int getCommandId()
フィールド変数commandIdを返す。
getCallFrom
public int getCallFrom()
フィールド変数callFromを返す。
getParams
public Object[] getParams()
フィールド変数paramsを返す。
toString
public String toString()
このオブジェクトの文字列表現を返す。
setCommandString
(static)
private static void setCommandString()
次のsetCommandStringメソッドを呼んで全てのcommandIdに対しコマンド名を設定する。
setCommandString
(static)
private static void setCommandString(int commandId, String command)
commandIdのコマンドのコマンド名を設定する。
getCommandString
(static)
public static String getCommandString(int commandId)
commandIdに対するコマンド名を返す。コマンド名が定義されていなければnullを返す。
getCommandLowerString
(static)
public static String getCommandLowerString(int commandId)
getCommandStringと同様であるが、コマンド名は小文字に変換し、"_"を" "に変えて返す。
getCallFromString
(static)
public static String getCallFromString(int callFrom)
callFromに対する文字列表現を返す。文字列表現が定義されていなければnullを返す。
getModeString
(static)
public static String getModeString(int modeId)
modeIdに対するモード名を返す。
getCommandId
(static)
public static int getCommandId(String command)
コマンド名を指定してcommandIdを返す。
コマンド名は大文字、小文字を問わない。また"_"と" "は区別しない。
"TEXT BOX"、"TEXT_BOX"、"text box"、"text_box"は同じcommandIdを返す。
該当するcommandIdがないときは-1を返す。
compareStrings
(static)
public static boolean compareStrings(String str1, String str2)
" ", "_", "."の相違を無視して文字列を比較する。一致すればtrueを返す。


3. Class ExecCommand 戻る=>page top
・このクラスのexecメソッドでコマンドの分岐処理を行う。
・execメソッド以外は、コマンド実行コードを呼び出す手順を記述している。

フィールド
説明
currentCommandId
private int currentCommandId
現在実行中のコマンドIdを設定する。
previousCommandId
private int previousCommandId
一つ前に実行したコマンドIdを設定する。
activeCreateShapeLS
public CreateShapeLS activeCreateShapeLS
起動をかけられたCreateShapeLSオブジェクトを設定する。これは起動をかけられたCreateShapeLSオブジェクトを取り消すために使う。
参照=>CreateShapeLSの強制終了
clickedPoint
Point2D clickedPoint
画面をクリックしたときのクリック点を設定する。現在のところ、図形をペーストする前に画面をクリックすることによってペースト位置を指示するために使っている。SelectionLSで作成するCLICKEDPOINTコマンドで設定する。
Currently, the clickedPoint is referred to specify a paste point of selected shapes before pasting them.

メソッド
説明
exec public void exec(Command command)
・引数commandからcommandIdを取得し、コマンド分岐処理を行う。
=>コマンドディスパッチ一覧
・図形作成ボタンを押して、正常終了していない場合、そのコマンドを強制終了する。
=>CreateShapeLSの強制終了
getCurrentCommandId
public int getCurrentCommandId()
フィールド変数currentCommandIdを返す。
setCurrentCommandId
pupublic void setCurrentCommandId(int commandId)
フィールド変数currentCommandIdに引数を設定する。
getPreviousCommandId
public int getPreviousCommandId()
フィールド変数previousCommandIdを返す。
setPreviousCommandId
public void setPreviousCommandId(int commandId)
フィールド変数previousCommandIdに引数を設定する。
getClickedPoint
public Point2D getClickedPoint()
フィールド変数clickedPointを返す。

:CreateShapeLSの強制終了
(1)問題点
CreateShapeLSに起動をかけると、 CreateShapeLSをマウスリスナーとしてListenerPanelに登録する (CreateShapeLS.creatingStart)。
CreateShapeLSが正常終了すればCreateShapeLSをListenerPanelから削除する (CreateShapeLS.creatingEnd)。
図形作成ボタンを押すとCreateShapeLSに起動がかかる。この後、画面をドラッグまたはクリックして図形を作成すれば問題ないが、 いきなり他のボタンを押した場合には次のような問題が起きる。
・余分なマウスリスナーがListenerPanelに設定されているため、後続のコマンドで不要なマウスの動作を検出する恐れがある。

(2)CreateShapeLSを強制終了させる処理
・図形作成ボタンが押されたとき、ExecCommandのフィールド変数activeCreateShapeLSにCreateShapeLSをセットする。
・CreateShapeLSが終了したとき、フィールド変数ctiveCreateShapeLSをnullにする。
ExecCommandexecメソッドで コマンド分岐を行なう前にactiveCreateShapeLSをチェックする。 nullでなくかつすでに発行済の図形作成コマンドに無関係なコマンドの場合、 activeCreateShapeLSをnullにし CreateShapeLS.abortメソッドを呼ぶ。 abortメソッドではCreateShapeLS をListenerPanelから削除する。
=> こちらも参照 CreateShapeLS CreatShapeLSの深刻なエラー


4. Class ExecCommandUtil 戻る=>page top
Field
Description
containerManager
ContainerManager containerManager = ObjectTable.getContainerManager("");
drawPanel
DrawPanel drawPanel = ObjectTable.getDrawPanel("");
selectionLS SelectionLS selectionLS = ObjectTable.getSelectionLS("");

Method
Description
addTextBox public void addTextBox(ShapeContainer[] containers)
引数:
containers - ShapeContainer オブジェクト
処理:
ShapeContainer.addTextBoxメソッドを呼ぶ。undo設定を行う。
deleteTextBox public void deleteTextBox(ShapeContainer[] containers)
引数:
containers - ShapeContainer オブジェクト
処理:
ShapeContainer.deleteTextBoxメソッドを呼ぶ。undo設定を行う。
checkTextBox private int checkTextBox(ShapeContainer[] containers, String operation)
引数:
containers - ShapeContainer オブジェクト
operation - "add", "delete" など
処理:
このメソッドはこのクラスの addTextBoxdeleteTextBox メソッドから呼ばれる。containersのそれぞれが、テキストボックスを周遊するのに適切か否かをチェックする。
setFontStyle
public void setFontStyle(FontStyle fontStyle)
このメソッドからTextBox.setFontStyleメソッドを呼んでフォント属性を設定する。
引数argsはargs[0]だけが有効。
(注) このメソッドでundo設定を行なう。設定コードはUndoConstants.TEXTBOX。
setTextBoxLayout
public void setTextBoxLayout(Insets textBoxInsets, int textAlign, double lineSpace)
このメソッドからTextBox.setTextBoxLayoutメソッドを呼んでtextBoxの属性を設定する。
ContainerManager.getSelectedContainersで全ての選択されているShapeContainerを取り出し、ShapeContainer.getGroupedTextBoxesでTextBoxを取り出し、TextBox.setTextBoxLayoutメソッドを呼ぶ。
(注)このメソッドでundo設定を行なう。設定コードはUndoConstants.TEXTBOX。
moveZorder
public void moveZorder(int mode)
図形の表示レイヤーを変更する。
引数:
mode=0 - move to front(一番手前に移動)
mode=1 - move to back (一番奥に移動)
mode=2 - move foreward(ひとつ前に移動)
mode=3 - move backward(ひとつ後ろに移動)
処理:
・mode=0の場合
選択されているShapeContainerをContainerListから削除して再度追加する。ContainerListはArrayListなので、この操作によりリストの後ろにShapeContainerが移る。つまり画面の一番前面に表示される。
・mode=1の場合
mode=0と類似。削除したShapeContainerを再度追加するときにContainerListの先頭に追加する。画面の一番奥に表示される。
・mode=2の場合
ContainerListのi番目とi+1番目のShapeContainerを比較。i番目が選択されており、i+1番目が選択されていなければ、ContainerManager.swapContainersメソッドで位置を交換する。
・mode=3の場合
ContainerListのi番目とi-1番目のShapeContainerを比較。i番目が選択されており、i-1番目が選択されていなければ、ContainerManager.swapContainersメソッドで位置を交換する。
(注)このメソッドでundo設定を行なう。
align
public void align(int mode)
引数:
mode=0: align_left, 1:align_center, 2:align_right, 3:align_top, 4:align_middle, 5:align_bottom
処理:
このクラスのresizeContainerでShapeContainerを移動し整列させる。
次のgetMaxBoundingBoxで選択図形を囲むboxを取得する。
このbox(maxBox)と個々のShapeContainerを囲むbox(currentBox)を比較することにより個々のShapeContainerの移動量を求め、移動後のbox(newBox)を作成する。currentBoxとnewBoxを引数としてresizeContainerを呼び、個々のShapeContainerを移動する。
(注) このクラスのresizeContainerでundo設定を行なうので、このメソッドではundo設定は不要。


5. ExecPopupMenuクラス 戻る=>page top
(1)ポップアップメニューの表示

マウス右ボタンを押すとポップアップメニューを起動する。 単一図形の輪郭線上でボタンを押すと、 単一図形用の ShapePopupMenu、 グループ図形上でボタンを押すとグループ図形用のGroupPopupMenu、 何も無いところでボタンを押すと、表示画面用のDrawPanelPopupMenu を表示する。 DrawPanelPopupMenuは画面に表示されている図形の一覧、画面に設定されているリスナーなどを表示する。 処理手順は複雑である。

ここでは図形を右クリックした場合に、DialogOfShapeFormat (図5.1(d))のダイアログを表示するまでの処理手順を説明する。

Step1. 図形またはDrawPanel上をマウスで右クリック
SelectionLSまたはMousePositionLSから ExecPopupMenu.showを呼び出す。

Step2. ExecPopupMenu
showメソッドでポップアップメニューの表示を行う(図5.1(a)-(c))。 このために選択されたオブジェクト(図形またはDrawPanel) に対して選択可能なメニューを設定する。選択可能なオブジェクトはDrawPanel 単一図形のShapeContainer グループ図形のShapeContainer TextBoxがある。それぞれcase 0-3に分けて処理し PopupPulldownMenuを呼ぶ。

Step3. PopupPulldownMenu
createDrawPanelPopupMenucreateSingleShapePopupMenucreateGroupShapePopupMenucreateTextBoxPopupMenuのメソッドがあり、 case 0-3に従い対応するメソッドを呼び出す。

Step4. PopupMenuAction
PopupPulldownMenuのアクション処理クラス。 actionPerformedメソッドで ExecCommandへ渡すコマンド(コマンドIdはCommand.SHAPE_FORMAT)を作成し、 ExecCommand.execメソッドを呼び出す。

Step5. ExecCommand
execメソッドでcase Command.SHAPE_FORMATに分岐。DialogOfShapeFormatを呼び出し、 showDialogメソッドで DialogOfShapeFormatのダイアログを表示(図5.1(d))

=> ポップアップメニューの起動


(a)図形を選択し、
右クリック
(b)図形のテキスト領域を選択し、右クリック (c)画面を右クリック (d)DialogOfShapeFormatダイアログを表示
図5.1 ポップアップメニュー、Shape Formatダイアログ

(2)ポップアップメニューの取り出し
MenuUtilのsetDrawMenuでポップアップメニューをComponentで登録してある。 MenuUtilのgetMenuComponentでComponent名を指定すれば取り出せる。

フィールド
説明
selectedContainer
ShapeContainer selectedContainer
ポップアップメニューの対象となる選択図形。getCaseメソッドで設定。

メソッド
説明
show
public void show(MouseEvent e)
getCaseの戻り値menuTypeを見て分岐する。
・menuType=0のとき

MenuUtil.getMenuComponent でDrawPanelPopupMenuを取り出し、showMenuメソッドを呼び出す。

・menuType=1のとき

MenuUtil.getMenuComponent でShapePopupMenuを取り出し、showMenuメソッドを呼び出す。 選択図形がTextBoxを持つか、 図形の変形を許すかでメニューアイテムにsetEnabled(true/false)を設定する。

・menuType=2のとき

MenuUtil.getMenuComponent でGroupPopupMenuを取り出し、showMenuメソッドを呼び出す。

・menuType=3のとき

MenuUtil.getMenuComponentで TextBoxPopupMenuを取り出し、showMenuメソッドを呼び出す。

getCase
private int getCase()
MousePositionLSからヒットした図形の情報(MousePositionInfo)を取得しケースに分ける。
ヒットした図形はフィールド変数selectedContainerに設定する。
・ヒット図形なしの場合:戻り値0
・ヒット図形が単一図形:戻り値1
・ヒット図形がグループ図形:戻り値2


6.コマンドディスパッチ一覧 戻る=>page top
コマンド
説明
File
(NEW, OPEN, SAVE, SAVE, SAVEAS)
FileIo.fileNew, FileIo.fileOpen, FileIo.fileSave, FileIo.fileSaveAs メソッドを呼ぶ。
Page setup
(NEXT_PAGE, PREVIOUS_PAGE,
INSERT_NEW_PAGE, DELETE_PAGE,
PAGE_SETUP, PAGE_LAYOUT)
プルダウンメニューかボタンで指定される。
∙ "Page"プルダウンメニューで指定された場合

メニューアイテムはparams[0]で渡されるのでこれで分岐し、 pageManager.showNextPage, pageManager.showPreviousPage, ........., DialogOfPageSetup.showDialog, DialogOfPageLayout.showDialogを呼び出す。

∙ ボタンで指定された場合

commandIdで分岐する。

Print
(PRINT)
FileIo.printOut を呼ぶ。
Editing
(CUT, COPY, PASTE,
DELETE, SELECT_ALL)
Edit.cut, Edit.copy, Edit.paste または Edit.delete メソッドを呼ぶ。 SELECT_ALLコマンドに対してはShapeContainersetSelectedメソッドを呼んでtrueを設定。
undo, redo
(UNDO, REDO)
UndoDrawManagerundo または redo メソッドを呼ぶ。
Creating shape
(TEXT_BOX, RECTANGLE,
ROUND_RECTANGLE, ELLIPSE, LINE,
ARROW, DOUBLE_ARROW, POLYLINE,
CUBIC_CURVE, COMPONENT_SHAPE)
CreateShapeLSオブジェクトを作成し、creatingStart メソッドを呼ぶ。
=> CreateShapeLS 制御フロー, CreatShapeLSの深刻なエラー
Component library
(LIB)
ComponentLibDialog を作成し、showDialog メソッドを呼ぶ。
Moving/Resizing shape
(MOVE, RESIZE)
他のコマンドと異なり、これらのコマンドはSelectionLS(図形選択オブジェクト)の prepareMoveResizeCommand メソッドから発行される。
またリサイズコマンドは ShapeFormatAction で図形の位置、サイズを指定することで発行される。この場合はConnectionUtilオブジェクトのresizeContainer メソッドを呼ぶ。
Add text box/Delete text box/
Manipulating shape

(ADD_TEXT_BOX, DELETE_TEXT_BOX,
TRANSLATE, ROTATE, FLIP,
MODIFY_SHAPE, CUT_SHAPE,
CONNECT_CURVES)
次のメソッドを呼ぶ。
∙ ADD_TEXT_BOX: ExecCommandUtil.addTextBox を通してShapeContainer.addTextBox メソッドを呼ぶ。
∙ DELETE_TEXT_BOX: ExecCommandUtil.deleteTextBox を通して ShapeContainer.deleteTextBox メソッドを呼ぶ。
∙ TRANSLATE: Translate オブジェクトを作成してshowDialog メソッドを呼ぶ。
∙ ROTATE: Rotate オブジェクトを作成して showDialog メソッドを呼ぶ。
∙ FLIP: Flip オブジェクトを作成して showDialog メソッドを呼ぶ。
∙ MODIFY_SHAPE: ModifyShape オブジェクトを作成して showDialog メソッドを呼ぶ。
∙ CUT_SHAPE: CutShape オブジェクトを作成してe
showDialog メソッドを呼ぶ。
∙ CONNECT_CURVES: ConnectCurves オブジェクトを作成して showDialog メソッドを呼ぶ。
Setting
(AUTO_ALIGN,
ENABLE_CONNECTOR,
DRAW_NODE_POINTS)
Drawparametersの対応するフィールドに値を設定する。
Information
(SHAPE_FORMAT,
DRAW_PANEL_INFORMATION)
次のメソッドを呼ぶ。
∙ SHAPE_FORMAT: DialogOfShapeFormat オブジェクトを作成して showDialog メソッドを呼ぶ。
∙ DRAW_PANEL_INFORMATION: DialogOfShapeFormat オブジェクトを作成してshowDialog メソッドを呼ぶ。
Font attribute
(FONT_FAMILY, FONT_SIZE,
FONT_COLOR, BOLD, ITALIC,
UNDERLINE, SUBSCRIPT/SUPERSCRIPT )
FontStyleオブジェクトのスタティックメソッド getFontStyleFromMenu でフォントメニューの状態から FontStyleオブジェクトを作成し、ExecCommandUtil.setFontStyle メソッドを呼ぶ。

Text box
(TEXTBOX_LAYOUT, TEXT_ALIGN)
ExecCommandUtil.setTextBoxLayout メソッドを呼ぶ。
Shape attribute
(FILL_COLOR, LINE_COLOR, LINE_WIDTH,
LINE_STROKE, ARROW_STYLE)
ShapeContainerの対応するメソッドを呼ぶ。setFillColor, setLineStroke 等。

Z-order
(MOVE_TO_FRONT, MOVE_TO_BACK,
MOVE_FORWARD, MOVE_BACKWARD)
ExecCommandUtil.moveZorderメソッドを呼ぶ。
Align
(ALIGN_LEFT, ALIGN_CENTER,
ALIGN_RIGHT, ALIGN_TOP,
ALIGN_MIDDLE, ALIGN_BOTTOM)
ExecCommandUtil.align メソッドを呼ぶ。
Group
(GROUP, UNGROUP)
∙ GROUP: ContainerManagergroup メソッドを呼ぶ。
∙ UNGROUP: ContainerManagerungroup メソッドを呼ぶ。
Zoom
(ZOOM, ZOOM_TO)
∙ ZOOM: DialogOfZoom オブジェクトを作成してshowDialog メソッドを呼ぶ。
∙ ZOOM_TO: ViewUtilzoom メソッドを呼んで倍率を設定し画面をその倍率で再表示する。


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