/**
   * @see org.olat.core.gui.control.DefaultController#event(org.olat.core.gui.UserRequest,
   *     org.olat.core.gui.components.Component, org.olat.core.gui.control.Event)
   */
  @Override
  public void event(final UserRequest ureq, final Component source, final Event event) {
    if (source == myEntriesLink) {
      searchCtr.doSearchByOwnerLimitType(ureq.getIdentity(), limitTypes);
      mainVC.contextPut("subtitle", translate("referencableSearch." + CMD_MY_ENTRIES));
      myEntriesLink.setCustomEnabledLinkCSS("b_selected");
      allEntriesLink.removeCSS();
      searchEntriesLink.removeCSS();
    }
    if (source == allEntriesLink) {
      searchCtr.doSearchForReferencableResourcesLimitType(
          ureq.getIdentity(), limitTypes, ureq.getUserSession().getRoles());
      mainVC.contextPut("subtitle", translate("referencableSearch." + CMD_ALL_ENTRIES));
      allEntriesLink.setCustomEnabledLinkCSS("b_selected");
      myEntriesLink.removeCSS();
      searchEntriesLink.removeCSS();
    }
    if (source == searchEntriesLink) {
      mainVC.contextPut("subtitle", translate("referencableSearch." + CMD_SEARCH_ENTRIES));
      // start with search view
      searchCtr.displaySearchForm();
      mainVC.contextPut("subtitle", translate("referencableSearch." + CMD_SEARCH));

      searchEntriesLink.setCustomEnabledLinkCSS("b_selected");
      myEntriesLink.removeCSS();
      allEntriesLink.removeCSS();
    }
    if (source == createRessourceButton) {

      removeAsListenerAndDispose(addController);
      addController =
          new RepositoryAddController(ureq, getWindowControl(), getAction(ACTION_CREATE));
      listenTo(addController);

      removeAsListenerAndDispose(cmc);
      cmc =
          new CloseableModalController(
              getWindowControl(), translate("close"), addController.getInitialComponent());
      listenTo(cmc);

      cmc.activate();
    }
    if (source == importRessourceButton) {

      removeAsListenerAndDispose(addController);
      addController =
          new RepositoryAddController(ureq, getWindowControl(), getAction(ACTION_IMPORT));
      listenTo(addController);

      removeAsListenerAndDispose(cmc);
      cmc =
          new CloseableModalController(
              getWindowControl(), translate("close"), addController.getInitialComponent());
      listenTo(cmc);

      cmc.activate();
    }
  }
  /**
   * @see org.olat.core.gui.control.DefaultController#event(org.olat.core.gui.UserRequest,
   *     org.olat.core.gui.control.Controller, org.olat.core.gui.control.Event)
   */
  @Override
  public void event(final UserRequest ureq, final Controller source, final Event event) {
    final String cmd = event.getCommand();
    if (source == searchCtr) {
      if (cmd.equals(RepositoryTableModel.TABLE_ACTION_SELECT_ENTRY)) {
        // user selected entry to get a preview
        selectedRepositoryEntry = searchCtr.getSelectedEntry();
        final RepositoryEntry repositoryEntry = searchCtr.getSelectedEntry();
        final RepositoryHandler typeToLaunch =
            RepositoryHandlerFactory.getInstance().getRepositoryHandler(repositoryEntry);
        if (typeToLaunch == null) {
          final StringBuilder sb = new StringBuilder(translate("error.launch"));
          sb.append(": No launcher for repository entry: ");
          sb.append(repositoryEntry.getKey());
          throw new OLATRuntimeException(RepositoryDetailsController.class, sb.toString(), null);
        }
        // do skip the increment launch counter, this is only a preview!
        final OLATResourceable ores = repositoryEntry.getOlatResource();

        removeAsListenerAndDispose(previewCtr);
        previewCtr = typeToLaunch.createLaunchController(ores, null, ureq, getWindowControl());
        listenTo(previewCtr);

        removeAsListenerAndDispose(previewModalCtr);
        previewModalCtr =
            new CloseableModalController(
                getWindowControl(),
                translate("referencableSearch.preview.close"),
                previewCtr.getInitialComponent());
        listenTo(previewModalCtr);

        previewModalCtr.activate();

      } else if (cmd.equals(RepositoryTableModel.TABLE_ACTION_SELECT_LINK)) {
        // done, user selected a repo entry
        selectedRepositoryEntry = searchCtr.getSelectedEntry();
        fireEvent(ureq, EVENT_REPOSITORY_ENTRY_SELECTED);
      }
      initLinks();
    } else if (source == addController) {
      if (event.equals(Event.DONE_EVENT)) {
        cmc.deactivate();

        selectedRepositoryEntry = addController.getAddedEntry();
        fireEvent(ureq, EVENT_REPOSITORY_ENTRY_SELECTED);
        // info message
        final String message =
            translate(
                "message.entry.selected",
                new String[] {
                  addController.getAddedEntry().getDisplayname(),
                  addController.getAddedEntry().getResourcename()
                });
        getWindowControl().setInfo(message);
      } else if (event.equals(Event.CANCELLED_EVENT)) {
        cmc.deactivate();

      } else if (event.equals(Event.FAILED_EVENT)) {
        showError("add.failed");
      }
    }
  }