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

菏泽外贸网站建设网站建设只有20%的利润

菏泽外贸网站建设,网站建设只有20%的利润,沈阳网络教育电视平台,邦策网站建设平台jfaceEclipse JFace Viewers显示的模型元素有时需要花费大量时间来加载。 因此#xff0c; 工作台提供了IDeferredWorkbenchAdapter类型以在后台获取此类模型元素。 不幸的是#xff0c;似乎仅通过DeferredTreeContentManager派生的AbstractTreeViewer支持此机制。 因此 工作台提供了IDeferredWorkbenchAdapter类型以在后台获取此类模型元素。 不幸的是似乎仅通过DeferredTreeContentManager派生的AbstractTreeViewer支持此机制。 因此我开发了自己的通用DeferredContentManager …它可以为允许添加和删除模型元素的所有StructuredViewer类型进行后台加载。 在这篇文章中我解释了它是如何工作的以及如何使用。 在需要重新使用TableViewer进行后台获取的情况下我只发现了一个与此主题相关的旧的尚未解决的平台错误 。 但是我怀疑问题所提议的为表查看器实现额外内容管理器的解决方案是否会非常明智。 因此我决定尝试一个基于可用的树特定实现的概念的自制通用解决方案。 使用JFace Viewer延迟获取内容 在JFace Viewers中处理长加载模型元素的基本原理很简单。 与其直接在IContentProvider#getElements(Object)获取内容 IContentProvider#getElements(Object)数据检索委托给在后台作业中执行该操作的特定适配器。 此外委托的getElements(Object)实现返回一个placeholder 。 只要发生数据加载查看器就会显示出来。 同时收集的数据将转发到更新作业 。 后者将元素附加到结构化查看器。 由于仅允许通过UI线程执行的代码进行SWT小部件访问因此更新作业是UIJob 。 最后在完成后台获取后清理作业将删除占位符。 不应将延迟获取内容与使用SWT.VIRTUAL标志的元素的延迟加载相混淆。 尽管两种方法之间存在相似之处但虚拟表和树通常可用于按需加载大型数据集。 延迟加载对于大小合理的数据集很有帮助但是数据集的检索可能很耗时因此会阻塞UI线程。 例如考虑获取远程数据。 万一您想知道这两种方法当然是互斥的 …… IDeferredWorkbenchAdapter 从开发人员的角度来看 IDeferredWorkbenchAdapter是必经之路。 它是IWorkbenchAdapter的扩展通常负责“为工作台元素提供视觉表示和层次结构使它们可以在UI中显示而不必知道元素的具体类型”如其javadoc所述 。 该扩展声明了其他方法来支持延迟获取给定数据元素的子代并且可以由适配器工厂进行注册。 考虑一个简单的pojo作为模型元素例如 public class ModelElement {[...] } 为了从域类中抽象视觉呈现和后台加载请提供适当的适配器实现… public class ModelElementAdapterimplements IDeferredWorkbenchAdapter {[...] } …并使用适配器工厂将这两种类型映射在一起 public class ModelElementAdapterFactoryimplements IAdapterFactory {Overridepublic Object getAdapter( Object adaptableObject, Class adapterType ) {return new ModelElementAdapter();}Overridepublic Class[] getAdapterList() {return new Class[] { ModelElement.class };} } 有关使用IAdaptable IWorkbenchAdapter和IAdaptableFactory更多信息您可以看看如何使用IAdaptable和IAdapterFactory 。 遗憾的是默认工作台内容和标签提供程序希望模型元素实现IAdaptable 。 但是可以使用自定义提供程序来规避此问题。 以下测试草图验证了元素适应是否按预期进行 Test public void testAdapterRegistration() {IAdapterManager manager Platform.getAdapterManager();ModelElementAdapterFactory factory new ModelElementAdapterFactory();manager.registerAdapters( factory, ModelElement.class );Object actual manager.getAdapter( new ModelElement(), ModelElement.class );assertThat( actual ).isInstanceOf( ModelElementAdapter.class ); } 现在该实现ModelElementAdapter的数据检索功能了。 这是通过fetchDeferredChildren方法完成的 Override public void fetchDeferredChildren(Object parent, IElementCollector collector, IProgressMonitor monitor ) {collector.add( loadData( parent ), monitor ); }private Object[] loadData( Object parent ) {return [...] } 费时的数据加载显然由loadData()方法处理。 将数据元素添加到IElementCollector会触发上述更新作业。 如您所见可以通过几个步骤来划分数据获取并且可以通过给定的IProgressMonitor报告进度。 DeferredContentManager 最后要做的是将本文中描述的机制与用于描述模型元素的查看器实例连接起来。 为此 DeferredContentManager可以调整任意查看器并将元素检索委托给相应的IDeferredWorkbenchAdapter实现。 class ModelElementContentProviderimplements IStructuredContentProvider {DeferredContentManager manager;Overridepublic void inputChanged(Viewer viewer, Object oldInput, Object newInput ){TableViewerAdapter adapter new TableViewerAdapter( ( TableViewer )viewer );manager new DeferredContentManager( adapter );}Overridepublic Object[] getElements( Object inputElement ) {return manager.getChildren( inputElement );}[...] } 自定义IStructuredContentProvider用于在其inputChanged方法中调整查看器。 getElements的实现将委托给内容管理器后者再使用DeferredContentManager#getChildren将元素加载委托给模型元素适配器。 进行提取时将返回一个占位符元素以在查看器中显示“ Pending…”标签。 这是左侧标题图像中所示的情况。 在右侧检索已完成并且占位符已删除。 StructuredViewerAdapter 查看示例可以清楚地了解DeferredContentManager如何支持不同的查看器类型。 内容管理器使用适当的派生StructuredViewerAdapter来修改查看器。 目前只有用于抽象树形和表形查看器的默认适配器可用。 但是直接为其他结构化查看器类型编写适配器是很容易的。 以下代码段显示了例如ListViewer的实现 public class ListViewerAdapterextends StructuredViewerAdapter {public ListViewerAdapter( AbstractListViewer listViewer ) {super( listViewer );}Overridepublic void remove( Object element ) {viewer.remove( element );}Overridepublic void addElements( Object parent, Object[] children ) {viewer.add( children );} } 在示例中使用此选项并将表查看器替换为列表查看器将导致以下结果 凉 是不是 结论 这篇文章介绍了DeferredContentManager并展示了它如何启用使用不同的JFace Viewer进行的模型元素的后台加载。 并且在上面引人注目的用法解释之后如果您可能想知道从哪里获得它那么您将在Xiliary P2存储库中找到它。 内容管理器是com.codeaffine.eclipse.ui功能的一部分 http://fappel.github.io/xiliary 如果您想查看代码或提出问题也可以查看Xiliary GitHub项目 https://github.com/fappel/xiliary 翻译自: https://www.javacodegeeks.com/2014/12/deferred-fetching-of-model-elements-with-jface-viewers.htmljface
http://www.pierceye.com/news/416675/

相关文章:

  • 怎么做网站用dreamwer环球影城排队太热了
  • 台州网站建设技术外包网站创建教程
  • 发布设计任务的网站什么页游好玩人多
  • 增加网站关键词库中国建设银行黄陂支行网站
  • 企业网络优化湖北seo整站优化
  • 二百块做网站深圳网约车租赁公司哪家好
  • 软文500字范文WordPress博客程序优化
  • 企业网站内容如何备案建博会广州网站
  • 加工平台苏州纳米所海南seo排名
  • 个人适合做什么网站上海做网站建设的公司
  • 常见c2c网站有哪些网络文化经营许可证申请条件
  • 深圳龙华汽车网站建设移动页面
  • 陈巴尔虎旗网站建设重庆哪些网站推广公司
  • 网站做熊掌号码网站没被收录怎么办
  • 淘宝京东网站建设目的网站标题写什么作用
  • 棋牌网站开发工程师什么是营销网站建设
  • 邢台网站制作地址拿网站的文章做外链
  • 怎么样做钓鱼网站怎么建网站app
  • 高校财务网站建设国外网站ip地址
  • 重要的龙岗网站建设影视公司网站模板
  • 品牌网站 响应式网站wordpress oss静态
  • 免费网站制作中小型企业查询网址
  • 企业网站的seo广州市企业网站建设平台
  • 备案网站名称与实际网站名称不一致企业门户网站平台建设招标采购文件
  • 张掖网站制作wordpress 主题安装教程
  • 企业网站建设合作合同网页做成app
  • 郑州建网站价格医院网页
  • 南京设计网站网站速度的重要性
  • 河南智能网站建设平台简易网站建设
  • 成都鱼羊环保网站制作设计网站 关键字 标签