blob: 7858edc69adf0f1d6c81e5ca61e51999079d274a [file] [log] [blame]
/**
* Copyright (C) 2012-2013 Dušan Vejnovič <vaadin@dussan.org>
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.dussan.vaadin.dcharts.client.connector;
import java.util.HashMap;
import java.util.Map;
import org.dussan.vaadin.dcharts.DCharts;
import org.dussan.vaadin.dcharts.client.rpc.DChartsClientRPC;
import org.dussan.vaadin.dcharts.client.rpc.DChartsServerRpc;
import org.dussan.vaadin.dcharts.client.ui.VDCharts;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.logical.shared.ValueChangeEvent;
import com.google.gwt.event.logical.shared.ValueChangeHandler;
import com.google.gwt.user.client.ui.Widget;
import com.vaadin.client.ComponentConnector;
import com.vaadin.client.ConnectorHierarchyChangeEvent;
import com.vaadin.client.LayoutManager;
import com.vaadin.client.communication.RpcProxy;
import com.vaadin.client.ui.AbstractComponentContainerConnector;
import com.vaadin.client.ui.layout.ElementResizeEvent;
import com.vaadin.client.ui.layout.ElementResizeListener;
import com.vaadin.shared.ui.Connect;
@Connect(DCharts.class)
public class DChartsConnector extends AbstractComponentContainerConnector
implements ValueChangeHandler<Object[]> {
private static final long serialVersionUID = -5835057962150067653L;
private Map<Integer, String> chartData = new HashMap<Integer, String>();
private DChartsServerRpc serverRpc = RpcProxy.create(
DChartsServerRpc.class, this);
@Override
protected Widget createWidget() {
return GWT.create(VDCharts.class);
}
@Override
public VDCharts getWidget() {
return (VDCharts) super.getWidget();
}
@Override
protected void init() {
super.init();
registerRpc(DChartsClientRPC.class, new DChartsClientRPC() {
private static final long serialVersionUID = -3966553309119744743L;
@Override
public void setChartId(String id) {
getWidget().setChartId(id);
}
@Override
public void setChartData(Map<Integer, String> chartData) {
DChartsConnector.this.chartData.clear();
DChartsConnector.this.chartData.putAll(chartData);
getWidget().processChartData(chartData);
}
});
LayoutManager.get(getConnection()).addElementResizeListener(
getWidget().getElement(), new ElementResizeListener() {
@Override
public void onElementResize(ElementResizeEvent e) {
if (!getWidget().isChartPrepared()) {
getWidget().prepareChart();
} else {
// added by os.bee
getWidget().processChartData(chartData);
}
}
});
getWidget().addValueChangeHandler(this);
}
@Override
public void updateCaption(ComponentConnector connector) {
// not used
}
@Override
public void onConnectorHierarchyChange(
ConnectorHierarchyChangeEvent connectorHierarchyChangeEvent) {
if (getChildComponents() != null && getChildComponents().size() > 0) {
getWidget().add(getChildComponents().get(0).getWidget());
}
}
@SuppressWarnings("unchecked")
@Override
public void onValueChange(ValueChangeEvent<Object[]> eventObject) {
Map<String, String> eventData = (Map<String, String>) ((ValueChangeEvent<Object[]>) eventObject)
.getValue()[0];
serverRpc.onEventFired(eventData);
}
}