Layer Right Click Popup Menus

A walkthrough is available to show how to implement contextual menus with layers.

Customize Layer Popup Actions

Create Custom Actions

Actions of type java.swing.Action or com.interactive.intviewerapi.layers.actions.LayerAction can be added to the popup menu. Implementations of com.interactive.intviewerapi.layers.actions.LayerAction will be provided the layer and point where the user clicked.

public class CustomLayerAction extends AbstractLayerAction {
    public CustomLayerAction() {
         super("Custom Action");
    }
  @Override
  public void performAction(ILayer2D layer, int x, int y) {
    // do stuff here
  }
}

Layer Lookup

Layers are names are resolved using the ILayer2D.getType method. The default implementation of this method returns the simple name of the implementation class.

Add action to layer

To add an action to a layer type name and the full path to the action class should be specified in the layer.xml of the plugin.

For a Seismic layer in a XSection window (ISeismicLayer in IXSectionWindow)

<folder name="LayerActions">
  <folder name="ViewerSeismicLayer">
    <file name="org-yourpackage-CustomLayerAction.instance">
      <attr name="position" intvalue="150"/>
    </file>
  </folder>
</folder>

For a Horizon layer in a XSection window (IHorizonLayer in IXSectionWindow)

<folder name="LayerActions">
  <folder name="ViewerHorizonLayer">
    <file name="org-yourpackage-CustomLayerAction.instance">
      <attr name="position" intvalue="150"/>
    </file>
  </folder>
</folder>

Remove action from layer

Use the _hidden extension to remove an action from a layer popup menu.

<folder name="LayerActions">
  <folder name="ViewerMapHorizonLayer">
    <file name="com-interactive-intviewer-control-BroadcastSelectedPointAction.instance_hidden">
      <attr name="position" intvalue="150"/>
    </file>
  </folder>
</folder>

Separator

It is also possible to add a bit of organization to the popup menu by adding separators.

<folder name="LayerActions">
  <folder name="ViewerMapHorizonLayer">
    <file name="com-interactive-intviewer-control-LayerEditorAction.instance">
      <attr name="position" intvalue="100"/>
    </file>
    <file name="com-interactive-intviewer-control-BroadcastSelectedPointAction.instance">
      <attr name="position" intvalue="110"/>
    </file>
    <file name="Separator1.instance">
      <attr name="position" intvalue="120"/>
      <attr name="instanceClass" stringvalue="javax.swing.JSeparator"/>
    </file>
    <file name="org-yourpackage-CustomLayerAction.instance">
      <attr name="position" intvalue="150"/>
    </file>
  </folder>
</folder>