package de.tud.kom.socom.web.client.administration.itemadministration; import com.google.gwt.core.client.GWT; import com.google.gwt.event.dom.client.ClickEvent; 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.uibinder.client.UiTemplate; import com.google.gwt.user.client.ui.Button; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.Widget; import de.tud.kom.socom.web.client.util.Visibility; public class ItemAdministration extends Composite { @UiTemplate("ItemAdministrationView.ui.xml") interface inf extends UiBinder<Widget, ItemAdministration> { } private static inf uiBinder = GWT.create(inf.class); public interface DeleteButtonCallback { void onClicked(ItemAdministrationState state); } public interface ChangeVisibilityButtonCallback { void onClicked(int newVisibility); } public ItemAdministration() { initWidget(uiBinder.createAndBindUi(this)); } @UiField Button deleteButton; @UiField Button undeleteButton; @UiField Button visibilityButton; @UiField VisibilityPopup visibilityDialog; private DeleteButtonCallback callback; private boolean onimage; public void setState(ItemAdministrationState state) { switch (state) { case none: deleteButton.setVisible(false); undeleteButton.setVisible(false); visibilityButton.setVisible(false); break; case undelete: deleteButton.setVisible(false); undeleteButton.setVisible(true); visibilityButton.setVisible(true); break; case delete: deleteButton.setVisible(true); undeleteButton.setVisible(false); visibilityButton.setVisible(true); break; default: deleteButton.setVisible(false); undeleteButton.setVisible(false); visibilityButton.setVisible(false); break; } } public void setCurrentVisibility(int visibility) { visibilityDialog.setCurrent(visibility); if(onimage) { visibilityButton.setStyleName("visibility-onimage"); return; } switch(visibility) { case -1 : visibilityButton.addStyleName("hidden"); break; case Visibility.PUBLIC : visibilityButton.setStyleName("public-button"); break; case Visibility.PRIVATE : visibilityButton.setStyleName("private-button"); break; case Visibility.FRIENDS : visibilityButton.setStyleName("friend-button"); break; case Visibility.SOCOM_INTERN : visibilityButton.setStyleName("socom-mini-button"); break; default: visibilityButton.addStyleName("hidden"); break; } } public void setCallback(DeleteButtonCallback callback) { this.callback = callback; } public void setState(ItemAdministrationState state, DeleteButtonCallback callback) { setState(state); setCallback(callback); } public void setVisibilityCallback(ChangeVisibilityButtonCallback callback){ visibilityDialog.setCallback(callback); } @UiHandler("deleteButton") public void onDeleteButtonClicked(ClickEvent event) { if (callback != null) callback.onClicked(ItemAdministrationState.delete); } @UiHandler("undeleteButton") public void onUndeleteButtonClicked(ClickEvent event) { if (callback != null) callback.onClicked(ItemAdministrationState.undelete); } @UiHandler("visibilityButton") public void onVisibilityButtonClicked(ClickEvent event) { visibilityDialog.removeStyleName("hidden"); } public void changeToOnImageView(){ this.onimage = true; deleteButton.addStyleName("onimage"); undeleteButton.addStyleName("onimage"); } }