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デザイナ(というかレイアウトマネージャ)もクセを掴まないと,思い通りにレイアウトできんもんだなぁ.