package org.nightlabs.jfire.reporting.admin.parameter.ui;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.jdo.FetchPlan;
import javax.security.auth.login.LoginException;
import org.apache.log4j.Logger;
import org.eclipse.birt.report.model.api.ModuleHandle;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.draw2d.FigureCanvas;
import org.eclipse.draw2d.LightweightSystem;
import org.eclipse.draw2d.MarginBorder;
import org.eclipse.draw2d.Viewport;
import org.eclipse.draw2d.parts.ScrollableThumbnail;
import org.eclipse.draw2d.parts.Thumbnail;
import org.eclipse.gef.ContextMenuProvider;
import org.eclipse.gef.DefaultEditDomain;
import org.eclipse.gef.EditPartViewer;
import org.eclipse.gef.KeyHandler;
import org.eclipse.gef.KeyStroke;
import org.eclipse.gef.LayerConstants;
import org.eclipse.gef.RootEditPart;
import org.eclipse.gef.editparts.ScalableFreeformRootEditPart;
import org.eclipse.gef.editparts.ZoomManager;
import org.eclipse.gef.palette.PaletteRoot;
import org.eclipse.gef.ui.actions.ActionRegistry;
import org.eclipse.gef.ui.actions.GEFActionConstants;
import org.eclipse.gef.ui.palette.FlyoutPaletteComposite.FlyoutPreferences;
import org.eclipse.gef.ui.parts.ContentOutlinePage;
import org.eclipse.gef.ui.parts.GraphicalEditorWithFlyoutPalette;
import org.eclipse.gef.ui.parts.ScrollingGraphicalViewer;
import org.eclipse.gef.ui.parts.TreeViewer;
import org.eclipse.gef.ui.properties.UndoablePropertySheetEntry;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.window.Window;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.DisposeEvent;
import org.eclipse.swt.events.DisposeListener;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Canvas;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.ui.IActionBars;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorSite;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.actions.ActionFactory;
import org.eclipse.ui.part.IPageSite;
import org.eclipse.ui.part.PageBook;
import org.eclipse.ui.views.contentoutline.IContentOutlinePage;
import org.eclipse.ui.views.properties.IPropertySheetPage;
import org.eclipse.ui.views.properties.PropertySheetPage;
import org.nightlabs.base.ui.composite.XComboComposite;
import org.nightlabs.base.ui.composite.XComposite;
import org.nightlabs.base.ui.composite.XComposite.LayoutMode;
import org.nightlabs.jdo.NLJDOHelper;
import org.nightlabs.jfire.base.JFireEjb3Factory;
import org.nightlabs.jfire.base.login.ui.Login;
import org.nightlabs.jfire.idgenerator.IDGenerator;
import org.nightlabs.jfire.reporting.admin.parameter.ui.action.AutoLayoutAction;
import org.nightlabs.jfire.reporting.admin.parameter.ui.action.AutoLayoutPagesAction;
import org.nightlabs.jfire.reporting.admin.parameter.ui.dialog.ShowXMLInitialisationDialog;
import org.nightlabs.jfire.reporting.admin.parameter.ui.dialog.UseCaseDialog;
import org.nightlabs.jfire.reporting.admin.parameter.ui.resource.Messages;
import org.nightlabs.jfire.reporting.admin.ui.layout.editor.JFireRemoteReportEditorInput;
import org.nightlabs.jfire.reporting.dao.ReportRegistryItemDAO;
import org.nightlabs.jfire.reporting.layout.ReportLayout;
import org.nightlabs.jfire.reporting.layout.ReportRegistryItem;
import org.nightlabs.jfire.reporting.layout.id.ReportRegistryItemID;
import org.nightlabs.jfire.reporting.parameter.ReportParameterManagerRemote;
import org.nightlabs.jfire.reporting.parameter.config.ReportParameterAcquisitionSetup;
import org.nightlabs.jfire.reporting.parameter.config.ReportParameterAcquisitionUseCase;
import org.nightlabs.jfire.reporting.parameter.config.ValueAcquisitionSetup;
import org.nightlabs.jfire.reporting.parameter.dao.ReportParameterAcquisitionSetupDAO;
import org.nightlabs.progress.NullProgressMonitor;
import org.nightlabs.util.Util;
/**
* @author Daniel.Mazurek [at] NightLabs [dot] de
*
*/
public abstract class ReportParameterEditor
extends GraphicalEditorWithFlyoutPalette
{
private static final Logger logger = Logger.getLogger(ReportParameterEditor.class);
/******************************* Inner class OutlinePage BEGIN *********************************/
class OutlinePage
extends ContentOutlinePage
implements IAdaptable
{
private PageBook pageBook;
private Control outline;
private Canvas overview;
private IAction showOutlineAction, showOverviewAction;
static final int ID_OUTLINE = 0;
static final int ID_OVERVIEW = 1;
private Thumbnail thumbnail;
private DisposeListener disposeListener;
public OutlinePage(EditPartViewer viewer){
super(viewer);
}
@Override
public void init(IPageSite pageSite) {
super.init(pageSite);
ActionRegistry registry = getActionRegistry();
IActionBars bars = pageSite.getActionBars();
String id = ActionFactory.UNDO.getId();
bars.setGlobalActionHandler(id, registry.getAction(id));
id = ActionFactory.REDO.getId();
bars.setGlobalActionHandler(id, registry.getAction(id));
id = ActionFactory.DELETE.getId();
bars.setGlobalActionHandler(id, registry.getAction(id));
bars.updateActionBars();
}
protected void configureOutlineViewer(){
getViewer().setEditDomain(getEditDomain());
getViewer().setEditPartFactory(new TreeEditPartFactory());
ContextMenuProvider provider = new ReportParameterContextMenuProvider(
getViewer(), getActionRegistry());
getViewer().setContextMenu(provider);
getSite().registerContextMenu(
"org.nightlabs.jfire.reporting.admin.parameter.ui.outline.contextmenu", //$NON-NLS-1$
provider, getSite().getSelectionProvider());
getViewer().setKeyHandler(getCommonKeyHandler());
// IToolBarManager tbm = getSite().getActionBars().getToolBarManager();
// showOutlineAction = new Action() {
// public void run() {
// showPage(ID_OUTLINE);
// }
// };
//
// showOutlineAction.setImageDescriptor(
// SharedImages.getSharedImageDescriptor(
// ReportingAdminParameterPlugin.getDefault(),
// ReportParameterEditor.class,
// "OutlinePage-Outline",
// ImageDimension._16x16,
// ImageFormat.gif));
// tbm.add(showOutlineAction);
// showOverviewAction = new Action() {
// public void run() {
// showPage(ID_OVERVIEW);
// }
// };
//
// showOverviewAction.setImageDescriptor(
// SharedImages.getSharedImageDescriptor(
// ReportingAdminParameterPlugin.getDefault(),
// ReportParameterEditor.class,
// "OutlinePage-Overview",
// ImageDimension._16x16,
// ImageFormat.gif));
// tbm.add(showOverviewAction);
// showPage(ID_OUTLINE);
}
@Override
public void createControl(Composite parent){
pageBook = new PageBook(parent, SWT.NONE);
outline = getViewer().createControl(pageBook);
overview = new Canvas(pageBook, SWT.NONE);
pageBook.showPage(outline);
configureOutlineViewer();
hookOutlineViewer();
initializeOutlineViewer();
}
@Override
public void dispose(){
unhookOutlineViewer();
if (thumbnail != null) {
thumbnail.deactivate();
thumbnail = null;
}
super.dispose();
ReportParameterEditor.this.outlinePage = null;
outlinePage = null;
}
public Object getAdapter(Class type) {
if (type == ZoomManager.class)
return getGraphicalViewer().getProperty(ZoomManager.class.toString());
return null;
}
@Override
public Control getControl() {
return pageBook;
}
protected void hookOutlineViewer(){
getSelectionSynchronizer().addViewer(getViewer());
}
protected void initializeOutlineViewer(){
setContents(getValueAcquisitionSetup());
}
protected void initializeOverview()
{
if (overview != null && overview.isDisposed()) {
LightweightSystem lws = new LightweightSystem(overview);
RootEditPart rep = getGraphicalViewer().getRootEditPart();
if (rep instanceof ScalableFreeformRootEditPart) {
ScalableFreeformRootEditPart root = (ScalableFreeformRootEditPart)rep;
thumbnail = new ScrollableThumbnail((Viewport)root.getFigure());
thumbnail.setBorder(new MarginBorder(3));
thumbnail.setSource(root.getLayer(LayerConstants.PRINTABLE_LAYERS));
lws.setContents(thumbnail);
disposeListener = new DisposeListener() {
public void widgetDisposed(DisposeEvent e) {
if (thumbnail != null) {
thumbnail.deactivate();
thumbnail = null;
}
}
};
getFigureCanvas().addDisposeListener(disposeListener);
}
}
}
public void setContents(Object contents) {
getViewer().setContents(contents);
}
// protected void showPage(int id) {
// if (id == ID_OUTLINE) {
// showOutlineAction.setChecked(true);
// showOverviewAction.setChecked(false);
// pageBook.showPage(outline);
// if (thumbnail != null)
// thumbnail.setVisible(false);
// } else if (id == ID_OVERVIEW) {
// if (thumbnail == null)
// initializeOverview();
// showOutlineAction.setChecked(false);
// showOverviewAction.setChecked(true);
// pageBook.showPage(overview);
// thumbnail.setVisible(true);
// }
// }
protected void unhookOutlineViewer(){
getSelectionSynchronizer().removeViewer(getViewer());
if (disposeListener != null && getFigureCanvas() != null && !getFigureCanvas().isDisposed())
getFigureCanvas().removeDisposeListener(disposeListener);
}
}
/******************************* Inner class OutlinePage END *********************************/
@Override
public Object getAdapter(Class type)
{
// logger.info("type = "+type);
if (type == IContentOutlinePage.class) {
outlinePage = new OutlinePage(new TreeViewer());
return outlinePage;
}
if (type == ZoomManager.class)
return getGraphicalViewer().getProperty(ZoomManager.class.toString());
if (type == IPropertySheetPage.class) {
// IPropertySheetPage page = new ReportPropertySheetPage();
PropertySheetPage page = new PropertySheetPage();
page.setRootEntry(new UndoablePropertySheetEntry(getCommandStack()));
return page;
}
// if (type == AttributeView.class) {
//
// }
return super.getAdapter(type);
}
private OutlinePage outlinePage;
protected FigureCanvas getFigureCanvas(){
return (FigureCanvas)getGraphicalViewer().getControl();
}
private KeyHandler sharedKeyHandler;
/**
* Returns the KeyHandler with common bindings for both the Outline and Graphical Views.
* For example, delete is a common action.
*/
protected KeyHandler getCommonKeyHandler(){
if (sharedKeyHandler == null){
sharedKeyHandler = new KeyHandler();
sharedKeyHandler.put(
KeyStroke.getPressed(SWT.F2, 0),
getActionRegistry().getAction(GEFActionConstants.DIRECT_EDIT));
}
return sharedKeyHandler;
}
public ReportParameterEditor() {
super();
}
@Override
protected DefaultEditDomain getEditDomain() {
if (super.getEditDomain() == null)
setEditDomain(new DefaultEditDomain(this));
return super.getEditDomain();
}
private PaletteFactory paletteFactory;
protected PaletteFactory getPaletteFactory() {
if (paletteFactory == null)
paletteFactory = createPaletteFactory();
return paletteFactory;
}
protected PaletteFactory createPaletteFactory() {
return new PaletteFactory(getSetupProvider());
}
private IValueAcquisitionSetupProvider setupProvider = null;
public IValueAcquisitionSetupProvider getSetupProvider()
{
if (setupProvider == null)
setupProvider = new ValueAcquisitionSetupProvider(getValueAcquisitionSetup());
return setupProvider;
}
private ValueAcquisitionSetup currentSetup;
public ValueAcquisitionSetup getValueAcquisitionSetup()
{
if (currentSetup != null)
return currentSetup;
if (reportParameterAcquisitionSetup != null) {
if (reportParameterAcquisitionSetup.getDefaultSetup() != null) {
currentSetup = reportParameterAcquisitionSetup.getDefaultSetup();
// return currentSetup;
}
else {
if (reportParameterAcquisitionSetup.getValueAcquisitionSetups().values() != null &&
!reportParameterAcquisitionSetup.getValueAcquisitionSetups().values().isEmpty())
{
ValueAcquisitionSetup valueAcquisitionSetup =
reportParameterAcquisitionSetup.getValueAcquisitionSetups().values().iterator().next();
reportParameterAcquisitionSetup.setDefaultSetup(valueAcquisitionSetup);
currentSetup = valueAcquisitionSetup;
// return currentSetup;
}
else {
ReportParameterAcquisitionUseCase useCase = new ReportParameterAcquisitionUseCase(
reportParameterAcquisitionSetup,
ReportParameterAcquisitionUseCase.USE_CASE_ID_DEFAULT);
ValueAcquisitionSetup valueAcquisitionSetup = new ValueAcquisitionSetup(
reportRegistryItemID.organisationID,
IDGenerator.nextID(ValueAcquisitionSetup.class),
reportParameterAcquisitionSetup,
useCase);
reportParameterAcquisitionSetup.addValueAcquisitionSetup(valueAcquisitionSetup);
reportParameterAcquisitionSetup.setDefaultSetup(valueAcquisitionSetup);
currentSetup = valueAcquisitionSetup;
// return currentSetup;
}
}
}
else {
String[] FETCH_GROUP = new String[] {FetchPlan.DEFAULT};
ReportRegistryItem reportRegistryItem = ReportRegistryItemDAO.sharedInstance().
getReportRegistryItem(reportRegistryItemID, FETCH_GROUP, new NullProgressMonitor());
if (!(reportRegistryItem instanceof ReportLayout))
throw new IllegalStateException("ReportRegistryItem is not an instance of "+ReportLayout.class.getSimpleName()); //$NON-NLS-1$
reportParameterAcquisitionSetup = new ReportParameterAcquisitionSetup(
reportRegistryItem.getOrganisationID(),
IDGenerator.nextID(ReportParameterAcquisitionSetup.class),
(ReportLayout)reportRegistryItem
);
ReportParameterAcquisitionUseCase useCase = new ReportParameterAcquisitionUseCase(
reportParameterAcquisitionSetup,
ReportParameterAcquisitionUseCase.USE_CASE_ID_DEFAULT);
ValueAcquisitionSetup valueAcquisitionSetup = createNewValueAcquisitionSetup(useCase);
reportParameterAcquisitionSetup.setDefaultSetup(valueAcquisitionSetup);
reportParameterAcquisitionSetup.addValueAcquisitionSetup(valueAcquisitionSetup);
currentSetup = valueAcquisitionSetup;
// return currentSetup;
}
getSetupProvider().setValueAcquisitionSetup(currentSetup);
return currentSetup;
}
private ValueAcquisitionSetup createNewValueAcquisitionSetup(ReportParameterAcquisitionUseCase useCase)
{
return new ValueAcquisitionSetup(
reportRegistryItemID.organisationID,
IDGenerator.nextID(ValueAcquisitionSetup.class),
reportParameterAcquisitionSetup,
useCase);
}
@Override
protected void initializeGraphicalViewer() {
super.initializeGraphicalViewer();
getGraphicalViewer().setContents(getValueAcquisitionSetup());
doAutoLayout();
}
@Override
protected FlyoutPreferences getPalettePreferences() {
return getPaletteFactory().createPalettePreferences();
}
@Override
protected PaletteRoot getPaletteRoot() {
return getPaletteFactory().createPalette();
}
@Override
public void doSave(IProgressMonitor monitor)
{
try {
ReportParameterManagerRemote rpm = JFireEjb3Factory.getRemoteBean(ReportParameterManagerRemote.class,
Login.getLogin().getInitialContextProperties()
);
reportParameterAcquisitionSetup = rpm.storeReportParameterAcquisitionSetup(
reportParameterAcquisitionSetup,
true,
ReportParameterAcquisitionSetupDAO.DEFAULT_FETCH_GROUPS,
NLJDOHelper.MAX_FETCH_DEPTH_NO_LIMIT);
getCommandStack().markSaveLocation();
currentSetup = null;
getGraphicalViewer().setContents(getValueAcquisitionSetup());
} catch (LoginException e) {
throw new RuntimeException(e);
}
}
@Override
public void doSaveAs() {
}
@Override
public boolean isSaveAsAllowed() {
return false;
}
@Override
protected void configureGraphicalViewer()
{
super.configureGraphicalViewer();
ScrollingGraphicalViewer viewer = (ScrollingGraphicalViewer)getGraphicalViewer();
List<String> zoomLevels = new ArrayList<String>(3);
zoomLevels.add(ZoomManager.FIT_ALL);
zoomLevels.add(ZoomManager.FIT_WIDTH);
zoomLevels.add(ZoomManager.FIT_HEIGHT);
getRootEditPart().getZoomManager().setZoomLevelContributions(zoomLevels);
viewer.setRootEditPart(getRootEditPart());
viewer.setEditPartFactory(getEditPartFactory());
// configure the context menu provider
ContextMenuProvider cmProvider =
new ReportParameterContextMenuProvider(viewer, getActionRegistry());
viewer.setContextMenu(cmProvider);
getSite().registerContextMenu(cmProvider, viewer);
// doAutoLayout();
}
private ScalableFreeformRootEditPart rootEditPart;
public ScalableFreeformRootEditPart getRootEditPart() {
if (rootEditPart == null)
rootEditPart = new ScalableFreeformRootEditPart();
return rootEditPart;
}
private EditPartFactory editPartFactory;
protected EditPartFactory getEditPartFactory() {
if (editPartFactory == null)
editPartFactory = new EditPartFactory(this);
return editPartFactory;
}
private ReportRegistryItemID reportRegistryItemID;
private ReportParameterAcquisitionSetup reportParameterAcquisitionSetup;
@Override
protected void setInput(IEditorInput input)
{
super.setInput(input);
if (reportRegistryItemID != null && reportParameterAcquisitionSetup != null)
return;
JFireRemoteReportEditorInput reportEditorInput = (JFireRemoteReportEditorInput) input;
reportRegistryItemID = reportEditorInput.getReportRegistryItemID();
try {
ReportParameterAcquisitionSetup cachedSetup = ReportParameterAcquisitionSetupDAO.sharedInstance().getSetupForReportLayout(
reportEditorInput.getReportRegistryItemID(),
ReportParameterAcquisitionSetupDAO.DEFAULT_FETCH_GROUPS,
new NullProgressMonitor());
if (cachedSetup != null)
reportParameterAcquisitionSetup = Util.cloneSerializable(cachedSetup);
else
reportParameterAcquisitionSetup = null;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
@Override
protected void createActions()
{
super.createActions();
ActionRegistry registry = getActionRegistry();
IAction action;
action = new AutoLayoutAction(this);
registry.registerAction(action);
getPropertyActions().add(action.getId());
action = new AutoLayoutPagesAction(this);
registry.registerAction(action);
getPropertyActions().add(action.getId());
// action = new UndoAction(this);
// registry.registerAction(action);
// getStackActions().add(action.getId());
//
// action = new RedoAction(this);
// registry.registerAction(action);
// getStackActions().add(action.getId());
//
// action = new SelectAllAction(this);
// registry.registerAction(action);
//
// action = new DeleteAction((IWorkbenchPart)this);
// registry.registerAction(action);
// getSelectionActions().add(action.getId());
//
// action = new SaveAction(this);
// registry.registerAction(action);
// getPropertyActions().add(action.getId());
//
// action = new PrintAction(this);
// registry.registerAction(action);
}
public abstract ModuleHandle getReportHandle();
public void doAutoLayout() {
// getActionRegistry().getAction(AutoLayoutAction.ID).run();
}
private Composite wrapper = null;
private Composite topWrapper = null;
private Composite contentWrapper = null;
private XComboComposite<ReportParameterAcquisitionUseCase> useCaseCombo = null;
private Button defaultUseCaseButton = null;
private Button newUseCaseButton = null;
private Button editUseCaseButton = null;
private Button showXMLInitializationCode = null;
private Composite parent = null;
@Override
public void createPartControl(Composite parent)
{
this.parent = parent;
wrapper = new XComposite(parent, SWT.NONE, LayoutMode.TIGHT_WRAPPER);
topWrapper = new XComposite(wrapper, SWT.NONE, LayoutMode.TIGHT_WRAPPER);
topWrapper.setLayout(new GridLayout(5, false));
topWrapper.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
List<ReportParameterAcquisitionUseCase> useCases = new ArrayList<ReportParameterAcquisitionUseCase>(
reportParameterAcquisitionSetup.getValueAcquisitionSetups().keySet());
useCaseCombo = new XComboComposite<ReportParameterAcquisitionUseCase>(
topWrapper, SWT.READ_ONLY, useCaseLabelProvider);
useCaseCombo.setInput(useCases);
useCaseCombo.addSelectionChangedListener(useCaseComboListener);
defaultUseCaseButton = new Button(topWrapper, SWT.CHECK);
defaultUseCaseButton.setText(Messages.getString("org.nightlabs.jfire.reporting.admin.parameter.ui.ReportParameterEditor.defaultUseCaseButton.text")); //$NON-NLS-1$
defaultUseCaseButton.addSelectionListener(defaultUseCaseButtonListener);
editUseCaseButton = new Button(topWrapper, SWT.NONE);
editUseCaseButton.setText(Messages.getString("org.nightlabs.jfire.reporting.admin.parameter.ui.ReportParameterEditor.editUseCaseButton.text")); //$NON-NLS-1$
editUseCaseButton.addSelectionListener(editUseCaseButtonListener);
newUseCaseButton = new Button(topWrapper, SWT.NONE);
newUseCaseButton.setText(Messages.getString("org.nightlabs.jfire.reporting.admin.parameter.ui.ReportParameterEditor.newUseCaseButton.text")); //$NON-NLS-1$
newUseCaseButton.addSelectionListener(newUseCaseButtonListener);
showXMLInitializationCode = new Button(topWrapper, SWT.PUSH);
showXMLInitializationCode.addSelectionListener(new SelectionListener() {
public void widgetDefaultSelected(SelectionEvent e) {
}
public void widgetSelected(SelectionEvent e) {
if (reportParameterAcquisitionSetup != null)
ShowXMLInitialisationDialog.open(reportParameterAcquisitionSetup);
}
});
showXMLInitializationCode.setText(Messages.getString("org.nightlabs.jfire.reporting.admin.parameter.ui.ReportParameterEditor.showXMLInitializationCodeButton.text")); //$NON-NLS-1$
showXMLInitializationCode.setLayoutData(new GridData());
for (Map.Entry<ReportParameterAcquisitionUseCase, ValueAcquisitionSetup> entry : reportParameterAcquisitionSetup.getValueAcquisitionSetups().entrySet()) {
if (entry.getValue().equals(reportParameterAcquisitionSetup.getDefaultSetup())) {
useCaseCombo.selectElement(entry.getKey());
}
}
defaultUseCaseButton.setSelection(true);
contentWrapper = new XComposite(wrapper, SWT.NONE, LayoutMode.TIGHT_WRAPPER);
contentWrapper.setLayout(new FillLayout());
super.createPartControl(contentWrapper);
}
private ILabelProvider useCaseLabelProvider = new LabelProvider() {
@Override
public String getText(Object element)
{
if (element instanceof ReportParameterAcquisitionUseCase) {
ReportParameterAcquisitionUseCase useCase = (ReportParameterAcquisitionUseCase) element;
return useCase.getName().getText();
}
return super.getText(element);
}
};
private ISelectionChangedListener useCaseComboListener = new ISelectionChangedListener(){
public void selectionChanged(SelectionChangedEvent event) {
ReportParameterAcquisitionUseCase useCase = useCaseCombo.getSelectedElement();
if (useCase != null) {
ValueAcquisitionSetup setup = reportParameterAcquisitionSetup.getValueAcquisitionSetups().get(useCase);
ReportParameterEditor.this.currentSetup = setup;
if (reportParameterAcquisitionSetup.getDefaultSetup().equals(currentSetup))
defaultUseCaseButton.setSelection(true);
else
defaultUseCaseButton.setSelection(false);
setCurrentValueAcquisitionSetup(setup);
}
}
};
private SelectionListener defaultUseCaseButtonListener = new SelectionListener(){
public void widgetSelected(SelectionEvent e) {
reportParameterAcquisitionSetup.setDefaultSetup(currentSetup);
}
public void widgetDefaultSelected(SelectionEvent e) {
widgetSelected(e);
}
};
private SelectionListener editUseCaseButtonListener = new SelectionListener(){
public void widgetSelected(SelectionEvent e) {
UseCaseDialog dialog = new UseCaseDialog(getSite().getShell(),
useCaseCombo.getSelectedElement(), reportParameterAcquisitionSetup, UseCaseDialog.EDIT_MODE);
int returnCode = dialog.open();
if (returnCode == Window.OK) {
useCaseCombo.refresh();
}
}
public void widgetDefaultSelected(SelectionEvent e) {
widgetSelected(e);
}
};
private SelectionListener newUseCaseButtonListener = new SelectionListener(){
public void widgetSelected(SelectionEvent e) {
UseCaseDialog dialog = new UseCaseDialog(getSite().getShell(),
null, reportParameterAcquisitionSetup, UseCaseDialog.NEW_MODE);
int returnCode = dialog.open();
if (returnCode == Window.OK) {
ReportParameterAcquisitionUseCase useCase = dialog.getUseCase();
ValueAcquisitionSetup setup = createNewValueAcquisitionSetup(useCase);
reportParameterAcquisitionSetup.addValueAcquisitionSetup(setup);
// reportParameterAcquisitionSetup.getValueAcquisitionSetups().put(
// useCase, setup);
useCaseCombo.addElement(useCase);
useCaseCombo.selectElement(useCase);
setCurrentValueAcquisitionSetup(setup);
}
}
public void widgetDefaultSelected(SelectionEvent e) {
widgetSelected(e);
}
};
protected void setCurrentValueAcquisitionSetup(ValueAcquisitionSetup setup)
{
this.currentSetup = setup;
getSetupProvider().setValueAcquisitionSetup(currentSetup);
JFireRemoteReportEditorInput oldInput = (JFireRemoteReportEditorInput) getEditorInput();
IEditorInput input = new JFireRemoteReportEditorInput(oldInput.getReportRegistryItemID());
try {
getSelectionSynchronizer().removeViewer(getRootEditPart().getViewer());
// necessary to avoid FigureCanvas SWT Bug (Scrollbar Widget is disposed)
getFigureCanvas().setViewport(new Viewport(true));
getGraphicalViewer().getControl().dispose();
contentWrapper.dispose();
dispose();
init((IEditorSite)getSite(), input);
// if (getSite().getWorkbenchWindow().getSelectionService() instanceof AbstractSelectionService) {
// AbstractSelectionService service = (AbstractSelectionService) getSite().getWorkbenchWindow().getSelectionService();
// service.setActivePart(getEditorSite().getPart());
// }
contentWrapper = new XComposite(wrapper, SWT.NONE, LayoutMode.TIGHT_WRAPPER);
contentWrapper.setLayout(new FillLayout());
super.createPartControl(contentWrapper);
parent.layout(true, true);
// DefaultEditDomain domain = (DefaultEditDomain) getEditDomain();
getEditDomain().setActiveTool(getEditDomain().getDefaultTool());
} catch (PartInitException e) {
throw new RuntimeException(e);
}
}
}