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

OO-2497: force close if the close link is clicked

parent abc46a31
No related branches found
No related tags found
No related merge requests found
...@@ -207,7 +207,9 @@ public class BreadcrumbedStackedPanel extends Panel implements StackedPanel, Bre ...@@ -207,7 +207,9 @@ public class BreadcrumbedStackedPanel extends Panel implements StackedPanel, Bre
@Override @Override
public void dispatchEvent(UserRequest ureq, Component source, Event event) { public void dispatchEvent(UserRequest ureq, Component source, Event event) {
if (source.equals(backLink) || source.equals(closeLink)) { boolean closeEvent = source.equals(closeLink);
boolean backEvent = source.equals(backLink);
if (backEvent || closeEvent) {
if (stack.size() > 1) { if (stack.size() > 1) {
// back means to one level down, change source to the stack item one below current // back means to one level down, change source to the stack item one below current
source = stack.get(stack.size()-2); source = stack.get(stack.size()-2);
...@@ -235,13 +237,12 @@ public class BreadcrumbedStackedPanel extends Panel implements StackedPanel, Bre ...@@ -235,13 +237,12 @@ public class BreadcrumbedStackedPanel extends Panel implements StackedPanel, Bre
} }
if(popedCrumb.getController() != null) { if(popedCrumb.getController() != null) {
fireEvent(ureq, new PopEvent(popedCrumb.getController(), popedCrumb.getUserObject())); fireEvent(ureq, new PopEvent(popedCrumb.getController(), popedCrumb.getUserObject(), closeEvent));
} else if(popedCrumb.getUserObject() != null) { } else if(popedCrumb.getUserObject() != null) {
fireEvent(ureq, new PopEvent(popedCrumb.getUserObject())); fireEvent(ureq, new PopEvent(popedCrumb.getUserObject(), closeEvent));
} }
} else if(stack.indexOf(source) == 0) { } else if(stack.indexOf(source) == 0) {
fireEvent(ureq, new RootEvent()); fireEvent(ureq, new RootEvent());
} }
} }
} }
...@@ -397,7 +398,7 @@ public class BreadcrumbedStackedPanel extends Panel implements StackedPanel, Bre ...@@ -397,7 +398,7 @@ public class BreadcrumbedStackedPanel extends Panel implements StackedPanel, Bre
BreadCrumb rootCrumb = (BreadCrumb)rootLink.getUserObject(); BreadCrumb rootCrumb = (BreadCrumb)rootLink.getUserObject();
setContent(rootCrumb.getController()); setContent(rootCrumb.getController());
updateCloseLinkTitle(); updateCloseLinkTitle();
fireEvent(ureq, new PopEvent(rootCrumb.getController())); fireEvent(ureq, new PopEvent(rootCrumb.getController(), false));
} }
} }
......
...@@ -30,21 +30,28 @@ public class PopEvent extends Event { ...@@ -30,21 +30,28 @@ public class PopEvent extends Event {
private static final long serialVersionUID = -8478820879485545321L; private static final long serialVersionUID = -8478820879485545321L;
private final boolean close;
private final Object uobject; private final Object uobject;
private final Controller controller; private final Controller controller;
public PopEvent(Controller controller, Object uobject) { public PopEvent(Controller controller, Object uobject, boolean close) {
super("pop"); super("pop");
this.close = close;
this.uobject = uobject; this.uobject = uobject;
this.controller = controller; this.controller = controller;
} }
public PopEvent(Object uobject) { public PopEvent(Object uobject, boolean close) {
super("pop"); super("pop");
this.close = close;
this.uobject = uobject; this.uobject = uobject;
this.controller = null; this.controller = null;
} }
public boolean isClose() {
return close;
}
public Object getUserObject() { public Object getUserObject() {
return uobject; return uobject;
} }
......
...@@ -160,7 +160,9 @@ public class AssessmentToolController extends MainLayoutBasicController implemen ...@@ -160,7 +160,9 @@ public class AssessmentToolController extends MainLayoutBasicController implemen
} else if(stackPanel == source) { } else if(stackPanel == source) {
if(event instanceof PopEvent) { if(event instanceof PopEvent) {
PopEvent pe = (PopEvent)event; PopEvent pe = (PopEvent)event;
if(pe.getController() == courseTreeCtrl) { if(pe.isClose()) {
stackPanel.popUpToRootController(ureq);
} else if(pe.getController() == courseTreeCtrl) {
removeAsListenerAndDispose(courseTreeCtrl); removeAsListenerAndDispose(courseTreeCtrl);
courseTreeCtrl = null; courseTreeCtrl = null;
segmentButtonsCmp.setSelectedButton(overviewLink); segmentButtonsCmp.setSelectedButton(overviewLink);
......
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