- 浏览: 78480 次
- 性别:
- 来自: 四川
最近访客 更多访客>>
最新评论
-
alanland:
不应该是形状把
scala翻译,难度大 -
zjf_sdnu:
up一下!《实用Common Lisp编程》http://we ...
初步介入common lisp殿堂 -
wislin:
你的博客速度好快咯,以后可以互相学习。
初步介入common lisp殿堂 -
albertlee:
好吧,广告个Lisp的blog: www.feime.net ...
初步介入common lisp殿堂 -
weishuang:
哥们挺有幽默感的么
送给奋斗中的哥们儿们 !
下一个例子:The Word View
添加一个view extension到plugin.xml中去
与上面例子相似,这个extension拥有id,name, icon 和class。此外,extension还包括category元素。category用于对view进行分组,分组的结果在Show view对话框里面显示。
在插件里面为该extension定义一个View Class
该类继承了类ViewPart
Menus and Toolbars
每个view都有一个局部菜单和局部工具条(local menu & local toolbar)。局部工具条位于view标题条的右边。局部菜单在最初是没有显示出来,但是当你点击菜单按钮的时候菜单就会显示出来,局部菜单位于关闭按钮的左边。例子如下图:
view的菜单和工具条控件最初是空的和不可见的。只有当往工具条和菜单加入元素时,它们才变得可见。View同样可以往位于父窗体底部的状态条(status bar)添加元素。总之,局部菜单、局部工具条和状态条统称为动作条(action bars)。
在代码里面,是通过view site来访问动作条动作条(action bars)。view site是view part和viewPart外部世界的主要接口。如果你的view是ViewPart的直接子类,那么可以通过ViewPart.getViewSite方法来获得view site。如果不是ViewPart的子类,则需要你自己控制好site数据的保存和提取,这些数据要被传进去通过IViewPart.init()。通过site,你就可以调用site的getActionBars().getMenumanager来获取IMenuManager。或通过getActionBars.getToolBarManager()来获取IToolBarManager。
其中,IMenuManager和IToolBarManager接口是JFace的抽象。它们包装了SWT菜单和工具条对象,所以作为插件开发者,可以把这种设计为动作和动作实现。一个动作表示一个用户可以通过菜单和工具条激活的命令。在JFace里面,要创建菜单和工具条,需要通过创建org.eclipse.jface.action.IAction的实例,并把实例添加到IMenuManager或IToolBarManager。
定义动作
在Word view例子里,我们将要局部工具条条里加入“Add...”和“Delete”两个动作,往局部菜单里加入“Select All"动作。通常情况下,view的最初动作的实现是通过java code来实现,而其他插件开发者要扩展此局部菜单和局部工具条则需要XML来实现。word view 例子动作是org.eclipse.jface.actions.Action的匿名子类。
获取图片的方法:
Adding Actions
添加一个view extension到plugin.xml中去
与上面例子相似,这个extension拥有id,name, icon 和class。此外,extension还包括category元素。category用于对view进行分组,分组的结果在Show view对话框里面显示。
<extension point = "org.eclipse.ui.views"> <category id = "org.eclipse.ui.article" name = "Articlle"> </category> <view id = "org.eclipse.ui.articles.views.wordview" name = "World View" icon = "icons\view.gif" category = "org.eclipse.ui.article" class = "org.eclipse.ui.articles.views.WordView"/> </extension>
在插件里面为该extension定义一个View Class
该类继承了类ViewPart
public class WordView extends ViewPart { WordFile input; ListViewer viewer; Action addItemAction, deleteItemAction, selectAllAction; IMemento memento; public WordView(){ super(); input = new WordFile(new File("list.lst")); } /** * @see IViewPart.int(IViewSite) */ public void init(IViewSite site) throws PartInitException{ super.init(site); //Nomally we might do other stuff here. } public void createPartControl(Composite parent){ // Create viewer. viewer = new ListViewer(parent); viewer.setContentProvider (new WordContentProvider()); viewer.setLabelProvider(new LabelProvider()); viewer.setInput(input); //Create menu and toolbars. createAction(); createMenu(); createToolbar(); createContextMenu(); hookGlobalActions(); //Restore state from the previous session. restoreState(); } public void setFocus(){ viewer.getConstrol().setFocus(); } }
Menus and Toolbars
每个view都有一个局部菜单和局部工具条(local menu & local toolbar)。局部工具条位于view标题条的右边。局部菜单在最初是没有显示出来,但是当你点击菜单按钮的时候菜单就会显示出来,局部菜单位于关闭按钮的左边。例子如下图:
view的菜单和工具条控件最初是空的和不可见的。只有当往工具条和菜单加入元素时,它们才变得可见。View同样可以往位于父窗体底部的状态条(status bar)添加元素。总之,局部菜单、局部工具条和状态条统称为动作条(action bars)。
在代码里面,是通过view site来访问动作条动作条(action bars)。view site是view part和viewPart外部世界的主要接口。如果你的view是ViewPart的直接子类,那么可以通过ViewPart.getViewSite方法来获得view site。如果不是ViewPart的子类,则需要你自己控制好site数据的保存和提取,这些数据要被传进去通过IViewPart.init()。通过site,你就可以调用site的getActionBars().getMenumanager来获取IMenuManager。或通过getActionBars.getToolBarManager()来获取IToolBarManager。
其中,IMenuManager和IToolBarManager接口是JFace的抽象。它们包装了SWT菜单和工具条对象,所以作为插件开发者,可以把这种设计为动作和动作实现。一个动作表示一个用户可以通过菜单和工具条激活的命令。在JFace里面,要创建菜单和工具条,需要通过创建org.eclipse.jface.action.IAction的实例,并把实例添加到IMenuManager或IToolBarManager。
定义动作
在Word view例子里,我们将要局部工具条条里加入“Add...”和“Delete”两个动作,往局部菜单里加入“Select All"动作。通常情况下,view的最初动作的实现是通过java code来实现,而其他插件开发者要扩展此局部菜单和局部工具条则需要XML来实现。word view 例子动作是org.eclipse.jface.actions.Action的匿名子类。
public void createActions(){ addItemAction = new Action("Add...."){ public void run(){ addItem() } }; addItemAction.setImageDescriptor(getImageDescription("add.gif")); deleteItemAction = new Action("Delecte"){ public void run(){ deleteItem(); } }; deleteItemActon.setImageDescripton(getImageDescription("delete.gif"); selectAllAction = new Action("Select All") { public void run() { selectAll(); } }; //Add selection listener; viewer.addSelectionChangedListener(new ISelectionChangedListener(){ public void selectionChanged(SelectionChangedEvent e){ updateActionEnablement(); } }); }
获取图片的方法:
/** *Return the image descriptor with the given relative path */ public ImageDescriptor getImageDescriptor(String relativePath){ String iconPath = "icons/"; try{ ViewsPlugin plugin = ViewsPlugin.getDefault(); URL installURL = plugin.getDescriptor().getInstallURL(); URL url = new URL(installURL, iconPath+relativePath); return ImageDescriptor.createFromURL(url); }catch (MalformedURLException e){ return ImageDescriptor.getMissingImageDescriptor(); } } private void updateActionEnablement() { IStructuredSelection sel = (IStructuredSelection)viewer.getSelection(); deleteItemAction.setEnabled(sel.size() > 0); }
Adding Actions
/** * Create menu. */ private void createMenu() { IMenuManager mgr = getViewSite().getActionBars().getMenuManager(); mgr.add(selectAllAction); } /** * Create toolbar. */ private void createToolbar() { IToolBarManager mgr = getViewSite().getActionBars().getToolBarManager(); mgr.add(addItemAction); mgr.add(deleteItemAction); }
发表评论
-
学习common lisp 一周年
2011-06-13 16:26 857自2010年6月开始学习common lisp。到今天已经整整 ... -
初步介入common lisp殿堂
2010-06-29 08:39 1963“common lisp是一个古老的语言,拥有优雅的语言结构。 ... -
scala2.8 beta终于露出水面了。
2010-01-28 11:02 900scala2.8 已经有了初步成效了。beta版出来,正式版应 ... -
Eclipse在石油行业的表现
2007-12-24 09:01 2014本人就是中国石油工业的一分子,非常热爱计算技术,特别是ecli ... -
基于OSGI的网站
2007-09-13 12:48 2322这近在操刀一个基于osgi的网站,主要用于研究和学习osgi, ... -
Thinking about interface
2007-07-10 14:58 1272前段时间一直在学习osgi 4.1的框架代码,看来看去都是些i ... -
推荐好软件 Adobe Digital Editions
2007-07-10 11:29 1681Adobe Digital Editions,常常阅读PDF文 ... -
Eclipse 3.3 终于要出来了
2007-06-29 10:26 2552eclipse 社区把eclipse的出场搞得那么复杂,感觉好 ... -
关于osgi专栏的一点建议
2007-05-14 21:51 1490最近也在关注osgi&Equinox,没事时读读Equ ... -
公司级应用Eclipse RCP例子
2007-02-28 09:00 4297发现一些公司应用Eclipse RCP的例子,发过来给大家欣赏 ... -
osgi资源
2007-02-27 10:15 2046这几天对osgi很感兴趣,在网上搜了很多资源: osgi-se ... -
Service Oriented programming principles
2006-11-28 09:23 1142Service Oriented programming pr ... -
JFace Tree Viewer
2006-11-17 11:50 1579Big Picture -
Creating an Eclipse View (3)
2006-11-14 23:17 1518Context Menus 首先,了解一下一些背景知识。ecl ... -
Creating an Eclipse View (1)
2006-11-12 23:55 2271简介 在Eclipse平台里,一个workbench包含一个w ... -
Workbench UI 图
2006-11-08 14:16 1189... -
Rich Clicent Platform包括的组件
2006-11-08 14:02 1245Rich Clicent Platform包括的组件有五大类: ... -
Java API Design Guidelines
2006-11-08 13:01 1089有篇文章讲了作者的思路:Java API Design Gui ... -
XPath 学习:
2006-10-30 14:35 1080XPath is a language for finding ... -
JAVA程序员面试32问,你能回答多少题?
2006-10-10 12:49 1301第一,谈谈final, finally, finali ...
相关推荐
Web Browser (It works as an Eclipse's editor) Image Viewer Tag Palette CSS code completion and outline DTD code completion, outline and validation JavaScript code completion, outline and ...
Anatomy of an Android Project Drawable Resources Building the Project Android Emulator Summary Chapter 5 Main Building Blocks A Real-World Example Activities Intents Services Content Providers ...
Creating an application-scoped database pool 62 Creating a client-scoped pool 64 Editing an existing pool 66 Importing a pool from another application server 67 Creating an XA pool 69 Using a ...
In summary, this graduation thesis focuses on the design and development of an Android sokoban game using the Eclipse SDK and the MVC pattern. It explores the game's background, design principles, ...
Adopting the B/S (Browser/Server) architecture pattern, the system is deployed and tested on the Tomcat application server, creating an integrated project management system suitable for small ...
The development tool software selects Eclipse, and the database software chooses MySQL server. The system adopts the B/S mode, focusing on web development, and also requires Tomcat as the WEB server ...
Creating Your First Android Project in Eclipse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 Examining the Android-Created Files . . . . . . . . . . . . . . . . . . . . . . . . . . ...
- **Creating an Example Software Project**:指导用户如何创建示例软件项目,这些项目通常包含了一些预定义的功能,方便学习和测试。 #### 十四、新项目向导 - **The New Project Wizard**:新项目向导是创建新...
■CHAPTER 16 From Eclipse RCP to the NetBeans Platform . . . . . . . . . . . . . . . . . . 279 ■CHAPTER 17 Tips and Tricks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...
Customizing the View.................................................................................67 Creating the Game Loop............................................................................