@SuppressWarnings("unused") @Override protected void event(final UserRequest ureq, final Component source, final Event event) { if (source instanceof Link) { final Link link = (Link) source; if (link.getCommand().equals(DELETE_LINK_CMD)) { if (artefactNodeClicked != null) { final AbstractArtefact artefact = ePFMgr.loadArtefactByKey(new Long(getArtefactIdFromNodeId(artefactNodeClicked))); final PortfolioStructure parentStruct = ePFMgr.loadPortfolioStructureByKey( new Long(getArtefactParentStructIdFromNodeId(artefactNodeClicked))); ePFMgr.removeArtefactFromStructure(artefact, parentStruct); // refresh the view fireEvent(ureq, Event.CHANGED_EVENT); } else if (structureClicked != null) { if ((structureClicked instanceof EPPage) && !(structureClicked instanceof EPAbstractMap)) { PortfolioStructure ps = structureClicked; while (ePFMgr.loadStructureParent(ps) != null) { ps = ePFMgr.loadStructureParent(ps); } final int childPages = ePFMgr.countStructureChildren(ps); if (childPages > 1) { eSTMgr.removeStructureRecursively(structureClicked); // refresh the view fireEvent(ureq, Event.CHANGED_EVENT); } else { showError("last.page.not.deletable"); } } else if (structureClicked instanceof EPStructureElement && !(structureClicked instanceof EPAbstractMap)) { // structures should always be deletable eSTMgr.removeStructureRecursively(structureClicked); // refresh the view fireEvent(ureq, Event.CHANGED_EVENT); } else { showInfo("element.not.deletable"); } } } } }