4

eclipseGMFに基づいてユーザーインターフェイスを設計するためのエディターを開発しています。

これまで、パレット付きのエディターを開発してきました。ユーザーは、パレットからUI要素をドラッグアンドドロップして、キャンバス上にUIをデザインできます。これらのUI要素をグループ化する機能を実装する必要があります。

例:ユーザーは最初に要素をキャンバスにドラッグアンドドロップしてUIをデザインします。次に、UI要素のセット(ラベルやテキストボックスなど)を選択し、[グループ化]ボタンを押します。要素は自動的に破線の長方形内に配置されます。

選択したUI要素に関する情報を取得して削除し、キャンバスにグループ要素(長方形の破線)を作成して、削除した要素を挿入できるプラグインを開発する予定です。

でもどこから始めたらいいのかわからない。

そこで、GMFでプログラムでノードを作成/削除する方法を知りたいです。

関連するコードを知っている場合は、それらを共有して、いくつかの有用なリソースを教えてください。

4

2 に答える 2

1

パレットから何かをドラッグすると、次のコマンドがgmfに作成されます。要素タイプを指定し、編集部分に要素の適切なコマンドを要求する必要があります。

CreateUnspecifiedTypeRequest request = new
    CreateUnspecifiedTypeRequest(
        Collections.singletonList(EcoreElementTypes.EClass_1001),
        diagramEditPart.getDiagramPreferencesHint());

Command command = diagramEditPart.getCommand(request);
command.execute();

Object newObject = request.getNewObject(); // these are the newly created objects
于 2013-01-11T17:15:48.400 に答える
1

パレットから何かをドラッグするときに追加の要素を追加することも、遅延コマンドなどを使用して可能です。これらのコマンドは、パレット要素リクエストが作成されたときに作成されますが、最終的な位置とビューはまだわかっていません (ドロップ時のみ)。対応するビューは後で解決されます。

このメカニズムを使用する既存のコマンド クラスは、DeferredCreateConnectionViewAndElementCommandまたはDeferredSetValueCommandです。

このクラスを使用するには、リクエスト作成プロセスで、CreateViewRequest を介してビューが作成される適切な場所を見つける必要があります。このリクエストには、必要な情報 ( request.getNewObject() ) が含まれており、オブジェクトがパレットからどこかにドロップされるとすぐにビューを取得します。

詳細については、この例を参照してください: http://wiki.eclipse.org/GMF_Tutorial_Part_3

于 2013-04-29T09:14:15.577 に答える