Using ToolWindowManager

To get a new instance of ToolWindowManager

Use the following :
ToolWindowManager twManager = new MyDoggyToolWindowManager(...);

To register a ToolWindow

Use the following :
ToolWindowManager twManager = new MyDoggyToolWindowManager(...);
ToolWindow debugTool = twManager.registerToolWindow(
       "Debug",               // Tool Window identifier
       "Debug Tool",          // Tool Window Title
       debugIcon,             // Tool Window Icon
       debugComponent,        // Tool Window component
       ToolWindowAnchor.LEFT  // Tool Window anchor
);

To unregister a ToolWindow

Use the following :
ToolWindowManager twManager = new MyDoggyToolWindowManager(...);
twManager.unregisterToolWindow("Debug");

To add a ToolWindow's Alias

Use the following :
ToolWindowManager twManager = new MyDoggyToolWindowManager(...);
Object debugToolAlias = new DebugToolAlias();
twManager.addAlias(debugTool, debugToolAlias);

Using ToolWindowManagerDescriptor

ToolWindowManagerDescriptor

To obtain the instance of the ToolWindowManagerDescriptor for a specific ToolWindowManager use the following:


ToolWindowManagerDescriptor descriptor = twManager.getToolWindowManagerDescriptor();

ToolWindowManagerDescriptor - PushAwayMode

After you have obtained an instance of the ToolWindowManagerDescriptor for a specific ToolWindowManager use the following to change to PushAwayMode:

                    
ToolWindowManagerDescriptor descriptor = twManager.getToolWindowManagerDescriptor();
descriptor.setPushAwayMode(PushAwayMode.MOST_RECENT);

To retrieve the current PushAwayMode use the following:

ToolWindowManagerDescriptor descriptor = twManager.getToolWindowManagerDescriptor();
PushAwayMode pushAwayMode = descriptor.getPushAwayMode();

ToolWindowManagerDescriptor - Corner Component

After you have obtained an instance of the ToolWindowManagerDescriptor for a specific ToolWindowManager use the following to set a corner component:

ToolWindowManagerDescriptor descriptor = twManager.getToolWindowManagerDescriptor();
descriptor.setCornerComponent(
                    ToolWindowManagerDescriptor.Corner.NORD_WEST,
                    new JLabel("NW"));

Using PersistenceDelegate

PersistenceDelegate

To obtain the instance of the PersistenceDelegate for a specific ToolWindowManager use the following:

PersistenceDelegate pstDelegate = twManager.getPersistenceDelegate();

PersistenceDelegate - Store Workspace

After you have obtained an instance of the PersistenceDelegate for a specific ToolWindowManager use the following to store the workspace:

PersistenceDelegate pstDelegate = twManager.getPersistenceDelegate();
try {
    FileOutputStream output = new FileOutputStream("workspace.xml");
    twManager.getPersistenceDelegate().save(output);
    output.close();
} catch (Exception e) {
    e.printStackTrace();
}

PersistenceDelegate - Apply stored Workspace

After you have obtained an instance of the PersistenceDelegate for a specific ToolWindowManager use the following to apply a saved workspace to the current workspace:

PersistenceDelegate pstDelegate = twManager.getPersistenceDelegate();
try {
    FileInputStream inputStream = new FileInputStream("workspace.xml");
    pstDelegate.apply(inputStream);
    inputStream.close();
} catch (Exception e1) {
    e1.printStackTrace();
}

Using merge(InputStream, MergePolicy) method, you can decide the method's behaviour relative to the tools already visible when the method is called.

PersistenceDelegate pstDelegate = twManager.getPersistenceDelegate();
try {
    FileInputStream inputStream = new FileInputStream("workspace.xml");
    pstDelegate.merge(
                    inputStream,
                    PersistenceDelegate.MergePolicy.RESET);
    inputStream.close();
} catch (Exception e1) {
    e1.printStackTrace();
}