内容摘要:本文从创建一个简单的SWT Tree Table开始,引入可重用的用户界面构件这个开发人员普遍关心的问题,然后分析Eclipse的用户界面的一些设计模式,循序渐进的向读者展示了如何设计实现一个精巧的高度可重用的TreeTable构件,最终通过增加一些扩展的功能显示了该构件强大的可扩展能力和灵活性。
清单3则展示了如何使用EmployeeContentProvider和EmployeeLabelProvider创建一个TreeTable的示例窗口。
清单3:SimpleTestWindow的代码。
public class SimpleTestWindow extends ApplicationWindow {
private TableTreeViewer ttv;
public SimpleTestWindow() {
super(null);
}
public void run() {
setBlockOnOpen(true);
open();
Display.getCurrent().dispose();
}
protected void configureShell(Shell shell) {
super.configureShell(shell);
shell.setText("Simple Tree Table Test");
}
protected Control createContents(Composite parent) {
ttv = new TableTreeViewer(parent);
ttv.getTableTree().setLayoutData(new GridData(GridData.FILL_BOTH));
ttv.setContentProvider(new EmployeeContentProvider());
ttv.setLabelProvider(new EmployeeLabelProvider());
ttv.setInput(TestDataGenerator.getTestDepartments());
// Set up the table
Table table = ttv.getTableTree().getTable();
new TableColumn(table, SWT.LEFT).setText("Name");
new TableColumn(table, SWT.LEFT).setText("Job Title");
new TableColumn(table, SWT.RIGHT).setText("Phone");
new TableColumn(table, SWT.RIGHT).setText("Birthday");
for (int i = 0, n = table.getColumnCount(); i < n; i++) {
table.getColumn(i).pack();
}
table.setHeaderVisible(true);
table.setLinesVisible(true);
parent.pack();
ttv.reveal(ttv.getElementAt(0));
return ttv.getTableTree();
}
public static void main(String[] args) {
new SimpleTestWindow().run();
}
}
作者:翁长河 责编:豆豆技术应用