Skip to content
Snippets Groups Projects
Commit fa596d2c authored by srosse's avatar srosse
Browse files

OO-1367: propagate edit event up-to the list controller, mark the list as...

OO-1367: propagate edit event up-to the list controller, mark the list as dirty and reload it on pop
parent 8ea0c68e
No related branches found
No related tags found
No related merge requests found
......@@ -43,6 +43,8 @@ public interface Controller extends ComponentEventListener, Disposable {
* @param el The controller that should be added as listener
*/
public void addControllerListener(ControllerEventListener el);
public boolean isControllerListeningTo(ControllerEventListener el);
/**
* Get the initial component from this controller.
......
......@@ -166,6 +166,10 @@ public abstract class DefaultController implements Controller, ControllerEventLi
listeners.add(el);
}
}
public boolean isControllerListeningTo(ControllerEventListener el) {
return listeners != null && listeners.contains(el);
}
// brasato:: prio c : clean up classes using this - does not make sense really
protected List<ControllerEventListener> getListeners() {
......
......@@ -198,6 +198,10 @@ public abstract class AbstractItemListController extends FormBasicController
itemsTable.reset();
}
public void reloadData() {
itemsTable.reloadData();
}
public QuestionItemsSource getSource() {
return itemsSource;
}
......
......@@ -51,6 +51,7 @@ import org.olat.modules.qpool.QuestionItem;
import org.olat.modules.qpool.QuestionItemShort;
import org.olat.modules.qpool.QuestionPoolModule;
import org.olat.modules.qpool.manager.ExportQItemResource;
import org.olat.modules.qpool.ui.events.QItemEdited;
import org.olat.modules.qpool.ui.events.QItemEvent;
import org.olat.modules.qpool.ui.events.QPoolEvent;
import org.olat.modules.qpool.ui.metadata.MetadatasController;
......@@ -210,6 +211,10 @@ public class QuestionItemDetailsController extends BasicController implements Br
if(event == Event.CHANGED_EVENT) {
doContentChanged(ureq);
}
} else if(source == metadatasCtrl) {
if(event instanceof QItemEdited) {
fireEvent(ureq, event);
}
}
super.event(ureq, source, event);
}
......
......@@ -26,6 +26,7 @@ import org.olat.NewControllerFactory;
import org.olat.core.CoreSpringFactory;
import org.olat.core.commons.fullWebApp.LayoutMain3ColsController;
import org.olat.core.gui.UserRequest;
import org.olat.core.gui.components.Component;
import org.olat.core.gui.components.form.flexible.FormItem;
import org.olat.core.gui.components.form.flexible.FormItemContainer;
import org.olat.core.gui.components.form.flexible.elements.FormLink;
......@@ -33,6 +34,7 @@ import org.olat.core.gui.components.form.flexible.impl.FormEvent;
import org.olat.core.gui.components.link.Link;
import org.olat.core.gui.components.stack.BreadcrumbPanel;
import org.olat.core.gui.components.stack.BreadcrumbPanelAware;
import org.olat.core.gui.components.stack.PopEvent;
import org.olat.core.gui.control.Controller;
import org.olat.core.gui.control.Event;
import org.olat.core.gui.control.WindowControl;
......@@ -68,6 +70,7 @@ import org.olat.modules.qpool.model.QItemDocument;
import org.olat.modules.qpool.model.QItemList;
import org.olat.modules.qpool.ui.events.QItemChangeEvent;
import org.olat.modules.qpool.ui.events.QItemCreationCmdEvent;
import org.olat.modules.qpool.ui.events.QItemEdited;
import org.olat.modules.qpool.ui.events.QItemEvent;
import org.olat.modules.qpool.ui.events.QPoolEvent;
import org.olat.modules.qpool.ui.events.QPoolSelectionEvent;
......@@ -127,6 +130,8 @@ public class QuestionListController extends AbstractItemListController implement
private ReferencableEntriesSearchController importTestCtrl;
private QuestionItemCollection itemCollection;
private boolean itemCollectionDirty = false;
@Autowired
private LifeFullIndexer lifeFullIndexer;
......@@ -169,6 +174,9 @@ public class QuestionListController extends AbstractItemListController implement
@Override
public void setBreadcrumbPanel(BreadcrumbPanel stackPanel) {
this.stackPanel = stackPanel;
if(stackPanel != null) {
stackPanel.addListener(this);
}
}
@Override
......@@ -230,6 +238,22 @@ public class QuestionListController extends AbstractItemListController implement
super.formInnerEvent(ureq, source, event);
}
@Override
public void event(UserRequest ureq, Component source, Event event) {
if(source == stackPanel) {
if(itemCollectionDirty && event instanceof PopEvent) {
PopEvent pe = (PopEvent)event;
Controller mainCtrl = pe.getController();
if(mainCtrl != null && mainCtrl.isControllerListeningTo(this)) {
reloadData();
itemCollectionDirty = false;
}
}
} else {
super.event(ureq, source, event);
}
}
@Override
protected void event(UserRequest ureq, Controller source, Event event) {
if(source == shareTargetCtrl) {
......@@ -394,6 +418,8 @@ public class QuestionListController extends AbstractItemListController implement
} else if("next".equals(qce.getCommand())) {
doNext(ureq, qce.getItem());
}
} else if(event instanceof QItemEdited) {
itemCollectionDirty = true;
} else if (event instanceof QPoolEvent) {
QPoolEvent qce = (QPoolEvent)event;
if(QPoolEvent.ITEM_DELETED.equals(qce.getCommand())) {
......
......@@ -145,6 +145,7 @@ public class MetadatasController extends BasicController {
doRightsMetadataFinishEditing();
}
reloadData(editEvent.getItem());
fireEvent(ureq, editEvent);
} else if(event == Event.CANCELLED_EVENT) {
if (source == generalEditCtrl) {
doGeneralMetadataFinishEditing();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment