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;
}