/** * 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.widget; import java.util.Set; import com.arcbees.analytics.shared.Analytics; import com.arcbees.gaestudio.client.application.visualizer.ParsedEntity; import com.arcbees.gaestudio.client.resources.AppMessages; import com.arcbees.gaestudio.shared.DeleteEntities; import com.google.common.base.Strings; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.safehtml.shared.SafeHtml; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.uibinder.client.UiHandler; import com.google.gwt.user.client.ui.Button; import com.google.gwt.user.client.ui.HTML; import com.google.gwt.user.client.ui.Widget; import com.google.inject.Inject; import com.google.web.bindery.event.shared.EventBus; import com.gwtplatform.mvp.client.PopupViewWithUiHandlers; import static com.arcbees.gaestudio.client.application.analytics.EventCategories.UI_ELEMENTS; public class EntityDeletionView extends PopupViewWithUiHandlers<EntityDeletionUiHandlers> implements EntityDeletionPresenter.MyView { interface Binder extends UiBinder<Widget, EntityDeletionView> { } @UiField Button delete; @UiField Button cancel; @UiField HTML message; private final AppMessages messages; private final Analytics analytics; @Inject EntityDeletionView( Binder uiBinder, EventBus eventBus, AppMessages messages, Analytics analytics) { super(eventBus); this.messages = messages; this.analytics = analytics; initWidget(uiBinder.createAndBindUi(this)); } @Override public void displayEntityDeletion(ParsedEntity p) { message.setHTML(messages.deleteEntity(p.getKey().getKind(), p.getKey().getId())); asPopupPanel().center(); } @Override public void displayEntitiesDeletion( DeleteEntities deleteType, String kind, String namespace, Set<ParsedEntity> entities) { SafeHtml message = null; switch (deleteType) { case KIND: message = messages.deleteEntitiesOfKind(kind); break; case NAMESPACE: if (Strings.isNullOrEmpty(namespace)) { message = messages.deleteEntitiesOfDefaultNamespace(); } else { message = messages.deleteEntitiesOfNamespace(namespace); } break; case KIND_NAMESPACE: if (Strings.isNullOrEmpty(namespace)) { message = messages.deleteEntitiesOfKindOfDefaultNamespace(kind); } else { message = messages.deleteEntitiesOfKindOfNamespace(kind, namespace); } break; case SET: message = messages.deleteSelectedEntities(entities.size()); break; case ALL: message = messages.deleteAllEntities(); break; } this.message.setHTML(message); asPopupPanel().center(); } @UiHandler("delete") void onDeletionClicked(ClickEvent event) { getUiHandlers().deleteEntity(); asPopupPanel().hide(); analytics.sendEvent(UI_ELEMENTS, "click") .eventLabel("Visualizer -> Delete Confirmation Popup -> Delete") .go(); } @UiHandler({"cancel", "close"}) void onCancelClicked(ClickEvent event) { getUiHandlers().reset(); asPopupPanel().hide(); analytics.sendEvent(UI_ELEMENTS, "click") .eventLabel("Visualizer -> Delete Confirmation Popup -> Cancel or Close") .go(); } }