Customizing Menu Items in Nodes
Data Nodes
Data nodes are displayed in the "Data" top component accessible from the Window -> Data menu item.
To add an action to a node displayed in the "Data" or "File Explorer" top components, extend the com.interactive.intviewerapi.data.AbstractDataNodeAction class.
ATTACHDEVIATIONTOWELLDATAACTION.JAVA
package com.interactive.intviewer.well.data.action;
import com.interactive.intviewer.util.LayerPropertiesUtil;
import com.interactive.intviewer.well.data.editor.AttachDeviationFileEditor;
import com.interactive.intviewerapi.data.AbstractDataNodeAction;
import com.interactive.intviewerapi.data.IData;
import com.interactive.intviewerapi.data.well.ITrajectoryReader;
import com.interactive.intviewerapi.data.well.IWellData;
import java.util.logging.Logger;
import javax.swing.Action;
public class AttachDeviationToWellDataAction extends AbstractDataNodeAction {
private static final Logger logger = Logger.getLogger(AttachDeviationToWellDataAction.class.getName());
public AttachDeviationToWellDataAction() {
super("Attach Deviation File ...");
}
@Override
public Action toAction(Object object, int x, int y) {
if (object == null || !(object instanceof IWellData)) {
return null;
}
IWellData wellData = (IWellData) object;
if (wellData.getTrajectory() != null) {
ITrajectoryReader reader = wellData.getTrajectory().select();
if (reader.getNumberOfValues() != 0) {
return null;
}
}
return super.toAction(object, x, y);
}
@Override
protected void performAction(IData object, int x, int y) {
LayerPropertiesUtil.openSinglePropertiesDialog(false, new AttachDeviationFileEditor((IWellData) object), null);
}
}
Then register this action in the layer.xml file:
LAYER.XML
<folder name="DataNodeActions">
<folder name="WellData">
<file name="com.interactive.intviewer.well.data.action.AttachDeviationToWellDataAction.instance">
<attr name="position" intvalue="400"/>
</file>
</folder>
</folder>
Window Nodes
Window nodes are displayed in the "Layers" top component accessible from the Window -> Layers menu item.
To add an action to a window node displayed in the "Layers" top component, extend the com.interactive.intviewerapi.data.AbstractViewerWindowNodeAction class.
CLOSEVIEWERWINDOWACTION.JAVA
package com.interactive.intviewer.view2d.actions;
import com.interactive.intviewerapi.windows.AbstractViewerWindow;
import com.interactive.intviewerapi.windows.AbstractViewerWindowNodeAction;
import com.interactive.intviewerapi.windows.IViewerWindow;
import java.util.logging.Logger;
import javax.swing.Action;
public class CloseViewerWindowAction extends AbstractViewerWindowNodeAction{
private static final Logger _logger = Logger.getLogger(CloseViewerWindowAction.class.getName());
public CloseViewerWindowAction() {
super("Close Window");
}
@Override
public Action toAction(Object object, int x, int y) {
IViewerWindow viewerWindow = (IViewerWindow) object;
if (!(viewerWindow instanceof AbstractViewerWindow)) {
return null;
}
return super.toAction(object, x, y);
}
@Override
protected void performAction(IViewerWindow object, int x, int y) {
CloseWindowAction.closeViewerWindow((AbstractViewerWindow) object);
}
}
Then register this action in the layer.xml file:
LAYER.XML
<folder name="ViewerWindowNodeActions">
<folder name="XSectionLayeredWindow">
<file name="com-interactive-intviewer-view2d-actions-CloseViewerWindowAction.instance">
<attr name="position" intvalue="700"/>
</file>
</folder>
</folder>
Visual Nodes
Visual nodes are displayed in the "Layers" top component accessible from the Window -> Layers menu item.
To add an action to a visual node displayed in the "Layers" top component, extend the com.interactive.intviewerapi.data.AbstractVisualNodeAction class.
MOVETOPVISUALACTION.JAVA
package com.interactive.intviewer.control;
import com.interactive.intviewerapi.AbstractVisualNodeAction;
import com.interactive.intviewerapi.IMovableVisual;
import com.interactive.intviewerapi.IVisual;
import javax.swing.Action;
public class MoveTopVisualAction extends AbstractVisualNodeAction {
public MoveTopVisualAction() {
super("Move to Top");
}
@Override
public Action toAction(final Object object, final int x, final int y) {
if (!(object instanceof IMovableVisual)) {
return null;
}
return super.toAction(object, x, y);
}
@Override
protected void performAction(IVisual object, int x, int y) {
((IMovableVisual) object).moveToTop();
}
}
Then register this action in the layer.xml file:
LAYER.XML
<folder name="VisualNodeActions">
<folder name="ViewerSeismicLayer">
<file name="com-interactive-intviewer-control-MoveTopVisualAction.instance">
<attr name="position" intvalue="700"/>
</file>
</folder>
</folder>