DragTrackerドラッグトレース
2221 ワード
DragTrackerインタフェースは、gefでマウスまたはキーボードのドラッグ操作を追跡するためのインタフェースです.
それ自体がToolを継承し、toolはgefの典型的なSelection層の産物であり、ビジネスプロセスから言えば.ユーザ操作の第1部は,どのノードを選択し,どの要求を送信し,それに対応するものを得るかである.これに対応するのはgefのtools,request,policiesである.
DragTrackerは、選択した後にドラッグ関連操作を行うインタフェースを制御します.ドラッグに関連するほとんどの操作は、このインタフェースから継承されます.
実装クラスは次のとおりです.
ConnectionDragCreationTool
ConnectionEndpointTracker
MarqueeDragTracker
SelectEditPartTracker
DeselectAllTracker
DragEditPartsTracker
DragTreeItemsTracker
SingleSelectionTracker
SimpleDragTracker
ResizeTracker
RulerDragTracker
上記の実装クラスは、私もよく見ていませんが、DragEditPartsTrackerに注目しました.これはgefグラフィックインタフェースのドラッグに関連する実装クラスだからです.
AbstractGraphicalEditPartクラスには、DragTrackerオブジェクトを取得するためのgetDragTracker(Request request)メソッドがあります.デフォルトではDragEditPartsTrackerオブジェクトが直接newされています.
この方法の少しは、DragTrackerを直接newしたことであり、私たちが自分のDragTrackerを再実現したいのは簡単なことであることを示しています.
このコードが実装された場合、policiesで受信されるのはMoveリクエストです.
XYLayoutEditPolicyのメソッドを書き換え、コンポーネントを特殊に処理します.
それ自体がToolを継承し、toolはgefの典型的なSelection層の産物であり、ビジネスプロセスから言えば.ユーザ操作の第1部は,どのノードを選択し,どの要求を送信し,それに対応するものを得るかである.これに対応するのはgefのtools,request,policiesである.
DragTrackerは、選択した後にドラッグ関連操作を行うインタフェースを制御します.ドラッグに関連するほとんどの操作は、このインタフェースから継承されます.
実装クラスは次のとおりです.
ConnectionDragCreationTool
ConnectionEndpointTracker
MarqueeDragTracker
SelectEditPartTracker
DeselectAllTracker
DragEditPartsTracker
DragTreeItemsTracker
SingleSelectionTracker
SimpleDragTracker
ResizeTracker
RulerDragTracker
上記の実装クラスは、私もよく見ていませんが、DragEditPartsTrackerに注目しました.これはgefグラフィックインタフェースのドラッグに関連する実装クラスだからです.
AbstractGraphicalEditPartクラスには、DragTrackerオブジェクトを取得するためのgetDragTracker(Request request)メソッドがあります.デフォルトではDragEditPartsTrackerオブジェクトが直接newされています.
public DragTracker getDragTracker(Request request) {
return new org.eclipse.gef.tools.DragEditPartsTracker(this);
}
この方法の少しは、DragTrackerを直接newしたことであり、私たちが自分のDragTrackerを再実現したいのは簡単なことであることを示しています.
このコードが実装された場合、policiesで受信されるのはMoveリクエストです.
@Override
public DragTracker getDragTracker(Request request)
{
return new org.eclipse.gef.tools.DragEditPartsTracker(this){
/* (non-Javadoc)
* @see org.eclipse.gef.tools.DragEditPartsTracker#isMove()
*/
@Override
protected boolean isMove()
{
return true;
}
};
}
XYLayoutEditPolicyのメソッドを書き換え、コンポーネントを特殊に処理します.
@Override
protected Command getChangeConstraintCommand(
ChangeBoundsRequest request)
{
request.getEditParts().clear();
request.setEditParts(getHost());
return getHost().getParent().getCommand(request);
}