Slide 1

Slide 1 text

IntelliJ(Plugin(։ൃͰ࣮૷ͨ͜͠ͱ androhi(at(IntelliJ(Plugin(ษڧձ(#2

Slide 2

Slide 2 text

࡞ͬͨ!Plugin • Android(Drawable(Viewer • 1,300(DL௒͑ͨ • ॳ(Android(Arsenal • ॳ(Pull(Request((shiraji(͞Μ)

Slide 3

Slide 3 text

࣮૷ͨ͜͠ͱ • ToolWindow • FactoryΫϥε • setToolbarϝιου • setContentϝιου • refresh?

Slide 4

Slide 4 text

ToolWindow)*)extensions plugin.xml ... ...

Slide 5

Slide 5 text

ToolWindow)*)ToolWindowFactory AndroidDrawableViewerToolWindowFactory public class AndroidDrawableViewerToolWindowFactory implements ToolWindowFactory { @Override public void createToolWindowContent(Project project, ToolWindow toolWindow) { DrawableViewer viewer = new DrawableViewer(project); final ContentManager contentManager = toolWindow.getContentManager(); final Content content = contentManager.getFactory().createContent(viewer, null, false); contentManager.addContent(content); } }

Slide 6

Slide 6 text

ToolWindow)*)SimpleToolWindowPanel DrawableViewer public class DrawableViewer extends SimpleToolWindowPanel implements ActionListener { public DrawableViewer(final Project project) { super(true, true); ... setToolbar(createToolbarPanel()); setContent(createContentPanel()); } ...

Slide 7

Slide 7 text

ToolWindow)ͷߏ଄

Slide 8

Slide 8 text

ToolWindow)*)setToolbar(JComponent) private JComponent createToolbarPanel() { final DefaultActionGroup actionGroup = new DefaultActionGroup(); actionGroup.add(new EditTargetResDirAction()); final ActionToolbar actionToolbar = ActionManager.getInstance().createActionToolbar( "AndroidDrawableViewer", actionGroup, true); return actionToolbar.getComponent(); }

Slide 9

Slide 9 text

ToolWindow)*)setContent(JComponent) private JScrollPane createContentPanel() { ... itemList = new JBList(panels); ... return ScrollPaneFactory.createScrollPane(itemList); }

Slide 10

Slide 10 text

ToolWindow)*)refresh? Se#ngsDialog @Override protected void doOKAction() { super.doOKAction(); ... resetContent(project); } private void resetContent(Project project) { DrawableViewer drawableViewer = new DrawableViewer(project); ContentManager contentManager = ToolWindowManager.getInstance(project) .getToolWindow(Constants.TOOL_WINDOW_ID).getContentManager(); Content content = contentManager.getFactory().createContent(drawableViewer, null, false); contentManager.removeAllContents(true); contentManager.addContent(content); } ...

Slide 11

Slide 11 text

ToolWindow)·ͱΊ • anchor(Ͱࢦఆͨ͠৔ॴʹৗறͰ͖Δίϯϙʔωϯτ • Toolbar(ͱ(Content(Ͱߏ੒͞Ε͍ͯΔ • ToolWindow(಺Λߋ৽͢Δʹ͸࠶ੜ੒͢Δ͔͠ͳ͍ʢʁʣ