Я использую TreeViewer со списком клиентов. Я добавил DoubleClickListener в TreeViewer.
this.treeViewer.addDoubleClickListener(new IDoubleClickListener() {
@Override
public void doubleClick(DoubleClickEvent event) {
IStructuredSelection thisSelection = (IStructuredSelection) event
.getSelection();
Object selectedNode = thisSelection.getFirstElement();
if (selectedNode instanceof ICustomer) {
ICustomer customer = (ICustomer) selectedNode;
selectionService.setSelection(customer);
perspective = (MPerspective) modelService
.find("de.checkpoint.rinteln.carlofon.perspective.customer",
app);
}
if (perspective != null) {
partService.switchPerspective(perspective);
}
}
});
В перспективе клиента у меня есть 2 представления, которые используют выбранного клиента для загрузки его данных (заказов и напоминаний) из БД.
В Customer-View все работает просто отлично. Но как только я перехожу к следующему представлению (Напоминание или Заказ), список выбора Null, который я не получаю.
@Inject
void setSelection(
@Optional @Named(IServiceConstants.ACTIVE_SELECTION) ICustomer customer) {
if (customer != null) {
idText.setText("" + customer.getCustomerId());
customerNameText
.setText(customer.getFirstname() + " " + customer.getLastname());
steetText.setText(customer.getStreet());
cityText.setText(customer.getCity());
steetCodeText.setText("" + customer.getCityCode());
} else {
// TODO Clear View!
}
}
А в представлении напоминания (в том же ракурсе, что и представление покупателя) выбранным клиентом является ноль
@Inject
void setSelection(
@Optional @Named(IServiceConstants.ACTIVE_SELECTION) ICustomer customer) {
if (customer != null) {
super.treeViewer.setInput(service.loadAll());
} else {
// TODO Clear View!
}
}
Что привело к моему вопросу, я что-то пропустил? Разве я не должен использовать один и тот же выбор в разных видах?
Я должен добавить, что оба представления расширяют AbstractView, в котором реализован IDoubleClickListener.