Crystal Reports for Eclipse Developer Guide

To drop an object on to the report

  1. Open the class that implements the drop handler.
    For example, open MyDndDropHandler.java.
  2. Include the import statements used in this example.
    import org.eclipse.swt.dnd.DropTarget;
    import org.eclipse.swt.graphics.Point;
    
    import com.businessobjects.crystalreports.designer.sdk.ICrystalReportsEditorPage
    
    import com.crystaldecisions.sdk.occa.report.definition.ISection;
    import com.crystaldecisions.sdk.occa.report.definition.ITextObject;
    import com.crystaldecisions.sdk.occa.report.definition.TextObject;
    import com.crystaldecisions.sdk.occa.report.definition.Paragraphs;
    import com.crystaldecisions.sdk.occa.report.definition.IParagraph;
    import com.crystaldecisions.sdk.occa.report.definition.Paragraph;
    import com.crystaldecisions.sdk.occa.report.definition.IParagraphTextElement;
    import com.crystaldecisions.sdk.occa.report.definition.ParagraphTextElement;
    import com.crystaldecisions.sdk.occa.report.application.IReportClientDocument;
Example: Adding data from a drop event to the report
import org.eclipse.jface.util.TransferDropTargetListener;
import org.eclipse.swt.dnd.DropTarget;
import org.eclipse.swt.dnd.DropTargetAdapter;
import org.eclipse.swt.dnd.DropTargetEvent;
import org.eclipse.swt.dnd.TextTransfer;
import org.eclipse.swt.dnd.Transfer;
import org.eclipse.swt.graphics.Point;

import com.businessobjects.crystalreports.designer.sdk.ICrystalReportsEditor;
import com.businessobjects.crystalreports.designer.sdk.ICrystalReportsEditorPage;
import com.businessobjects.crystalreports.designer.sdk.util.DNDHelper;
import com.crystaldecisions.sdk.occa.report.application.IReportClientDocument;
import com.crystaldecisions.sdk.occa.report.definition.IParagraph;
import com.crystaldecisions.sdk.occa.report.definition.IParagraphTextElement;
import com.crystaldecisions.sdk.occa.report.definition.ISection;
import com.crystaldecisions.sdk.occa.report.definition.ITextObject;
import com.crystaldecisions.sdk.occa.report.definition.Paragraph;
import com.crystaldecisions.sdk.occa.report.definition.ParagraphTextElement;
import com.crystaldecisions.sdk.occa.report.definition.Paragraphs;
import com.crystaldecisions.sdk.occa.report.definition.TextObject;
import com.crystaldecisions.sdk.occa.report.lib.ReportSDKException;

public class MyDndDropHandler extends DropTargetAdapter implements TransferDropTargetListener
{
  public MyDndDropHandler() 
  {
  }

  public Transfer getTransfer()
  {
    return TextTransfer.getInstance();
  }

  public boolean isEnabled (DropTargetEvent event)
  {
    ICrystalReportsEditor editor = DNDHelper.getCrystalReportsEditorAtScreenLocation(event.x, event.y);
    return (editor != null) && (event.data instanceof String);
  }

  public void drop (DropTargetEvent event)
  {

    ICrystalReportsEditor editor = DNDHelper.getCrystalReportsEditorAtScreenLocation(event.x, event.y);
    if (editor == null)
      return;

    ICrystalReportsEditorPage page = editor.getActiveEditorPage();  
  
    DropTarget target = (DropTarget) event.widget;
    final Point location = target.getControl().toControl(new Point(event.x, event.y));
    final ISection section = DNDHelper.getDropTargetSection(page, location);

    if (section != null)
    {
      String message = (String)event.data;    
      ITextObject textObj = new TextObject();
      Paragraphs paragraphs = textObj.getParagraphs();
      IParagraph paragraph = new Paragraph();
      paragraphs.add(paragraph);

      IParagraphTextElement textElement = new ParagraphTextElement();
      
      textElement.setText(message);
      paragraph.getParagraphElements().add(textElement);
 
      textObj.setLeft(location.x);
      textObj.setTop(location.y);

      try
      {
        IReportClientDocument rcd = editor.getReportClientDocument();
        rcd.getReportDefController().getReportObjectController().add(textObj, section, -1);
      }
      catch (ReportSDKException 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/