From cbace641ff9a7a0e9e39b668b6cfab714f0b0966 Mon Sep 17 00:00:00 2001 From: srosse <none@none> Date: Thu, 23 Jun 2016 15:17:59 +0200 Subject: [PATCH] OO-2069: delegate the create controller to the repository entry handler with a default implementation --- .../qpool/ui/QuestionListController.java | 6 ++-- .../ReferencableEntriesSearchController.java | 6 ++-- .../handlers/RepositoryHandler.java | 12 +++++++ .../ui/author/AuthorListController.java | 4 +-- .../ui/author/CreateEntryController.java | 31 +++++++++++++++++++ .../CreateRepositoryEntryController.java | 5 ++- 6 files changed, 55 insertions(+), 9 deletions(-) create mode 100644 src/main/java/org/olat/repository/ui/author/CreateEntryController.java diff --git a/src/main/java/org/olat/modules/qpool/ui/QuestionListController.java b/src/main/java/org/olat/modules/qpool/ui/QuestionListController.java index b1cb15a20b1..de4aef3bab9 100644 --- a/src/main/java/org/olat/modules/qpool/ui/QuestionListController.java +++ b/src/main/java/org/olat/modules/qpool/ui/QuestionListController.java @@ -88,7 +88,7 @@ import org.olat.repository.controllers.ReferencableEntriesSearchController; import org.olat.repository.controllers.RepositorySearchController.Can; import org.olat.repository.handlers.RepositoryHandler; import org.olat.repository.handlers.RepositoryHandlerFactory; -import org.olat.repository.ui.author.CreateRepositoryEntryController; +import org.olat.repository.ui.author.CreateEntryController; import org.olat.search.service.indexer.LifeFullIndexer; import org.springframework.beans.factory.annotation.Autowired; @@ -126,7 +126,7 @@ public class QuestionListController extends AbstractItemListController implement private ImportController importItemCtrl; private CollectionTargetController listTargetCtrl; private ShareTargetController shareTargetCtrl; - private CreateRepositoryEntryController addController; + private CreateEntryController addController; private QuestionItemDetailsController currentDetailsCtrl; private LayoutMain3ColsController currentMainDetailsCtrl; private MetadataBulkChangeController bulkChangeCtrl; @@ -760,7 +760,7 @@ public class QuestionListController extends AbstractItemListController implement String type = TestFileResource.TYPE_NAME; RepositoryHandler handler = repositoryHandlerFactory.getRepositoryHandler(type); - addController = new CreateRepositoryEntryController(ureq, getWindowControl(), handler); + addController = handler.createCreateRepositoryEntryController(ureq, getWindowControl()); addController.setCreateObject(new QItemList(items)); listenTo(addController); cmc = new CloseableModalController(getWindowControl(), translate("close"), addController.getInitialComponent()); diff --git a/src/main/java/org/olat/repository/controllers/ReferencableEntriesSearchController.java b/src/main/java/org/olat/repository/controllers/ReferencableEntriesSearchController.java index 88cd42bd6c3..0fada69a54f 100644 --- a/src/main/java/org/olat/repository/controllers/ReferencableEntriesSearchController.java +++ b/src/main/java/org/olat/repository/controllers/ReferencableEntriesSearchController.java @@ -61,7 +61,7 @@ import org.olat.repository.controllers.RepositorySearchController.Can; import org.olat.repository.handlers.RepositoryHandler; import org.olat.repository.handlers.RepositoryHandlerFactory; import org.olat.repository.ui.RepositoryTableModel; -import org.olat.repository.ui.author.CreateRepositoryEntryController; +import org.olat.repository.ui.author.CreateEntryController; import org.olat.repository.ui.author.ImportRepositoryEntryController; import org.springframework.beans.factory.annotation.Autowired; @@ -95,7 +95,7 @@ public class ReferencableEntriesSearchController extends BasicController { private Component createRessourceCmp; private List<Link> createRessourceButtons; - private CreateRepositoryEntryController createController; + private CreateEntryController createController; private ImportRepositoryEntryController importController; private CloseableModalController cmc; @@ -315,7 +315,7 @@ public class ReferencableEntriesSearchController extends BasicController { removeAsListenerAndDispose(cmc); removeAsListenerAndDispose(createController); RepositoryHandler handler = (RepositoryHandler)((Link)source).getUserObject(); - createController = new CreateRepositoryEntryController(ureq, getWindowControl(), handler); + createController = handler.createCreateRepositoryEntryController(ureq, getWindowControl()); listenTo(createController); String title = translate(handler.getCreateLabelI18nKey()); diff --git a/src/main/java/org/olat/repository/handlers/RepositoryHandler.java b/src/main/java/org/olat/repository/handlers/RepositoryHandler.java index 952005bef92..f5e43b0a43d 100644 --- a/src/main/java/org/olat/repository/handlers/RepositoryHandler.java +++ b/src/main/java/org/olat/repository/handlers/RepositoryHandler.java @@ -44,6 +44,8 @@ import org.olat.fileresource.types.ResourceEvaluation; import org.olat.repository.ErrorList; import org.olat.repository.RepositoryEntry; import org.olat.repository.model.RepositoryEntrySecurity; +import org.olat.repository.ui.author.CreateEntryController; +import org.olat.repository.ui.author.CreateRepositoryEntryController; /** @@ -160,6 +162,16 @@ public interface RepositoryHandler { */ public StepsMainRunController createWizardController(OLATResourceable res, UserRequest ureq, WindowControl wControl); + /** + * Called if a user wants to open the create repository entry dialog for a Resourceable + * @param ureq + * @param wControl + * @return Controller able to create resourceable. + */ + default CreateEntryController createCreateRepositoryEntryController(UserRequest ureq, WindowControl wControl) { + return new CreateRepositoryEntryController(ureq, wControl, this); + } + /** * Called if a user downloads a Resourceable that this handler can handle. * @param res diff --git a/src/main/java/org/olat/repository/ui/author/AuthorListController.java b/src/main/java/org/olat/repository/ui/author/AuthorListController.java index 57bef552e77..05ac91a3bc0 100644 --- a/src/main/java/org/olat/repository/ui/author/AuthorListController.java +++ b/src/main/java/org/olat/repository/ui/author/AuthorListController.java @@ -135,7 +135,7 @@ public class AuthorListController extends FormBasicController implements Activat private StepsMainRunController closeCtrl; private ConfirmDeleteController confirmDeleteCtrl; private ImportRepositoryEntryController importCtrl; - private CreateRepositoryEntryController createCtrl; + private CreateEntryController createCtrl; private CloseableCalloutWindowController toolsCalloutCtrl; private boolean hasAuthorRight; @@ -597,7 +597,7 @@ public class AuthorListController extends FormBasicController implements Activat if(createCtrl != null) return; removeAsListenerAndDispose(createCtrl); - createCtrl = new CreateRepositoryEntryController(ureq, getWindowControl(), handler); + createCtrl = handler.createCreateRepositoryEntryController(ureq, getWindowControl()); listenTo(createCtrl); removeAsListenerAndDispose(cmc); diff --git a/src/main/java/org/olat/repository/ui/author/CreateEntryController.java b/src/main/java/org/olat/repository/ui/author/CreateEntryController.java new file mode 100644 index 00000000000..793a31737e0 --- /dev/null +++ b/src/main/java/org/olat/repository/ui/author/CreateEntryController.java @@ -0,0 +1,31 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + */ +package org.olat.repository.ui.author; + +import org.olat.core.gui.control.Controller; +import org.olat.repository.RepositoryEntry; +import org.olat.repository.handlers.RepositoryHandler; + +public interface CreateEntryController extends Controller { + + public RepositoryEntry getAddedEntry(); + + public void setCreateObject(Object userObject); + + public RepositoryHandler getHandler(); + +} diff --git a/src/main/java/org/olat/repository/ui/author/CreateRepositoryEntryController.java b/src/main/java/org/olat/repository/ui/author/CreateRepositoryEntryController.java index 26427307a71..8833c0a3b5e 100644 --- a/src/main/java/org/olat/repository/ui/author/CreateRepositoryEntryController.java +++ b/src/main/java/org/olat/repository/ui/author/CreateRepositoryEntryController.java @@ -52,7 +52,7 @@ import org.springframework.beans.factory.annotation.Autowired; * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com * */ -public class CreateRepositoryEntryController extends FormBasicController { +public class CreateRepositoryEntryController extends FormBasicController implements CreateEntryController { public static final Event CREATION_WIZARD = new Event("start_wizard"); @@ -74,10 +74,12 @@ public class CreateRepositoryEntryController extends FormBasicController { initForm(ureq); } + @Override public RepositoryHandler getHandler() { return handler; } + @Override public RepositoryEntry getAddedEntry() { return addedEntry; } @@ -86,6 +88,7 @@ public class CreateRepositoryEntryController extends FormBasicController { return userObject; } + @Override public void setCreateObject(Object userObject) { this.userObject = userObject; } -- GitLab