ï»??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲mv大片欧洲mv大片,欧美高清hd,国产成人精品免费网站 http://www.aygfsteel.com/benniaolk/articles/316754.htmlDreavaDreavaSun, 28 Mar 2010 08:39:00 GMThttp://www.aygfsteel.com/benniaolk/articles/316754.htmlhttp://www.aygfsteel.com/benniaolk/comments/316754.htmlhttp://www.aygfsteel.com/benniaolk/articles/316754.html#Feedback0http://www.aygfsteel.com/benniaolk/comments/commentRss/316754.htmlhttp://www.aygfsteel.com/benniaolk/services/trackbacks/316754.html1ã€?nbsp;首先要实现EditPartFactory接口——EditPartFactoryOutlineImpåQŒè¯¥æŽ¥å£ä¸ºOutline视图提供控制器EditPart对象åQŒæ³¨æ„è¯¥EditPartFactoryImp要与¾~–辑视图——即真正的编辑区的EditPartFactory接口实现¾c»PartFactoryEditAreaImp保持一è‡ß_¼Œå¦åˆ™æ— æ³•同步¾~–辑åŒÞZ¸ŽOutline的同步。当ç„Óž¼Œòq¶ä¸æ˜¯ç¼–辑区的所有元素都应反应到Outline视图中,˜q™è¦æ ÒŽ(gu¨©)®è‡ªå·±çš„需要在EditPartFactoryOutlineImp创徏EditPart对象ã€?br /> 2ã€?nbsp;Outline视图中的æ ?w¨¨i)控制器的构建:需要实现EditPartFactory接口——TreePartFactoryåQŒå®žçްpublic EditPart createEditPart(EditPart context, Object model)æ–ÒŽ(gu¨©)³•åQŒåœ¨è¯¥æ–¹æ³•里为每个结点——model创徏其子模型的树(w¨¨i)模型。Outline的树(w¨¨i)¾l“构的根¾l“点应该在编辑区的——GraphicalEditorWithFlyoutPalette¾l§æ‰¿¾cȝš„内部¾c»ContentOutlinePage¾l§æ‰¿¾cȝš„public void createControl(Composite parent)æ–ÒŽ(gu¨©)³•中进行创建,通过getViewer().setContents(model)æ–ÒŽ(gu¨©)³•ž®†æ ¹æ¨¡åž‹æ³¨å…¥Outline视图中ã€?br /> 另外åQŒäؓ了维护Outline的树(w¨¨i)åQŒéœ€è¦ç‘ô承AbstractTreeEditPartåQŒåŠå®žçްPropertyChangeListener接口åQŒä¸»è¦éœ€è¦é‡è½½æˆ–å®žçŽ°çš„ä¸€äº›æ–¹æ³•äØ“åQ?/p>
//此方法负责处理由于鼠标选中或更改对æ ?w¨¨i)造成的变化,å¯ÒŽ(gu¨©) ‘(w¨¨i)¾l“æž„˜q›è¡Œåˆäh–°   
public void propertyChange(PropertyChangeEvent evt)   
//æ ?w¨¨i)结点的图æ ?nbsp;  
protected Image getImage()   
//æ ?w¨¨i)结点的文æœ?nbsp;  
protected String getText()   
//该方法负责处理由于鼠标选中或其他事件激‹zÀLŸæ ?w¨¨i)结点该做的事情åQŒå¦‚æžœäØ“è¯¥æ ‘(w¨¨i)¾l“点æ·ÕdŠ PropertyChangeListenerã€?nbsp;  
public void activate()   
//与上面的æ–ÒŽ(gu¨©)³•相反   
public void deactivate()   
//得到当前æ ?w¨¨i)结点的模åž?nbsp;  
protected List getModelChildren()  


      补充资料åQ?br />       在Eclipse 里,当编辑器åQˆEditoråQ‰è¢«‹È€‹zÀL—¶åQŒå¤§¾U²è§†å›¾è‡ªåŠ¨é€šè¿‡˜q™ä¸ª¾~–辑器的getAdapter()æ–ÒŽ(gu¨©)³•å¯ÀL‰¾å®ƒæä¾›çš„大纲åQˆå¤§¾U²å®žçްIcontentOutlinePage 接口åQ‰ã€‚GEF 提供了ContentOutlinePage ¾cȝ”¨æ¥å®žçް大¾U²è§†å›¾ï¼Œæˆ‘们要做的就是实çŽîC¸€ä¸ªå®ƒçš„子¾c»ï¼Œòq‰™‡ç‚¹å®žçްcreateControl()æ–ÒŽ(gu¨©)³•。ContentOutlinePage 是org.eclipse.ui.part.Page 的一个子¾c»ï¼Œå¤§çº²è§†å›¾åˆ™æ˜¯PageBookView 的子¾c»ï¼Œåœ¨å¤§¾U²è§†å›¾ä¸­æœ‰ä¸€ä¸ªPageBookåQŒåŒ…含了很多Page òq¶å¯ä»¥åœ¨å®ƒä»¬ä¹‹é—´åˆ‡æ¢åQŒåˆ‡æ¢çš„依据ž®±æ˜¯å½“前‹zÕdŠ¨çš„Editor。因此,我们在createControl()æ–ÒŽ(gu¨©)³•里要做的ž®±æ˜¯æž„造这个PageåQŒç®€åŒ–后的代码如下所½Cºï¼š

private Control outline;   
public OutlinePage() {   
   
super(new TreeViewer());   
}
   
public void createControl(Composite parent) {   
    outline 
= getViewer().createControl(parent);   
    getSelectionSynchronizer().addViewer(getViewer());   
    getViewer().setEditDomain(getEditDomain());   
    getViewer().setEditPartFactory(
new TreePartFactory());   
    getViewer().setContents(getDiagram());   
}
  

     ç”׃ºŽæˆ‘们在构造方法里指定了ä‹É用树(w¨¨i)¾l“构昄¡¤ºå¤§çº²åQŒæ‰€ä»¥createControl()里的½W¬ä¸€å¥å°±ä¼šä‹Éoutline 变量得到一个TreeåQˆè§org.eclipse.gef.ui.parts.TreeViewer 的代码)åQŒç¬¬äºŒå¥æŠŠTreeViewer 加到选择同步器中åQŒä»Žè€Œè®©ç”¨æˆ·ä¸è®ºåœ¨å¤§¾U²æˆ–¾~–辑区域里选择EditPart æ—Óž¼Œå¦ä¸€æ–šwƒ½èƒ½è‡ªåŠ¨åšå‡ºåŒæ ïL(f¨¥ng)š„选择åQ›æœ€åŽä¸‰è¡Œçš„作用在以前的帖子里都有介¾lï¼Œæ€ÖM½“目的是把大纲视图的模型与¾~–辑区域的模型联¾pÕdœ¨ä¸€èµøP¼Œ˜q™æ ·åQŒå¯¹äºŽåŒä¸€ä¸ªæ¨¡åž‹æˆ‘们就有了两个视图åQŒä½“会到MVC 的好处了吧ã€?br /> 实现大纲视图最重要的工作基本就是这些,但还没有完,我们要在init()æ–ÒŽ(gu¨©)³•里绑定UNDO/REDO/DELETE ½{‰å‘½ä»¤åˆ°Eclipse ä¸Èª—口,否则当大¾U²è§†å›‘Ö¤„于活动状态时åQŒä¸»å·¥å…·æ¡ä¸Šçš„这些命令就会变ä¸ÞZ¸å¯ç”¨çŠ¶æ€ï¼›åœ?getControl()æ–ÒŽ(gu¨©)³•里要˜q”回我们的outline 成员变量åQŒä¹Ÿž®±æ˜¯æŒ‡å®šè®©è¿™ä¸ªæŽ§ä»¶å‡ºçŽ°åœ¨å¤§çº²è§†å›¾ä¸­ï¼›åœ¨dispose()æ–ÒŽ(gu¨©)³•里应该把˜q™ä¸ªTreeViewer 从选择同步器中¿U»é™¤åQ›æœ€åŽï¼Œå¿…须在PracticeEditor 里覆盖getAdapter()æ–ÒŽ(gu¨©)³•åQŒå‰é¢è¯´˜q‡ï¼Œ˜q™ä¸ªæ–ÒŽ(gu¨©)³•是在Editor ‹È€‹zÀL—¶è¢«å¤§¾U²è§†å›¾è°ƒç”¨çš„åQŒæ‰€ä»¥åœ¨˜q™é‡Œå¿…须把我们实现好的OutlinePage ˜q”回¾l™å¤§¾U²è§†å›¾ä‹É用,代码如下åQ?/p>

public Object getAdapter(Class type) {   
  
if (type == IContentOutlinePage.class)   
  
return new OutlinePage();   
  
return super.getAdapter(type);   
}
  


Dreava 2010-03-28 16:39 发表评论
]]>
Ö÷Õ¾Ö©Öë³ØÄ£°å£º Û³ÁêÏØ| ÜõÍåÇø| °ÝÈªÏØ| ¶îÃôÏØ| ³£µÂÊÐ| »ÔÄÏÏØ| ÈôÇ¼ÏØ| ÑôÉ½ÏØ| Âò³µ| ÎÚ³ľÆëÊÐ| Êæ³ÇÏØ| ·Ê³ÇÊÐ| Ä«ÍÑÏØ| ´óÖñÏØ| ¹óÑôÊÐ| ÉÛÑôÏØ| ÓÀ¿µÊÐ| ×óÈ¨ÏØ| ºÎ÷ÊÐ| ÓÀÐÂÏØ| ƽºÍÏØ| ³à³ÇÏØ| ͳ·¬ÊÐ| ³¤ÖÎÏØ| °²¿µÊÐ| çõ´ºÊÐ| äÒÖÐÏØ| ÕØ¶«ÊÐ| ½­¿ÚÏØ| ´óÍ¬ÏØ| ÉÛ¶«ÏØ| ³µéÏØ| »³ÈÊÏØ| ĵµ¤½­ÊÐ| ½ðÌÃÏØ| ÑÉêÈ| ÊèÀÕÏØ| ÊÖÓÎ| ²ýÀèÏØ| ¶¨Ô¶ÏØ| Î÷ÎÚÖéÄÂÇ߯ì|