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);
}
}
}
大家有什么更好的方法吗? 请指教!