Package org.olat.test.guidemo

Source Code of org.olat.test.guidemo.GuiDemoFlexiFormMainController

/**
* OLAT - Online Learning and Training<br>
* http://www.olat.org
* <p>
* Licensed under the Apache License, Version 2.0 (the "License"); <br>
* you may not use this file except in compliance with the License.<br>
* You may obtain a copy of the License at
* <p>
* http://www.apache.org/licenses/LICENSE-2.0
* <p>
* Unless required by applicable law or agreed to in writing,<br>
* software distributed under the License is distributed on an "AS IS" BASIS,
* <br>
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br>
* See the License for the specific language governing permissions and <br>
* limitations under the License.
* <p>
* Copyright (c) since 2004 at Multimedia- & E-Learning Services (MELS),<br>
* University of Zurich, Switzerland.
* <p>
*/
package org.olat.test.guidemo;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.olat.core.gui.UserRequest;
import org.olat.core.gui.components.Component;
import org.olat.core.gui.components.link.Link;
import org.olat.core.gui.components.link.LinkFactory;
import org.olat.core.gui.components.panel.Panel;
import org.olat.core.gui.components.velocity.VelocityContainer;
import org.olat.core.gui.control.Controller;
import org.olat.core.gui.control.creator.ControllerCreator;
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.spacesaver.ShrinkController;
import org.olat.core.gui.dev.controller.SourceViewController;

/**
* Description:<br>
* Manages the sequence of flexi form demos, and provides a flexi form demo
* navigation.
* <P>
* Initial Date: 10.09.2007 <br>
*
* @author patrickb
*/
public class GuiDemoFlexiFormMainController extends BasicController {

  private VelocityContainer mainVC;
  private Map<String, ControllerCreator> demos = new HashMap<String, ControllerCreator>();
  List<String> demolinknames;
  private Controller demoController;
  private Panel contentP;
  private VelocityContainer content_sourceVC;
  private Panel sourceP;
  {
    // create the demos
    // could also be injected with spring
    //
    // for the order
    demolinknames = new ArrayList<String>();
    //
    demolinknames.add("guidemo_flexi_form_simpleform");
    demos.put("guidemo_flexi_form_simpleform", new ControllerCreator() {
      public Controller createController(UserRequest ureq, WindowControl wControl) {
        return new GuiDemoFlexiForm(ureq, wControl, null);
      }
    });
    demolinknames.add("guidemo_flexi_form_withchooser");
    demos.put("guidemo_flexi_form_withchooser", new ControllerCreator() {
      public Controller createController(UserRequest ureq, WindowControl wControl) {
        return new GuiDemoFlexiFormSubworkflow(ureq, wControl, null);
      }
    });
    demolinknames.add("guidemo_flexi_form_customlayout");
    demos.put("guidemo_flexi_form_customlayout", new ControllerCreator() {
      public Controller createController(UserRequest ureq, WindowControl wControl) {
        return new GuiDemoFlexiFormCustomlayout(ureq, wControl, null);
      }
    });
    demolinknames.add("guidemo_flexi_form_hideunhide");
    demos.put("guidemo_flexi_form_hideunhide", new ControllerCreator() {
      public Controller createController(UserRequest ureq, WindowControl wControl) {
        return new GuiDemoFlexiFormHideUnhide(ureq, wControl, null);
      }
    });
    demolinknames.add("guidemo_flexi_form_inline");
    demos.put("guidemo_flexi_form_inline", new ControllerCreator() {
      public Controller createController(UserRequest ureq, WindowControl wControl) {
        return new GuiDemoInlineEditingBasedOnFlexiForm(ureq, wControl);
      }
    });
    demolinknames.add("guidemo_flexi_form_advanced");
    demos.put("guidemo_flexi_form_advanced", new ControllerCreator() {
      public Controller createController(UserRequest ureq, WindowControl wControl) {
        return new GuiDemoFlexiFormAdvancedController(ureq, wControl);
      }
    });
  }

  public GuiDemoFlexiFormMainController(UserRequest ureq, WindowControl wControl) {
    super(ureq, wControl);
    mainVC = createVelocityContainer("flexiformdemos");

    for (String linkName : demolinknames) {
      Link tmpLink = LinkFactory.createLink(linkName, mainVC, this);
      tmpLink.setUserObject(linkName);
    }

    mainVC.contextPut("demolinknames", demolinknames);

    // all democontroller content goes in this panel
    contentP = new Panel("content");
    content_sourceVC = createVelocityContainer("content_source");
    mainVC.put("democontent", contentP);
    //
    String firstDemo = demolinknames.iterator().next();
    ControllerCreator cc = demos.get(firstDemo);
    demoController = cc.createController(ureq, getWindowControl());
    contentP.setContent(demoController.getInitialComponent());
   
    sourceP = new Panel("sourceP");
    VelocityContainer sourceVC = createVelocityContainer(firstDemo);
    ShrinkController sc = new ShrinkController(ureq, getWindowControl(), false, sourceVC, "toggle source");
    sourceP.setContent(sc.getInitialComponent());

    content_sourceVC.put("content", mainVC);
    content_sourceVC.put("source", sourceP);
    //add source view control
    Controller sourceview = new SourceViewController(ureq, wControl, this.getClass(), content_sourceVC);
    mainVC.put("sourceview", sourceview.getInitialComponent());
   
    putInitialPanel(content_sourceVC);
  }

  /**
   * @see org.olat.core.gui.control.DefaultController#doDispose(boolean)
   */
  @Override
  protected void doDispose() {
    if (demoController != null) demoController.dispose();
  }

  /**
   * @see org.olat.core.gui.control.DefaultController#event(org.olat.core.gui.UserRequest,
   *      org.olat.core.gui.components.Component,
   *      org.olat.core.gui.control.Event)
   */
  @Override
  public void event(UserRequest ureq, Component source, Event event) {
    //there are only events of type link from the demos navigation
    if (source instanceof Link) {
      Link sl = (Link) source;
      //userobject tells which demo to activate
      String uob = (String) sl.getUserObject();
      if (uob != null) {
        ControllerCreator cc = demos.get(uob);
        //update source
        VelocityContainer sourceVC = createVelocityContainer(uob);
        ShrinkController sc = new ShrinkController(ureq, getWindowControl(), false, sourceVC, "toggle source");
        sourceP.setContent(sc.getInitialComponent());
       
        //cleanup former democontroller
        if (demoController != null) demoController.dispose();
        contentP.popContent();
        //create new demo controller
        demoController = cc.createController(ureq, getWindowControl());
        contentP.pushContent(demoController.getInitialComponent());
      }
    }

  }
 
}
TOP

Related Classes of org.olat.test.guidemo.GuiDemoFlexiFormMainController

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.