INTViewer APIs for the INTViewer Desktop

The INTViewer desktop is loaded at startup. It contains menu items, toolbar and windows. Notifications are displayed on the bottom right of the desktop.

Desktop Area

To get the dimensions of the desktop area not used by the top components (highlighted in red in the snapshot below), use:

   java.awt.Dimension dim = com.interactive.intviewerapi.windows.IWindowManager.Factory.getInstance().getDesktopSize();

This method is valid only in the context of the legacy FRAMES window system (see Overview of API changes in INTViewer 5.2)

Cursor

To change the cursor to an hourglass for the entire desktop:

   org.openide.windows.WindowManager.getDefault().getMainWindow().setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));

and back

    org.openide.windows.WindowManager .getDefault().getMainWindow().setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));

To change the cursor to an hourglass for only a window:

   AbstractWindow window = (AbstractWindow) win;
   window.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));

and back

   AbstractWindow window = (AbstractWindow) win;
   window.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));

Windows

To organize windows inside the INTViewer desktop, refer to the Finding and organizing windows article.

To organize top components along the INTViewer desktop, refer to the Creating and Manipulating TopComponent Windows article.

Menu Items

The INTViewer platform leverages the Netbeans menu system. Refer to the Adding a Menu Walkthrough and the Adding a Menu Item Walkthrough articles to add your own desktop menus.

Toolbars and Undo/Redo

The INTViewer platform leverages the Netbeans toolbar system. Refer to the Customizing the Toolbar Walkthrough to add your own toolbar.

INTViewer provides an API to manipulate the undo/redo stack available from the Undo and Redo buttons.

To create an action that can be undone, implement the com.interactive.intviewerapi.undoredo.IUndoRedo interface.

To post an action to the undo/redo stack, use the com.interactive.intviewerapi.undoredo.IUndoRedoManager singleton.

In this example, MyEdit implements IUndoRedo:

            MyEdit edit = new MyEdit(...);
           IUndoRedoManager undoRedoManager = IUndoRedoManager.Factory.getInstance();
           undoRedoManager.postUndoRedo(edit);

Startup

You can force the execution of an action upon startup. Just implement a NetBeans org.openide.util.actions.SystemAction and register it in the layer.xml file.

Example:

CHECKJAVASTARTUPACTION.JAVA

package com.interactive.intviewer.control;
import com.interactive.intviewer.util.JavaVersionUtil;
import com.interactive.intviewerapi.util.NotificationManager;
import java.awt.event.ActionEvent;
import org.openide.util.HelpCtx;
import org.openide.util.actions.SystemAction;
public class CheckJavaStartupAction extends SystemAction {
    @Override
    public String getName() {
        return this.getClass().getName();
    }
    @Override
    public HelpCtx getHelpCtx() {
        return HelpCtx.DEFAULT_HELP;
    }
    @Override
    public void actionPerformed(ActionEvent ae) {
        if (JavaVersionUtil.isSupported()) {
            return;
        }
        NotificationManager.getDefault().showMessageNotification("The Java Runtime currently in use is not supported", NotificationManager.WARNING, true);
    }
}

LAYER.XML

<filesystem>
    <folder name="StartupActions">
        <file name="com-interactive-intviewer-control-CheckJavaStartupAction.instance"/>
    </folder>
</filesystem>

Startup actions that are built-in can be removed using the instance_hidden syntax.

For example, the CheckJavaStartupAction startup action notifies users when their version is Java is not supported. It is plugged this way:

    <folder name="StartupActions">
        <file name="com-interactive-intviewer-startup-CheckJavaStartupAction.instance">
            <attr name="position" intvalue="400"/>
        </file>
    </folder>

It can be unplugged with this syntax:

    <folder name="StartupActions">
        <file name="com-interactive-intviewer-startup-CheckJavaStartupAction.instance_hidden" />
    </folder>

To insert code at various points of the application's lifecycle, you can also extend the org.openide.modules.ModuleInstall class from the NetBeans platform (see https://platform.netbeans.org/tutorials/nbm-runtime-container.html for an example).

Exit

You can force the execution of an action upon exit. Just implement a NetBeans org.openide.util.actions.SystemAction and register it in the layer.xml file.

CHECKBACKGROUNDTASKSEXITACTION.JAVA

package com.interactive.intviewer.control;
import com.interactive.intviewer.TaskCounter;
import com.interactive.intviewerapi.util.DialogManager;
import java.awt.event.ActionEvent;
import org.openide.util.HelpCtx;
import org.openide.util.actions.SystemAction;
public class CheckBackgroundTasksExitAction extends SystemAction {
    @Override
    public String getName() {
        return this.getClass().getName();
    }
    @Override
    public HelpCtx getHelpCtx() {
        return HelpCtx.DEFAULT_HELP;
    }
    @Override
    public void actionPerformed(ActionEvent ae) {
        if (TaskCounter.getInstance().value() > 0) {
            int result = DialogManager.getDefault().showConfirmDialog("Exiting application will terminate one or more processes.\n Are you sure you want to exit?", "Exit Application", DialogManager.YES_NO_OPTION);
            if (!(result == DialogManager.YES_OPTION)) {
                throw new IllegalStateException("Exit cancelled");
            }
        }
    }
}

LAYER.XML

<filesystem>
    <folder name="ExitActions">
        <file name="com-interactive-intviewer-control-CheckBackgroundTasksExitAction.instance">
            <attr name="position" intvalue="200"/>
        </file>
    </folder>
</filesystem>

Notifications

You can display a notification on the bottom right of the screen using com.interactive.intviewerapi.util.NotificationManager.

Example:

        NotificationManager.getDefault().showMessageNotification("The Java Runtime currently in use is not supported", NotificationManager.WARNING, true);

Status bar

You can show a message in the status bar on the bottom left of the screen using com.interactive.intviewerapi.windows.IWindowManager.

Example:

com.interactive.intviewerapi.windows.IWindowManager.Factory.getInstance().showMessage("This is my message");

Nodes

Contextual menu items in nodes can be customized.

Options

You will need to add the "Options Dialog and SPI" Module Dependency. This is a NetBeans module.

To open the Tools -> Options dialog at a specified tab:

   import org.netbeans.api.options.OptionsDisplayer;
   String path = "Gui/Desktop";
   OptionsDisplayer.getDefault().open(path);

To open the "Proxy" panel, use this NetBeans command:

OptionsDisplayer.getDefault().open("Proxy);