NetBeansのThe Visual GC Integration Moduleをポーティングしてみる

とりあえず,ここまでできた.グラフ部分はVisualGCの部品を貼っ付けるだけみたいだし,あとは監視スレッドの生死制御を組込めば完成しそうな雰囲気.


Tool Windowの作り方はIDEA7から変わるらしく,DevKitのサンプルはオススメではないらしい.こんなコードが通なやり方なんだとさ.

public class VisualGCWindowPlugin implements ProjectComponent {
  private static final String TOOL_WINDOW_ID = "VisualGC";

  private Project _project;
  private VisualGCWindow visualGCWindow;

  public VisualGCWindowPlugin(Project project) {
    _project = project;
  }

  public void initComponent() { }
  public void disposeComponent() { }

  @NotNull
  public String getComponentName() {
    return "VisualGCWindowPlugin";
  }

  public void projectOpened() {
    visualGCWindow = new VisualGCWindow();
    PeerFactory peerFactory = PeerFactory.getInstance();
    Content content = peerFactory.getContentFactory().createContent(visualGCWindow.getRootComponent(), "", false);

    ToolWindowManager toolWindowManager = ToolWindowManager.getInstance(_project);
    ToolWindow toolWindow = toolWindowManager.registerToolWindow(TOOL_WINDOW_ID, true, ToolWindowAnchor.BOTTOM);
    toolWindow.getContentManager().addContent(content);
    toolWindow.setIcon(IconLoader.getIcon("/com/example/visualgc/icon.gif", VisualGCWindowPlugin.class));
  }

  public void projectClosed() {
    ToolWindowManager toolWindowManager = ToolWindowManager.getInstance(_project);
    toolWindowManager.unregisterToolWindow(TOOL_WINDOW_ID);
    // TODO たぶん visualGCWindow にも閉じるイベントを通知したほうがいいんだろな...
  }
}


IDEAのGUIデザイナ(というかレイアウトマネージャ)もクセを掴まないと,思い通りにレイアウトできんもんだなぁ.