]> source.dussan.org Git - vaadin-framework.git/blob
7c230360fb49b23e317c5537077647c983bd8458
[vaadin-framework.git] /
1 /*
2  * Copyright 2000-2021 Vaadin Ltd.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License"); you may not
5  * use this file except in compliance with the License. You may obtain a copy of
6  * the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13  * License for the specific language governing permissions and limitations under
14  * the License.
15  */
16 package com.vaadin.v7.client.ui.colorpicker;
17
18 import com.google.gwt.core.client.GWT;
19 import com.google.gwt.event.dom.client.ClickEvent;
20 import com.google.gwt.event.dom.client.ClickHandler;
21 import com.google.gwt.user.client.ui.Widget;
22 import com.vaadin.client.communication.RpcProxy;
23 import com.vaadin.client.communication.StateChangeEvent;
24 import com.vaadin.client.ui.colorpicker.VColorPickerGrid;
25 import com.vaadin.shared.ui.Connect;
26 import com.vaadin.shared.ui.Connect.LoadStyle;
27 import com.vaadin.v7.client.ui.AbstractLegacyComponentConnector;
28 import com.vaadin.v7.shared.ui.colorpicker.ColorPickerGridServerRpc;
29 import com.vaadin.v7.shared.ui.colorpicker.ColorPickerGridState;
30 import com.vaadin.v7.ui.components.colorpicker.ColorPickerGrid;
31
32 /**
33  * A class that defines the default implementation for a color picker grid
34  * connector. Connects the server side {@link ColorPickerGrid} with the client
35  * side counterpart {@link VColorPickerGrid}
36  *
37  * @since 7.0.0
38  */
39 @Connect(value = ColorPickerGrid.class, loadStyle = LoadStyle.LAZY)
40 public class ColorPickerGridConnector extends AbstractLegacyComponentConnector
41         implements ClickHandler {
42
43     private ColorPickerGridServerRpc rpc = RpcProxy
44             .create(ColorPickerGridServerRpc.class, this);
45
46     @Override
47     protected Widget createWidget() {
48         return GWT.create(VColorPickerGrid.class);
49     }
50
51     @Override
52     public VColorPickerGrid getWidget() {
53         return (VColorPickerGrid) super.getWidget();
54     }
55
56     @Override
57     public ColorPickerGridState getState() {
58         return (ColorPickerGridState) super.getState();
59     }
60
61     @Override
62     public void onClick(ClickEvent event) {
63         rpc.select(getWidget().getSelectedX(), getWidget().getSelectedY());
64     }
65
66     @Override
67     public void onStateChanged(StateChangeEvent stateChangeEvent) {
68         super.onStateChanged(stateChangeEvent);
69         if (stateChangeEvent.hasPropertyChanged("rowCount")
70                 || stateChangeEvent.hasPropertyChanged("columnCount")
71                 || stateChangeEvent.hasPropertyChanged("updateGrid")) {
72
73             getWidget().updateGrid(getState().rowCount, getState().columnCount);
74         }
75         if (stateChangeEvent.hasPropertyChanged("changedX")
76                 || stateChangeEvent.hasPropertyChanged("changedY")
77                 || stateChangeEvent.hasPropertyChanged("changedColor")
78                 || stateChangeEvent.hasPropertyChanged("updateColor")) {
79
80             getWidget().updateColor(getState().changedColor,
81                     getState().changedX, getState().changedY);
82
83             if (!getWidget().isGridLoaded()) {
84                 rpc.refresh();
85             }
86         }
87     }
88
89     @Override
90     protected void init() {
91         super.init();
92         getWidget().addClickHandler(this);
93     }
94 }