Editor的TreeViewer的图像缩放及数据保存的实现解决方案

Editor的TreeViewer的图像缩放及数据保存的实现
由于工作需要实现的机能,可能使用到GEF,因为之前完全没有了解过GEF,
本人有些疑问,希望高手能给提些意见,大神们能给些指点。

问题1:
机能需求:
  ①我想实现一个Editor,Editor中有TreeViewer,
    对这个TreeViewer的节点,我可以增删,
    而且也可以把Tree上面的一条分支,拖到Tree上面的另一条分支上.
    还需要能实现撤销,Coyp,Paste等操作
    (到目前为止的机能,我觉得可以不使用GEF)
  ②这个Editor还需要有缩放功能,
    可以把Tree放大200%,400%,
    或者缩小到50%,25%那样的比例显示,
    在网上查了,线索很少,但是通过GEF的Zoom貌似可以实现
问题:
  为实现我上面所描述机能,是不是我必须使用GEF?

问题2:
机能需求:
  ①我需要把TreeViewer中显示的整个树,按照树的结构,
    保存到一个xml文件里面。
  ②我能想到的办法是在Editor的doSave方法中,得到TreeViewer的引用,
    通过遍历树的形式,得到当前Tree的最新信息,然后将Tree的信息,
    更新到相应的xml文件中
问题:
  ①上述「②」中我的想法是不是会造成每次点击储存时,由于遍历树造成反映很慢。
  ②是不是我想得做法不符合GEF原本的设计思想呢?
  ③应该怎么做比较好呢?  

我自己也会继续调查,为了能获得更好的实现方式,希望大神,兄弟们能给提个醒!
先谢谢了!
------解决方案--------------------
用GMF吧!上面那些应该是可以解决的,但需要花费时间,而这些功能貌似在GMF自动生成的代码里面貌似都有。好久没看那块代码了,记不清了,呵呵
------解决方案--------------------
可以考虑用第三方的控件或者你自己写个Tree... 工程有点浩大