===== Create windows =====
There are many level of windows that can be created in GroIMP, depending on the needs.
==== Basic windows ====
The most common way of creating a new window is by invoking the "createPanel" of the currently used uitoolkit (Swingtoolkit in "normal" groimp mode). The method will create a Panel, register it to a new PanelSupport, then create a new WindowSupport to manage the PanelSupport.
A simple example to create a windows in your plugin is:
public class CreateWindow {
public static Panel startPanel(Context ctx, Map params) {
GraphManager graph = ctx.getWorkbench().getRegistry().getProjectGraph();
UIToolkit ui = UIToolkit.get(ctx);
Panel p = ui.createPanel(ctx, null, params);
// Do anything on to fill the panel here
// ...
return p;
}
}
You can then register your new panel (which start a window) in the GroIMP panel menu entries with adding in your ''plugin.xml'' file:
Finally, you can customize the panel name and icon displayed in GroIMP by attributing some values in the ''plugin.properties''. /ui/panels/YOUR PANEL NAME.Name changes the name, and /ui/panels/YOUR PANEL NAME.Icon changes the icon.
In this example the panel is added to the menu entries in the _Panel_ section. Indeed, after starting GroIMP add all element of _/ui/panels_ into this menu entry. (see more on [[:GroIMP-Platform:Platform-registry-structure|GroIMP registry]]).
If you want your window to be openable from another menu than _panels_, you need to register it as a ''command''.
Example:
public class CreateWindow {
public static void startPanelFromCommand(Item item, Object information, Context context) {
GraphManager graph = context.getWorkbench().getRegistry().getProjectGraph();
UIToolkit ui = UIToolkit.get(context);
Panel p = ui.createPanel(context, null, Map.EMPTY_MAP);
// Do anything on to fill the panel here
// ...
p.show(true, null);
}
}
The window can then be added to the menu (YOUR_MENU_NAME>SUB_MENU) in the registry with:
=== Dialog Window ===
The methods ''showChoiceDialog'', ''showDialog'', ''showInputDialog'', and ''showWaitMessage'' in ''de.grogra.pf.ui.Window'' enables to open a small dialog window.
It can be open from a registry ''command''.
Example:
public static void startInputDialogWindow(Item item, Object information, Context context) {
I18NBundle thisI18NBundle = context.getWorkbench().getRegistry().getPluginDescriptor("de.grogra.plugin").getI18NBundle();
Workbench.current().getWindow().showInputDialog(
thisI18NBundle.getString ("panel.title"),
thisI18NBundle.getString ("panel.message"),
"varName");
}
=== File explorer ===
The method ''de.grogra.pf.ui.Window.chooseFile'' enables to open a file explorer that load the selected file.