Package pl.net.bluesoft.rnd.processtool.portlets.generic

Source Code of pl.net.bluesoft.rnd.processtool.portlets.generic.GenericUserPortletApplication

package pl.net.bluesoft.rnd.processtool.portlets.generic;

import com.vaadin.ui.Label;
import com.vaadin.ui.VerticalLayout;
import com.vaadin.ui.Window;
import org.aperteworkflow.ui.view.GenericPortletViewRenderer;
import org.aperteworkflow.ui.view.ViewRegistry;
import org.aperteworkflow.util.vaadin.GenericVaadinPortlet2BpmApplication;
import pl.net.bluesoft.rnd.processtool.ProcessToolContext;
import pl.net.bluesoft.rnd.processtool.plugins.ProcessToolRegistry;
import pl.net.bluesoft.rnd.processtool.ui.generic.GenericUserPortletPanel;
import pl.net.bluesoft.rnd.processtool.ui.generic.GenericUserPortletSettingsPanel;
import pl.net.bluesoft.rnd.util.i18n.I18NSource;
import pl.net.bluesoft.rnd.util.i18n.I18NSourceFactory;
import pl.net.bluesoft.rnd.util.i18n.impl.DefaultI18NSource;

import javax.portlet.PortletMode;
import javax.portlet.PortletPreferences;
import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;

import java.util.Collection;

import static pl.net.bluesoft.util.lang.cquery.CQuery.from;

/**
* User: POlszewski
* Date: 2012-07-19
* Time: 09:22
*/
public class GenericUserPortletApplication extends GenericVaadinPortlet2BpmApplication {
  private static final String SELECTED_VIEWS = "selected.views";

  private PortletPreferences preferences = null;
  private String[] viewKeys;

  @Override
  protected void initializePortlet() {
  }

  @Override
  protected void renderPortlet() {
    getMainWindow().setContent(new GenericUserPortletPanel(this, this, bpmSession, this, PortletKeys.USER, viewKeys));
  }

  @Override
  public void handleRenderRequest(RenderRequest renderRequest, RenderResponse response, Window window) {
    this.preferences = renderRequest.getPreferences();
    PortletMode portletMode = renderRequest.getPortletMode();

    if (portletMode.equals(PortletMode.VIEW)) {
      String[] viewKeys = getSelectedViewKeys();
      if (viewKeys.length == 0) {
        getMainWindow().removeAllComponents();
        getMainWindow().addComponent(new Label("Please configure this portlet."));
      }
      else {
        this.viewKeys = viewKeys;
        super.handleRenderRequest(renderRequest, response, window);
      }
    }
    else if (portletMode.equals(PortletMode.EDIT)) {
      locale = renderRequest.getLocale();
      I18NSource i18NSource = I18NSourceFactory.createI18NSource(locale);
      final GenericUserPortletSettingsPanel editPane = new GenericUserPortletSettingsPanel(
          i18NSource, getSelectedViewKeys(), getRegisteredViews());
      editPane.addListener(new GenericUserPortletSettingsPanel.SaveListener() {
        @Override
        public void onSave() {
          saveSelectedViewKeys(editPane.getSelectedViewKeys());
        }
      });
      getMainWindow().setContent(new VerticalLayout());
      getMainWindow().addComponent(editPane);
    }
  }

  private void saveSelectedViewKeys(String[] viewKeys) {
    try {
      if (viewKeys == null || viewKeys.length == 0) {
        preferences.reset(SELECTED_VIEWS);
      }
      else {
        preferences.setValue(SELECTED_VIEWS, from(viewKeys).toString(","));
      }
      preferences.store();
    }
    catch (Exception e) {
      throw new RuntimeException(e);
    }
  }

  private String[] getSelectedViewKeys() {
    String val = preferences.getValue(SELECTED_VIEWS, null);
    if (val != null) {
      return val.split(",");
    }
    return new String[]{};
  }

  private Collection<GenericPortletViewRenderer> getRegisteredViews() {
    ProcessToolContext ctx = ProcessToolContext.Util.getThreadProcessToolContext();
    ViewRegistry viewRegistry = ctx.getRegistry().getRegisteredService(ViewRegistry.class);
    return viewRegistry.getGenericPortletViews(PortletKeys.USER);
  }
}
TOP

Related Classes of pl.net.bluesoft.rnd.processtool.portlets.generic.GenericUserPortletApplication

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.