Я разрабатываю плагин Eclipse, который в настоящее время имеет 2 вида.В моем первом представлении у меня есть список соединений, отображаемый в TableViewer
(имя и состояние соединения). Во втором представлении я хочу загрузить таблицы в базу данных (соединение).Эта загрузка будет выполнена путем нажатия на пункт меню в соединении («просмотреть детали»).Эти таблицы будут отображаться в TreeViewer
, потому что они также могут иметь детей.Я попытался сделать это следующим образом:
Класс My View:
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);
А также ничего не происходит в древовидном представлении при нажатии на элемент меню.Есть идеи?Спасибо