- 浏览: 115050 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
stringsdn:
不懂 你在加载前判断没有404 到加载后是404怎么半
Android WebView处理404等错误 -
zxjlwt:
学习了。http://surenpi.com
如何在console中加入文件连接 -
endison1111:
碰到了同样的问题,使用多页面MultiPage后,切换标签ou ...
Eclipse Multipage Page编辑器同步实践——OutlinePage -
Just2005:
已解决。谢谢。
GMF中控制Figure的大小和位置 -
Just2005:
源码呢 ?
GMF中控制Figure的大小和位置
在MultipageEditor应用中属性页(PropertyPage)的同步和OutlinePage的同步比较相似,也是在MultipageEditor的getAdaptor方法返回一个外壳PropertySheetPage,在pageChange的时候切换不同的PropertyPage,源代码:
public class KULMultiPagePropertySheetPage extends PropertySheetPage implements IPropertySheetPage { // Current active property page private IPropertySheetPage activePage; // instance of KULEditor PropertyPage; private IPropertySheetPage textPropertyPage; // instance of KULDiagramEditor PropertyPage private IPropertySheetPage diagramPropertyPage; // The Multipage property page control private Composite control; // The control contains KULEditor property page private Composite textControl; // The control contains KULDiagramEditor property page private Composite diagramControl; // The active editor flag, diagram editor 0, text editor 1 private int activeEditor = -1; /** * Set the active editor. * This property page shows the property which is provided by given editor. * * @param editor the active editor */ public void setActiveEditor(IEditorPart editor){ createPropertyPageForEditor(editor); if(control!=null){ if(activePage!=null){ initActivePage(); if(this.activeEditor == 0) { this.createDiagramControl(control); if(this.diagramControl != null) ((StackLayout)control.getLayout()).topControl = this.diagramControl; } else if(this.activeEditor == 1) { this.createTextControl(control); if(this.textControl != null) ((StackLayout)control.getLayout()).topControl = this.textControl; } activePage.setActionBars(getSite().getActionBars()); getSite().getActionBars().updateActionBars(); control.layout(); } } } /** * Create the property page and init related attribute * @param editor */ private void createPropertyPageForEditor(IEditorPart editor) { if(editor instanceof KULDiagramEditor) { createDiagramPropertyPage(editor); activePage = diagramPropertyPage; this.activeEditor = 0; } else if(editor instanceof KULEditor) { createTextPropertyPage(editor); activePage = textPropertyPage; this.activeEditor = 1; } } private void createTextPropertyPage(IEditorPart editor) { if(textPropertyPage == null) { textPropertyPage = (IPropertySheetPage)editor.getAdapter(IPropertySheetPage.class); } } private void createDiagramPropertyPage(IEditorPart editor) { if(diagramPropertyPage == null) { diagramPropertyPage = (IPropertySheetPage)editor.getAdapter(IPropertySheetPage.class); } } public void createControl(Composite parent) { control = new Composite(parent, SWT.NULL); control.setLayout(new StackLayout()); // if the active page is not null, init the property control if(activePage == null){ IEditorPart editor = null; try { editor = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor(); } catch(Exception ex) { System.err.println("Error when fetch the active ecitor"); } if(editor instanceof KULMultiPageEditor) { // create the property page createPropertyPageForEditor(((KULMultiPageEditor)editor).getKulActiveEditor()); } } if(activePage != null) { initActivePage(); if(this.activeEditor == 0) { createDiagramControl(control); if(this.diagramControl != null) ((StackLayout)control.getLayout()).topControl = this.diagramControl; } else if(this.activeEditor == 1) { createTextControl(control); if(this.textControl != null) ((StackLayout)control.getLayout()).topControl = this.textControl; } control.layout(); } } private void createDiagramControl(Composite parent) { if(this.activeEditor == 0 && this.diagramPropertyPage != null && (this.diagramControl==null || this.diagramControl.isDisposed())) { diagramControl = new Composite(parent, SWT.NULL); diagramControl.setLayout(new FillLayout()); diagramPropertyPage.createControl(diagramControl); } } private void createTextControl(Composite parent) { if(this.activeEditor == 1 && this.textPropertyPage != null && (this.textControl==null || this.textControl.isDisposed())) { textControl = new Composite(parent, SWT.NULL); textControl.setLayout(new FillLayout()); textPropertyPage.createControl(textControl); } } /** * Initializes the active property 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){ } } } } @Override public Control getControl() { if(control != null) return control; return super.getControl(); } @Override public void setFocus() { if(activePage!=null /*&& !((Page) activePage).getControl().isDisposed()*/){ activePage.setFocus(); } } @Override public void selectionChanged(IWorkbenchPart part, ISelection selection) { if(activePage!=null /*&& !((Page) activePage).getControl().isDisposed()*/){ activePage.selectionChanged(part, selection); } } @Override public void dispose() { if(this.diagramPropertyPage != null) { this.diagramPropertyPage.dispose(); if(this.diagramControl != null && !this.diagramControl.isDisposed()) { this.diagramControl.dispose(); } } this.diagramPropertyPage = null; this.diagramControl = null; if(this.textPropertyPage != null) { this.textPropertyPage.dispose(); if(this.textControl != null && !this.textControl.isDisposed()) { this.textControl.dispose(); } } this.textControl = null; this.textPropertyPage = null; if(this.control != null && !this.control.isDisposed()) { this.control.dispose(); } this.control = null; this.activePage = null; super.dispose(); } @Override public void makeContributions(IMenuManager menuManager, IToolBarManager toolBarManager, IStatusLineManager statusLineManager) { if(activePage != null /*&& !((Page) activePage).getControl().isDisposed()*/) { ((Page) activePage).makeContributions(menuManager, toolBarManager, statusLineManager); } } /* * Override the method to make sure that the calling of makeContributions method of active page * @see org.eclipse.ui.views.properties.PropertySheetPage#setActionBars(org.eclipse.ui.IActionBars) */ public void setActionBars(IActionBars actionBars) { if(activePage != null /*&& !((Page) activePage).getControl().isDisposed()*/) { ((Page) activePage).setActionBars(actionBars); } } @Override public IPageSite getSite() { return super.getSite(); } }
不多说了,原理就是不同的Tab对应的PropertyPage编辑器可以用Stacklayout组织起来,当切换不同的tab时把对应的PropertyPage放到StackLayout的最上边就好了
((StackLayout)control.getLayout()).topControl=activeEditor
发表评论
-
向console中加入文件链接
2010-01-24 22:11 883之前写过一篇文章大概讲了向console中加入文件链接的原理, ... -
如何在console中加入文件连接
2010-01-17 10:59 957使用eclipse的人都知道,在console中打印的异常st ... -
Eclipse Multipage Page编辑器同步实践——OutlinePage
2009-12-13 14:30 2138最近做个IDE的项目,要将文本编辑器和机遇gef的图形编辑器集 ... -
Run configure方式运行RCP与导出后运行RCP的差异
2009-11-22 21:21 1201前几天开发RCP应用过程中遇到了一个问题(其实也是经常遇到的问 ... -
启用EMF的自动生成UUID功能
2009-11-16 21:54 924原文: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 1810原文: http://dev.csdn.net/autho ... -
Draw2D 教程(三)
2009-11-01 15:22 1926原文:http://dev.csdn.net/au ... -
Draw2D教程(二)
2009-11-01 15:21 2996原文: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 1366最近基于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 2679原文地址:http://blog.sina.com.cn/s/ ... -
给eclipse viewer增加拖拽支持
2009-07-19 19:48 4262在jface中的viewer体系中(顶层抽象类org.ecli ... -
Eclipse开发中使用资源文件
2009-07-13 09:28 727在开发eclipse插件时,经常用到一些字符串常量,比如定义菜 ... -
eclipse中如何打开一个编辑器
2008-11-25 21:21 2129eclipse中打开一个编辑器要调用 IWorkbenchPa ... -
发现一个jet2的bug
2008-01-30 21:30 878最近在做一个代码生成 ... -
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 ,这意味着这些帖子将...