【发布时间】:2016-04-01 23:43:07
【问题描述】:
我正在开发一个当前有 2 个视图的 Eclipse 插件。在我的第一个视图中,我有一个显示在TableViewer 中的连接列表(名称和连接状态)。在我的第二个视图中,我想将表加载到数据库中(连接)。此加载将通过单击连接上的菜单项来完成(“查看详细信息”)。这些表将显示在TreeViewer 中,因为它们也可以有子表。我试过这样做:
我的视图类:
public class DBTreeView extends ViewPart {
private TreeViewer treeViewer;
private Connection root = null;
public DBTreeView() {
Activator.getDefault().setDbTreeView(this);
}
public void createPartControl(Composite parent) {
treeViewer = new TreeViewer(parent);
treeViewer.setContentProvider(new DBTreeContentProvider());
treeViewer.setLabelProvider(new DBTreeLabelProvider());
}
public void setInput(Connection conn){
root = conn;
treeViewer.setInput(root);
treeViewer.refresh();
}
}
我创建了一个setInput 方法,该方法从连接视图中的菜单项注册的操作中调用,当前选择的连接作为参数:
MViewContentsAction 类:
public void run(){
selectedConnection = Activator.getDefault().getConnectionsView().getSelectedConnection();
Activator.getDefault().getDbTreeView().setInput(selectedConnection);
}
在我的 ContentProvider 类中:
public Object[] getChildren(Object arg0) {
if (arg0 instanceof Connection){
return ((Connection) arg0).getTables().toArray();
}
return EMPTY_ARRAY;
}
其中 EMPTY_ARRAY 是一个...空数组
我面临的问题是,在调试模式下,这段代码没有以某种方式执行:
Activator.getDefault().getDbTreeView().setInput(selectedConnection);
单击菜单项时,树视图中也没有任何反应。有任何想法吗? 谢谢
【问题讨论】:
标签: eclipse eclipse-plugin swt jface