/**
* 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 javax.inject.Inject;
import com.arcbees.gaestudio.client.application.event.ColumnVisibilityChangedEvent;
import com.google.inject.assistedinject.Assisted;
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;
import static com.arcbees.gaestudio.client.application.visualizer.columnfilter.ColumnNamePresenterFactory.APP_ID;
import static com.arcbees.gaestudio.client.application.visualizer.columnfilter.ColumnNamePresenterFactory.COLUMN_NAME;
import static com.arcbees.gaestudio.client.application.visualizer.columnfilter.ColumnNamePresenterFactory.KIND;
import static com.arcbees.gaestudio.client.application.visualizer.columnfilter.ColumnNamePresenterFactory.NAMESPACE;
public class ColumnNamePresenter extends PresenterWidget<ColumnNamePresenter.MyView> implements ColumnNameUiHandlers {
interface MyView extends View, HasUiHandlers<ColumnNameUiHandlers> {
void setColumnName(String columnName);
void setChecked(boolean checked);
}
private final String appId;
private final String namespace;
private final String kind;
private final String columnName;
private final ColumnVisibilityConfigHelper columnVisibilityConfigHelper;
@Inject
ColumnNamePresenter(
EventBus eventBus,
MyView myView,
ColumnVisibilityConfigHelper columnVisibilityConfigHelper,
@Assisted(APP_ID) String appId,
@Assisted(NAMESPACE) String namespace,
@Assisted(KIND) String kind,
@Assisted(COLUMN_NAME) String columnName) {
super(eventBus, myView);
this.appId = appId;
this.namespace = namespace;
this.kind = kind;
this.columnName = columnName;
this.columnVisibilityConfigHelper = columnVisibilityConfigHelper;
getView().setUiHandlers(this);
}
@Override
public void onValueChange(Boolean value) {
columnVisibilityConfigHelper.setColumnVisible(appId, namespace, kind, columnName, value);
ColumnVisibilityChangedEvent.fire(this);
}
public void setChecked(boolean checked) {
getView().setChecked(checked);
onValueChange(checked);
}
@Override
protected void onBind() {
super.onBind();
getView().setColumnName(columnName);
getView().setChecked(columnVisibilityConfigHelper.getColumnVisibility(appId, namespace, kind, columnName));
}
}