- 浏览: 114992 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
stringsdn:
不懂 你在加载前判断没有404 到加载后是404怎么半
Android WebView处理404等错误 -
zxjlwt:
学习了。http://surenpi.com
如何在console中加入文件连接 -
endison1111:
碰到了同样的问题,使用多页面MultiPage后,切换标签ou ...
Eclipse Multipage Page编辑器同步实践——OutlinePage -
Just2005:
已解决。谢谢。
GMF中控制Figure的大小和位置 -
Just2005:
源码呢 ?
GMF中控制Figure的大小和位置
最近做个IDE的项目,要将文本编辑器和机遇gef的图形编辑器集成为Multipage编辑器,单独两个编辑器各自运行都是没有问题的,可是集成为一个Multipage编辑器就需要考虑很多编辑器之间同步的问题,要考虑的主要有:
1. Outline切换
2. 属性页切换
3. 文本/图形修改同步
4. ActionBar Contributor切换
本文主要讨论如何对OutlinePage进行同步,做到切换页面时outlinePage同步切换。
基本想法是这样的:(代码逻辑参考了一个叫StrutsIDE的开源插件)
通常outlinepage实例是通过getAdater方法返回的,在multipage编辑器中也是一样的,只是在切换不同tab的时候outlinepage也需要变化,因此,在MultipageEditor的pageChange方法中加入outlinepage切换代码。更具体一点的做法就是自己写一个外壳OutlinePage,当切换Multipage不同的编辑器时嵌入不同的outlinePage。请看定制的Outlinepage代码:
public class MultiPageEditorOutlinePage extends Page implements IContentOutlinePage { private IContentOutlinePage activePage; private IEditorPart activeEditor; private Composite control; /** * Set the active editor. * This outline page shows the outline which is provided by given editor. * * @param editor the active editor */ public void setActiveEditor(IEditorPart editor){ if(activePage!=null && activePage.getControl() != null){ activePage.getControl().dispose(); } this.activeEditor = editor; activePage = (IContentOutlinePage)editor.getAdapter(IContentOutlinePage.class); if(control!=null){ if(activePage!=null){ initActivePage(); activePage.createControl(control); getSite().getActionBars().updateActionBars(); control.layout(); } } } public void createControl(Composite parent) { control = new Composite(parent, SWT.NULL); control.setLayout(new FillLayout()); if(activePage!=null){ initActivePage(); activePage.createControl(control); } } /** * Initializes the active outline page. */ private void initActivePage(){ getSite().getActionBars().getToolBarManager().removeAll(); getSite().getActionBars().getMenuManager().removeAll(); if(activePage instanceof IPageBookViewPage){ IPageBookViewPage pageBook = (IPageBookViewPage)activePage; if(pageBook.getSite()==null){ try { pageBook.init(getSite()); } catch(PartInitException ex){ ex.printStackTrace(); } } } } public Control getControl() { /*if(activePage!=null){ activePage.getControl(); }*/ return control; } public void setFocus() { if(activePage!=null){ activePage.setFocus(); } } public void addSelectionChangedListener(ISelectionChangedListener listener) { if(activePage != null) { activePage.addSelectionChangedListener(listener); } } public ISelection getSelection() { if(activePage!=null){ return activePage.getSelection(); } return null; } public void removeSelectionChangedListener(ISelectionChangedListener listener) { if(activePage != null) { activePage.removeSelectionChangedListener(listener); } } public void setSelection(ISelection selection) { if(activePage!=null){ activePage.setSelection(selection); } } public IContentOutlinePage getActivePage() { return activePage; } public IEditorPart getActiveEditor() { return activeEditor; } }
KULMultiPageEditorOutlinePage集成Page,实现IContentOutlinePage接口,其中
public void setActiveEditor(IEditorPart editor){ .... }
方法就是供外部调用切换OutlinePage的主要接口,做的就是拿到当前编辑器的实例,调用当前编辑器的getAdator方法拿到outlinepage实例,在创建当前编辑器的outlinepage控件。上面的方法在MultipageEditor的pageChange方法中调用:
protected void pageChange(int newPageIndex) { if(isDirty()){ if(newPageIndex==DIAGRAM_PAGE){ diagramEditor.flushCommandStack(); syncEditors(XML_PAGE); } else if(newPageIndex==XML_PAGE){ syncEditors(DIAGRAM_PAGE); } } super.pageChange(newPageIndex); // enable or disable preview view when page change handlePageChange(newPageIndex); outlinePage.setActiveEditor(getEditor(newPageIndex)); propertySheetPage.setActiveEditor(getEditor(newPageIndex)); }
请看
outlinePage.setActiveEditor(getEditor(newPageIndex));
这句代码,就是告诉MultipageOutlinePage这个外壳,更换里面的内容。
通过以上方法,基本上可以做到切换不同编辑器outlinepage的同步变化,当然也有一点小问题,比如选中编辑器中的某个模型,outlinepage中对应的元素默认不会被选中,反过来倒是可以,等等。还需要进一步调试。
评论
发表评论
-
向console中加入文件链接
2010-01-24 22:11 881之前写过一篇文章大概讲了向console中加入文件链接的原理, ... -
如何在console中加入文件连接
2010-01-17 10:59 956使用eclipse的人都知道,在console中打印的异常st ... -
Eclipse Multipage Page编辑器同步实践——PropertyPage
2009-12-20 17:08 1520在MultipageEditor应用中属性页(Property ... -
Run configure方式运行RCP与导出后运行RCP的差异
2009-11-22 21:21 1201前几天开发RCP应用过程中遇到了一个问题(其实也是经常遇到的问 ... -
启用EMF的自动生成UUID功能
2009-11-16 21:54 923原文:http://www.cnblogs.com/bjzha ... -
eclipse对于View的操作
2009-11-11 22:10 1575几个常用的关于View的操作: 1. findView I ... -
emf开发笔记
2009-11-07 11:17 1054原文:http://macrochen.iteye ... -
Draw2D 教程(四)(五)(六)
2009-11-01 15:25 1809原文: http://dev.csdn.net/autho ... -
Draw2D 教程(三)
2009-11-01 15:22 1926原文:http://dev.csdn.net/au ... -
Draw2D教程(二)
2009-11-01 15:21 2995原文:http://dev.csdn.net/aut ... -
Draw2d 教程(一)
2009-11-01 15:19 1555原文:http://dev.csdn.net/aut ... -
Eclipse应用如何获得runtime project的路径
2009-10-29 15:01 1365最近基于gef/emf开发一个图形化工具,用于设计手机屏幕。在 ... -
Eclipse - a tale of two VMs (and many classloaders)
2009-08-02 10:09 876原文地址:http://www.eclipsezone.com ... -
SWT中嵌入Swing
2009-07-20 15:15 2678原文地址:http://blog.sina.com.cn/s/ ... -
给eclipse viewer增加拖拽支持
2009-07-19 19:48 4261在jface中的viewer体系中(顶层抽象类org.ecli ... -
Eclipse开发中使用资源文件
2009-07-13 09:28 727在开发eclipse插件时,经常用到一些字符串常量,比如定义菜 ... -
eclipse中如何打开一个编辑器
2008-11-25 21:21 2128eclipse中打开一个编辑器要调用 IWorkbenchPa ... -
发现一个jet2的bug
2008-01-30 21:30 877最近在做一个代码生成 ... -
jet2的一些学习笔记(1)
2008-02-15 21:40 923jet的input model和模板集合的关系好比语言和co ... -
自己订制gmf中属性编辑器
2006-04-24 13:37 758在gmf中属性页的支持是由PropertyProvider完成 ...
相关推荐
Ashiva MultiPage编辑器 Ashiva MultiPage Editor是一个独立的单一文件应用程序,可使用Ashiva WebRig在任何站点的多个网页上查找和替换文本。 MultiPage编辑器使用什么技术? 单一文件应用程序包含以下技术: PHP...
Webpack 是一个模块打包器,它能够将JavaScript、CSS、图片等资源进行模块化处理,然后根据配置将它们打包成一个或多个可部署的静态文件。在Vue-multipage 的场景下,Webpack 被用来处理每个页面的独立模块,确保每...
【标题】"脚手架-ncpub-multipage-demo.zip" 涵盖的是一个用于NCC(NC Cloud)开发的前端脚手架项目。这个压缩包提供的是一种基础框架,旨在简化开发流程,提高开发效率,尤其对于在Visual Studio Code环境中进行NCC...
它通常包含多个页面(Page),每个页面有自己的控件和功能。用户可以通过选择不同的页签来切换内容。这种控件在有限的空间内展示多个相关但独立的部分特别有效。可能的扩展功能包括自定义页签样式、页签切换事件等。...
**PyPI 官网下载 | streamlit-multipage-0.0.9.tar.gz** PyPI(Python Package Index)是Python编程语言的官方软件仓库,它提供了大量的第三方库,供开发者下载和使用。这个资源“streamlit-multipage-0.0.9.tar.gz...
需要在LCDConfig中将VSize设置成两倍,这样利用emwin的虚拟屏可实现两个窗体之间的跟随切换
ai插件,一键导入pdf文件(多页),不用一页一页导入。实测ai cs6,ai 2019版本都可以用。
$ pip install git+https://github.com/abey79/multipage.git#egg=multipage 检查安装是否成功: $ vpype --help Usage: vpype [OPTIONS] COMMAND1 [ARGS]... [COMMAND2 [ARGS]...]... Options: -v, --verbose -...
**多页TIFF编辑器2.9.7.751英文特别版全面解析** 多页TIFF编辑器是一款专业且功能强大的图像处理工具,专为处理多页TIFF(Tagged Image File Format)文件而设计。这个版本是2.9.7.751的英文特别版,提供了一系列...
vue-multipage-cli Simple Multiple-page CLI for scaffolding Vue.js projects. 基本使用方法 使用方法与vue官方的vue-cli基本是一样的,只是因为是多页面应用程序,所以目前这个版本 html页面和js入口文件还需要...
vue-multipage Depend on vue-template version: 1.2.3 Build Setup # install dependencies npm install # serve with hot reload at localhost:8080 npm run dev # build for production with minification npm ...
1. **Entry配置**:定义多个入口点,例如`entry: { page1: './src/page1/main.js', page2: './src/page2/main.js' }`。 2. **Output配置**:指定输出文件路径和命名规则,例如`output: { filename: '[name].bundle....
《深入探索Silverlight多页应用开发——C#源码解析》 Silverlight,作为微软推出的一种富互联网应用程序(RIA)平台,曾广泛应用于构建交互性强、用户体验优良的Web应用程序。本压缩包“HDI-Silverlight-2b2-...
<div data-role="page" id="page1"> <!-- 页面1的内容 --> <div data-role="page" id="page2"> <!-- 页面2的内容 --> ``` ### 5. List View 结合多页面 在多页面模板中,我们可以利用 List View 显示数据,并...
vue-cli-multipage2.0 主要功能 支持字体图标,css分离打包 各入口文件分离打包,第三方库模块打包,公共组件分离打包 支持vue-router路由按需加载 可自定义页面入口模块名 整合了UI框架,vant 基于webpack4 热更新 ...
jsreport-multipage-export 您可以将多个HTML导出为单个PDF 这段代码基于 您可以查看他们的文档以了解如何设计HTML和传递参数 港口 服务器正在端口8010上运行,您可以在配置中对其进行更改 退出开始 安装套件 npm ...
1. **入口(Entry)**:在配置文件中,你需要定义每个页面的入口文件,例如 `entry: { page1: './src/page1.js', page2: './src/page2.js' }`。这告诉 Webpack 从哪些文件开始构建。 2. **输出(Output)**:指定打包后...
`vue-multipage-cli` 是一个专门为Vue.js设计的命令行工具(CLI),它简化了多页面应用程序(Multipage Application,MPA)的构建过程。MPA与单页应用(SPA)不同,每个页面都有独立的HTML、CSS和JavaScript,适合...
它是一个 Jekyll 生成器插件,可将帖子(或页面)拆分到多个子页面,并具有广泛的配置选项。它的要求是什么? 您只需要 Ruby,当然还有 。它有什么作用? 此插件可让您将帖子指定为multipage ,这意味着这些帖子将...