SWT/Jface TreeViewer 下移和上移按钮的简单实现

SWT/Jface TreeViewer 上移和下移按钮的简单实现

在tree的右边有上移和下移2个按钮

下边贴一下这2个按钮的实现

button的定义就不贴出来了!

 

  upButton.addSelectionListener(new SelectionAdapter() {
   public void widgetSelected(SelectionEvent e) {
    handleMove(true);
   }

  });


  downButton.addSelectionListener(new SelectionAdapter() {
   public void widgetSelected(SelectionEvent e) {
    handleMove(false);
   }
  });

 

移动的方法:

 private void handleMove(boolean isUp) {
  IStructuredSelection selection = (IStructuredSelection) viewer.getSelection();
  CaseObject selectObject = (CaseObject) selection.getFirstElement();
  if (selectObject instanceof CaseObject) {
   CaseModel caseModel = (CaseModel) viewer.getInput();
   List<CaseObject> objects = caseModel.getModel();
   int index = 0;
   for (int i = 0; i < objects.size(); i++) {
    if (selectObject.equals(objects.get(i))) {
     index = i;
    }
   }
   int newIndex = isUp ? index - 1 : index + 1;
   CaseObject moveObject = objects.get(newIndex);
   objects.set(newIndex, selectObject);
   objects.set(index, moveObject);

   caseModel.setModel(objects);
   viewer.setInput(caseModel);
   viewer.refresh();
   if (index - 1 <= 0 && isUp) {
    upButton.setEnabled(false);
    downButton.setEnabled(true);
   } else if (index + 1 == objects.size() - 1 && !isUp) {
    upButton.setEnabled(true);
    downButton.setEnabled(false);
   } else {
    upButton.setEnabled(true);
    downButton.setEnabled(true);
   }
  }
 }

大家有什么更好的方法吗? 请指教!