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

OO-192: better listen to popup and aggressive clean-up of these popups and their controllers

parent f9edf33d
No related branches found
No related tags found
No related merge requests found
...@@ -184,6 +184,7 @@ public class EditorMainController extends MainLayoutBasicController implements G ...@@ -184,6 +184,7 @@ public class EditorMainController extends MainLayoutBasicController implements G
private ToolController toolC; private ToolController toolC;
private MoveCopySubtreeController moveCopyController; private MoveCopySubtreeController moveCopyController;
private InsertNodeController insertNodeController; private InsertNodeController insertNodeController;
private FolderRunController folderController;
private DialogBoxController deleteDialogController; private DialogBoxController deleteDialogController;
private LayoutMain3ColsController columnLayoutCtr; private LayoutMain3ColsController columnLayoutCtr;
...@@ -503,12 +504,6 @@ public class EditorMainController extends MainLayoutBasicController implements G ...@@ -503,12 +504,6 @@ public class EditorMainController extends MainLayoutBasicController implements G
*/ */
public void event(UserRequest ureq, Controller source, Event event) { public void event(UserRequest ureq, Controller source, Event event) {
if (event.getCommand().equals(BGContextEvent.RESOURCE_ADDED)) { if (event.getCommand().equals(BGContextEvent.RESOURCE_ADDED)) {
System.out.println("emc:have to inform tabs");
Iterator it = tabbedNodeConfig.getComponents().keySet().iterator();
while (it.hasNext()) {
Component c = tabbedNodeConfig.getComponents().get(it.next());
System.out.println(c.getComponentName());
}
return; return;
} }
...@@ -519,11 +514,14 @@ public class EditorMainController extends MainLayoutBasicController implements G ...@@ -519,11 +514,14 @@ public class EditorMainController extends MainLayoutBasicController implements G
if (event.getCommand().startsWith(TB_ACTION)) { if (event.getCommand().startsWith(TB_ACTION)) {
String cnAlias = event.getCommand().substring(TB_ACTION.length()); String cnAlias = event.getCommand().substring(TB_ACTION.length());
if (cnAlias == null) throw new AssertException("Received event from ButtonController which is not registered with the toolbox."); if (cnAlias == null) throw new AssertException("Received event from ButtonController which is not registered with the toolbox.");
removeAsListenerAndDispose(insertNodeController);
removeAsListenerAndDispose(cmc);
Codepoint.codepoint(EditorMainController.class, "startInsertNode"); Codepoint.codepoint(EditorMainController.class, "startInsertNode");
insertNodeController = new InsertNodeController(ureq, getWindowControl(), course, cnAlias); insertNodeController = new InsertNodeController(ureq, getWindowControl(), course, cnAlias);
listenTo(insertNodeController); listenTo(insertNodeController);
cmc = new CloseableModalController(getWindowControl(), translate("close"), insertNodeController.getInitialComponent(), true, translate(NLS_INSERTNODE_TITLE)); cmc = new CloseableModalController(getWindowControl(), translate("close"), insertNodeController.getInitialComponent(), true, translate(NLS_INSERTNODE_TITLE));
listenTo(cmc);
cmc.activate(); cmc.activate();
} else if (event.getCommand().equals(CMD_DELNODE)) { } else if (event.getCommand().equals(CMD_DELNODE)) {
TreeNode tn = menuTree.getSelectedNode(); TreeNode tn = menuTree.getSelectedNode();
...@@ -549,11 +547,14 @@ public class EditorMainController extends MainLayoutBasicController implements G ...@@ -549,11 +547,14 @@ public class EditorMainController extends MainLayoutBasicController implements G
showError(NLS_MOVECOPYNODE_ERROR_ROOTNODE); showError(NLS_MOVECOPYNODE_ERROR_ROOTNODE);
return; return;
} }
removeAsListenerAndDispose(moveCopyController);
removeAsListenerAndDispose(cmc);
CourseEditorTreeNode cetn = cetm.getCourseEditorNodeById(tn.getIdent()); CourseEditorTreeNode cetn = cetm.getCourseEditorNodeById(tn.getIdent());
moveCopyController = new MoveCopySubtreeController(ureq, getWindowControl(), course, cetn, event.getCommand().equals(CMD_COPYNODE)); moveCopyController = new MoveCopySubtreeController(ureq, getWindowControl(), course, cetn, event.getCommand().equals(CMD_COPYNODE));
this.listenTo(moveCopyController); listenTo(moveCopyController);
cmc = new CloseableModalController(getWindowControl(), translate("close"), moveCopyController.getInitialComponent(), true, translate(NLS_INSERTNODE_TITLE)); cmc = new CloseableModalController(getWindowControl(), translate("close"), moveCopyController.getInitialComponent(), true, translate(NLS_INSERTNODE_TITLE));
listenTo(cmc);
cmc.activate(); cmc.activate();
} }
...@@ -643,12 +644,12 @@ public class EditorMainController extends MainLayoutBasicController implements G ...@@ -643,12 +644,12 @@ public class EditorMainController extends MainLayoutBasicController implements G
// Folder for course with custom link model to jump to course nodes // Folder for course with custom link model to jump to course nodes
VFSContainer namedCourseFolder = new NamedContainerImpl(translate(NLS_COURSEFOLDER_NAME), course.getCourseFolderContainer()); VFSContainer namedCourseFolder = new NamedContainerImpl(translate(NLS_COURSEFOLDER_NAME), course.getCourseFolderContainer());
CustomLinkTreeModel customLinkTreeModel = new CourseInternalLinkTreeModel(course.getEditorTreeModel()); CustomLinkTreeModel customLinkTreeModel = new CourseInternalLinkTreeModel(course.getEditorTreeModel());
FolderRunController bcrun = new FolderRunController(namedCourseFolder, true, true, true, ureq, getWindowControl(), null, customLinkTreeModel); folderController = new FolderRunController(namedCourseFolder, true, true, true, ureq, getWindowControl(), null, customLinkTreeModel);
bcrun.addLoggingResourceable(LoggingResourceable.wrap(course)); folderController.addLoggingResourceable(LoggingResourceable.wrap(course));
Component folderComponent = bcrun.getInitialComponent(); listenTo(folderController);
CloseableModalController clc = new CloseableModalController(getWindowControl(), translate(NLS_COURSEFOLDER_CLOSE), cmc = new CloseableModalController(getWindowControl(), translate(NLS_COURSEFOLDER_CLOSE), folderController.getInitialComponent());
folderComponent); listenTo(cmc);
clc.activate(); cmc.activate();
} else if (event.getCommand().equals(CMD_MULTI_SP)) { } else if (event.getCommand().equals(CMD_MULTI_SP)) {
removeAsListenerAndDispose(multiSPChooserCtr); removeAsListenerAndDispose(multiSPChooserCtr);
...@@ -697,7 +698,21 @@ public class EditorMainController extends MainLayoutBasicController implements G ...@@ -697,7 +698,21 @@ public class EditorMainController extends MainLayoutBasicController implements G
if (event == Event.DONE_EVENT) { if (event == Event.DONE_EVENT) {
// no need to deactivate preview controller, already done internally // no need to deactivate preview controller, already done internally
removeAsListenerAndDispose(previewController); removeAsListenerAndDispose(previewController);
previewController = null;
} }
} else if (source == cmc || source == folderController) {
//aggressive clean-up
removeAsListenerAndDispose(multiSPChooserCtr);
removeAsListenerAndDispose(moveCopyController);
removeAsListenerAndDispose(insertNodeController);
removeAsListenerAndDispose(folderController);
removeAsListenerAndDispose(cmc);
moveCopyController = null;
insertNodeController = null;
multiSPChooserCtr = null;
folderController = null;
cmc = null;
} else if (source == moveCopyController) { } else if (source == moveCopyController) {
cmc.deactivate(); cmc.deactivate();
if (event == Event.DONE_EVENT) { if (event == Event.DONE_EVENT) {
...@@ -720,6 +735,11 @@ public class EditorMainController extends MainLayoutBasicController implements G ...@@ -720,6 +735,11 @@ public class EditorMainController extends MainLayoutBasicController implements G
// user canceled // user canceled
} }
//aggressive clean-up
removeAsListenerAndDispose(moveCopyController);
removeAsListenerAndDispose(cmc);
moveCopyController = null;
cmc = null;
} else if (source == insertNodeController) { } else if (source == insertNodeController) {
cmc.deactivate(); cmc.deactivate();
if (event == Event.DONE_EVENT) { if (event == Event.DONE_EVENT) {
...@@ -744,7 +764,9 @@ public class EditorMainController extends MainLayoutBasicController implements G ...@@ -744,7 +764,9 @@ public class EditorMainController extends MainLayoutBasicController implements G
} }
// in all cases: // in all cases:
removeAsListenerAndDispose(insertNodeController); removeAsListenerAndDispose(insertNodeController);
removeAsListenerAndDispose(cmc);
insertNodeController = null;
cmc = null;
} else if (source == deleteDialogController){ } else if (source == deleteDialogController){
removeAsListenerAndDispose(deleteDialogController); removeAsListenerAndDispose(deleteDialogController);
deleteDialogController = null; deleteDialogController = null;
...@@ -783,6 +805,7 @@ public class EditorMainController extends MainLayoutBasicController implements G ...@@ -783,6 +805,7 @@ public class EditorMainController extends MainLayoutBasicController implements G
cmc.deactivate(); cmc.deactivate();
removeAsListenerAndDispose(cmc); removeAsListenerAndDispose(cmc);
removeAsListenerAndDispose(multiSPChooserCtr); removeAsListenerAndDispose(multiSPChooserCtr);
cmc = null;
if(event == Event.CHANGED_EVENT) { if(event == Event.CHANGED_EVENT) {
menuTree.setDirty(true); menuTree.setDirty(true);
......
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