Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Archived » BIRT » Add Trigger to Chart from source
Add Trigger to Chart from source [message #528138] Mon, 19 April 2010 13:56 Go to next message
No real name is currently offline No real nameFriend
Messages: 18
Registered: April 2010
Junior Member
Hi,
I want to implement a Drill Through Functionality by using Java.
If the user clicks a bar in the chart, the SWT Browser should switch to a subreport with details to the selected Customer.

I tried two ways:
1) Trying to add a Trigger to the Series when opening the Report Design.

IReportRunnable design = reportEngine.openReportDesign(ReportTester.class.getResource AsStream(fileName));

Trigger trigger = TriggerImpl.create(TriggerCondition.ONCLICK_LITERAL,
ActionImpl.create(ActionType.SHOW_TOOLTIP_LITERAL,
TooltipValueImpl.create(100, "test")));

ExtendedItemHandle eih = (ExtendedItemHandle) design.getDesignHandle().getModuleHandle().findElement("barChart ");
ChartWithAxes chart = (ChartWithAxes) eih.getReportItem().getProperty("chart.instance");

Axis xAxisPrimary = chart.getPrimaryBaseAxes()[0];
Axis yAxis = chart.getPrimaryOrthogonalAxis(xAxisPrimary);
yAxis.getTriggers().add(trigger);
SeriesDefinition xSD = (SeriesDefinition) xAxisPrimary.getSeriesDefinitions().get(0);
Series xS = (Series) xSD.getSeries().get(0);
xS.getTriggers().add(trigger);


OR 2) Add a ChartHandler, that adds a Trigger to the Series

public class ChartEventHandler extends ChartEventHandlerAdapter {
public void afterDrawSeries(Series series, ISeriesRenderer isr,
IChartScriptContext icsc) {
series.getTriggers().add(TriggerImpl.create(TriggerCondition .ONCLICK_LITERAL,
ActionImpl.create(ActionType.SHOW_TOOLTIP_LITERAL,
TooltipValueImpl.create(100,
"test"))));
}
}

Both ways have no effects ... Sad Any Ideas? What am I doing wrong?
Re: Add Trigger to Chart from source [message #528255 is a reply to message #528138] Mon, 19 April 2010 19:57 Go to previous messageGo to next message
Jason Weathersby is currently offline Jason WeathersbyFriend
Messages: 9167
Registered: July 2009
Senior Member

Tobias,

Any reason you are not just using the chart editor to do this?
On your scenario 1 does it show a tooltip? This should work. You can
create a url selection like:
MultiURLValues muv = MultiURLValuesImpl.create( );

URLValue uv = URLValueImpl.create( "http://www.actuate.com", //$NON-NLS-1$
null, null, null, null );
Label l = LabelImpl.create( );
l.setCaption( TextImpl.create( "www.actuate.com" ) );//$NON-NLS-1$
uv.setLabel( l );
muv.getURLValues( ).add( uv );

uv = URLValueImpl.create( "http://www.birt-exchange.com", //$NON-NLS-1$
null, null, null, null );
l = LabelImpl.create( );
l.setCaption( TextImpl.create( "www.birt-exchange.com" ) );//$NON-NLS-1$
uv.setLabel( l );
muv.getURLValues( ).add( uv );

uv = URLValueImpl.create( "http://www.eclipse.org", //$NON-NLS-1$
null, null, null, null );
l = LabelImpl.create( );
l.setCaption( TextImpl.create( "www.eclipse.org" ) );//$NON-NLS-1$
uv.setLabel( l );
muv.getURLValues( ).add( uv );

Trigger triger = TriggerImpl.create( TriggerCondition.ONMOUSEDOWN_LITERAL,
ActionImpl.create( ActionType.URL_REDIRECT_LITERAL,
muv ) );
sePie.getTriggers( ).add( triger );


Jason

tobias.koehler1987@googlemail.com wrote:
> Hi,
> I want to implement a Drill Through Functionality by using Java.
> If the user clicks a bar in the chart, the SWT Browser should switch to
> a subreport with details to the selected Customer.
> I tried two ways:
> 1) Trying to add a Trigger to the Series when opening the Report Design.
>
> IReportRunnable design =
> reportEngine.openReportDesign(ReportTester.class.getResource
> AsStream(fileName));
>
> Trigger trigger = TriggerImpl.create(TriggerCondition.ONCLICK_LITERAL,
>
> ActionImpl.create(ActionType.SHOW_TOOLTIP_LITERAL,
>
> TooltipValueImpl.create(100, "test")));
>
> ExtendedItemHandle eih = (ExtendedItemHandle)
> design.getDesignHandle().getModuleHandle().findElement("barChart ");
> ChartWithAxes chart = (ChartWithAxes)
> eih.getReportItem().getProperty("chart.instance");
>
> Axis xAxisPrimary = chart.getPrimaryBaseAxes()[0];
> Axis yAxis = chart.getPrimaryOrthogonalAxis(xAxisPrimary);
> yAxis.getTriggers().add(trigger);
> SeriesDefinition xSD = (SeriesDefinition)
> xAxisPrimary.getSeriesDefinitions().get(0);
> Series xS = (Series) xSD.getSeries().get(0);
> xS.getTriggers().add(trigger);
>
>
> OR 2) Add a ChartHandler, that adds a Trigger to the Series
>
> public class ChartEventHandler extends ChartEventHandlerAdapter {
> public void afterDrawSeries(Series series, ISeriesRenderer isr,
> IChartScriptContext icsc) {
> series.getTriggers().add(TriggerImpl.create(TriggerCondition
> .ONCLICK_LITERAL,
>
> ActionImpl.create(ActionType.SHOW_TOOLTIP_LITERAL,
>
> TooltipValueImpl.create(100,
>
> "test"))));
> }
> }
>
> Both ways have no effects ... :( Any Ideas? What am I doing wrong?
>
Re: Add Trigger to Chart from source [message #528264 is a reply to message #528255] Mon, 19 April 2010 21:06 Go to previous message
Jason Weathersby is currently offline Jason WeathersbyFriend
Messages: 9167
Registered: July 2009
Senior Member

Tobias,

If you want the trigger to hyperlink to a report you need to create an
ActionHandle from the DE API and then use the ModuleUtil class to
serizalize this into the baseURL of the trigger. Like:

try {
ActionHandle actionHandle =
ModuleUtil.deserializeAction((InputStream)null);

actionHandle.setLinkType(DesignChoiceConstants.ACTION_LINK_T YPE_DRILL_THROUGH);
actionHandle.setReportName("xyz.rptdesign");
actionHandle.setTargetFileType("report-design");
actionHandle.setTargetWindow("_blank");
actionHandle.getMember("paramBindings");
ParamBinding pb = StructureFactory.createParamBinding();
pb.setParamName("order");
pb.setExpression("row[\"yaxis\"]");
actionHandle.addParamBinding(pb);
String sBaseUrl = ModuleUtil.serializeAction(actionHandle);

Trigger tr = TriggerImpl.create(TriggerCondition.ONCLICK_LITERAL,
ActionImpl.create(ActionType.URL_REDIRECT_LITERAL, URLValueImpl
.create(sBaseUrl, null, null,null,null)));
bs1.getTriggers().add(tr);


} catch (SemanticException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (DesignFileException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

Jason

Jason Weathersby wrote:
> Tobias,
>
> Any reason you are not just using the chart editor to do this?
> On your scenario 1 does it show a tooltip? This should work. You can
> create a url selection like:
> MultiURLValues muv = MultiURLValuesImpl.create( );
>
> URLValue uv = URLValueImpl.create( "http://www.actuate.com",
> //$NON-NLS-1$
> null, null, null, null );
> Label l = LabelImpl.create( );
> l.setCaption( TextImpl.create( "www.actuate.com" ) );//$NON-NLS-1$
> uv.setLabel( l );
> muv.getURLValues( ).add( uv );
>
> uv = URLValueImpl.create( "http://www.birt-exchange.com",
> //$NON-NLS-1$
> null, null, null, null );
> l = LabelImpl.create( );
> l.setCaption( TextImpl.create( "www.birt-exchange.com" )
> );//$NON-NLS-1$
> uv.setLabel( l );
> muv.getURLValues( ).add( uv );
>
> uv = URLValueImpl.create( "http://www.eclipse.org", //$NON-NLS-1$
> null, null, null, null );
> l = LabelImpl.create( );
> l.setCaption( TextImpl.create( "www.eclipse.org" ) );//$NON-NLS-1$
> uv.setLabel( l );
> muv.getURLValues( ).add( uv );
>
> Trigger triger = TriggerImpl.create(
> TriggerCondition.ONMOUSEDOWN_LITERAL,
> ActionImpl.create( ActionType.URL_REDIRECT_LITERAL,
> muv ) );
> sePie.getTriggers( ).add( triger );
>
>
> Jason
>
> tobias.koehler1987@googlemail.com wrote:
>> Hi,
>> I want to implement a Drill Through Functionality by using Java.
>> If the user clicks a bar in the chart, the SWT Browser should switch
>> to a subreport with details to the selected Customer.
>> I tried two ways:
>> 1) Trying to add a Trigger to the Series when opening the Report Design.
>>
>> IReportRunnable design =
>> reportEngine.openReportDesign(ReportTester.class.getResource
>> AsStream(fileName));
>>
>> Trigger trigger = TriggerImpl.create(TriggerCondition.ONCLICK_LITERAL,
>>
>> ActionImpl.create(ActionType.SHOW_TOOLTIP_LITERAL,
>>
>> TooltipValueImpl.create(100, "test")));
>>
>> ExtendedItemHandle eih = (ExtendedItemHandle)
>> design.getDesignHandle().getModuleHandle().findElement("barChart ");
>> ChartWithAxes chart = (ChartWithAxes)
>> eih.getReportItem().getProperty("chart.instance");
>>
>> Axis xAxisPrimary = chart.getPrimaryBaseAxes()[0];
>> Axis yAxis = chart.getPrimaryOrthogonalAxis(xAxisPrimary);
>> yAxis.getTriggers().add(trigger);
>> SeriesDefinition xSD = (SeriesDefinition)
>> xAxisPrimary.getSeriesDefinitions().get(0);
>> Series xS = (Series) xSD.getSeries().get(0);
>> xS.getTriggers().add(trigger);
>>
>>
>> OR 2) Add a ChartHandler, that adds a Trigger to the Series
>>
>> public class ChartEventHandler extends ChartEventHandlerAdapter {
>> public void afterDrawSeries(Series series, ISeriesRenderer isr,
>> IChartScriptContext icsc) {
>> series.getTriggers().add(TriggerImpl.create(TriggerCondition
>> .ONCLICK_LITERAL,
>>
>> ActionImpl.create(ActionType.SHOW_TOOLTIP_LITERAL,
>>
>> TooltipValueImpl.create(100,
>>
>> "test"))));
>> }
>> }
>>
>> Both ways have no effects ... :( Any Ideas? What am I doing wrong?
>>
Previous Topic:BIRT 2.5.1 Report Veiwer Print Window Not Sizeable
Next Topic:Controlling the spreadsheet properties in BIRT
Goto Forum:
  


Current Time: Sat Apr 27 03:59:07 GMT 2024

Powered by FUDForum. Page generated in 0.03624 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top