Version: 2019.1
イベントタイプリファレンス
Bindings

ビルトインコントロール

UIElements には以下の標準コントロールが組み込まれています。

  • ボタン
  • コンテキストメニュー
  • エディターテキストフィールド
  • ラベル
  • スクロールビュー
  • テキストフィールド
  • トグルボタン

Contextual menus

Contextual menus can present a set of choices or actions to the user, depending on the context. This context is usually the current selection, but the context can be anything.

ここでは、コンテキストメニューを追加する方法を示し、コールバックを説明し、ユーザーの選択に応答する方法を説明します。

Enabling contextual menus

To enable contextual menus, attach the ContextualMenuManipulator manipulator to a visual element. This manipulator will display a contextual menu after either a right button mouse up event, or a menu key up event. The ContextualMenuManipulator manipulator also adds a callback that responds to a ContextualMenuPopulateEvent. The following code example shows how to do this:

void InstallManipulator(VisualElement element)
{
    ContextualMenuManipulator m = new ContextualMenuManipulator(MyDelegate);
    m.target = element;
}

void MyDelegate(ContextualMenuPopulateEvent event)
{
    // event.menu を変更
    event.menu.AppendAction("Properties", DisplayProperties, DropdownMenu.MenuAction.AlwaysEnabled);
}

void DisplayProperties(DropdownMenu.MenuAction menuItem)
{
    // ...
}

The callback given to the ContextualMenuManipulator constructor will be invoked last to allow children elements to populate the menu.

Internally the manipulator sends a ContextualMenuPopulateEvent event that is propagated to the target element hierarchy, along the propagation path: from the root of the visual tree to the event target, then back up the visual tree to the root. Along the propagation path, the elements with a callback for the ContextualMenuPopulateEvent event can add, remove, or modify items in the contextual menu.

ユーザーの選択に応答する

要素が ContextualMenuPopulateEvent を受け取ると、DropdownMenu.InsertAction()DropdownMenu.AppendAction() のいずれかを呼び出すことによって、メニュー項目をコンテキストメニューに加えます。

これらの関数はそれぞれ、パラメーターとして 2 つのコールバックをとります。最初のコールバックは、ユーザーがメニューの項目を選択したときに実行されます。2 番目のコールバックは、メニューを表示する前に実行されます。また、2 番目のコールバックはメニュー項目が有効かどうかをチェックします。

それらのコールバックは両方とも MenuAction をパラメーターとして受け取ります。MenuAction はメニュー項目を表し、以下のような便利なプロパティーを持ちます。

  • MenuAction.userData には、AppendAction()InsertAction() によって使用された可能性のあるユーザーデータへの参照が含まれます。
  • MenuAction.eventInfo には、コンテキストメニューの表示をトリガーしたイベントに関する情報が含まれます。イベントへ応答するアクションの MenuAction.eventInfoを使用してください。例えば、マウスの位置を使用して、選択したコンテキストメニュー項目に基づいて、オブジェクトを作成し配置することができます。

イベントタイプリファレンス
Bindings