マンハッタンルーター的な動作をするGMFのルーター

「マンハッタンルーター的な動作をするGMFのルーター」の編集履歴(バックアップ)一覧はこちら

マンハッタンルーター的な動作をするGMFのルーター」(2008/12/17 (水) 17:12:41) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

マンハッタンルーター的な動作をするGMFのルーター コネクションのEditPartにインストールされるポリシーはルータによる。 ルーターが OrthogonalRouter であれば、ConnectionLineSegEditPolicy がインストールされる。 マンハッタンルーター的な動きをするルーターは OrthogonalRouter のサブクラス。 org.eclipse.gmf.runtime.diagram.ui.editparts.ConnectionEditPart private void installBendpointEditPolicy() { if (getConnectionFigure().getConnectionRouter() instanceof ForestRouter) { installEditPolicy(EditPolicy.CONNECTION_BENDPOINTS_ROLE, new TreeConnectionBendpointEditPolicy()); } else if (getConnectionFigure().getConnectionRouter() instanceof OrthogonalRouter) { installEditPolicy(EditPolicy.CONNECTION_BENDPOINTS_ROLE, new ConnectionLineSegEditPolicy()); } else { installEditPolicy(EditPolicy.CONNECTION_BENDPOINTS_ROLE, new ConnectionBendpointEditPolicy()); } EditPartUtil.synchronizeRunnableToMainThread(this, new Runnable() { public void run() { if (getConnectionFigure().getConnectionRouter() instanceof ForestRouter) { getConnectionFigure().setCursor(Cursors.CURSOR_SEG_MOVE); } else if (getConnectionFigure().getConnectionRouter() instanceof OrthogonalRouter) { getConnectionFigure().setCursor(Cursors.CURSOR_SEG_MOVE); } else { getConnectionFigure().setCursor(Cursors.CURSOR_SEG_ADD); } }; }); ConnectionLineSegEditPolicy は LineMode が LineMode.ORTHOGONAL_FREE なので showSourceFeedback は、結局 showMoveLineSegFeedback((BendpointRequest) request); か showMoveOrthogonalBenspointFeedback((BendpointRequest) request); のどちらかが呼ばれる。 ラインをドラッグすると showMoveLineSegFeedback 、ベンドポイントをドラッグすると showMoveOrthogonalBenspointFeedback となる。 org.eclipse.gmf.runtime.gef.ui.internal.editpolicies.ConnectionBendpointEditPolicy public void showSourceFeedback(Request request) { if (getLineSegMode() != LineMode.OBLIQUE) { if (REQ_CREATE_BENDPOINT.equals(request.getType())) { showMoveLineSegFeedback((BendpointRequest) request); } else if (REQ_MOVE_BENDPOINT.equals(request.getType())) { showMoveOrthogonalBenspointFeedback((BendpointRequest) request); } } else { if (REQ_MOVE_BENDPOINT.equals(request.getType())) showMoveBendpointFeedback((BendpointRequest) request); else if (REQ_CREATE_BENDPOINT.equals(request.getType())) showCreateBendpointFeedback((BendpointRequest) request); } super.showSourceFeedback(request); }

表示オプション

横に並べて表示:
変化行の前後のみ表示:
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。