??xml version="1.0" encoding="utf-8" standalone="yes"?>国产精品天天看,欧美性视频在线,㊣最新国产の精品bt伙计久久 http://www.aygfsteel.com/wayne-wang/zh-cnTue, 24 Jun 2025 15:20:41 GMTTue, 24 Jun 2025 15:20:41 GMT60GEF中的property view的?/title><link>http://www.aygfsteel.com/wayne-wang/archive/2010/07/12/325869.html</link><dc:creator>Wayne Wang</dc:creator><author>Wayne Wang</author><pubDate>Mon, 12 Jul 2010 08:48:00 GMT</pubDate><guid>http://www.aygfsteel.com/wayne-wang/archive/2010/07/12/325869.html</guid><wfw:comment>http://www.aygfsteel.com/wayne-wang/comments/325869.html</wfw:comment><comments>http://www.aygfsteel.com/wayne-wang/archive/2010/07/12/325869.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/wayne-wang/comments/commentRss/325869.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/wayne-wang/services/trackbacks/325869.html</trackback:ping><description><![CDATA[<span style="font-family: 宋体">GEF作ؓ一个图形框Ӟ对于其中囑Ş元素的属性的讑֮是非帔R要的Q这是因为每一个图形元素的背后都是一个模型,而这些模型可以包含很多业务数据,如果我们最l选定GEF作ؓ我们应用的解x案的话,我们可以利用property view来实现对q些业务数据属性的讑֮Q?/span> q就是我们这里即讨论的问题?br /> Eclipse中property view一共有两种Q普通的property viewQ也是key/valuecd的property view和tabbed property viewQ后者将viewer分成了若q个tab pageQ利用tab page不同的属性分l;从我使用的经验来看,我比较們֐于前者,因ؓ前者可以解决绝大部分的问题Q即便是我们希望~辑一个非常复杂的属性,也可以自定义属性编辑器来完成。比如我们常用的SWT Designer是使用了第一U方式,当然我们不能否认后一U方式由于可以在property viewer中自定义布局及控Ӟ界面比较炫,但是׃需要三个扩展点的配合,操作hq是比较ȝ的;不过q里我不是要讨论两者的优劣Q而是要讨论如何用这两个东西Q因此还是书归正传吧?<br /> org.eclipse.ui.views.properties.tabbedQ这是绝不能的。只有这P属性页面才能显C出来;<br /> 首先要想使用eclipse的property viewQ必d相应的RCPE序或者PluginE序中配|DependenciesQ如果是W一U,需要增加org.eclipse.ui.viewsQ如果是后一U,需要增?br /> <br /> 其次Q如果应用ؓRCPQ那么可以在视图文g中以“org.eclipse.ui.views.PropertySheet”为id|增加一个viewQ这个id是Eclipse默认的属性页idQ如果你C住,那么用IPageLayout.ID_PROP_SHEET好了Q当然这一步ƈ不是必须的,你可以在自己的WorkbenchWindowAdvisor中配|setShowFastViewBars(true)Q这L序运行时可以通过fast view bar来动态打开q个view了,怎么做随你;我的是两者都要,以防用户属性页关闭了,无法打开Q(题外话是可以Z个Command/Action来打开属性页Q但是我觉得没有必要Q;<br /> <br /> l过以上两步Q我们的准备工作完成了Q下面就是如何在我们的Editor炚w了某一个图形元素时Q属性页能够被通知。事实上q里说的囑Ş元素是不切的,而应该是q个囑Ş元素对应的模型元素;让我们把眼光攑־更宽q一点,事实上ƈ不仅仅局限于GEFQQ何实CIPropertySource接口的模型元素都可以被属性页昄出来Q?br /> 模型元素实现IPropertySource后需要实C下方法,具体含义׃说了Q?br /> ·public Object getEditableValue();<br /> ·public IPropertyDescriptor[] getPropertyDescriptors();<br /> ·public Object getPropertyValue(Object id);<br /> ·public boolean isPropertySet(Object id);<br /> ·public void resetPropertyValue(Object id);<br /> ·public void setPropertyValue(Object id, Object value);<br /> 其中最最重要的是W???个方法;其是第二个Ҏؓ重要。在定义PropertyDescriptorӞEclipse已经提供了两个主要的属性描q类TextPropertyDescriptor和ComboBoxPropertyDescriptorQ分别对应文本框和组合下拉框Q但是如果是比较复杂的属性,例如像字体、颜色这L属性,相应的属性描q类p自己定义了,q时需要承PropertyDescriptorcd义自q属性描q类Q而在定义q个cȝq程中,必须指定相应的CellEditorQ也是属性编辑器c,我的是对于非常复杂的属性,比如属性中包含了很多不同类型的子属性,q些子属性的个数会发生变化等{,那么可以定义一个DialogCellEditor的子c,以对话框的Ş式显C所有的子属性,q在对话框中Ҏ子属性进行显C、操作。也是_<br /> MyPropertyDescriptorQ承PropertyDescriptorQ?-->MyCellEditorQ承CellEditorQ?-->MyDialogQ承DialogQ?-->子属性显C、操作;<br /> <br /> l过q些操作对于W一Uproperty view已经_了,在GEF应用中当你选择了某一个图形时Q其属性就能显C出来了。但是对于后者来_q还q远不够Q因为它比较吊!<br /> <br /> 对于tabbed property view来说Q以上的步骤是不能缺的,除此而外q需要配|org.eclipse.ui.views.properties.tabbed.propertyContributor、org.eclipse.ui.views.properties.tabbed.propertyTabs和org.eclipse.ui.views.properties.tabbed.propertySections三个扩展点;W一个扩展点的最主要作用是通知属性页I竟是workbench part为属性页提供属性,说白了(我的理解Q就是所有我们想最l选择的那些元素放在了哪个workbench part上)Q因此相应的contributorId往往是editor的idQ这里需要超U注意的是对于GEF应用来说Q必要配置<font color="#ff0000">typeMapper</font>Q也是定义实现ITypeMapper的类Q如下:<br /> <span style="color: #ff0000">public Class mapType(Object object) {<br />   Class type = object.getClass();<br />   if(object instanceof EditPart) {<br />    type = ((EditPart)object).getModel().getClass();<br />   }<br />   return type;<br />  }<br /> 没有q一步,毛也昄不出来;其实我们可以通过以上代码看出Q这个{换就是将控制器{换ؓ模型Q此外相应的editor必须l承<code>ITabbedPropertySheetPageContributor接口Q提供getContributorId()ҎQ也是q回editor的IDQ而且q要重蝲getAdapterҎ提供如下实现Q?br /> </code></span>public Object getAdapter(Class adapter) {<br />   if(adapter == IPropertySheetPage.class) {<br />     return new TabbedPropertySheetPage(this);<br />   }<br />         return super.getAdapter(adapter);<br /> }<br /> <br /> 当完成了以上所有步骤之后,分页的属性页显C出来了。具体的Section的定义就不说了,其实不过是定义public void createControls(Composite parent, TabbedPropertySheetPage aTabbedPropertySheetPage)q个函数|了Q它和其他的createControl没什么区别,只是我们可以利用getWidgetFactory()来构造界面元素,其他的没有什么新鲜的Q?br /> <br /> 以上是属性页在GEF中的应用? <img src ="http://www.aygfsteel.com/wayne-wang/aggbug/325869.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/wayne-wang/" target="_blank">Wayne Wang</a> 2010-07-12 16:48 <a href="http://www.aygfsteel.com/wayne-wang/archive/2010/07/12/325869.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> վ֩ģ壺 <a href="http://" target="_blank">ϲ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ˮ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ʡ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">«</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ٳ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ϫ</a>| <a href="http://" target="_blank">䰲</a>| <a href="http://" target="_blank">ƺ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ˮ</a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ˮ</a>| <a href="http://" target="_blank">Դ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ϲ</a>| <a href="http://" target="_blank">˫</a>| <a href="http://" target="_blank">Զ</a>| <a href="http://" target="_blank">Ȩ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ٲ</a>| <a href="http://" target="_blank">־</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">̫</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ԭƽ</a>| <a href="http://" target="_blank">־</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>