[ofcgwt] making charts and click events

27 views
Skip to first unread message

Nick

unread,
May 14, 2010, 6:03:51 AM5/14/10
to OFCGWT
Hi All,

I'm trying to develop a chart(StackBarChart) to display some data, and
I need to add some click handlers to the chart.That is I need to add
functionality such that I can click on stacks and then It should show
some messages (basically trigger some methods when clicks).

I tried this:

StackValue barValues = new
StackedBarChart.StackValue( Random.nextDouble() * 100, "#9A2EFE" );

barValues.addChartClickHandler( new ChartClickHandler()
{

@Override
public void onClick( ChartClickEvent event )
{
System.out.println("bar values are being clicked");
}
});

But although I clicked on the stacks , it didn't show the message...

Can you give me a clarification regarding this.

p.s: I'm using the .jar version "ofcgwt-2.0.1 beta"

--
You received this message because you are subscribed to the Google Groups "OFCGWT" group.
To post to this group, send email to ofc...@googlegroups.com.
To unsubscribe from this group, send email to ofcgwt+un...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/ofcgwt?hl=en.

Bruno Ayres

unread,
May 14, 2010, 7:30:20 AM5/14/10
to OFCGWT
I´v overrided the methods setChartData and doOnChartClick of
ChartWidget to do it.

I did a special treatment for Stack and HStack. See following code:

@Override
public void setChartData(ChartData p_cd)
{
this.chartData = p_cd;
for (com.rednels.ofcgwt.client.model.elements.Element e :
chartData.getElements())
{
// add chart click events...
for (ChartClickHandler cch : e.getChartClickHandlers())
{
String onclick = "ofc_onclick('" + getSwfId() + "','"
+ cch.hashCode() + "')";
e.setOnClick(onclick);
}
// add key click events...
for (KeyClickHandler kch : e.getKeyClickHandlers())
{
String onclick = "ofc_onclick('" + getSwfId() + "','"
+ kch.hashCode() + "')";
e.setKeyOnClick(onclick);
}
for (Object o : e.getValues())
{
if (o instanceof DataValueEvents)
{
// add data value click events...
DataValueEvents dve = (DataValueEvents) o;
for (ChartClickHandler ch : dve.getHandlers())
{
String onclick = "ofc_onclick('" + getSwfId()
+ "','" + ch.hashCode() + "')";
dve.setOnClick(onclick);
}
}
else if (o instanceof Stack)
{
Stack s = (Stack) o;
for (Object sv : s.getValues())
{
if (sv instanceof StackValue)
{
DataValueEvents dve = (DataValueEvents)
sv;
for (ChartClickHandler ch :
dve.getHandlers())
{
String onclick = "ofc_onclick('" +
getSwfId() + "','" + ch.hashCode() + "')";
dve.setOnClick(onclick);
}
}
}
}
else if (o instanceof HStack)
{
HStack s = (HStack) o;
for (Object sv : s.getValues())
{
if (sv instanceof DataValueEvents)
{
DataValueEvents dve = (DataValueEvents)
sv;
for (ChartClickHandler ch :
dve.getHandlers())
{
String onclick = "ofc_onclick('" +
getSwfId() + "','" + ch.hashCode() + "')";
dve.setOnClick(onclick);
}
}
}
}

}
}
setJsonData(chartData.buildJSON().toString());
}

@Override
protected void doOnChartClick(String evt)
{
for (com.rednels.ofcgwt.client.model.elements.Element e :
chartData.getElements())
{
for (Object o : e.getValues())
{
if (o instanceof DataValueEvents)
{
DataValueEvents ee = (DataValueEvents) o;
for (ChartClickHandler ch : ee.getHandlers())
{
if (evt.equals("" + ch.hashCode()))
{
ch.onClick(new ChartClickEvent());
}
}
}
else if (o instanceof Stack)
{
Stack s = (Stack) o;
for (Object sv : s.getValues())
{
if (sv instanceof StackValue)
{
DataValueEvents ee = (DataValueEvents) sv;
for (ChartClickHandler ch :
ee.getHandlers())
{
if (evt.equals("" + ch.hashCode()))
{
ch.onClick(new ChartClickEvent());
}
}
}
}
}
else if (o instanceof HStack)
{
HStack s = (HStack) o;
for (Object sv : s.getValues())
{
if (sv instanceof DataValueEvents)
{
DataValueEvents ee = (DataValueEvents) sv;
for (ChartClickHandler ch :
ee.getHandlers())
{
if (evt.equals("" + ch.hashCode()))
{
ch.onClick(new ChartClickEvent());
}
}
}
}
}
}
}
}

I also created a new class that extends StackedBarChart.StackValue and
added a new JSON atribute "on-click".

@Override
public JSONValue buildJSON()
{
JSONObject json = (JSONObject) super.buildJSON();
if (onClick != null) json.put("on-click", new
JSONString(onClick));
return json;

Nick

unread,
May 18, 2010, 7:08:43 AM5/18/10
to OFCGWT
What do you mean "getSwfId()" ?

I'm still a bit confused about that...
Reply all
Reply to author
Forward
0 new messages