diff --git a/build/org.eclipse.birt.target/BIRT all-in-one.launch b/build/org.eclipse.birt.target/BIRT all-in-one.launch index 3c8322823f..4b705b39bc 100644 --- a/build/org.eclipse.birt.target/BIRT all-in-one.launch +++ b/build/org.eclipse.birt.target/BIRT all-in-one.launch @@ -37,33 +37,25 @@ - - - - + - - - - + - - @@ -80,7 +72,6 @@ - @@ -100,10 +91,7 @@ - - - @@ -119,11 +107,9 @@ - - - - - + + + @@ -412,8 +398,6 @@ - - @@ -439,20 +423,15 @@ - - - - - + + - - + + - - - + @@ -643,7 +622,6 @@ - @@ -714,19 +692,10 @@ - - - - - - - - - @@ -913,8 +882,6 @@ - - diff --git a/engine/org.eclipse.birt.report.engine/src/org/eclipse/birt/report/engine/extension/IReportEvent.java b/engine/org.eclipse.birt.report.engine/src/org/eclipse/birt/report/engine/extension/IReportEvent.java index 288bde8969..98853577fa 100644 --- a/engine/org.eclipse.birt.report.engine/src/org/eclipse/birt/report/engine/extension/IReportEvent.java +++ b/engine/org.eclipse.birt.report.engine/src/org/eclipse/birt/report/engine/extension/IReportEvent.java @@ -14,6 +14,7 @@ package org.eclipse.birt.report.engine.extension; +import org.eclipse.birt.report.engine.executor.ExecutionContext; import org.eclipse.birt.report.model.api.DesignElementHandle; public interface IReportEvent { @@ -30,5 +31,5 @@ public interface IReportEvent { DesignElementHandle getHandle(); - IReportEventContext getContext(); + ExecutionContext getContext(); } diff --git a/engine/org.eclipse.birt.report.engine/src/org/eclipse/birt/report/engine/extension/internal/OnCreateEvent.java b/engine/org.eclipse.birt.report.engine/src/org/eclipse/birt/report/engine/extension/internal/OnCreateEvent.java index 080307c325..aee09d9e96 100644 --- a/engine/org.eclipse.birt.report.engine/src/org/eclipse/birt/report/engine/extension/internal/OnCreateEvent.java +++ b/engine/org.eclipse.birt.report.engine/src/org/eclipse/birt/report/engine/extension/internal/OnCreateEvent.java @@ -1,11 +1,14 @@ package org.eclipse.birt.report.engine.extension.internal; +import java.lang.reflect.Method; + import org.eclipse.birt.report.engine.content.IContent; +import org.eclipse.birt.report.engine.executor.ExecutionContext; import org.eclipse.birt.report.engine.extension.IOnCreateEvent; -import org.eclipse.birt.report.engine.extension.IReportEventContext; import org.eclipse.birt.report.model.api.DesignElementHandle; import org.eclipse.birt.report.model.api.ReportElementHandle; +import org.eclipse.birt.report.model.elements.ExtendedItem; /******************************************************************************* * Copyright (c) 2008 Actuate Corporation. All rights reserved. This program and @@ -20,10 +23,10 @@ public class OnCreateEvent extends ReportEvent implements IOnCreateEvent { DesignElementHandle handle; IContent content; - IReportEventContext context; + ExecutionContext context; - public OnCreateEvent(IReportEventContext context, DesignElementHandle handle, IContent content) { - super(ON_CREATE_EVENT); + public OnCreateEvent(ExecutionContext context, DesignElementHandle handle, IContent content) { + super(content, context, ON_CREATE_EVENT); this.context = context; this.handle = handle; @@ -49,11 +52,29 @@ public class OnCreateEvent extends ReportEvent implements IOnCreateEvent { } @Override - public IReportEventContext getContext() { + public ExecutionContext getContext() { return this.context; } - public void setContext(IReportEventContext context) { + public void setContext(ExecutionContext context) { this.context = context; } + + public void setRotationAngle(int angle) { + System.err.println("Not implemented: setRotationAngle"); + Object o = handle.getElement(); + if (o instanceof ExtendedItem) { + ExtendedItem itm = (ExtendedItem)o; + org.eclipse.birt.report.model.api.extension.IReportItem extensionElement = itm.getExtensibilityProvider() + .getExtensionElement(); + try { + Class c = extensionElement.getClass(); + Method m = c.getMethod("setRotationAngle", Integer.TYPE); + m.invoke(extensionElement, angle); + System.out.println(itm.toString()); + } catch (Exception ignore) { + ignore.printStackTrace(); + } + } + } } diff --git a/engine/org.eclipse.birt.report.engine/src/org/eclipse/birt/report/engine/extension/internal/OnPrepareEvent.java b/engine/org.eclipse.birt.report.engine/src/org/eclipse/birt/report/engine/extension/internal/OnPrepareEvent.java index 6b698d3a72..27329b2f1a 100644 --- a/engine/org.eclipse.birt.report.engine/src/org/eclipse/birt/report/engine/extension/internal/OnPrepareEvent.java +++ b/engine/org.eclipse.birt.report.engine/src/org/eclipse/birt/report/engine/extension/internal/OnPrepareEvent.java @@ -14,17 +14,18 @@ package org.eclipse.birt.report.engine.extension.internal; +import org.eclipse.birt.report.engine.content.IContent; +import org.eclipse.birt.report.engine.executor.ExecutionContext; import org.eclipse.birt.report.engine.extension.IOnPrepareEvent; -import org.eclipse.birt.report.engine.extension.IReportEventContext; import org.eclipse.birt.report.model.api.DesignElementHandle; public class OnPrepareEvent extends ReportEvent implements IOnPrepareEvent { DesignElementHandle handle; - IReportEventContext context; + ExecutionContext context; - public OnPrepareEvent(IReportEventContext context, DesignElementHandle handle) { - super(ON_PREPARE_EVENT); + public OnPrepareEvent(ExecutionContext context, IContent content, DesignElementHandle handle) { + super(content, context, ON_PREPARE_EVENT); this.context = context; this.handle = handle; @@ -40,11 +41,11 @@ public class OnPrepareEvent extends ReportEvent implements IOnPrepareEvent { } @Override - public IReportEventContext getContext() { + public ExecutionContext getContext() { return context; } - public void setContext(IReportEventContext context) { + public void setContext(ExecutionContext context) { this.context = context; } } diff --git a/engine/org.eclipse.birt.report.engine/src/org/eclipse/birt/report/engine/extension/internal/OnRenderEvent.java b/engine/org.eclipse.birt.report.engine/src/org/eclipse/birt/report/engine/extension/internal/OnRenderEvent.java index 782bb22a17..88552f56c8 100644 --- a/engine/org.eclipse.birt.report.engine/src/org/eclipse/birt/report/engine/extension/internal/OnRenderEvent.java +++ b/engine/org.eclipse.birt.report.engine/src/org/eclipse/birt/report/engine/extension/internal/OnRenderEvent.java @@ -2,8 +2,8 @@ package org.eclipse.birt.report.engine.extension.internal; import org.eclipse.birt.report.engine.content.IContent; +import org.eclipse.birt.report.engine.executor.ExecutionContext; import org.eclipse.birt.report.engine.extension.IOnRenderEvent; -import org.eclipse.birt.report.engine.extension.IReportEventContext; import org.eclipse.birt.report.model.api.DesignElementHandle; import org.eclipse.birt.report.model.api.ReportElementHandle; @@ -20,10 +20,10 @@ public class OnRenderEvent extends ReportEvent implements IOnRenderEvent { DesignElementHandle handle; IContent content; - IReportEventContext context; + ExecutionContext context; - public OnRenderEvent(IReportEventContext context, DesignElementHandle handle, IContent content) { - super(ON_RENDER_EVENT); + public OnRenderEvent(ExecutionContext context, DesignElementHandle handle, IContent content) { + super(content, context, ON_RENDER_EVENT); this.context = context; this.handle = handle; @@ -49,11 +49,11 @@ public class OnRenderEvent extends ReportEvent implements IOnRenderEvent { } @Override - public IReportEventContext getContext() { + public ExecutionContext getContext() { return this.context; } - public void setContext(IReportEventContext context) { + public void setContext(ExecutionContext context) { this.context = context; } } diff --git a/engine/org.eclipse.birt.report.engine/src/org/eclipse/birt/report/engine/extension/internal/ReportEvent.java b/engine/org.eclipse.birt.report.engine/src/org/eclipse/birt/report/engine/extension/internal/ReportEvent.java index 646b74c5cb..ba2d08a831 100644 --- a/engine/org.eclipse.birt.report.engine/src/org/eclipse/birt/report/engine/extension/internal/ReportEvent.java +++ b/engine/org.eclipse.birt.report.engine/src/org/eclipse/birt/report/engine/extension/internal/ReportEvent.java @@ -14,14 +14,23 @@ package org.eclipse.birt.report.engine.extension.internal; +import org.eclipse.birt.report.engine.content.IContent; +import org.eclipse.birt.report.engine.executor.ExecutionContext; import org.eclipse.birt.report.engine.extension.IReportEvent; +import org.eclipse.birt.report.engine.script.internal.instance.ReportItemInstance; +import org.eclipse.birt.report.engine.script.internal.instance.RunningState; -abstract class ReportEvent implements IReportEvent { +abstract class ReportEvent extends ReportItemInstance implements IReportEvent { protected int eventType; - ReportEvent(int type) { - eventType = type; + // See IReportEvent constants + static final RunningState translateState[] = { RunningState.CREATE, RunningState.CREATE, RunningState.CREATE, + RunningState.PAGEBREAK, RunningState.RENDER }; + + public ReportEvent(IContent content, ExecutionContext context, int eventType) { + super(content, context, translateState[eventType]); + this.eventType = eventType; } @Override diff --git a/engine/org.eclipse.birt.report.engine/src/org/eclipse/birt/report/engine/script/internal/ExtendedItemScriptExecutor.java b/engine/org.eclipse.birt.report.engine/src/org/eclipse/birt/report/engine/script/internal/ExtendedItemScriptExecutor.java index 95d86b1444..d70cd4f430 100644 --- a/engine/org.eclipse.birt.report.engine/src/org/eclipse/birt/report/engine/script/internal/ExtendedItemScriptExecutor.java +++ b/engine/org.eclipse.birt.report.engine/src/org/eclipse/birt/report/engine/script/internal/ExtendedItemScriptExecutor.java @@ -20,7 +20,6 @@ import org.eclipse.birt.report.engine.extension.IReportEventHandler; import org.eclipse.birt.report.engine.extension.internal.OnCreateEvent; import org.eclipse.birt.report.engine.extension.internal.OnPrepareEvent; import org.eclipse.birt.report.engine.extension.internal.OnRenderEvent; -import org.eclipse.birt.report.engine.extension.internal.ReportEventContext; import org.eclipse.birt.report.engine.ir.ExtendedItemDesign; import org.eclipse.birt.report.model.api.ExtendedItemHandle; @@ -30,7 +29,7 @@ public class ExtendedItemScriptExecutor extends ScriptExecutor { IReportEventHandler eventHandler = context.getExtendedItemManager().createEventHandler(handle); if (eventHandler != null) { try { - OnPrepareEvent event = new OnPrepareEvent(new ReportEventContext(context), handle); + OnPrepareEvent event = new OnPrepareEvent(context, null, handle); // We don't have content until now eventHandler.handle(event); } catch (Exception e) { addException(context, e, handle); @@ -40,27 +39,41 @@ public class ExtendedItemScriptExecutor extends ScriptExecutor { public static void handleOnCreate(ExtendedItemDesign design, IContent content, ExecutionContext context) { ExtendedItemHandle handle = (ExtendedItemHandle) design.getHandle(); - IReportEventHandler eventHandler = context.getExtendedItemManager().createEventHandler(handle); - if (eventHandler != null) { - try { - OnCreateEvent event = new OnCreateEvent(new ReportEventContext(context), handle, content); + if (!needOnCreate(design)) { + return; + } + + try { + OnCreateEvent event = new OnCreateEvent(context, handle, content); + if (handleScript(event, design.getOnCreate(), context).didRun()) { + return; + } + IReportEventHandler eventHandler = context.getExtendedItemManager().createEventHandler(handle); + if (eventHandler != null) { eventHandler.handle(event); - } catch (Exception e) { - addException(context, e, handle); } + } catch (Exception e) { + addException(context, e, handle); } } public static void handleOnRender(ExtendedItemDesign design, IContent content, ExecutionContext context) { ExtendedItemHandle handle = (ExtendedItemHandle) design.getHandle(); - IReportEventHandler eventHandler = context.getExtendedItemManager().createEventHandler(handle); - if (eventHandler != null) { - try { - OnRenderEvent event = new OnRenderEvent(new ReportEventContext(context), handle, content); + if (!needOnRender(design)) { + return; + } + + try { + OnRenderEvent event = new OnRenderEvent(context, handle, content); + if (handleScript(event, design.getOnRender(), context).didRun()) { + return; + } + IReportEventHandler eventHandler = context.getExtendedItemManager().createEventHandler(handle); + if (eventHandler != null) { eventHandler.handle(event); - } catch (Exception e) { - addException(context, e, handle); } + } catch (Exception e) { + addException(context, e, handle); } } -} +} \ No newline at end of file diff --git a/xtab/org.eclipse.birt.report.item.crosstab.core/src/org/eclipse/birt/report/item/crosstab/core/re/CrosstabReportEventHandler.java b/xtab/org.eclipse.birt.report.item.crosstab.core/src/org/eclipse/birt/report/item/crosstab/core/re/CrosstabReportEventHandler.java index 7619c8ceb0..6ac8db8f12 100644 --- a/xtab/org.eclipse.birt.report.item.crosstab.core/src/org/eclipse/birt/report/item/crosstab/core/re/CrosstabReportEventHandler.java +++ b/xtab/org.eclipse.birt.report.item.crosstab.core/src/org/eclipse/birt/report/item/crosstab/core/re/CrosstabReportEventHandler.java @@ -16,9 +16,9 @@ package org.eclipse.birt.report.item.crosstab.core.re; import org.eclipse.birt.core.exception.BirtException; import org.eclipse.birt.report.engine.content.ITableContent; +import org.eclipse.birt.report.engine.executor.ExecutionContext; import org.eclipse.birt.report.engine.extension.IOnCreateEvent; import org.eclipse.birt.report.engine.extension.IOnRenderEvent; -import org.eclipse.birt.report.engine.extension.IReportEventContext; import org.eclipse.birt.report.engine.extension.ReportEventHandlerBase; import org.eclipse.birt.report.engine.script.internal.instance.RunningState; import org.eclipse.birt.report.item.crosstab.core.de.CrosstabReportItemHandle; @@ -43,7 +43,7 @@ public class CrosstabReportEventHandler extends ReportEventHandlerBase { CrosstabReportItemHandle crosstab = (CrosstabReportItemHandle) ((ExtendedItemHandle) modelHandle) .getReportItem(); - IReportEventContext context = event.getContext(); + ExecutionContext context = event.getContext(); CrosstabCreationHandler handler = new CrosstabCreationHandler((ExtendedItemHandle) modelHandle, context.getApplicationClassLoader()); @@ -62,7 +62,7 @@ public class CrosstabReportEventHandler extends ReportEventHandlerBase { CrosstabReportItemHandle crosstab = (CrosstabReportItemHandle) ((ExtendedItemHandle) modelHandle) .getReportItem(); - IReportEventContext context = event.getContext(); + ExecutionContext context = event.getContext(); CrosstabRenderingHandler handler = new CrosstabRenderingHandler((ExtendedItemHandle) modelHandle, context.getApplicationClassLoader()); diff --git a/xtab/org.eclipse.birt.report.item.crosstab.core/src/org/eclipse/birt/report/item/crosstab/core/script/internal/CrosstabCellInstanceImpl.java b/xtab/org.eclipse.birt.report.item.crosstab.core/src/org/eclipse/birt/report/item/crosstab/core/script/internal/CrosstabCellInstanceImpl.java index 8e7ff3fd3b..2f0d7f1730 100644 --- a/xtab/org.eclipse.birt.report.item.crosstab.core/src/org/eclipse/birt/report/item/crosstab/core/script/internal/CrosstabCellInstanceImpl.java +++ b/xtab/org.eclipse.birt.report.item.crosstab.core/src/org/eclipse/birt/report/item/crosstab/core/script/internal/CrosstabCellInstanceImpl.java @@ -16,10 +16,10 @@ package org.eclipse.birt.report.item.crosstab.core.script.internal; import org.eclipse.birt.core.data.ExpressionUtil; import org.eclipse.birt.core.exception.BirtException; -import org.eclipse.birt.report.engine.api.script.IReportContext; import org.eclipse.birt.report.engine.api.script.ScriptException; import org.eclipse.birt.report.engine.api.script.instance.IScriptStyle; import org.eclipse.birt.report.engine.content.ICellContent; +import org.eclipse.birt.report.engine.executor.ExecutionContext; import org.eclipse.birt.report.item.crosstab.core.de.AggregationCellHandle; import org.eclipse.birt.report.item.crosstab.core.script.ICrosstabCellInstance; import org.eclipse.birt.report.model.api.ExtendedItemHandle; @@ -33,13 +33,13 @@ import org.eclipse.birt.report.model.api.extension.IReportItem; */ public class CrosstabCellInstanceImpl implements ICrosstabCellInstance { - private IReportContext context; + private ExecutionContext context; private ICellContent content; private ExtendedItemHandle modelHandle; private long id = -1; private String type = TYPE_HEADER; - public CrosstabCellInstanceImpl(ICellContent content, ExtendedItemHandle modelHandle, IReportContext context) { + public CrosstabCellInstanceImpl(ICellContent content, ExtendedItemHandle modelHandle, ExecutionContext context) { this.content = content; this.modelHandle = modelHandle; this.context = context; diff --git a/xtab/org.eclipse.birt.report.item.crosstab.core/src/org/eclipse/birt/report/item/crosstab/core/script/internal/handler/CrosstabCreationHandler.java b/xtab/org.eclipse.birt.report.item.crosstab.core/src/org/eclipse/birt/report/item/crosstab/core/script/internal/handler/CrosstabCreationHandler.java index 6d4875dcbf..702b549a86 100644 --- a/xtab/org.eclipse.birt.report.item.crosstab.core/src/org/eclipse/birt/report/item/crosstab/core/script/internal/handler/CrosstabCreationHandler.java +++ b/xtab/org.eclipse.birt.report.item.crosstab.core/src/org/eclipse/birt/report/item/crosstab/core/script/internal/handler/CrosstabCreationHandler.java @@ -15,9 +15,9 @@ package org.eclipse.birt.report.item.crosstab.core.script.internal.handler; import org.eclipse.birt.core.exception.BirtException; -import org.eclipse.birt.report.engine.api.script.IReportContext; import org.eclipse.birt.report.engine.content.ICellContent; import org.eclipse.birt.report.engine.content.ITableContent; +import org.eclipse.birt.report.engine.executor.ExecutionContext; import org.eclipse.birt.report.engine.script.internal.instance.RunningState; import org.eclipse.birt.report.item.crosstab.core.ICrosstabReportItemConstants; import org.eclipse.birt.report.item.crosstab.core.de.CrosstabCellHandle; @@ -47,7 +47,7 @@ public class CrosstabCreationHandler extends BaseCrosstabEventHandler { contextLoader); } - public void handleCrosstab(CrosstabReportItemHandle crosstab, ITableContent content, IReportContext context, + public void handleCrosstab(CrosstabReportItemHandle crosstab, ITableContent content, ExecutionContext context, RunningState runningState) throws BirtException { if (handler == null || crosstab == null) { return; @@ -58,7 +58,8 @@ public class CrosstabCreationHandler extends BaseCrosstabEventHandler { handler.callFunction(CrosstabScriptHandler.ON_CREATE_CROSSTAB, crosstabInst, context); } - public void handleCell(CrosstabCellHandle cell, ICellContent content, IReportContext context) throws BirtException { + public void handleCell(CrosstabCellHandle cell, ICellContent content, ExecutionContext context) + throws BirtException { if (handler == null || cell == null) { return; } diff --git a/xtab/org.eclipse.birt.report.item.crosstab.core/src/org/eclipse/birt/report/item/crosstab/core/script/internal/handler/CrosstabRenderingHandler.java b/xtab/org.eclipse.birt.report.item.crosstab.core/src/org/eclipse/birt/report/item/crosstab/core/script/internal/handler/CrosstabRenderingHandler.java index 6e0aa2e5f9..3d7d1e3c93 100644 --- a/xtab/org.eclipse.birt.report.item.crosstab.core/src/org/eclipse/birt/report/item/crosstab/core/script/internal/handler/CrosstabRenderingHandler.java +++ b/xtab/org.eclipse.birt.report.item.crosstab.core/src/org/eclipse/birt/report/item/crosstab/core/script/internal/handler/CrosstabRenderingHandler.java @@ -15,9 +15,9 @@ package org.eclipse.birt.report.item.crosstab.core.script.internal.handler; import org.eclipse.birt.core.exception.BirtException; -import org.eclipse.birt.report.engine.api.script.IReportContext; import org.eclipse.birt.report.engine.content.ICellContent; import org.eclipse.birt.report.engine.content.ITableContent; +import org.eclipse.birt.report.engine.executor.ExecutionContext; import org.eclipse.birt.report.engine.script.internal.instance.RunningState; import org.eclipse.birt.report.item.crosstab.core.ICrosstabReportItemConstants; import org.eclipse.birt.report.item.crosstab.core.de.CrosstabCellHandle; @@ -47,7 +47,7 @@ public class CrosstabRenderingHandler extends BaseCrosstabEventHandler { contextLoader); } - public void handleCrosstab(CrosstabReportItemHandle crosstab, ITableContent content, IReportContext context, + public void handleCrosstab(CrosstabReportItemHandle crosstab, ITableContent content, ExecutionContext context, RunningState runningState) throws BirtException { if (handler == null || crosstab == null) { return; @@ -58,7 +58,8 @@ public class CrosstabRenderingHandler extends BaseCrosstabEventHandler { handler.callFunction(CrosstabScriptHandler.ON_RENDER_CROSSTAB, crosstabInst, context); } - public void handleCell(CrosstabCellHandle cell, ICellContent content, IReportContext context) throws BirtException { + public void handleCell(CrosstabCellHandle cell, ICellContent content, ExecutionContext context) + throws BirtException { if (handler == null || cell == null) { return; }