import java.util.Iterator;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jface.viewers.ArrayContentProvider;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.ListViewer;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.List;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IEditorSite;
import org.eclipse.ui.IPropertyListener;
import org.eclipse.ui.part.EditorPart;
import com.businessobjects.crystalreports.designer.sdk.ICrystalDocumentChangedEvent;
import com.businessobjects.crystalreports.designer.sdk.ICrystalDocumentChangedListener;
import com.businessobjects.crystalreports.designer.sdk.ICrystalReportsEditor;
import com.businessobjects.crystalreports.designer.sdk.ICrystalReportsEditorPage;
import com.crystaldecisions.sdk.occa.report.application.AdvancedClientDocumentEvent;
import com.crystaldecisions.sdk.occa.report.application.DataDefController;
import com.crystaldecisions.sdk.occa.report.application.IAdvancedClientDocumentEventListener;
import com.crystaldecisions.sdk.occa.report.application.IReportClientDocument;
import com.crystaldecisions.sdk.occa.report.application.ParameterFieldController;
import com.crystaldecisions.sdk.occa.report.data.Fields;
import com.crystaldecisions.sdk.occa.report.data.IDataDefinition;
import com.crystaldecisions.sdk.occa.report.data.IField;
import com.crystaldecisions.sdk.occa.report.data.IParameterField;
import com.crystaldecisions.sdk.occa.report.lib.ReportSDKException;
public class MyReportPage extends EditorPart implements ICrystalReportsEditorPage,
ICrystalDocumentChangedListener, IAdvancedClientDocumentEventListener
{
ICrystalReportsEditor myEditor;
private List paramList;
private Label paramLabel;
private Button paramButton;
private ListViewer listViewer;
public void init(IEditorSite site, IEditorInput input)
{
setSite(site);
setInput(input);
}
public void createPartControl(Composite parent)
{
Composite composite = new Composite(parent, SWT.NULL);
GridLayout layout = new GridLayout();
layout.numColumns = 4;
composite.setLayout(layout);
paramLabel = new Label(composite, SWT.CENTER);
paramLabel.setText("Parameter Fields");
paramList = new List(composite, SWT.V_SCROLL | SWT.MULTI |
SWT.BORDER | SWT.H_SCROLL);
listViewer = new ListViewer(paramList);
listViewer.setContentProvider(new ArrayContentProvider());
listViewer.setLabelProvider(new LabelProvider()
{
public String getText(Object element)
{
IField field = (IField) element;
return field.getFormulaForm();
}
});
listViewer.addSelectionChangedListener(new ISelectionChangedListener ()
{
public void selectionChanged(SelectionChangedEvent event)
{
ListViewer listViewer = (ListViewer)event.getSource();
StructuredSelection selection = (StructuredSelection)listViewer.getSelection();
if (!selection.isEmpty())
paramButton.setEnabled(true);
}
});
paramButton = new Button (composite, SWT.PUSH | SWT.CENTER);
paramButton.setText("Delete Parameter Field");
paramButton.addSelectionListener (new SelectionAdapter()
{
public void widgetSelected (SelectionEvent e)
{
DataDefController controller = null;
try
{
controller = myEditor.getReportClientDocument().getDataDefController();
ParameterFieldController parameterFieldController = controller.getParameterFieldController();
StructuredSelection selection = (StructuredSelection) listViewer.getSelection ();
Iterator itr = selection.iterator();
while(itr.hasNext())
parameterFieldController.remove((IParameterField)itr.next());
}
catch (ReportSDKException e1)
{
e1.printStackTrace();
}
finally
{
((Button) e.getSource()).setEnabled(false);
}
}
});
}
public boolean attachOnStart()
{
return false;
}
public void attachToEditor(ICrystalReportsEditor editor)
{
myEditor = editor;
setInput(myEditor.getEditorInput());
myEditor.addDocumentChangedListener(this);
documentChangedHelper(null, myEditor.getReportClientDocument(), true);
myEditor.addPropertyListener (new IPropertyListener ()
{
public void propertyChanged(Object source, int propID)
{
if (propID == IEditorPart.PROP_INPUT)
setInput (myEditor.getEditorInput());
}
});
}
public void documentChanged(ICrystalDocumentChangedEvent evt)
{
IReportClientDocument oldDoc = evt.getOldDocument();
IReportClientDocument newDoc = evt.getNewDocument();
boolean mainChanged = evt.isMainReportChanged();
documentChangedHelper(oldDoc, newDoc, mainChanged);
}
public void documentChangedHelper(IReportClientDocument oldReport, IReportClientDocument newReport, boolean mainChanged)
{
if (mainChanged)
{
if (oldReport != null)
oldReport.getMainReport().removeAdvancedClientDocumentEventListener(this);
if (newReport != null)
newReport.getMainReport().addAdvancedClientDocumentEventListener(this);
if (newReport == null)
return;
IDataDefinition definition = null;
try
{
definition = newReport.getDataDefController().getDataDefinition();
}
catch(ReportSDKException e)
{
e.printStackTrace();
}
if (definition != null)
{
Fields parameters;
parameters = definition.getParameterFields();
listViewer.setInput(parameters);
}
else
{
listViewer.setInput(null);
}
}
}
public void onAdded(AdvancedClientDocumentEvent event)
{
listViewer.refresh();
}
public void onChanged(AdvancedClientDocumentEvent event)
{
listViewer.refresh();
}
public void onRemoved(AdvancedClientDocumentEvent event)
{
listViewer.refresh();
}
public void doSave(IProgressMonitor monitor){}
public void doSaveAs(){}
public boolean isDirty(){return false;}
public boolean isSaveAsAllowed(){return false;}
public void setFocus(){}
}|
Business Objects, an SAP company http://www.businessobjects.com/ Support services http://www.businessobjects.com/services/support/ Product Documentation on the Web http://support.businessobjects.com/documentation/ |