Package org.activiti.explorer.ui.process.simple.editor

Source Code of org.activiti.explorer.ui.process.simple.editor.FormPopupWindow

/* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*      http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.activiti.explorer.ui.process.simple.editor;


import org.activiti.explorer.ExplorerApp;
import org.activiti.explorer.Messages;
import org.activiti.explorer.ui.process.simple.editor.table.PropertyTable;
import org.activiti.explorer.ui.process.simple.editor.table.TaskFormModel;
import org.activiti.workflow.simple.definition.form.DatePropertyDefinition;
import org.activiti.workflow.simple.definition.form.FormDefinition;
import org.activiti.workflow.simple.definition.form.FormPropertyDefinition;
import org.activiti.workflow.simple.definition.form.NumberPropertyDefinition;
import org.activiti.workflow.simple.definition.form.TextPropertyDefinition;

import com.vaadin.data.Item;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.CheckBox;
import com.vaadin.ui.ComboBox;
import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.Label;
import com.vaadin.ui.VerticalLayout;
import com.vaadin.ui.Window;

/**
* @author Joram Barrez
*/
public class FormPopupWindow extends Window {

  protected static final long serialVersionUID = -1754225937375971709L;

  protected static final String TITLE = "Define form";
  protected static final String DESCRIPTION = "Define the form properties that will be shown with the task";

  protected Object taskItemId;
  protected TaskFormModel formModel;
  protected PropertyTable propertyTable;

  public FormPopupWindow(Object taskItemId, TaskFormModel formModel) {
    this.taskItemId = taskItemId;
    this.formModel = formModel;

    setModal(true);
    setWidth("50%");
    center();
    setCaption(TITLE);

    initUi();
  }

  protected void initUi() {
    VerticalLayout layout = new VerticalLayout();
    layout.setSpacing(true);
    addComponent(layout);

    // Description
    layout.addComponent(new Label(DESCRIPTION));

    // Property table
    propertyTable = new PropertyTable();
    layout.addComponent(propertyTable);
    fillFormFields();

    // Buttons
    HorizontalLayout buttons = new HorizontalLayout();
    buttons.setSpacing(true);

    // Save button
    Button saveButton = new Button(ExplorerApp.get().getI18nManager().getMessage(Messages.BUTTON_SAVE));
    buttons.addComponent(saveButton);
    saveButton.addListener(new Button.ClickListener() {

      private static final long serialVersionUID = -2906886872414089331L;

      public void buttonClick(ClickEvent event) {
        FormDefinition form = createForm();
        formModel.addForm(taskItemId, form);
        close();
      }
    });

    // Delete button
    Button deleteButton = new Button(ExplorerApp.get().getI18nManager().getMessage(Messages.BUTTON_DELETE));
    buttons.addComponent(deleteButton);
    deleteButton.addListener(new Button.ClickListener() {

      private static final long serialVersionUID = 5267967369680365653L;

      public void buttonClick(ClickEvent event) {
        formModel.removeForm(taskItemId);
        close();
      }
    });

    layout.addComponent(new Label(""));
    layout.addComponent(buttons);
  }

  public FormDefinition createForm() {
    FormDefinition formDefinition = new FormDefinition();
    for (Object itemId : propertyTable.getItemIds()) {
     
      Item item = propertyTable.getItem(itemId);
      FormPropertyDefinition formPropertyDefinition = getFormPropertyDefinition(item);
      formDefinition.addFormProperty(formPropertyDefinition);
    }
    return formDefinition;
  }

  protected FormPropertyDefinition getFormPropertyDefinition(Item item) {
    String type = (String) ((ComboBox) item.getItemProperty(PropertyTable.ID_PROPERTY_TYPE).getValue()).getValue();
   
    FormPropertyDefinition result = null;
    if(type.equals("number")) {
      result = new NumberPropertyDefinition();
    } else if(type.equals("date")) {
      result = new DatePropertyDefinition();
    } else {
      result = new TextPropertyDefinition();
    }
   
    // Set generic properties
    result.setName((String) item.getItemProperty(PropertyTable.ID_PROPERTY_NAME).getValue());
    result.setMandatory((Boolean) ((CheckBox) item.getItemProperty(PropertyTable.ID_PROPERTY_REQUIRED).getValue()).getValue());
   
    return result;
  }

  protected void fillFormFields() {
    FormDefinition form = formModel.getForm(taskItemId);
    if (form == null) {
      propertyTable.addPropertyRow();
    } else {
      for (FormPropertyDefinition property : form.getFormPropertyDefinitions()) {
        propertyTable.addPropertyRow(property.getName(), getPropertyTypeDisplay(property), property.isMandatory());
      }
    }
  }
 
  protected String getPropertyTypeDisplay(FormPropertyDefinition definition) {
    if(definition instanceof NumberPropertyDefinition) {
      return "number";
    } else if(definition instanceof DatePropertyDefinition) {
      return "date";
    } else {
      // Default
      return "text";
    }
  }

}
TOP

Related Classes of org.activiti.explorer.ui.process.simple.editor.FormPopupWindow

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.