package com.constellio.app.ui.pages.collection;
import static com.constellio.app.ui.i18n.i18n.$;
import java.util.List;
import org.vaadin.dialogs.ConfirmDialog;
import com.constellio.app.ui.entities.MetadataVO;
import com.constellio.app.ui.entities.RecordVO;
import com.constellio.app.ui.framework.buttons.AuthorizationsButton;
import com.constellio.app.ui.framework.buttons.DeleteButton;
import com.constellio.app.ui.framework.buttons.RolesButton;
import com.constellio.app.ui.framework.components.MetadataDisplayFactory;
import com.constellio.app.ui.framework.components.RecordDisplay;
import com.constellio.app.ui.pages.base.BaseViewImpl;
import com.constellio.model.entities.records.wrappers.User;
import com.vaadin.navigator.ViewChangeListener.ViewChangeEvent;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Button.ClickListener;
import com.vaadin.ui.Component;
import com.vaadin.ui.Label;
public class CollectionUserViewImpl extends BaseViewImpl implements CollectionUserView {
public static final String COMPUTED_USER_ROLES = User.DEFAULT_SCHEMA + "_" + User.ALL_ROLES;
public static final String USER_ROLES = User.DEFAULT_SCHEMA + "_" + User.ROLES;
private final CollectionUserPresenter presenter;
public CollectionUserViewImpl() {
presenter = new CollectionUserPresenter(this);
}
@Override
protected void initBeforeCreateComponents(ViewChangeEvent event) {
presenter.forRequestParams(event.getParameters());
}
@Override
protected String getTitle() {
return $("CollectionUserView.viewTitle");
}
@Override
protected List<Button> buildActionMenuButtons(ViewChangeEvent event) {
List<Button> buttons = super.buildActionMenuButtons(event);
Button authorizations = new AuthorizationsButton(false) {
@Override
protected void buttonClick(ClickEvent event) {
presenter.authorizationsButtonClicked();
}
};
buttons.add(authorizations);
Button roles = new RolesButton(false) {
@Override
protected void buttonClick(ClickEvent event) {
presenter.rolesButtonClicked();
}
};
buttons.add(roles);
Button delete = new DeleteButton(false) {
@Override
protected void confirmButtonClick(ConfirmDialog dialog) {
presenter.deleteButtonClicked();
}
};
delete.setEnabled(presenter.isDeletionEnabled());
buttons.add(delete);
return buttons;
}
@Override
protected ClickListener getBackButtonClickListener() {
return new ClickListener() {
@Override
public void buttonClick(ClickEvent event) {
navigateTo().collectionSecurity();
}
};
}
@Override
protected Component buildMainComponent(ViewChangeEvent event) {
RecordVO user = presenter.getUser();
return new RecordDisplay(user, new UserMetadataDisplayFactory());
}
public class UserMetadataDisplayFactory extends MetadataDisplayFactory {
@Override
public Component buildSingleValue(RecordVO recordVO, MetadataVO metadata, Object displayValue) {
switch (metadata.getCode()) {
case COMPUTED_USER_ROLES:
return new Label(presenter.getRoleTitle((String) displayValue));
case USER_ROLES:
return null;
default:
return super.buildSingleValue(recordVO, metadata, displayValue);
}
}
}
}