Package org.uengine.kernel.viewer

Source Code of org.uengine.kernel.viewer.ComplexActivityViewer

package org.uengine.kernel.viewer;

import org.uengine.kernel.Activity;
import org.uengine.kernel.ActivityUtil;
import org.uengine.kernel.ApprovalLineActivity;
import org.uengine.kernel.ComplexActivity;
import org.uengine.kernel.LoopActivity;
import org.uengine.kernel.ProcessInstance;
import org.uengine.util.Command;

import java.util.*;

/**
* @author Jinyoung Jang
*/

public class ComplexActivityViewer implements ActivityViewer{
  static final int separatorWidth = 2;
  static final boolean allBoxing = true;
  static final int unfocusedOpacity = 80;
  static final String unfocusedGrayColor = "959595";

  public StringBuilder render(Activity activity, ProcessInstance instance, Map options){
   
    String imagePathRoot = DefaultActivityViewer.getImagePathRoot(options);
    boolean definitionView = false;
    try {
      definitionView = (instance==null || Activity.STATUS_READY.equals(instance.getStatus()));
    } catch (Exception e1) {
    }

    StringBuilder sb = new StringBuilder();
   
    String statusColor="#000000";
    if(instance!=null){
      String status = "unresolved";
      try{
        status = instance.getStatus(activity.getTracingTag());
      }catch(Exception e){
        e.printStackTrace();
      }

      statusColor = DefaultActivityViewer.getStatusColor(status);
      if(status.equals(Activity.STATUS_READY))
        statusColor = "#000000";     
    }
       
//    sb.append("<table border=1 cellpadding=0 cellspacing=4><!--td width=2 bgcolor=gray></td--><td>");
   
    boolean isVertical = options.containsKey("vertical");
   
    if(allBoxing){
      String style = (options.containsKey("ShowAllComplexActivities") || activity instanceof LoopActivity || activity instanceof ApprovalLineActivity ? "border:1px dotted " + statusColor +"; padding: 5px;" : "");
      sb.append("<div style='"+style+"'>");
    } else {
      sb.append(
          "<table border='0' cellpadding='0' cellspacing='3'><tr><td width='"+separatorWidth+"' bgcolor='" + statusColor + "'><img src='' width='"+separatorWidth+"' height=0></td>"
      );
      if(isVertical){
        sb.append("<td>");
      } else {
        sb.append("<td align='center'>");
      }
    }
   

    sb.append("<table border='0' cellpadding='0' cellspacing='0'>");
   
    if(!isVertical){
      sb.append("<tr>");
    }
   
   
    ComplexActivity cActivity = (ComplexActivity)activity;
   
    boolean firstArrow = true;
   
    for(Enumeration enumeration = cActivity.getChildActivities().elements(); enumeration.hasMoreElements(); ){
      Activity child = (Activity)enumeration.nextElement();
      ActivityUtil activityUtil = new ActivityUtil();
     
      if (!activityUtil.isVisible(child, options)) {
       
        if (!firstArrow || options.containsKey("ShowAllComplexActivities")) {
          boolean isGrayArrow = false;
          if (!definitionView)
          try {
            isGrayArrow = Activity.STATUS_READY.equals(child.getStatus(instance));
          } catch(Exception e) {}
         
          if (isVertical) sb.append("<tr>");
          sb.append(
              "<td align='center'><img src='" + imagePathRoot + "images/arrow" + (isVertical ? "_vertical" : "") + ".gif' "
//              + (isGrayArrow ? "style='filter:alpha(opacity="+unfocusedOpacity+")'":"")
              + "></td>"
          );
          if (isVertical) sb.append("</tr>");
        }
       
        firstArrow = false;
       
        ActivityViewer viewer = DefaultActivityViewer.createViewer(child);
        StringBuilder childHTML = viewer.render(child, instance, options);
       
        if (isVertical) sb.append("<tr>");

        if (options.containsKey("valign")){
          String valign = (String)options.get("valign");
          options.remove("valign");

          sb.append("<td valign='" + valign + "' id='" + DefaultActivityViewer.getActivityName(child, instance, options) + "'>");
        } else {
          sb.append("<td align='center' id='" + DefaultActivityViewer.getActivityName(child, instance, options) + "'>");
        }
       
        sb.append(childHTML);
       
        sb.append("</td>");
        if(isVertical) sb.append("</tr>");
      }
    }
   
    //sb.append(activity.getName());
    if(options.containsKey("ShowAllComplexActivities")){
      boolean isGrayArrow = false;
      if(!definitionView)
        try{
          isGrayArrow = !Activity.STATUS_COMPLETED.equals(activity.getStatus(instance));
        }catch(Exception e){}
       
      if(isVertical) sb.append("<tr>");
      sb.append(
          "<td align='center'><img src='" + imagePathRoot +"images/arrow" + (isVertical ? "_vertical":"") + ".gif' "
          + (isGrayArrow ? " style='filter:alpha(opacity="+unfocusedOpacity+")'":"")
          + "></td>"
      );
      if (isVertical) sb.append("</tr>");
    }

    if (!isVertical) {
      sb.append("</tr>");
    }

    sb.append("</table>");
//    sb.append("</td><!--td width=2 bgcolor=gray></td--></table>");
   
    //if(!isVertical){
      if(allBoxing){
        sb.append("</div>");
      }else{
        if(isVertical){
          sb.append("</td></tr><tr><td>");
        } else {
          sb.append("</td><td width='2' bgcolor='"+statusColor+"'><img src='' width='" + separatorWidth + "' height='0'>");
        }
       
        sb.append("</td></tr></table>");
      }
    //}
   
    insertHeader(activity, instance, sb, options);
 
    return sb;
  }
 
  public String getHeader(Activity activity, ProcessInstance instance, Map options){
    if(options.containsKey("ShowAllComplexActivities")){
      boolean isVertical = options.containsKey("vertical");
      String imagePathRoot = DefaultActivityViewer.getImagePathRoot(options);
      return "";//"<img src="+imagePathRoot+"images/SequenceActivity"+ (isVertical ? "_vertical":"") +".gif>";
    }
   
    return "";
  }
 
  public void insertHeader(Activity activity, ProcessInstance instance, StringBuilder sb, Map options){
    StringBuilder headerHtml = new StringBuilder();
    boolean isVertical = options.containsKey("vertical");

    headerHtml.append("<table border=0 cellpadding=0 cellspacing=0><tr>");
    headerHtml.append("<td align=" + (isVertical ? "center":"") + ">");

    if(options.containsKey("flowControl") && instance!=null){
      if(appendFlowController(activity, instance, headerHtml, options)) {
        headerHtml.append("<br />");
      }
    }

    String label = getLabel(activity, instance, options);
    headerHtml.append(
        getHeader(activity, instance, options)
//        + "<br>" + (label != null ? label : "")
        + "</td>"
        + (isVertical ? "</tr><tr>":"")
        + "<td align='center'>"
    );
   
    sb.insert(0, headerHtml);

    sb.append("</td></tr></table>");
  }
 
  public String getLabel(Activity activity, ProcessInstance instance, Map options){
    String locale = (String)options.get("locale");
   
//    return activity.getName().getText(locale);
    return "";
  }
 
  protected boolean appendFlowController(Activity activity, ProcessInstance instance, StringBuilder sb, Map options){
    return DefaultActivityViewer.appendFlowController(activity, instance, sb, options);
  }
}
TOP

Related Classes of org.uengine.kernel.viewer.ComplexActivityViewer

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.