最近一直在开发一个Eclipse平台的插件,关于java类库很多东西很生,而且Design Parttion学得也很糊涂,总想用,可是每次用的都很丑陋。总是一股脑写了一大堆代码,一大堆类,在这期间多数是不能测试的。当自以为框架已经搭建好了之后,却发现bug和代码一样多。然后觉得模式用的不对,再花大量的时间refactor,可惜refactor后的代码还是那么难看,我是应该好好尝试敏捷软件开发,还是继续用这种自以为可以短期应付的开发方式?
常常想要是有人一起带可能就会好多了,可是自己就不能有点独立学习的能力么?还是应该加强系统思维能力的训练,做事要有层次。可是目前为止仿佛自己只是认识到了不足,遇到事情的时候还没有去运用。以后遇事冷静点,好好分析形势在去做。
最近的开发也使自己学习了一些Eclipse平台的知识:
(1)这可是一个很难的问题,今天遇到时都傻了,觉得肯定是我力所不能及的。在linux下调试Eclipse plugin的时候,Eclipse突然罢工了,弹出警告“Cannot connect to VM. Socket Close”。网上很多人遇见,很多人没解决,但肯定有人解决了,要么我也不会解决。
方法很简单,linux下,在etc下的hosts文件中添加”127.0.0.1 localhost“;如果在windows下就去检查防火墙的设置,使javaw可以访问网络。因为Eclipse的调试要使用socket。
(2)TableView(继承自StructuredViewer)的三个方法:
setInput(Object input)
设置TableView要显示的数据对象
setContentProvider(IContentProvider contentProvider)
设置如何将TableView将要显示的内容解析成Object[]的类型
setLabelProvider(IBaseLabelProvider labelProvider)
设置如何将TableView要显示的Item(表示一行数据的对象)根据指定的列,解析成String,在Cell中显示
这三个函数是息息相关的。首先input是要显示的数据,也是contentProvider对象中方法
public Object[] getElements(Object parent)
的传入参数。这样我们就在getElements中将input分解Array,Array的每个元素就是Table中每一行的值的来源,同时也是labelProvider对象的成员函数
public String getColumnText(Object element, int columnIndex)
的传入参数。于是我们可以根据columnIndex 和element确定Table中一个Cell显示的String。
说来惭愧,开发这里Eclipse plugin这么久了,现在才敢确定这三个函数的关系...