RCP财务管理程序v2.0笔记

一天一夜没睡,又搞定了很多功能.

本来想弄完再上床,思路是有的,但发现时间还是不大够,现在大脑有点点疲惫了...呵呵,只有上来写写笔记,写RCP的过程就是学习的过程,其中的知识点不记下来容易忘记哦.

1.关于View里的许多事件监听:
我在写自己的代码前看了在eclipse里面找代码看了看,学到了不少,在eclipse的世界里,许多法则都很重要,在我看来,如果要说哪个最重要的话,就应该是"有样学样"法则了:P
毕竟,基本上你需要的功能,人家都写过了,你自己的办法也许很好,但是看别人的代码,你会发现自己的代码是那么蹩脚,加上eclipse本来把扩展性放到首位的,里面的代码很多都相当优秀,就是一个大宝库.
但是这么大的宝库,太大了,容易吓到人,尤其是象我这样的菜鸟.其实,只要用好eclipse自带的搜索功能,强迫自己多试两次就好了.
比如我要查别人写的View的代码,我有两种方法,都很简单:1)直接按类名查:输入*view<就可以了.2)按方法查:View一定有createContextMenu()吧,按方法名查找也能找到.
我看的是AntView的代码,有下面这些要点值得注意:
1)让它实现IResourceChangeListener接口
当整个Workbech有任何文件有改动时会接受到事件.
2)写一个Update接口,里面只有一个方法update();让所有的Action都实现这个接口,然后在View里用一个list装下所有产生的action.
再写一个updateProjectActions方法,当有资源改变时就调用它,依次update所有action.就能够及时的让action改变状态,比如能用或是不能用.


private void updateProjectActions() {
  Iterator iter = updateProjectActions.iterator();
  while

(iter.hasNext()) {
   ((IUpdate) iter.next()).update();
  }
 }
3)让view里的control实现几个常用的接口.
比如,如果view里面是一个treeViewer,可以让它分别实现:
addSelectionChangedListener
addDoubleClickListener
addKeyListener

4)用IMemento保存view的状态,这样关掉view再打开都没有影响,本来以为这个方法不大好用,今天算是见识到实例了:P改天好好研究研究.
2.两个eclipse里的小技巧:
1)在当前代码编辑editor里,按Ctrl+t,可以看到它的所有超类和子类,很方便.
2)Ctrl + 1是让eclipse自动修补错误,很方便.
3.关于窗口里的数据格式的判断
这看起来好象很简单,我发现其实里面也蛮有学问的,特别是一个窗口里有多个输入数据需要判断格式是否正确的时候.
就拿我的程序来说吧,如下的窗口,要判断是否有空白栏,要判断时间日期的格式,要判断价格是否为float,然后日期年月日要在一个正常的范围

里,还要友好的提示用户.
我没有看代码,因为Jface提供一个类似的工具,我自己干脆直接写了算了,以后有时间再换.
刚开始的方法很烂,到一半想到一个好方法,这样的思路:

private int
 BLANK_ERROR = 0,
 PRICE_ERROR = 0,
 FORMAT_ERROR = 0,
 YEAR_ERROR = 0,
 MONTH_ERROR = 0,
 DAY_ERROR = 0;

//这个字符串数组第一个为"",我的方法优点就在于这里
private String[] ERROR = new String[]{
  "",
  "您有些重要信息没有填",
  "请输入正确的价格形式,为数字",
  "请输入正确的时间格式,例如:2006-1-20.",
  "请检查输入年的范围,系统默认在1960-2050之间.",
  "请检查输入月份范围在1-12之间.",
  "请检查输入日的范围在1-31之间"
 };

//然后每个检查的方法在检查后,如果有错就把对应的数字改为一个整数,第一个为1,第二个方法为2,依次类推...
private void checkBlank(){
    BLANK_ERROR = 0;
    setData();
    boolean isBlank = false;
    for(int i = 0; i< data.length; i++){
     if(data[i].equals("")){
      isBlank = true;
      break;
     }
    }
    if(isBlank)
     BLANK_ERROR = 1;
    
   }
  
   /**
    * check if the price if a float
    */
   private void checkPrice() {
  PRICE_ERROR = 0;
  boolean notFloat = false;
    try {
     new Float(price.getText().trim()).floatValue();
    }catch(Exception e) {
     notFloat = true;
    }
    if(notFloat)
     PRICE_ERROR = 2;
   }
...

然后判断错误直接用||操作符几个简单的if else就搞定了,象这样:
if(PRICE_ERROR != 0||YEAR_ERROR != 0 || MONTH_ERROR != 0|| DAY_ERROR != 0){
     MessageDialog.openInformation(getShell(), "Information",
       ERROR[YEAR_ERROR] + "/n" +
       ERROR[MONTH_ERROR]+ "/n" +
       ERROR[DAY_ERROR] + "/n" +
       ERROR[PRICE_ERROR]);
     return false;
    }

哪个有错误,会自动显示对应的错误提示,哪一个没错也不要紧,因为ERROR[0]是空字符串.

这个方法我自己想出来的,一定有更简单的方法,以后看到再说咯.

4.关于eclipse RCP程序的导出,费了很大的劲,哎,一言难尽,以后时间多了再慢慢说,而且我现在还不是懂得特别多.

关于RCPFinance Pro的v2.0的计划,我现在的进度是这样的:

1)Table View增加删除数据功能.
2)检查时间的格式,能对适当列进行排序.
3)增加对鼠标事件的支持.
4)支持同时修改多份数据.
5)打开新文件时,如果没有保存则提示用户.
6)安全读写文件.
7)增加Help文档.
8)增加intro view.
9)增加Perspective.
10)增加自动升级功能.

5.放几个截图上来:

intro view

帮助


按F1,弹出对应的动态帮助

升级,搜索扩展,管理扩展:

嘿嘿,等会就睡觉了,争取两天内搞定2.0

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/starshus/article/details/569446
个人分类: Eclipse
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭