0

パレットから1回のドラッグアンドドロップで2つの図を作成するのが好きです。つまり、1回のドラッグアンドドロップで、2つの図を作成する必要があります。両方とも別々のEditPartクラスとModelクラスがあります。

前もって感謝します

4

1 に答える 1

2

これを実現するには複数の方法があります。最も簡単な方法は、creationFactoryが配列またはオブジェクトのリストを返すようにすることです。次に、あなたの中で

protected Command getCreateCommand(final CreateRequest request) {
   if (request.getNewObject() instanceof List<?>/Object[]) {
     ...
   }
}

または、CreationToolをサブクラス化して、作成ファクトリのリストを作成する方法もあります。次に、カスタムリクエストタイプを作成します。たとえば、

public class MultiCreateRequest extends Request {
    ...    
}

そして、その場合を処理するgetCommand(Request request)ディスパッチメソッドをオーバーライドします。

public Command getCommand(Request request) {
   if (REQ_MULTI_CREATE.equals(request.getType()))
      return getMultiCreateCommand((MultiCreateRequest) request);
}

作成ツールをサブクラス化するときは、次の点に注意する必要があります。

Constructor
createTargetRequest() (return MultiCreateRequest)
getCommandName() (return REQ_MULTI_CREATE)
getCreateRequest() (specify)
selectAddedObject(EditPartViewer viewer) (to select all created that way objects)
updateTargetRequest() (specify)

ああ、私は実際にアイデアを思いついた。TargetingToolをサブクラス化する新しいツールを作成することは、CreationToolをサブクラス化するよりも優れたアイデアである。代わりに、実装をコピーして(実際には簡単です)、必要に応じて変更することができます。

于 2012-08-23T12:59:13.383 に答える