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

OO-2057: fix behavior of the navigation bar of a binder in learn resource

parent 0d844f3f
No related branches found
No related tags found
No related merge requests found
...@@ -36,6 +36,11 @@ public interface BreadcrumbPanel extends StackedPanel { ...@@ -36,6 +36,11 @@ public interface BreadcrumbPanel extends StackedPanel {
*/ */
public void rootController(String displayName, Controller controller); public void rootController(String displayName, Controller controller);
/**
* @return The first controller of the stack.
*/
public Controller getRootController();
/** /**
* Dissmiss all controllers but the root * Dissmiss all controllers but the root
*/ */
...@@ -43,8 +48,12 @@ public interface BreadcrumbPanel extends StackedPanel { ...@@ -43,8 +48,12 @@ public interface BreadcrumbPanel extends StackedPanel {
public void pushController(String displayName, Controller controller); public void pushController(String displayName, Controller controller);
/**
public void popUpToController(Controller controller); *
* @param controller
* @return true if the controller has been found
*/
public boolean popUpToController(Controller controller);
/** /**
* Remove and dispose the specified controller and all * Remove and dispose the specified controller and all
......
...@@ -201,6 +201,16 @@ public class BreadcrumbedStackedPanel extends Panel implements StackedPanel, Bre ...@@ -201,6 +201,16 @@ public class BreadcrumbedStackedPanel extends Panel implements StackedPanel, Bre
BusinessControlFactory.getInstance().addToHistory(ureq, wControl); BusinessControlFactory.getInstance().addToHistory(ureq, wControl);
} }
public Controller getRootController() {
Controller controller = null;
if(stack.size() > 0) {
Link lastPath = stack.get(0);
BreadCrumb crumb = (BreadCrumb)lastPath.getUserObject();
controller = crumb.getController();
}
return controller;
}
public Controller getLastController() { public Controller getLastController() {
Controller controller = null; Controller controller = null;
if(stack.size() > 0) { if(stack.size() > 0) {
...@@ -221,7 +231,7 @@ public class BreadcrumbedStackedPanel extends Panel implements StackedPanel, Bre ...@@ -221,7 +231,7 @@ public class BreadcrumbedStackedPanel extends Panel implements StackedPanel, Bre
} }
@Override @Override
public void popUpToController(Controller controller) { public boolean popUpToController(Controller controller) {
int index = getIndex(controller); int index = getIndex(controller);
if(index > 0 && index < stack.size() - 1) { if(index > 0 && index < stack.size() - 1) {
BreadCrumb popedCrumb = null; BreadCrumb popedCrumb = null;
...@@ -235,10 +245,10 @@ public class BreadcrumbedStackedPanel extends Panel implements StackedPanel, Bre ...@@ -235,10 +245,10 @@ public class BreadcrumbedStackedPanel extends Panel implements StackedPanel, Bre
BreadCrumb crumb = (BreadCrumb)currentLink.getUserObject(); BreadCrumb crumb = (BreadCrumb)currentLink.getUserObject();
setContent(crumb.getController()); setContent(crumb.getController());
updateCloseLinkTitle(); updateCloseLinkTitle();
return true;
} }
return false;
} }
@Override @Override
public void popController(Controller controller) { public void popController(Controller controller) {
......
...@@ -26,6 +26,7 @@ import org.olat.core.gui.components.Component; ...@@ -26,6 +26,7 @@ import org.olat.core.gui.components.Component;
import org.olat.core.gui.components.link.Link; import org.olat.core.gui.components.link.Link;
import org.olat.core.gui.components.link.LinkFactory; import org.olat.core.gui.components.link.LinkFactory;
import org.olat.core.gui.components.panel.SimpleStackedPanel; import org.olat.core.gui.components.panel.SimpleStackedPanel;
import org.olat.core.gui.components.panel.StackedPanel;
import org.olat.core.gui.components.stack.ButtonGroupComponent; import org.olat.core.gui.components.stack.ButtonGroupComponent;
import org.olat.core.gui.components.stack.PopEvent; import org.olat.core.gui.components.stack.PopEvent;
import org.olat.core.gui.components.stack.TooledController; import org.olat.core.gui.components.stack.TooledController;
...@@ -55,6 +56,7 @@ public class BinderController extends BasicController implements TooledControlle ...@@ -55,6 +56,7 @@ public class BinderController extends BasicController implements TooledControlle
private final ButtonGroupComponent segmentButtonsCmp; private final ButtonGroupComponent segmentButtonsCmp;
private final TooledStackedPanel stackPanel; private final TooledStackedPanel stackPanel;
private Link editBinderMetadataLink; private Link editBinderMetadataLink;
private StackedPanel mainPanel;
private PublishController publishCtrl; private PublishController publishCtrl;
private TableOfContentController overviewCtrl; private TableOfContentController overviewCtrl;
...@@ -86,7 +88,11 @@ public class BinderController extends BasicController implements TooledControlle ...@@ -86,7 +88,11 @@ public class BinderController extends BasicController implements TooledControlle
} }
stackPanel.addListener(this); stackPanel.addListener(this);
putInitialPanel(new SimpleStackedPanel("portfolioSegments")); mainPanel = putInitialPanel(new SimpleStackedPanel("portfolioSegments"));
overviewCtrl = new TableOfContentController(ureq, getWindowControl(), stackPanel, secCallback, binder, config);
listenTo(overviewCtrl);
mainPanel.setContent(overviewCtrl.getInitialComponent());
} }
@Override @Override
...@@ -103,7 +109,7 @@ public class BinderController extends BasicController implements TooledControlle ...@@ -103,7 +109,7 @@ public class BinderController extends BasicController implements TooledControlle
@Override @Override
public void activate(UserRequest ureq, List<ContextEntry> entries, StateEntry state) { public void activate(UserRequest ureq, List<ContextEntry> entries, StateEntry state) {
if(entries == null || entries.isEmpty()) { if(entries == null || entries.isEmpty()) {
doOpenOverview(ureq); //
} }
} }
...@@ -141,29 +147,34 @@ public class BinderController extends BasicController implements TooledControlle ...@@ -141,29 +147,34 @@ public class BinderController extends BasicController implements TooledControlle
} }
} }
private void popUpToBinderController(UserRequest ureq) {
if(stackPanel.getRootController() == this) {
stackPanel.popUpToRootController(ureq);
} else {
stackPanel.popUpToController(this);
}
}
private void doOpenEntries(UserRequest ureq) { private void doOpenEntries(UserRequest ureq) {
entriesCtrl = new BinderPageListController(ureq, getWindowControl(), stackPanel, secCallback, binder, config); entriesCtrl = new BinderPageListController(ureq, getWindowControl(), stackPanel, secCallback, binder, config);
listenTo(entriesCtrl); listenTo(entriesCtrl);
stackPanel.popUpToController(this); popUpToBinderController(ureq);
stackPanel.pushController(translate("portfolio.entries"), entriesCtrl); stackPanel.pushController(translate("portfolio.entries"), entriesCtrl);
segmentButtonsCmp.setSelectedButton(entriesLink); segmentButtonsCmp.setSelectedButton(entriesLink);
} }
private void doOpenOverview(UserRequest ureq) { private void doOpenOverview(UserRequest ureq) {
overviewCtrl = new TableOfContentController(ureq, getWindowControl(), stackPanel, secCallback, binder, config); popUpToBinderController(ureq);
listenTo(overviewCtrl);
stackPanel.popUpToController(this);
stackPanel.pushController(translate("portfolio.overview"), overviewCtrl);
segmentButtonsCmp.setSelectedButton(overviewLink); segmentButtonsCmp.setSelectedButton(overviewLink);
mainPanel.setContent(overviewCtrl.getInitialComponent());
} }
private void doOpenPublish(UserRequest ureq) { private void doOpenPublish(UserRequest ureq) {
publishCtrl = new PublishController(ureq, getWindowControl(), stackPanel, secCallback, binder, config); publishCtrl = new PublishController(ureq, getWindowControl(), stackPanel, secCallback, binder, config);
listenTo(publishCtrl); listenTo(publishCtrl);
stackPanel.popUpToController(this); popUpToBinderController(ureq);
stackPanel.pushController(translate("portfolio.publish"), publishCtrl); stackPanel.pushController(translate("portfolio.publish"), publishCtrl);
segmentButtonsCmp.setSelectedButton(publishLink); segmentButtonsCmp.setSelectedButton(publishLink);
} }
...@@ -171,8 +182,8 @@ public class BinderController extends BasicController implements TooledControlle ...@@ -171,8 +182,8 @@ public class BinderController extends BasicController implements TooledControlle
private void doOpenAssessment(UserRequest ureq) { private void doOpenAssessment(UserRequest ureq) {
assessmentCtrl = new BinderAssessmentController(ureq, getWindowControl(), secCallback, binder, config); assessmentCtrl = new BinderAssessmentController(ureq, getWindowControl(), secCallback, binder, config);
listenTo(assessmentCtrl); listenTo(assessmentCtrl);
stackPanel.popUpToController(this); popUpToBinderController(ureq);
stackPanel.pushController(translate("portfolio.assessment"), assessmentCtrl); stackPanel.pushController(translate("portfolio.assessment"), assessmentCtrl);
segmentButtonsCmp.setSelectedButton(assessmentLink); segmentButtonsCmp.setSelectedButton(assessmentLink);
} }
......
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