]> source.dussan.org Git - vaadin-framework.git/blob
bbd1fa0c613c5b9b3fe07ed586e1da43ff701f7e
[vaadin-framework.git] /
1 /*
2  * Copyright 2000-2018 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.event.dom.client.ClickHandler;
19 import com.google.gwt.event.dom.client.HasClickHandlers;
20 import com.vaadin.client.communication.StateChangeEvent;
21 import com.vaadin.v7.client.ui.AbstractLegacyComponentConnector;
22 import com.vaadin.v7.shared.ui.colorpicker.ColorPickerState;
23
24 /**
25  * An abstract class that defines default implementation for a color picker
26  * connector.
27  *
28  * @since 7.0.0
29  */
30 @Deprecated
31 public abstract class AbstractColorPickerConnector
32         extends AbstractLegacyComponentConnector implements ClickHandler {
33
34     private static final String DEFAULT_WIDTH_STYLE = "v-default-caption-width";
35
36     @Override
37     public ColorPickerState getState() {
38         return (ColorPickerState) super.getState();
39     }
40
41     @Override
42     public boolean delegateCaptionHandling() {
43         return false;
44     }
45
46     @Override
47     public void onStateChanged(StateChangeEvent stateChangeEvent) {
48         // NOTE: this method is called after @DelegateToWidget
49         super.onStateChanged(stateChangeEvent);
50         if (stateChangeEvent.hasPropertyChanged("color")) {
51             refreshColor();
52
53             if (getState().showDefaultCaption && (getState().caption == null
54                     || "".equals(getState().caption))) {
55
56                 setCaption(getState().color);
57             }
58         }
59         if (stateChangeEvent.hasPropertyChanged("caption")
60                 || stateChangeEvent.hasPropertyChanged("htmlContentAllowed")
61                 || stateChangeEvent.hasPropertyChanged("showDefaultCaption")) {
62
63             setCaption(getCaption());
64             refreshDefaultCaptionStyle();
65         }
66     }
67
68     @Override
69     public void init() {
70         super.init();
71         if (getWidget() instanceof HasClickHandlers) {
72             ((HasClickHandlers) getWidget()).addClickHandler(this);
73         }
74     }
75
76     /**
77      * Get caption for the color picker widget.
78      *
79      * @return
80      */
81     protected String getCaption() {
82         if (getState().showDefaultCaption && (getState().caption == null
83                 || "".equals(getState().caption))) {
84             return getState().color;
85         }
86         return getState().caption;
87     }
88
89     /**
90      * Add/remove default caption style.
91      */
92     protected void refreshDefaultCaptionStyle() {
93         if (getState().showDefaultCaption
94                 && (getState().caption == null || getState().caption.isEmpty())
95                 && getState().width.isEmpty()) {
96             getWidget().addStyleName(DEFAULT_WIDTH_STYLE);
97         } else {
98             getWidget().removeStyleName(DEFAULT_WIDTH_STYLE);
99         }
100     }
101
102     /**
103      * Set caption of the color picker widget.
104      *
105      * @param caption
106      */
107     protected abstract void setCaption(String caption);
108
109     /**
110      * Update the widget to show the currently selected color.
111      */
112     protected abstract void refreshColor();
113
114 }