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.Group;
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 CollectionGroupViewImpl extends BaseViewImpl implements CollectionGroupView {
public static final String GROUP_ROLES = Group.DEFAULT_SCHEMA + "_" + Group.ROLES;
public static final String GROUP_CODE = Group.DEFAULT_SCHEMA + "_" + Group.CODE;
private final CollectionGroupPresenter presenter;
private RecordVO group;
public CollectionGroupViewImpl() {
presenter = new CollectionGroupPresenter(this);
}
@Override
protected void initBeforeCreateComponents(ViewChangeEvent event) {
presenter.forRequestParams(event.getParameters());
}
@Override
protected String getTitle() {
return $("CollectionGroupView.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) {
String code = group.get(GROUP_CODE);
presenter.deleteButtonClicked(code);
}
};
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) {
group = presenter.getGroup();
return new RecordDisplay(group, new GroupMetadataDisplayFactory());
}
public class GroupMetadataDisplayFactory extends MetadataDisplayFactory {
@Override
public Component buildSingleValue(RecordVO recordVO, MetadataVO metadata, Object displayValue) {
switch (metadata.getCode()) {
case GROUP_ROLES:
return new Label(presenter.getRoleTitle((String) displayValue));
default:
return super.buildSingleValue(recordVO, metadata, displayValue);
}
}
}
}