actions
play

Actions (Menus, Toolbars, Keyboard Shortcuts) Geertjan Wielenga - PowerPoint PPT Presentation

Actions (Menus, Toolbars, Keyboard Shortcuts) Geertjan Wielenga NetBeans Team Agenda Introduction Menus Toolbars Keyboard Shortcuts Certified Engineer Course Plugging Actions Into NetBeans Menus Toolbars Certified Engineer


  1. Actions (Menus, Toolbars, Keyboard Shortcuts) Geertjan Wielenga NetBeans Team

  2. Agenda • Introduction • Menus • Toolbars • Keyboard Shortcuts Certified Engineer Course

  3. Plugging Actions Into NetBeans Menus Toolbars Certified Engineer Course

  4. How It Works • Register an ActionListener into the NetBeans Platform's registry Certified Engineer Course

  5. How It Works • Register an ActionListener into the NetBeans Platform's registry • The NetBeans Platform finds the registration and: > creates a menu item if in “Menu” > creates a toolbar button if in “Toolbars” > creates a keyboard shortcut if in “Shortcuts” Certified Engineer Course

  6. How It Works • Register an ActionListener into the NetBeans Platform's registry • The NetBeans Platform finds the registration and: > creates a menu item if in “Menu” > creates a toolbar button if in “Toolbars” > creates a keyboard shortcut if in “Shortcuts” • Depending on how you register, you get enablement Certified Engineer Course

  7. How It Works • Register an ActionListener into the NetBeans Platform's registry • The NetBeans Platform finds the registration and: > creates a menu item if in “Menu” > creates a toolbar button if in “Toolbars” > creates a keyboard shortcut if in “Shortcuts” • Depending on how you register, you get enablement • When invoked, ActionListener performs Certified Engineer Course

  8. Plugging an Action in the Menu Bar @ActionID(category = "Protein", id = "org.mypkg.EditProteinAction") @ActionRegistration(iconBase = "org/mypkg/EditProtein.png", displayName = "#CTL_EditProteinAction") @ActionReferences({ @ActionReference(path = "Menu/File", position = 0) }) @Messages("CTL_EditProteinAction=Edit Protein") public final class EditProteinAction implements ActionListener { @Override public void actionPerformed(ActionEvent e) { // TODO implement action body } } Certified Engineer Course

  9. Plugging an Action in the Menu Bar <folder name=" Actions "> <folder name="Protein"> <file name="org-mypkg-EditProteinAction.instance"> <attr bundlevalue="org.mypkg.Bundle#CTL_EditProteinAction" name="displayName"/> <attr methodvalue="org.openide.awt.Actions.alwaysEnabled" name="instanceCreate"/> <attr name="delegate" newvalue="org.mypkg.EditProteinAction"/> <attr name="iconBase" stringvalue="org/mypkg/jxgraph-in-nb-scenario.png"/> <attr boolvalue="false" name="noIconInMenu"/> </file> </folder> </folder> <folder name=" Menu "> <folder name="File"> <file name="org-mypkg-EditProteinAction.shadow"> <attr name="originalFile" stringvalue="Actions/Protein/org-mypkg-EditProteinAction.instance"/> <attr intvalue="0" name="position"/> </file> </folder> </folder> Certified Engineer Course

  10. Plugging an Action in the Tool Bar @ActionID(category = "Protein", id = "org.mypkg.EditProteinAction") @ActionRegistration(iconBase = "org/mypkg/EditProtein.png", displayName = "#CTL_EditProteinAction") @ActionReferences({ @ActionReference(path = "Menu/File", position = 0), @ActionReference(path = "Toolbars/File", position = 0) }) @Messages("CTL_EditProteinAction=Edit Protein") public final class EditProteinAction implements ActionListener { @Override public void actionPerformed(ActionEvent e) { // TODO implement action body } } Certified Engineer Course

  11. Plugging an Action in the Tool Bar <folder name=" Actions "> <folder name="Protein"> <file name="org-mypkg-EditProteinActionListener.instance"> <attr bundlevalue="org.mypkg.Bundle#CTL_EditProteinActionListener" name="displayName"/> <attr methodvalue="org.openide.awt.Actions.alwaysEnabled" name="instanceCreate"/> <attr name="delegate" newvalue="org.mypkg.EditProteinActionListener"/> <attr name="iconBase" stringvalue="org/mypkg/briefcase_16.png"/> <attr boolvalue="false" name="noIconInMenu"/> </file> </folder> </folder> <folder name=" Toolbars "> <folder name="File"> <file name="org-mypkg-EditProteinActionListener.shadow"> <attr name="originalFile" stringvalue="Actions/Protein/org-mypkg-EditProteinActionListener.instance"/> <attr intvalue="0" name="position"/> </file> </folder> </folder> Certified Engineer Course

  12. Plugging an Action in a Node @Override public Action[] getActions(boolean context) { List<? extends Action> proteinActions = Utilities.actionsForPath("Actions/Protein"); return proteinActions.toArray(new Action[proteinActions.size()]); } Certified Engineer Course

  13. Enablement <folder name="Actions"> <folder name="Edit"> <file name="org-mypkg-EditProteinActionListener.instance"> <attr methodvalue="org.openide.awt.Actions.alwaysEnabled" name="instanceCreate"/> <attr name="delegate" newvalue="org.mypkg.EditProteinActionListener"/> <attr name="iconBase" stringvalue="org/mypkg/briefcase_16.png"/> </file> </folder> </folder> Certified Engineer Course

  14. Enablement <folder name="Actions"> <folder name="Edit"> <file name="org-mypkg-EditProteinActionListener.instance"> <attr methodvalue="org.openide.awt.Actions.alwaysEnabled" name="instanceCreate"/> <attr name="delegate" newvalue="org.mypkg.EditProteinActionListener"/> <attr name="iconBase" stringvalue="org/mypkg/briefcase_16.png"/> </file> </folder> </folder> <folder name="Actions"> <folder name="Edit"> <file name="org-mypkg-EditProteinActionListener.instance"> <attr methodvalue="org.openide.awt.Actions.context" name="instanceCreate"/> <attr name="type" stringvalue="nl.vu.domain.Protein"/> <attr methodvalue="org.openide.awt.Actions.inject" name="delegate"/> <attr name="injectable" stringvalue="org.mypkg.EditProteinActionListener"/> <attr name="selectionType" stringvalue="EXACTLY_ONE"/> <attr name="iconBase" stringvalue="org/mypkg/briefcase_16.png"/> </file> </folder> </folder> Certified Engineer Course

  15. Enablement @ActionID(category = "Edit", id = "org.mypkg.EditProteinActionListener") @ActionRegistration(iconBase = "org/mypkg/briefcase_16.png", displayName = "#CTL_EditProteinActionListener") @ActionReferences({ @ActionReference(path = "Menu/File", position = 0), @ActionReference(path = "Toolbars/File", position = 0) }) @Messages("CTL_EditProteinActionListener=Edit Protein") public final class EditProteinActionListener implements ActionListener { private Protein p; public EditProteinActionListener( Protein p ) { this.p = p; } public void actionPerformed(ActionEvent e) { JOptionPane.showMessageDialog(null, “Hello “ + p.getId); } } Certified Engineer Course

  16. Multiple Selected @ActionID(category = "Edit", id = "org.mypkg.EditProteinActionListener") @ActionRegistration(iconBase = "org/mypkg/briefcase_16.png", displayName = "#CTL_EditProteinActionListener") @ActionReferences({ @ActionReference(path = "Menu/File", position = 0), @ActionReference(path = "Toolbars/File", position = 0) }) @Messages("CTL_EditProteinActionListener=Edit Protein") public final class EditProteinActionListener implements ActionListener { private List<Protein> proteins; public EditProteinActionListener( List<Protein> proteins ) { this.proteins = proteins; } public void actionPerformed(ActionEvent e) { //Iterate through the list of proteins } } Certified Engineer Course

  17. Callback System Action ActionMap actionMap = getActionMap(); actionMap.put("cut-to-clipboard", new AbstractAction("") { @Override public void actionPerformed(ActionEvent e) { // cut something } }); associateLookup(ExplorerUtils.createLookup(em, actionMap)); See: http://wiki.netbeans.org/FaqEditorMacros Certified Engineer Course

  18. Presenters: Custom Views • Presenter.Toolbar • Presenter.Popup • Presenter.Menu Certified Engineer Course

  19. Ribbon Bar http://platform.netbeans.org/tutorials/nbm-ribbonbar.html Certified Engineer Course

  20. Summary • Menus, Toolbars, Keyboard Shortcuts • Always Enabled Action • Conditionally Enabled Action • Callback System Action • Presenters Certified Engineer Course

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend