首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

IEditorInput引见

2014-04-19 
IEditorInput介绍1.一个编辑器要对应一个IEditorInput和EditorPart。IWorkbenchPage是根据IEditorInput取得

IEditorInput介绍
1.一个编辑器要对应一个IEditorInput和EditorPart。IWorkbenchPage是根据IEditorInput取得EditorPart的。在通常的应用中,通用是在表格或者树中双击结点然后打开编辑器进行编辑。这时候,针对一个结点最多只能有一个编辑器出现,即如果针对某个结点已经打开了编辑器,这时候就不应该再打开一个编辑器,而应该将已经打开的编辑器置顶,"置顶"在这里指将编辑器激活。通常有2种做法,方法一是针对IEditorInput制造一个单例,这样自始至终都只会有一个IEditorInput,这样也可以保证EditorPart仅有一个。当然这种方法感觉有点怪。 我个人喜欢用第二种方法,因为比较自然。方法二,可以这样做,在生成树或表格时,也设置该结点的IEditorInput,即针对结点类型,增加2个方法,setInput(IEditorInput input)和getInput()。这样在双击结点时,input直接从结点中去获取。这样也可以保证只打开一个编辑器。 2.编辑器的加载编辑器的加载是通过IWorkbenchPage的openEditor(IEditorInput input,String editorId)来实现的 3.编辑器的置顶。直接看代码IWorkbenchPage wpg = getViewSite().getPage();IEditorpart editorPart = wpgfindEdiotr(entry.getInput());//entry为结点所对应的类型//如果此编辑器已经存在,则将它设为当前的编辑器(最顶端),否则重新打开一个编辑器if(editorpart != null){ wpg.bringToTop(editorPart);}else{ try{ wpg.openEditor(entry.getInput(),MyEdiotr.ID);//如果需要取得EditorPart的实例进行一些操作,那么可以这样做MyEditor myEidtor = (MyEditor)wpg.openEditor(entry.getInput(),MyEdiotr.ID);//注意强制转型//取得myEditor实例后就可以进行各种自己想要进行的操作啦}catch(PartInitException e){ e.printStackTrace();} } 5.IEditorInput的方法说明①public boolean exists(){ return true;//返回true,则打开该编辑器后它出现在Eclipse主菜单"文件"最下面的最近打开的文档栏中。返回false则不出现在其中} ②public ImageDescriptor getImageDescriptor(){ return WorkbenchImages.getImageDescriptor(IWorkbenchGraphicConstans.IMG_ETOOL_HOME_NAV);}编辑器标题栏的图标,不过它还需要在编辑器中用setTitleImage方法设置,才能出现在标题栏中如:setTitleImage(input.getImageDescriptor().createImage());③public String getName();编辑器标题栏的显示名称,和上面的getImageDescriptor一样也要在EditorPart中有setPartName()方法设置,才能出现在标题栏中,如setPartName(input.getName()); ④public String getToolTipText()编辑器标题栏的小黄条提示文字,不需像getName那样在EditorPart中进行再设置 ⑤public IPersistableElement getPersistable()返回一个可以用作保存本编辑器输入数据状态的对象 ⑥public Object getAdapter(Class adapter)得到一个编辑器的适配器,如下:// 得到一个编辑器的适配器// IAdaptable a = new ChinaEditorInput();//之所以可以直接将new ChinaEditorPart赋给IAdapteble,是因为IEditorInput扩展自IAdaptable// IFoo x = (IFoo)a.getAdapter(IFoo.class);// if (x != null) [用x来做IFoo的事情....]

?以上是从博客:http://aiku.me/bar/10133152 ?转来的。

热点排行