Crystal Reports for Eclipse Developer Guide

To add pages to a report wizard

Example: A report wizard and page classes
The following code snippet shows a report page.
import org.eclipse.jface.wizard.WizardPage;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.SWT;


public class MyWizardPage extends WizardPage
{
  private Button headerBtn;
  private Button footerBtn;  
  private final SelectionListener headerBtnListener = new SelectionListener() 
  {
    public void widgetDefaultSelected(SelectionEvent e)
    {
    }

    public void widgetSelected(SelectionEvent e)
    {
       ((MyReportWizard)getWizard()).dateInPageHeader = true;
    }
  };

  private final SelectionListener footerBtnListener = new SelectionListener()
  {
    public void widgetDefaultSelected(SelectionEvent e)
    {
    }

    public void widgetSelected(SelectionEvent e)
    {
       ((MyReportWizard)getWizard()).dateInPageHeader = false;
    }
  };

  public MyWizardPage(String name)
  { 
    super(name);
  }

  public void createControl (Composite parent) 
  {
    Composite base = new Group(parent, SWT.NONE);
    ((Group)base).setText("Which section of the report should be modified?");

    GridLayout layout = new GridLayout();
    int margin = 5;
    layout.marginHeight = margin;
    layout.marginWidth = margin;
    base.setLayout(layout);
    base.setFont(base.getParent().getFont());
    base.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL));

    headerBtn = new Button (base, SWT.RADIO);
    headerBtn.setText("Page Header");   
    headerBtn.setSelection(true);
    headerBtn.addSelectionListener(headerBtnListener);

    footerBtn = new Button (base, SWT.RADIO); 
    footerBtn.setText("Page Footer");
    footerBtn.addSelectionListener(footerBtnListener);
    
    setControl(base);
  }

}
The following code snippet shows a report wizard class that uses the report page:
import com.crystaldecisions.sdk.occa.report.application.ReportDefController;
import com.crystaldecisions.sdk.occa.report.data.SpecialField;
import com.crystaldecisions.sdk.occa.report.data.SpecialFieldType;
import com.crystaldecisions.sdk.occa.report.definition.IArea;
import com.crystaldecisions.sdk.occa.report.definition.ISection;
import com.crystaldecisions.sdk.occa.report.definition.FieldObject;
import com.crystaldecisions.sdk.occa.report.definition.TextObject;
import com.crystaldecisions.sdk.occa.report.lib.ReportSDKException;
import com.businessobjects.crystalreports.designer.sdk.wizard.ReportWizard;

public class MyReportWizard extends ReportWizard 
{
  public boolean dateInPageHeader = true;

  public MyReportWizard() throws ReportSDKException
  {
  }
  
  protected void addCustomPages ()
  {
    addPage (new MyWizardPage("Header or Footer Page"));
  }

  protected void doFinish()
  {
    int REPORT_HEADER = 0;
    int PAGE_HEADER = 1;
    int PAGE_FOOTER = 4;

    try {
      IArea area = null;
      ReportDefController defCon = getReport().getReportDefController();
    
      IArea reportHeader = defCon.getReportDefinition().getAreas().getArea(REPORT_HEADER);
      ISection rhSection = reportHeader.getSections().getSection(0);

      TextObject textObj = new TextObject("My Report");
      textObj.setHeight(360);
      textObj.setWidth(1440);
      textObj.setTop (rhSection.getHeight() - textObj.getHeight());
      defCon.getReportObjectController().add(textObj, rhSection, -1);

      if (dateInPageHeader)
      {
        area = defCon.getReportDefinition().getAreas().getArea(PAGE_HEADER);
      }
      else
      {
        area = defCon.getReportDefinition().getAreas().getArea(PAGE_FOOTER);
      }
      ISection sec = area.getSections().getSection(0);
 
      SpecialField dateField = new SpecialField(SpecialFieldType.printDate);
      FieldObject dateObj = new FieldObject();
      dateObj.setFieldValueType(dateField.getType());
      dateObj.setDataSource(dateField.getFormulaForm());

      dateObj.setHeight(360);
      dateObj.setWidth(1440);
      dateObj.setTop (sec.getHeight() - dateObj.getHeight());
      defCon.getReportObjectController().add(dateObj, sec, -1);

    }
    catch (Exception e)
    {
        e.printStackTrace();
    } 
  }
}



SAP BusinessObjects
http://www.sap.com/sapbusinessobjects/
Support services
http://service.sap.com/bosap-support/
Product Documentation on the Web
http://help.sap.com/