/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.waveprotocol.wave.client.wavepanel.impl.toolbar.color;
import com.google.gwt.event.dom.client.ChangeEvent;
import com.google.gwt.event.dom.client.ChangeHandler;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.KeyCodes;
import com.google.gwt.event.dom.client.KeyUpEvent;
import com.google.gwt.event.dom.client.KeyUpHandler;
import com.google.gwt.user.client.ui.PushButton;
import com.google.gwt.user.client.ui.TextBox;
/**
* The Class SampleCustomColorPicker is a sample of how the ColorPicker can
* extended with other color pickers.
*
* @author vjrj@ourproject.org (Vicente J. Ruiz Jurado)
*/
public class SampleCustomColorPicker extends AbstractColorPicker {
/** The textbox used in this sample to set hex colors. */
private TextBox textbox;
/**
* Instantiates a new sample custom color picker.
*
* @param colorPicker the color picker
*/
public SampleCustomColorPicker(final ComplexColorPicker colorPicker) {
super(colorPicker);
textbox = new TextBox();
textbox.setVisibleLength(8);
textbox.setValue("#000000");
textbox.addStyleName(ComplexColorPicker.style.margins());
PushButton custom = new PushButton("Custom...");
custom.addStyleName(ComplexColorPicker.style.buttonsMargins());
custom.setStylePrimaryName(ComplexColorPicker.style.customColorPushbutton());
custom.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
// ComplexColorPicker is a DeckPanel, so we show our widget
colorPicker.showWidget(1);
textbox.setFocus(true);
textbox.selectAll();
}
});
textbox.addChangeHandler(new ChangeHandler() {
@Override
public void onChange(ChangeEvent event) {
chooseColor();
}
});
textbox.addKeyUpHandler(new KeyUpHandler() {
@Override
public void onKeyUp(final KeyUpEvent event) {
if (event.getNativeKeyCode() == KeyCodes.KEY_ENTER) {
if (textbox.getText().length() > 0) {
chooseColor();
}
}
}
});
initWidget(textbox);
setWidth("50px");
// We add the button and the panel to the ComplexColorPicker (the button
// opens the panel)
colorPicker.addToBottom(custom);
colorPicker.addColorPicker(this);
}
/**
* Choose the color of the textbox.
*/
private void chooseColor() {
onColorChoose(textbox.getValue());
}
}