Add the menu bar from Eclipse in RCP

Source: Internet
Author: User

The Eclipse RCP plugin you created needs to add a menu bar and a toolbar like eclipse, which can be done in two ways: 1 through extension points and 2 by writing code in the Applicationactionbaradvisor class.

1, through the extension point implementation: Org.eclipse.ui.menus for the expansion of the menu bar, the example implementation of Eclipse in the Window menu bar part of the action


Viewsshortlistcontributionitem Source:

package Com.workflow.menu;import Java.util.arraylist;import Java.util.list;import Org.eclipse.jface.action.icontributionitem;import Org.eclipse.ui.iworkbenchwindow;import Org.eclipse.ui.platformui;import Org.eclipse.ui.actions.compoundcontributionitem;import org.eclipse.ui.actions.contributionitemfactory;/** * Add a dynamic menu item for show view * @author LWW * */public class Viewsshortlistcont Ributionitem extends Compoundcontributionitem {@Overrideprotected icontributionitem[] Getcontributionitems () {        Iworkbenchwindow window = Platformui.getworkbench (). Getactiveworkbenchwindow (); Icontributionitem item = ContributionItemFactory.VIEWS_SHORTLIST.create (window);//Create Viewshortlist List<icontrib        utionitem> menucontributionlist = new arraylist<icontributionitem> ();         Menucontributionlist.add (item); Return Menucontributionlist.toarray (new icontributionitem[0]);} 

Perspectivecontributionitem Source:

Package Com.workflow.menu;import Java.util.arraylist;import Java.util.list;import Org.eclipse.jface.action.icontributionitem;import Org.eclipse.ui.iworkbenchwindow;import Org.eclipse.ui.platformui;import Org.eclipse.ui.actions.compoundcontributionitem;import org.eclipse.ui.actions.contributionitemfactory;/** * Create perspective Level Two Menu * @author LWW * */public class Perspectivecontributionitem  extends compoundcontributionitem{@Overrideprotected icontributionitem[] Getcontributionitems () {iworkbenchwindow window = Platformui.getworkbench (). Getactiveworkbenchwindow ();        Icontributionitem item = ContributionItemFactory.PERSPECTIVES_SHORTLIST.create (window);         list<icontributionitem> menucontributionlist = new arraylist<icontributionitem> ();        Menucontributionlist.add (item);         Return Menucontributionlist.toarray (new icontributionitem[0]);}

The contents of the Plugin.xml are as follows:


This enables the implementation of its own RCP menu with the Add Window menu bar, the effect is as follows:



Another way is to implement it through code:

Package Mydesigner;import Org.eclipse.jface.action.icontributionitem;import Org.eclipse.jface.action.icoolbarmanager;import Org.eclipse.jface.action.imenumanager;import Org.eclipse.jface.action.menumanager;import Org.eclipse.jface.action.separator;import Org.eclipse.jface.action.toolbarmanager;import Org.eclipse.ui.iworkbenchactionconstants;import Org.eclipse.ui.iworkbenchwindow;import Org.eclipse.ui.actions.actionfactory;import Org.eclipse.ui.actions.contributionitemfactory;import org.eclipse.ui.actions.ActionFactory.IWorkbenchAction; Import Org.eclipse.ui.application.actionbaradvisor;import Org.eclipse.ui.application.iactionbarconfigurer;public Class Applicationactionbaradvisor extends Actionbaradvisor {private iworkbenchaction exitaction;//exit button Private Iworkbenchaction aboutaction;//about button private iworkbenchaction newaction;//New button Private iworkbenchaction saveprojectaction;//Save the project file private iworkbenchaction saveallaction;//Save all private iworkbenchaction newwindowaction; Private IcontributionItem item;//file in the menu bar actionprivate iworkbenchaction importaction;private iworkbenchaction exportaction;public Applicationactionbaradvisor (Iactionbarconfigurer configurer) {super (configurer);} Create actionprotected void makeactions (Iworkbenchwindow window) {exitaction = ActionFactory.QUIT.create (window); Register (exitaction); aboutaction = ActionFactory.ABOUT.create (window); register (aboutaction); newaction = ActionFactory.NEW.create (window); register (newaction);//New Button saveprojectaction = ActionFactory.SAVE.create (window) ; saveallaction = ActionFactory.SAVE_ALL.create (window); This.getactionbarconfigurer (). Registerglobalaction ( Saveprojectaction); Ctrl+s, save the project file. This.getactionbarconfigurer (). Registerglobalaction (saveallaction);//Activate shortcut key, Ctrl+shift+s, save all. Newwindowaction = ActionFactory.OPEN_NEW_WINDOW.create (WINDOW), register (newwindowaction);//Register as Global Action item = CONTR IbutionItemFactory.VIEWS_SHORTLIST.create (window);//create viewshortlist importaction = actionfactory.im PORT.Create (window);                Register (importaction);        exportaction = ActionFactory.EXPORT.create (window);        Register (exportaction); }//menu bar protected void Fillmenubar (Imenumanager menuBar) {//file menu bar Menumanager filemenu = new Menumanager ("&file", Iworkbenchactionconstants.m_file); Filemenu.add (exitaction); Filemenu.add (new Separator ());//Add Separator bar Filemenu.add ( newaction); Filemenu.add (new Separator ()); Filemenu.add (importaction);//import Filemenu.add (exportaction);//export// Help menu bar Menumanager helpmenu = new Menumanager ("&help", Iworkbenchactionconstants.m_help); Helpmenu.add ( aboutaction)//window menu bar Menumanager windowmenu = new Menumanager ("&window", Iworkbenchactionconstants.m_window) ; Windowmenu.add (newwindowaction); Menumanager ShowView = new Menumanager ("Show View"); Showview.add (item);//Add Contributionitem Windowmenu.add (ShowView ); Menubar.add (filemenu);//Add the menu bar to the workspace Menubar.add (helpmenu); Menubar.add (Windowmenu);} Add to toolbar @overrideprotected void Fillcoolbar (IcoolbarmanagEr coolbar) {toolbarmanager Barmanager = new Toolbarmanager (); Barmanager.add (saveprojectaction); BarManager.add ( saveallaction); Coolbar.add (Barmanager);}}
Effects such as:

If you want to add another action, you can do so in the class:

Org.eclipse.ui.IWorkbenchActionConstantsorg.eclipse.ui.actions.ActionFactoryorg.eclipse.ui.actions.ContributionItemFactory
Org.eclipse.ui.IWorkbenchCommandConstants finds the implementation of the corresponding action, the eclipse implementation.




Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.