/** * Copyright 2015 ArcBees 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.arcbees.gaestudio.client.application.profiler.widget.filter; import com.arcbees.gaestudio.client.application.widget.dropdown.Dropdown; import com.arcbees.gaestudio.client.application.widget.dropdown.DropdownFactory; import com.arcbees.gaestudio.client.resources.AppResources; import com.arcbees.gaestudio.client.resources.FilterDropdownResources; import com.google.gwt.event.logical.shared.ValueChangeEvent; import com.google.gwt.event.logical.shared.ValueChangeHandler; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.IsWidget; import com.google.gwt.user.client.ui.SimplePanel; import com.google.gwt.user.client.ui.Widget; import com.google.inject.Inject; import com.gwtplatform.mvp.client.ViewWithUiHandlers; public class FiltersView extends ViewWithUiHandlers<FiltersUiHandlers> implements FiltersPresenter.MyView, ValueChangeHandler<Filter> { interface Binder extends UiBinder<Widget, FiltersView> { } @UiField(provided = true) AppResources resources; @UiField SimplePanel request; @UiField SimplePanel method; @UiField SimplePanel type; @UiField(provided = true) Dropdown<Filter> dropdown; private Filter currentlySelectedFilter = Filter.REQUEST; @Inject FiltersView( Binder uiBinder, AppResources resources, DropdownFactory dropdownFactory, FilterDropdownResources dropdownResources, FilterRenderer renderer) { this.resources = resources; this.dropdown = dropdownFactory.create(renderer, dropdownResources); dropdown.addValue(Filter.REQUEST); dropdown.addValue(Filter.TYPE); dropdown.addValue(Filter.METHOD); dropdown.addValueChangeHandler(this); initWidget(uiBinder.createAndBindUi(this)); } @Override public Filter getCurrentlyDisplayedFilter() { return currentlySelectedFilter; } @Override public void onValueChange(ValueChangeEvent<Filter> event) { selectFilter(event.getValue()); } @Override public void setInSlot(Object slot, IsWidget content) { if (slot == FiltersPresenter.SLOT_REQUEST_FILTER) { request.setWidget(content); } else if (slot == FiltersPresenter.SLOT_METHOD_FILTER) { method.setWidget(content); } else if (slot == FiltersPresenter.SLOT_TYPE_FILTER) { type.setWidget(content); } } private void selectFilter(Filter filter) { if (filter != currentlySelectedFilter) { getPanelFromFilter(currentlySelectedFilter).setVisible(false); currentlySelectedFilter = filter; getUiHandlers().changeFilter(); getPanelFromFilter(filter).setVisible(true); } } private Widget getPanelFromFilter(Filter filter) { switch (filter) { case METHOD: return method; case TYPE: return type; default: return request; } } }