The INTViewer desktop is loaded at startup. It contains menu items, toolbar and windows. Notifications are displayed on the bottom right of the desktop.
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)
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));
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.
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.
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);
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).
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>
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);
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");
Contextual menu items in nodes can be customized.
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);