/*
* Copyright 2011 Facebook, Inc.
*
* 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 com.facebook.tsdb.tsdash.client.ui;
import com.facebook.tsdb.tsdash.client.presenter.PlotOptionsPresenter;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.HasClickHandlers;
import com.google.gwt.resources.client.CssResource;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.Anchor;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HTMLPanel;
import com.google.gwt.user.client.ui.HasValue;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.ToggleButton;
import com.google.gwt.user.client.ui.RadioButton;
import com.google.gwt.user.client.ui.UIObject;
import com.google.gwt.user.client.ui.Widget;
public class PlotOptionsWidget extends Composite implements
PlotOptionsPresenter.Widget {
private static PlotOptionsWidgetUiBinder uiBinder = GWT
.create(PlotOptionsWidgetUiBinder.class);
interface PlotOptionsWidgetUiBinder extends
UiBinder<Widget, PlotOptionsWidget> {
}
interface Style extends CssResource {
String selected();
String active();
}
public PlotOptionsWidget() {
color = new ToggleButton(new Image("img/color.png"));
initWidget(uiBinder.createAndBindUi(this));
}
@UiField
Anchor interactive;
@UiField
Anchor image;
@UiField
RadioButton lineChart;
@UiField
RadioButton surface;
@UiField
HTMLPanel imageOptions;
@UiField
HTMLPanel surfaceOptions;
@UiField(provided = true)
ToggleButton color;
@UiField
Style style;
private Object selectedMode = null;
@Override
public HasClickHandlers interactiveMode() {
return interactive;
}
@Override
public HasClickHandlers imageMode() {
return image;
}
@Override
public void selectedMode(Object button) {
if (selectedMode == button) {
return;
}
if (selectedMode != null) {
CssHelper.replaceClass((UIObject) selectedMode, style.selected(),
style.active());
}
if (button != null) {
CssHelper.replaceClass((UIObject) button, style.active(),
style.selected());
}
selectedMode = button;
}
@Override
public Object selectedMode() {
return selectedMode;
}
@Override
public void imageOptionsVisible(boolean visible) {
imageOptions.setVisible(visible);
}
@Override
public HasClickHandlers lineChartButton() {
return lineChart;
}
@Override
public HasClickHandlers surfaceButton() {
return surface;
}
@Override
public void setImageTypeSelected(Object selected) {
if (selected == lineChart) {
lineChart.setValue(true);
surfaceOptions.setVisible(false);
} else {
surface.setValue(true);
surfaceOptions.setVisible(true);
}
}
@Override
public HasClickHandlers colorButton() {
return color;
}
@Override
public HasValue<Boolean> lineChart() {
return lineChart;
}
@Override
public HasValue<Boolean> surface() {
return surface;
}
@Override
public void setSurfaceOptionsVisible(boolean visible) {
surfaceOptions.setVisible(visible);
}
@Override
public boolean colorPaletteSelected() {
return color.isDown();
}
@Override
public void colorPaletteSelected(boolean selected) {
color.setDown(selected);
}
}