当前位置: 首页 > news >正文

高端公司网站设计vps怎么做多个网站

高端公司网站设计,vps怎么做多个网站,赣州58同城网,影视公司招聘简介#xff1a; 菜单是各种软件及开发平台会提供的必备功能#xff0c;Eclipse 也不例外#xff0c;提供了丰富的菜单#xff0c;包括主菜单#xff08;Main Menu#xff09;#xff0c;视图 / 编辑器菜单#xff08;ViewPart/Editor Menu#xff09;和上下文菜单 菜单是各种软件及开发平台会提供的必备功能Eclipse 也不例外提供了丰富的菜单包括主菜单Main Menu视图 / 编辑器菜单ViewPart/Editor Menu和上下文菜单Context Menu。在 Eclipse 中几乎所有的 Workbench Part 提供了人性化的菜单大大方便了用户的操作。因此如何扩展 Eclipse 的菜单功能并实现特定于我们自己插件的菜单是插件开发者必须掌握的重要技能同时Eclipse 提供了丰富的扩展点供开发人员使用。本文将首先介绍 Eclipse 中的菜单然后详细说明如何进行扩展最后以一个实例的形式引导读者深入理解 Eclipse 的菜单功能。 引言 Eclipse 具有丰富的菜单功能给开发人员提供了很好的用户体验。总体而言Eclipse 菜单种类包括视图 / 编辑器菜单主菜单Main Menu视图 / 编辑器菜单ViewPart/EditorPart Menu和上下文菜单Context Menu。插件开发人员通过灵活应用这些菜单可以给用户提供很好的体验。由于视图和编辑器菜单功能类似因此本文重点讲述视图菜单视图下拉菜单及其工具栏菜单除此之外还将讲述主菜单和上下文菜单。 如图 1 所示为 Project Explorer 视图的菜单包括视图下拉菜单和工具栏菜单折叠树节点。通常而言出现在视图工具栏的菜单都会出现在视图的下拉菜单也就是说比较常用的视图菜单放在视图的工具栏。 图 1. Project Explorer 视图的菜单 如图 2 所示为 Project Explorer 视图中的上下文菜单只有当我们右键点击时才会出现。通常而言出现频率较高的菜单项才会出现在菜单中。上下文菜单具有很强的灵活项它可以随着我们点击的对象不同弹出的菜单也会有相应的变化。 图 2. Project Explorer 视图中的上下文菜单 如图 3 所示为 Eclipse 的主菜单包括最上面的主菜单项不可移动及其下面的工具栏菜单可以移动并且 Eclipse 提供了显示 / 不显示这些菜单的功能Eclipse 并不建议我们为每一个插件都添加新的主菜单这样容易造成冗余而且不方便用户操作。通常我们可以把菜单项添加到 Eclipse 已有的菜单如插件的查找功能可以添加一个查找菜单项到 Eclipse 的 Search 主菜单上。 图 3. Eclipse 的主菜单 前面讲到 Eclipse 的各种菜单那么如何在开发插件或 RCP 应用程序的时候添加这些菜单本文下面的篇幅将详细介绍如何扩展 Eclipse 的菜单功能使读者深入了解 Eclipse 的菜单功能并能够开发具有这些菜单的应用程序。因此必须掌握三方面的内容菜单种类菜单的扩展点菜单控制显示 / 隐藏或启用 / 禁用菜单项。下面从概念上介绍这三方面内容下一小节将会进行详细介绍。 菜单种类 正如前面所讲到的Eclipse 的菜单包括视图菜单主菜单及上下文菜单三个种类。 菜单项的扩展点 Eclipse 提供了两种扩展点供用户添加菜单项到相应的位置。这两种扩展点为 org.eclipse.ui.commands本文简称为 Commands 方式和 org.eclipse.ui.actionSets本文简称为 Actions 方式。Actions 方式为界面上不同区域的表现方式提供了相应的扩展点并且没有分离其界面表现和内在实现。恰恰相反Commands 方式通过三步有效的达到界面表现和内部实现的分离首先通过 org.eclipse.ui.commands 扩展点创建命令和类别Category并且可以把某些命令放在一个类别Category中然后通过 org.eclipse.ui.menus 指定命令出现在界面的哪个区域视图菜单 / 主菜单 / 上下文菜单最后通过 org.eclipse.ui.handlers 指定命令的实现。因此Eclipse 推荐新开发的插件使用 Commands 来创建您的界面菜单。当然由于 Actions 在现有的插件中用得比较多如果我们需要扩展或基于之前的插件开发也需要对其进行了解。除此之外针对上下文菜单虽然 Commands 和 Actions 方式均可以创建上下文菜单但是 Eclipse 还提供了另外一种创建上下文菜单的扩展点 org.eclipse.ui.popupMenus本文简称为 popupMenus 方式本文将就这三种扩展点做详细的介绍。 菜单控制 菜单控制是一个非常常见的功能例如随着选定的内容或当前窗口的不同菜单中的菜单项会有相应的变化显示 / 隐藏或启用 / 禁用菜单项因此如何控制菜单是插件开发人员必须掌握的知识。Eclipse 为菜单控制提供了两种方法一种是通过扩展点另一种是通过 API 的方式编写程序控制。 回页首 Eclipse 菜单功能及其扩展点 至此我们对 Eclipse 菜单有了感观的认识。由上一节我们可知要深入理解 Eclipse 菜单功能我们需要从三个方面去掌握菜单种类菜单的扩展点和菜单控制。下面将进行详细讲述。 菜单种类 针对各种菜单Eclipse 提供了相应的扩展点因此开发人员可以通过这些扩展点把菜单放到界面的不同区域详细内容请参考 2.2 小节。 菜单的扩展点 视图菜单的扩展点 采用 Commands 方式创建视图菜单需要引入 org.eclipse.ui.menus 扩展点而 Actions 方式需要引入 org.eclipse.ui.actionSets. 1、视图菜单Commands 方式 MenuContribution locationURI “[Scheme]:[id]?[argument-list]” 其中Scheme 为该菜单项出现的区域menu 为视图的下拉菜单toolbar 为视图的工具栏菜单id 为菜单区域 IDargument-list 为该菜单项出现在指定菜单的位置。 例如在 ProbelmView 的下拉菜单加一个菜单项其 MenuContribution 的 locationURI 应为menu:org.eclipse.ui.views.ProblemView?afteradditions在 ProblemView 的工具栏菜单中加入一个菜单项其 locationURI 应为toolbar:org.eclipse.ui.views.ProblemView?afteradditions。 2、视图菜单Actions 方式 采用 Actions 方式创建菜单需要引入 org.eclipse.ui.actionSets 扩展点并通过设定 action 的 menubarPath 指定下拉菜单 / 菜单项出现的位置通过设定 action 的 toolbarPath 设定工具栏菜单 / 菜单项出现的位置。 例如添加一个下拉菜单项到 Problems 视图中其 menubarPath 应为 org.eclipse.ui.views.ProblemView/additions 主菜单的扩展点 1、主菜单Commands 方式 通过 Commands 方式把菜单项添加到主菜单及其工具栏上和视图菜单一样也是通过扩展点 org.eclipse.ui.menus 实现需要设定其 menuContribution 的 locationURI。 例如添加一个菜单菜单可以包含若干个菜单项到主菜单一栏中其 locationURI 为 menu:org.eclipse.ui.main.menu?afteradditions 添加一个菜单到工具栏之中其 locationURI 为 toolbar:org.eclipse.ui.main.toolbar?afteradditions 当然我们也可以把菜单项添加到已经存在的菜单当中例如添加一个菜单项到 Eclipse 的 Search 主菜单当中其 locationURI 为 menu:org.eclipse.search.menu?dialogGroup 2、主菜单Actions 方式 通过 Actions 方式把菜单项添加到主菜单及其工具栏上和视图菜单一样也是通过扩展点 org.eclipse.ui.actionSets 实现需要设定 action 的 menubarPath 和 toolbarPath 实现。 例如添加一个菜单项到 Eclipse 的 Search 主菜单中其 menubarPath 应为 org.eclipse.search.menu/dialogGroup 注意如果采用上述方式添加一个菜单项到 Search 主菜单当我们运行时并没有出现添加的菜单项这时候需要换一个 workspace其原因是 Eclipse 缓存了与其相关的某些信息在 workspace 当中。 上下文菜单的扩展点 上下文菜单除了通过 Commands 和 Actions 方式添加还可以使用扩展点 org.eclipse.ui.popupMenus 方式添加下面分别进行介绍。 1、上下文菜单Commands 方式 Commands 方式与添加视图菜单和主菜单的方式一样通过设定其 menuContribution 的 locationURI 来实现。 例如添加一个上下文菜单到 Problems 视图中其 locationURI 为 popup:org.eclipse.ui.views.ProblemView?afteradditions。 如果我们想让某个上下文菜单项出现在任何区域则可以使用下面的 locationURI popup:org.eclipse.ui.popup.any?afteradditions 2、上下文菜单Actions 方式 Actions 方式没有直接提供扩展点添加上下文菜单但是我们可以通过编程的方式实现如下代码清单 1 为 TreeViewer 添加上下文菜单通过 IMenuManager 的 add 方法添加 actions。 清单 1. 通过 Actions 方式编程实现添加上下文菜单 private void hookContextMenu() { IMenuManager fMenuMgr new MenuManager(“#PopupMenu”); fMenuMgr.setRemoveAllWhenShown(true); // 添加 Actions fMenuMgr.add(action … ) fMenuMgr.createContextMenu(treeViewer.getControl()); treeViewer.getControl().setMenu(fMenu); getSite().registerContextMenu(fMenuMgr, treeViewer); } 3、上下文菜单popupMenus 方式 通过 popupMenus 扩展点实现上下文菜单需要设定 objectContribution 的 objectClass 属性把上下文菜单添加到相应的区域。 例如如果我们想当用户点击 Eclipse 中的资源时弹出的上下文菜单包括某个菜单项我们可以设定 objectClass 属性为 org.eclipse.core.resources.IResource 通过 Commands 方式创建菜单项 通过 Commands 方式创建菜单项首先需要创建 Command通过扩展点 org.eclipse.ui.commands然后我们可以把这个 Command 放到任何区域上一小节已经讲到通过 org.eclipse.ui.menus 扩展点确定菜单创建的区域最后通过扩展点 org.eclipse.ui.handlers 定义这个 command 的具体行为。 在创建 Command 时我们可以先创建一个 Category并把相关的一些命令放到这个 Category 中这样有利于管理。代码清单 2 创建一个 Command(“Show in Glossary Explorer”)并放到一个 Category 中然后把该 Command 放到 BGSearchResultView 视图的上下文菜单中最后通过扩展 org.eclipse.ui.handlers 定义该 Command 的实现类。 清单 2. 通过 Commands 方式添加菜单项 !-- 添加 command -- extension pointorg.eclipse.ui.commands category descriptionBusiness Glossaryidcom.ibm.bg.ui.commands.categoryname%category.BusinessGlossary.name /category command categoryIdcom.ibm.bg.ui.commands.categorydescriptionShow in Glossary Exploreridcom.ibm.bg.ui.commands.BGShowInBrowsername%command.ShowInGE.name /command /extension !-- 把 Command 放到界面的对应区域 -- extension pointorg.eclipse.ui.menus menuContribution locationURI popup:com.ibm.bg.internal.ui.search.BGSearchResultView?afteradditions command commandIdcom.ibm.bg.ui.commands.BGShowInBrowserstylepushtooltip%command.ShowInGE.tooltip /command /menuContribution /extension !-- 定义 command 的实现类 -- extension pointorg.eclipse.ui.handlers handler classcom.ibm.bg.internal.ui.handlers.BGShowInBrowsercommandIdcom.ibm.bg.ui.commands.BGShowInBrowser /handler /extension 通过 Actions 方式创建菜单项 正如前面讲到Actions 方式没有分离界面的表现和内部实现因此所有这些均通过 action 来完成。如下代码清单 3 为添加一个 Search 菜单项到 Eclipse 的 Search 主菜单通过 action 的 menubarPath 指定中其中 class 对应的值为该 Action 的实现类该类需要实现接口 IWorkbenchWindowActionDelegate。 清单 3. 通过 Actions 方式添加菜单项 extension pointorg.eclipse.ui.actionSets actionSet idcom.ibm.bg.ui.workbenchActionSetlabel%category.name.0visibletrue action classcom.ibm.bg.internal.ui.handlers.BGSearchHandlerdefinitionIdcom.ibm.bg.ui.commands.BGSearchiconicons/search.pngidcom.ibm.bg.ui.commands.BGSearchlabel%action.searchGlossayInMainMenu.labelmenubarPathorg.eclipse.search.menu/dialogGroupstylepush /action /actionSet /extension 通过 popupMenus 方式创建菜单项 popupMenus 方式创建上下文菜单项也是通过 action 来实现下面例子为添加一个菜单项到用户右击 IGraphicalEditPart 对象时弹出的上下文菜单通过 menubarPath 指定该 Action 出现的区域通过 class 指定该 action 的实现类该类需要实现接口 IObjectActionDelegate。 清单 4. 通过 popupMenus 方式添加菜单项 extension pointorg.eclipse.ui.popupMenus objectContribution adaptablefalseidcom.ibm.bg.uml.objectContributions.BGAssignToGlossaryobjectClassorg.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart action classcom.ibm.bg.internal.uml.actions.BGAssignToGlossaryenablesForiconicons/assign.pngidcom.ibm.bg.internal.uml.actions.BGAssignToGlossarylabel%BGAssignToGlossary.itemmenubarPathcom.ibm.bg.uml.popupMenuGroup /action /objectContribution /extension 菜单控制 视图菜单的控制主要包括启用 / 禁用显示 / 隐藏菜单。 通过 Command 方式创建的菜单可以通过 org.eclipse.ui.commands 的 visibleWhen 属性控制菜单的隐藏和显示通过 org.eclipse.ui.handlers 的 activewhen 或 enabledWhen 控制菜单的启用或禁用。 通过 Actions 方式创建的菜单可以通过 action 的 enablement 属性控制菜单的启用 / 禁用。 通过 popupMenus 方式创建的菜单可以通过 objectContribution 的 visibility 和 enablement 来设置该 objectContribution 下的 action 的显示 / 隐藏和启用 / 禁用我们也可以设置 action 的 enablement 来控制该菜单的启用 / 禁用。 这里不详细讲述 enablementvisibleWhen 和 enabledWhen 的参数及如何设置读者可以参考第三节的例子和本文的参考文献。 回页首 编程实践 本文将结合前两节讲到的知识以例子的形式说明如何创建并且控制菜单。首先创建一个视图Menu Example然后分别通过 CommandsActions 和 popupMenus 方式创建若干个菜单并添加相应的菜单控制点。 创建 Menu Example 视图 扩展 org.eclipse.views 创建“Menu Example”视图如下代码清单 5 为创建视图的 xml 代码。 清单 5. 扩展 org.eclipse.ui.views 创建视图 extension pointorg.eclipse.ui.views category idcom.free.menu.categorynameMenu Example View /category view categorycom.free.menu.categoryclasscom.free.menu.view.MenuExploreridcom.free.menu.view.MenuExplorernameMenu Explorerrestorabletrue /view /extension 创建 Commands 采用 Command 方式创建“Menu Example”主菜单包含 AngryCommand 和 JokeCommand 两个菜单项并且基于这两个菜单项创建了 Menu Example 视图的下拉菜单和工具栏菜单及其 TreeViewer 的上下文菜单。 如下代码清单 6 为扩展 org.eclipse.ui.commands 创建 Menu Example 命令和类别并且包含两个命令Joke Command 和 Angry Command。 清单 6. 扩展 org.eclipse.ui.commands 创建命令 extension pointorg.eclipse.ui.commands category idcom.free.menu.categorynameMenu Example /category command categoryIdcom.free.menu.categoryidcom.free.menu.commands.jokeCommandnameJoke Command /command command categoryIdcom.free.menu.categoryidcom.free.menu.commands.angryCommandnameAngry Command /command /extension 关联 Commands 到主菜单 如下代码清单 7 为扩展 org.eclipse.ui.menus并基于前面创建的 Comands添加一个主菜单 Menu Example并且包含 Joke Command 和 Angry Command 菜单项。 清单 7. 创建 Menu Example 主菜单 menuContribution locationURImenu:org.eclipse.ui.main.menu?afteradditions menu idcom.free.menu.MenuExamplelabelMenu Example command commandIdcom.free.menu.commands.jokeCommandstylepush /command command commandIdcom.free.menu.commands.angryCommandstylepush /command /menu /menuContribution 关联 Commands 到视图菜单 如下代码清单 8 为扩展 org.eclipse.ui.menus并基于 Commands 方式创建 Menu Example 视图的下拉菜单工具栏菜单和上下文菜单通过 locationURI 来设定。Joke Command 即为下拉菜单也是工具栏菜单只有当我们选择了 TreeViewer 中的节点时该菜单项才是可见的参考下面的 visibleWhen-with-iterate-or-instanceof。 清单 8. 通过 Commands 方式创建视图菜单 extension pointorg.eclipse.ui.menus menuContribution locationURImenu:com.free.menu.view.MenuExplorer?afteradditions command commandIdcom.free.menu.commands.jokeCommandiconicons/searchres.gifstylepush visibleWhen checkEnabledfalse with variableselection iterate ifEmptytrueoperatoror or instanceof valuecom.free.menu.model.Person /instanceof /or /iterate /with /visibleWhen /command /menuContribution menuContribution locationURItoolbar:com.free.menu.view.MenuExplorer?afteradditions command commandIdcom.free.menu.commands.jokeCommandiconicons/searchres.gifstylepush visibleWhen checkEnabledfalse with variableselection iterate ifEmptytrueoperatoror or instanceof valuecom.free.menu.model.Person /instanceof /or /iterate /with /visibleWhen /command /menuContribution menuContribution locationURIpopup:com.free.menu.view.MenuExplorer?afteradditions command commandIdcom.free.menu.commands.jokeCommandiconicons/searchres.gifstylepush /command command commandIdcom.free.menu.commands.angryCommandstylepush /command /menuContribution /extension Commands 的实现类 如下代码清单 9 所示扩展 org.eclipse.ui.handlers 为 Joke Command 和 Angry Command 创建事件处理类其中 Joke Command 通过 enabledWhen 属性控制该菜单项是否启用当我们同时选择了两个对象时 Joke Command 处于启用状态否则为禁用。 清单 9. 扩展 org.eclipse.ui.handlers 为 Commands 创建实现类 extension pointorg.eclipse.ui.handlers handler classcom.free.menu.actions.JokeCommandcommandIdcom.free.menu.commands.jokeCommand enabledWhen count value2 /count /enabledWhen /handler handler classcom.free.menu.actions.AngryCommandcommandIdcom.free.menu.commands.angryCommand /handler /extension 创建 Action 并关联到 Eclipse 的 Search 主菜单 采用 Actions 方式在 Eclipse 的主菜单 Search 中添加创建菜单项 SmileAction。扩展 org.eclipse.ui.actionSets 在 Eclipse 的主菜单 Search 中添加一个菜单项 Smile Action。如下代码清单 10 所示创建该 action 并添加到 search 主菜单只有当我们选择至少一个对象时设置 enablesFor 属性为“”该菜单项才处于启用状态。 清单 10. 通过 Actions 方式创建菜单项 extension pointorg.eclipse.ui.actionSets actionSet idcom.free.menu.actionSet.MenuExamplelabelMenu Examplevisibletrue action classcom.free.menu.actions.SmileActionenablesForiconicons/searchres.gifidcom.free.menu.actions.smileActionlabelSmile ActionmenubarPathorg.eclipse.search.menu/dialogGroupstylepush /action /actionSet /extension pupupMenus 方式创建 Action 并关联到 IResource 资源的上下文菜单 扩展 org.eclipse.ui.popupMenus 创建菜单“Menu Example”该菜单包含一个菜单项 HelloAction。当我们在 Eclipse 任何区域右击 org.eclipse.core.resources.IResource 资源时弹出的上下文菜单中会出现“Menu Example”菜单。如下代码清单 11 为创建该上下文菜单的 xml 代码。 清单 11. popupMenus 方式创建上下文菜单 extension pointorg.eclipse.ui.popupMenus objectContribution adaptabletrueidcom.free.menu.popupMenuobjectClassorg.eclipse.core.resources.IResource menu labelMenu Examplepathadditionsidcom.free.menu.popupSubMenu separator nameadditions /separator /menu action labelHello Actionclasscom.free.menu.popup.actions.HelloActionmenubarPathcom.free.menu.popupSubMenu/additionsenablesFor1idcom.free.menu.newAction /action /objectContribution /extension pupupMenus 方式创建 Action 并关联到 IResource 资源的上下文菜单 扩展 org.eclipse.ui.popupMenus 创建菜单项 GreetAction 和 CryAction当我们右击 Menu Example 视图中的 TreeViewer 节点时弹出。如下代码清单 12 所示扩展 org.eclipse.ui.popupMenus 为 Menu Example 视图创建 GreetAction 和 CryAction 上下文菜单项。使用 visiblity 的 objectState 属性控制菜单项的可见状态使用该属性要求其选择的对象实现了 org.eclipse.ui.IActionFilter 接口具体可参见 Person 类的实现。 清单 12. 扩展 org.eclipse.ui.popupMenus 创建菜单 extension pointorg.eclipse.ui.popupMenus objectContribution adaptablefalseidcom.free.menu.views.popupMenuobjectClasscom.free.menu.model.Person action classcom.free.menu.actions.GreetActionenablesForidcom.free.menu.actions.greetActionlabelGreet ActionmenubarPathadditions /action visibility objectState namefirstNamevalueDan /objectState /visibility /objectContribution /extension extension pointorg.eclipse.ui.popupMenus objectContribution adaptablefalseidcom.free.menu.views.popupMenu2objectClasscom.free.menu.model.Person action classcom.free.menu.actions.CryActionenablesForidcom.free.menu.actions.cryActionlabelCry ActionmenubarPathadditions enablement objectState namefirstNamevalueDavid /objectState /enablement /action visibility objectState namelastNamevalueRubel /objectState /visibility /objectContribution /extension Menu Example 视图的代码实现类 如下代码清单 13 所示为 Menu Example 视图的代码该视图中有一个 TreeViewer并通过函数 hookContextMenu 把上下文菜单关联到 TreeViewer。其中函数 viewMenuAction 用于更新菜单的状态它首先获取视图菜单然后调用 IMenuManager 的 update 方法更新对应菜单项的状态从而达到控制菜单的目的。 清单 13. Menu Example 视图代码 public class MenuExplorer extends ViewPart { private TreeViewer treeViewer; private MenuManager fMenuMgr; private Menu fMenu; private static MenuExplorer fInstance null; public MenuExplorer() { fInstance this; } public static MenuExplorer getInstance(){ return fInstance; } public void createPartControl(Composite parent) { treeViewer new TreeViewer (parent, SWT.MULTI); treeViewer.setLabelProvider(new PersonListLabelProvider()); treeViewer.setContentProvider(new PersonTreeContentProvider()); treeViewer.setInput(Person.example()); this.getSite().setSelectionProvider(treeViewer); hookContextMenu(); fInstance this; } public void setViewMenuActionState(boolean state){ JokeCommand.setState(state); viewMenuAction(); } private void viewMenuAction() { IActionBars bars getViewSite().getActionBars(); final IMenuManager menu bars.getMenuManager(); UIOperation.asyncExecCommand(new Runnable(){ public void run() { menu.update(com.free.menu.commands.jokeAction); } }); } private void hookContextMenu() { fMenuMgr new MenuManager(#PopupMenu); fMenuMgr.setRemoveAllWhenShown(true); fMenuMgr.addMenuListener(new IMenuListener() { public void menuAboutToShow(IMenuManager manager) { } }); fMenu fMenuMgr.createContextMenu(treeViewer.getControl()); treeViewer.getControl().setMenu(fMenu); getSite().registerContextMenu(fMenuMgr, treeViewer); } public void setFocus() { treeViewer.getTree().setFocus(); } } Person 类的实现 如下代码清单 14 为 Person 类的实现用于表示 MenuExample 视图中 TreeViewer 的一个节点它实现了 IActionFilter 接口通过 testAttribute 来确定是否显示 / 隐藏菜单其中 target 表示用户选择的对象name/value 对应于 plugin.xml 文件中 objectState 的 name/value. 清单 14. Person 类实现 public class Person implements IActionFilter { private String firstName John; private String lastName Doe; protected int age 37; public Person[] children new Person[0]; public Person parent null; public Person(String firstName, String lastName, int age) { this.firstName firstName; this.lastName lastName; this.age age; } public Person(String firstName, String lastName, int age, Person[] children) { this(firstName, lastName, age); this.children children; for (int i 0; i children.length; i) { children[i].parent this; } } public String getFirstName() { return this.firstName; } public String getLastName() { return this.lastName; } public static Person[] example() { return new Person[] { new Person(Dan, Rubel, 38, new Person[] { new Person(Beth, Rubel, 8), new Person(David, Rubel, 3) }), new Person(Eric, Clayberg, 39, new Person[] { new Person(Lauren, Clayberg, 6), new Person(Lee, Clayberg, 4) }), new Person(Mike, Taylor, 52) }; } public String toString() { return firstName lastName; } public boolean testAttribute(Object target, String name, String value) { if (target instanceof Person) { Person person (Person) target; if (name.equals(firstName) value.equals(person.getFirstName())) { return true; } if (name.equals(lastName) value.equals(person.getLastName())) { return true; } } return false; } } 回页首 总结 至此为止已经把 Eclipse 菜单功能及其扩展点涉及到的类 / 接口 /API 进行了详细的说明相信读者已经有清晰的认识了。对于前面提到 popupMenus 方式创建上下文菜单要求选择的对象实现 IActionFilter 接口但是如果开发人员正在使用 gmf 进行开发那么我们可以不必要求选择的对象实现 IActionFilter我们可以通过扩展 org.eclipse.gmf.runtime.common.ui.services.action.actionFilterProviders 对菜单项进行控制如下代码清单 15 为扩展该 extension point 的 xml 代码我们可以定义多个属性Attribute … /Attribute其中 Attribute 的 name 和 value 对应于 visibility 的 objectState 中的 name 和 value。 清单 15. 通过 actionFilterProviders 扩展点实现对菜单的控制 extension pointorg.eclipse.gmf.runtime.common.ui.services.action.actionFilterProviders ActionFilterProvider classcom.free.menu.PopupActionFilterProvider Priority nameMedium /Priority Attribute namecom.ibm.bg.uml.search.isSupportedTypevaluesupported /Attribute /ActionFilterProvider /extension 如下代码清单 16 所示 PopupActionFilterProvider 的实现它继承 AbstractActionFilterProvider只需要实现其中的 testAttribute 和 provides 方法当 testAttribute 返回 true 时那么该菜单项被启用否则禁用。其中 target 对应于我们选择的对象name 和 value 参数对应于 visiblity 中 objectState 的 name 和 value 的指定值 ( 与前面提到的 Person 类中的 testAttribute 方法类似 )。 清单 16. actionFilterProviders 扩展点实现类 public class PopupActionFilterProvider extends AbstractActionFilterProvider { public PopupActionFilterProvider() { } public boolean testAttribute(Object target, String name, String value) { } public boolean provides(IOperation operation) { return false; } }
http://wiki.neutronadmin.com/news/309496/

相关文章:

  • 网站建设 财务归类效果图制作软件app
  • 科技公司网站推荐做两个单页面网站大概多少钱
  • o2o型网站wordpress创建标签
  • 网站开发报价表格富阳网站
  • 建设局网站打不开是什么原因青岛市崂山区建设局网站
  • 合肥集团网站建设哪个好自己切片做网站
  • 梅山建设局网站去成都旅游攻略
  • 做网站流量点击分析的软件金馆长做图网站
  • js特效网站欣赏wordpress主要用途
  • 常州制作企业网站it外包运维服务
  • 网站建设和电商区别wordpress 36kr
  • 网站绑定别名好吗网站建设长期待摊费用
  • 梅州做网站app开发公司有什么部门
  • 我的世界做指令的网站网站建设公司百家号
  • 网站建设中js控制什么爱写作网站
  • 网站挂标 怎么做郑州手机端网站建设
  • 文档里链接网站地址怎么做熊猫头表情包制作网站
  • 酒店 深圳 网站建设wordpress 评论 电话
  • 网站服务器崩溃怎么办开发区建设集团网站
  • 门户网站建设的成果广告公司简介文案
  • 怎么制作一个网站教程国外做测评的网站
  • 国内网站建设需要多少钱网站功能设计的内容
  • asp化妆品网站工业设计网站国外
  • 免费网站空间怎么做网站网站建设家乡网页设计模板
  • 给别人建网站工作行吗广州 建设 招聘信息网站
  • 网站开发最佳实践注册公司后每年要交什么费用
  • 56m做图片视频的网站是什么md5 wordpress
  • 深圳企业网站建设维护宁波网络优化seo
  • 沣东新城开发建设集团有限公司网站定制化网站开发公司
  • 网站目录管理模版wordpress single 主题