/* * 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 java.util.ArrayList; import com.facebook.tsdb.tsdash.client.presenter.MetricPresenter; import com.google.gwt.core.client.GWT; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.event.dom.client.HasClickHandlers; 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.Button; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.HTMLPanel; import com.google.gwt.user.client.ui.HasText; import com.google.gwt.user.client.ui.HasValue; import com.google.gwt.user.client.ui.HasWidgets; import com.google.gwt.user.client.ui.Image; import com.google.gwt.user.client.ui.MultiWordSuggestOracle; import com.google.gwt.user.client.ui.SuggestBox; import com.google.gwt.user.client.ui.Widget; public class MetricsFormWidget extends Composite implements MetricPresenter.MetricsFormWidget { private static MetricsFormWidgetUiBinder uiBinder = GWT .create(MetricsFormWidgetUiBinder.class); interface MetricsFormWidgetUiBinder extends UiBinder<Widget, MetricsFormWidget> { } private final MultiWordSuggestOracle suggestOracle = new MultiWordSuggestOracle(); @UiField Button addMetric; @UiField HTMLPanel metricsContainer; @UiField HTMLPanel container; @UiField Image loading; @UiField Anchor viewAll; @UiField(provided = true) SuggestBox suggest; public MetricsFormWidget() { suggest = new SuggestBox(suggestOracle); initWidget(uiBinder.createAndBindUi(this)); suggest.getTextBox().addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { suggest.getTextBox().setFocus(true); suggest.getTextBox().selectAll(); } }); } @Override public void focusSuggest(boolean focus) { suggest.getTextBox().setFocus(focus); } @Override public HasValue<String> typedMetric() { return suggest.getTextBox(); } @Override public HasClickHandlers addMetricButton() { return addMetric; } @Override public HasWidgets metricsContainer() { return metricsContainer; } @Override public void setMetricSuggestions(ArrayList<String> options) { suggestOracle.clear(); suggestOracle.addAll(options); } @Override public int metricsCount() { return metricsContainer.getWidgetCount(); } @Override public void setLoadingVisible(boolean visible) { loading.setVisible(visible); } @Override public HasClickHandlers viewAllButton() { return viewAll; } @Override public HasText viewAllButtonText() { return viewAll; } }