/** * 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.visualizer.columnfilter; import java.util.ArrayList; import java.util.List; import javax.inject.Inject; import com.arcbees.gaestudio.client.application.visualizer.ParsedEntity; import com.google.gwt.user.client.ui.IsWidget; import com.google.web.bindery.event.shared.EventBus; import com.gwtplatform.mvp.client.HasUiHandlers; import com.gwtplatform.mvp.client.PresenterWidget; import com.gwtplatform.mvp.client.View; public class ColumnFilterPresenter extends PresenterWidget<ColumnFilterPresenter.MyView> implements TypeInfoLoadedEvent.TypeInfoLoadedHandler, ColumnFilterUiHandlers { interface MyView extends View, HasUiHandlers<ColumnFilterUiHandlers> { void clear(); void display(IsWidget isWidget); } static final Object SLOT_COLUMNS = new Object(); private final ColumnNamePresenterFactory columnNamePresenterFactory; private String appId; private String namespace; private String kind; private List<ColumnNamePresenter> columnNamePresenters; @Inject ColumnFilterPresenter( EventBus eventBus, MyView view, ColumnNamePresenterFactory columnNamePresenterFactory) { super(eventBus, view); this.columnNamePresenterFactory = columnNamePresenterFactory; this.columnNamePresenters = new ArrayList<>(); getView().setUiHandlers(this); } @Override public void onTypeInfoLoaded(TypeInfoLoadedEvent event) { ParsedEntity entity = event.getPrototype(); appId = entity.getKey().getAppIdNamespace().getAppId(); namespace = entity.getKey().getAppIdNamespace().getNamespace(); kind = entity.getKey().getKind(); List<String> columnNames = event.getColumnNames(); clearSlot(SLOT_COLUMNS); columnNamePresenters.clear(); for (String columnName : columnNames) { ColumnNamePresenter columnNamePresenter = columnNamePresenterFactory.create(appId, namespace, kind, columnName); columnNamePresenters.add(columnNamePresenter); addToSlot(SLOT_COLUMNS, columnNamePresenter); } } @Override public void showAll() { for (ColumnNamePresenter columnNamePresenter : columnNamePresenters) { columnNamePresenter.setChecked(true); } } @Override public void hideAll() { for (ColumnNamePresenter columnNamePresenter : columnNamePresenters) { columnNamePresenter.setChecked(false); } } @Override protected void onBind() { super.onBind(); addRegisteredHandler(TypeInfoLoadedEvent.getType(), this); } }