| /** |
| * 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); |
| } |
| |
| } |