@Override public void handleEvent( final UICockpitPerspective perspective, final Map<String, String[]> params) { final String itemParam = this.getParameter(params, COMPETITION_KEY); CompetitionModel competition = null; try { final TypedObject item = UISessionUtils.getCurrentSession().getTypeService().wrapItem(PK.parse(itemParam)); if (item != null) { competition = (CompetitionModel) item.getObject(); } } catch (final Exception e) { LOG.warn("competition specified in jumpin URL not forund: " + itemParam, e); } if (competition != null) { getFrontendController().changeCompetition(competition.getCode()); } }
@Override public void onCockpitEvent(final CockpitEvent event) { // make sure newly created item is selected if (event instanceof ItemChangedEvent) { final ItemChangedEvent changedEvent = (ItemChangedEvent) event; switch (changedEvent.getChangeType()) { case CREATED: final TypedObject createdItem = changedEvent.getItem(); if (changedEvent.getSource() instanceof BrowserSectionModel) { final BrowserSectionModel sectionModel = (BrowserSectionModel) changedEvent.getSource(); final List<TypedObject> sectionItems = sectionModel.getItems(); if (sectionItems != null && !sectionItems.isEmpty()) { final int itemIndex = sectionItems.indexOf(createdItem); if (itemIndex != -1) { sectionModel.update(); sectionModel.setSelectedIndex(itemIndex); getContentEditorSection().setRootItem(createdItem); getContentEditorSection().setVisible(true); getContentEditorSection().update(); } } } else if (changedEvent.getSource() == null) { // createProperViewModel(); for (final BrowserSectionModel sectionModel : getBrowserSectionModels()) { if (sectionModel.getItems().contains(createdItem)) { final int selectedIndex = sectionModel.getItems().indexOf(createdItem); sectionModel.setSelectedIndex(selectedIndex); } } getContentEditorSection().setRootItem(createdItem); getContentEditorSection().setVisible(true); getContentEditorSection().update(); updateItems(); } break; case REMOVED: // if a page is deleted make sure any related struct tabs are closed if (changedEvent.getItem().equals(getCurrentPageObject())) { getArea().close(this); } if (changedEvent.getSource() instanceof SectionTableModel) { final BrowserSectionModel sectionModel = ((SectionTableModel) changedEvent.getSource()).getModel(); final List<TypedObject> sectionItems = sectionModel.getItems(); if (sectionItems != null && !sectionItems.isEmpty() && sectionItems.contains(changedEvent.getItem())) { final int removedIndex = sectionItems.indexOf(changedEvent.getItem()); if (sectionModel.getSelectedIndex() != null) { if (removedIndex < sectionModel.getSelectedIndex().intValue()) { sectionModel.setSelectedIndex(sectionModel.getSelectedIndex().intValue() - 1); } else if (removedIndex == sectionModel.getSelectedIndex().intValue()) { sectionModel.setSelectedIndexes(Collections.EMPTY_LIST); } } removeComponentFromSlot( (TypedObject) sectionModel.getRootItem(), changedEvent.getItem()); sectionModel.update(); } if (getContentEditorSection().getRootItem() != null && getContentEditorSection().getRootItem().equals(changedEvent.getItem())) { getContentEditorSection().setRootItem(null); getContentEditorSection().setVisible(false); } final AbstractBrowserArea area = (AbstractBrowserArea) UISessionUtils.getCurrentSession().getCurrentPerspective().getBrowserArea(); final AbstractContentBrowser content = area.getCorrespondingContentBrowser(this); if (content != null && content.getToolbarComponent() != null) { content.getToolbarComponent().update(); } } break; case CHANGED: for (final BrowserSectionModel sectionModel : getBrowserSectionModels()) { if (sectionModel.equals(event.getSource())) { continue; } final List<TypedObject> sectionItems = sectionModel.getItems(); final TypedObject changedItem = changedEvent.getItem(); if (sectionItems.contains(changedItem)) { final TypedObject typedObject = sectionItems.get(sectionItems.indexOf(changedItem)); modelService.refresh(typedObject.getObject()); sectionModel.update(); } if ((sectionModel.getRootItem() != null && sectionModel.getRootItem().equals(changedItem))) { final TypedObject rootItem = (TypedObject) sectionModel.getRootItem(); final ItemModel itemModel = (ItemModel) rootItem.getObject(); modelService.refresh(itemModel); if (sectionModel instanceof Lockable) { getContentEditorSection().setReadOnly(((Lockable) sectionModel).isLocked()); } sectionModel.update(); } } break; } } }