private static IAutoTextEventHandler getEventHandler(
     ReportItemDesign design, ExecutionContext context) {
   try {
     return (IAutoTextEventHandler) getInstance(design, context);
   } catch (ClassCastException e) {
     addClassCastException(context, e, design.getHandle(), IAutoTextEventHandler.class);
   } catch (EngineException e) {
     addException(context, e, design.getHandle());
   }
   return null;
 }
 protected void doSkipToExecutor(InstanceID id, long offset) throws Exception {
   ListBandDesign bandDesign = (ListBandDesign) design;
   int contentCount = bandDesign.getContentCount();
   long contentDesignId = id.getComponentID();
   for (int i = 0; i < contentCount; i++) {
     ReportItemDesign childDesign = bandDesign.getContent(i);
     if (contentDesignId == childDesign.getID()) {
       // this one is the first executed element.
       nextItem = i;
       return;
     }
   }
   nextItem = contentCount;
 }
 public static void handleOnPageBreak(IAutoTextContent content, ExecutionContext context) {
   Object generateBy = content.getGenerateBy();
   if (generateBy == null) {
     return;
   }
   ReportItemDesign autoTextDesign = (ReportItemDesign) generateBy;
   try {
     if (!needOnPageBreak(autoTextDesign)) {
       return;
     }
     // fromGrid doesn't matter here since row data is null
     IAutoTextInstance autoText = new AutoTextInstance(content, context, RunningState.PAGEBREAK);
     if (handleScript(autoText, autoTextDesign.getOnPageBreak(), context).didRun()) return;
     IAutoTextEventHandler eh = getEventHandler(autoTextDesign, context);
     if (eh != null) eh.onPageBreak(autoText, context.getReportContext());
   } catch (Exception e) {
     addException(context, e, autoTextDesign.getHandle());
   }
 }
  public static void handleOnCreate(IAutoTextContent content, ExecutionContext context) {
    Object generateBy = content.getGenerateBy();
    if (generateBy == null) {
      return;
    }
    ReportItemDesign autoTextItemDesign = (ReportItemDesign) generateBy;
    try {
      if (!needOnCreate(autoTextItemDesign)) {
        return;
      }
      IAutoTextInstance autoText = new AutoTextInstance(content, context, RunningState.CREATE);
      if (handleScript(autoText, autoTextItemDesign.getOnCreate(), context).didRun()) return;
      IAutoTextEventHandler eh = getEventHandler(autoTextItemDesign, context);
      if (eh != null) eh.onCreate(autoText, context.getReportContext());

    } catch (Exception e) {
      addException(context, e, autoTextItemDesign.getHandle());
    }
  }