From 14a785b103785e78aed57337b94e34949cad3554 Mon Sep 17 00:00:00 2001
From: srosse <none@none>
Date: Thu, 19 Feb 2015 13:13:56 +0100
Subject: [PATCH] OO-1202: ask if the item is editable if droppped on a group
 or a pool

---
 pom.xml                                       |  6 ---
 .../ui/QuestionPoolMainEditorController.java  | 48 +++++++++++++++++--
 .../qpool/ui/ShareItemOptionController.java   | 12 +++++
 3 files changed, 55 insertions(+), 11 deletions(-)

diff --git a/pom.xml b/pom.xml
index f7e8c074423..7ec81cfa86f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -2022,12 +2022,6 @@
 			<groupId>com.thoughtworks.xstream</groupId>
 			<artifactId>xstream</artifactId>
 			<version>1.4.7</version>
-			<exclusions><!-- use only xmlpull -->
-				<exclusion>
-					<artifactId>xpp3</artifactId>
-					<groupId>xpp3_min</groupId>
-				</exclusion>
-			</exclusions>
 		</dependency>
 		<dependency>
 			<groupId>xerces</groupId>
diff --git a/src/main/java/org/olat/modules/qpool/ui/QuestionPoolMainEditorController.java b/src/main/java/org/olat/modules/qpool/ui/QuestionPoolMainEditorController.java
index 140cb79f944..b5fae29e1ec 100644
--- a/src/main/java/org/olat/modules/qpool/ui/QuestionPoolMainEditorController.java
+++ b/src/main/java/org/olat/modules/qpool/ui/QuestionPoolMainEditorController.java
@@ -41,6 +41,7 @@ import org.olat.core.gui.control.Controller;
 import org.olat.core.gui.control.Event;
 import org.olat.core.gui.control.WindowControl;
 import org.olat.core.gui.control.controller.BasicController;
+import org.olat.core.gui.control.generic.closablewrapper.CloseableModalController;
 import org.olat.core.gui.control.generic.dtabs.Activateable2;
 import org.olat.core.gui.control.generic.modal.DialogBoxController;
 import org.olat.core.gui.control.generic.modal.DialogBoxUIFactory;
@@ -93,11 +94,13 @@ public class QuestionPoolMainEditorController extends BasicController implements
 	private QuestionsController markedQuestionsCtrl;
 	
 	private Controller presentationCtrl, sharePresentationCtrl;
+	private CloseableModalController cmc;
 	private PoolsAdminController poolAdminCtrl;
 	private QItemTypesAdminController typesCtrl;
 	private QEducationalContextsAdminController levelsCtrl;
 	private QLicensesAdminController licensesCtrl;
 	private TaxonomyAdminController taxonomyCtrl;
+	private ShareItemOptionController shareItemsCtrl;
 	private LayoutMain3ColsController columnLayoutCtr;
 	private QuestionPoolAdminStatisticsController adminStatisticsCtrl;
 	private DialogBoxController copyToMyCtrl;
@@ -203,7 +206,23 @@ public class QuestionPoolMainEditorController extends BasicController implements
 
 	@Override
 	protected void event(UserRequest ureq, Controller source, Event event) {
-		if(event instanceof QPoolEvent) {
+		if(shareItemsCtrl == source) {
+			if(QPoolEvent.ITEM_SHARED.equals(event.getCommand())) {
+				List<QuestionItemShort> items = shareItemsCtrl.getItems();
+				if(items.size() > 0) {//can only drop one item
+					QuestionItemShort item = items.get(0);
+					if(shareItemsCtrl.getGroups() != null) {
+						showInfo("item.shared", item.getTitle());
+					} else if(shareItemsCtrl.getPools() != null) {
+						showInfo("item.pooled", item.getTitle());
+					}
+				}
+				buildShareSubTreeModel(sharesNode);
+				menuTree.setDirty(true);
+			}
+			cmc.deactivate();
+			cleanUp();
+		} else if(event instanceof QPoolEvent) {
 			if(QPoolEvent.ITEM_SHARED.equals(event.getCommand())) {
 				buildShareSubTreeModel(sharesNode);
 				menuTree.setDirty(true);
@@ -232,9 +251,18 @@ public class QuestionPoolMainEditorController extends BasicController implements
 				QuestionItemShort item = (QuestionItemShort)copyToMyCtrl.getUserObject();
 				doCopyToMy(ureq, item);
 			}
+		} else if(cmc == source) {
+			cleanUp();
 		}
 		super.event(ureq, source, event);
 	}
+	
+	private void cleanUp() {
+		removeAsListenerAndDispose(shareItemsCtrl);
+		removeAsListenerAndDispose(cmc);
+		shareItemsCtrl = null;
+		cmc = null;
+	}
 
 	@Override
 	public void activate(UserRequest ureq, List<ContextEntry> entries, StateEntry state) {
@@ -265,11 +293,9 @@ public class QuestionPoolMainEditorController extends BasicController implements
 			if(node != null) {
 				Object userObj = node.getUserObject();
 				if(userObj instanceof BusinessGroup) {
-					qpoolService.shareItemsWithGroups(singletonList(item), singletonList((BusinessGroup)userObj), false);
-					showInfo("item.shared", item.getTitle());
+					doShareItemsOptions(ureq, singletonList(item), singletonList((BusinessGroup)userObj), null);
 				} else if(userObj instanceof Pool) {
-					qpoolService.addItemsInPools(singletonList(item), singletonList((Pool)userObj), false);
-					showInfo("item.pooled", item.getTitle());
+					doShareItemsOptions(ureq, singletonList(item), null, singletonList((Pool)userObj));
 				} else if(userObj instanceof QuestionItemCollection) {
 					qpoolService.addItemToCollection(singletonList(item), singletonList((QuestionItemCollection)userObj));
 					showInfo("item.collectioned", item.getTitle());
@@ -287,6 +313,18 @@ public class QuestionPoolMainEditorController extends BasicController implements
 		}
 	}
 	
+	private void doShareItemsOptions(UserRequest ureq, List<QuestionItemShort> items, List<BusinessGroup> groups, List<Pool> pools) {
+		removeAsListenerAndDispose(cmc);
+		removeAsListenerAndDispose(shareItemsCtrl);
+		shareItemsCtrl = new ShareItemOptionController(ureq, getWindowControl(), items, groups, pools);
+		listenTo(shareItemsCtrl);
+		
+		cmc = new CloseableModalController(getWindowControl(), translate("close"),
+				shareItemsCtrl.getInitialComponent(), true, translate("share.item"));
+		cmc.activate();
+		listenTo(cmc);	
+	}
+	
 	private void doCopyToMyConfirmation(UserRequest ureq, QuestionItemShort item) {
 		String title = translate("copy");
 		String text = translate("copy.confirmation");
diff --git a/src/main/java/org/olat/modules/qpool/ui/ShareItemOptionController.java b/src/main/java/org/olat/modules/qpool/ui/ShareItemOptionController.java
index b2c94621bcd..640104209a5 100644
--- a/src/main/java/org/olat/modules/qpool/ui/ShareItemOptionController.java
+++ b/src/main/java/org/olat/modules/qpool/ui/ShareItemOptionController.java
@@ -64,6 +64,18 @@ public class ShareItemOptionController extends FormBasicController {
 		
 		initForm(ureq);
 	}
+	
+	public List<QuestionItemShort> getItems() {
+		return items;
+	}
+	
+	public List<Pool> getPools() {
+		return pools;
+	}
+	
+	public List<BusinessGroup> getGroups() {
+		return groups;
+	}
 
 	@Override
 	protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) {
-- 
GitLab