package com.constellio.app.modules.rm.ui.components.contextmenu;
import com.constellio.app.modules.rm.navigation.RMViews;
import com.constellio.app.modules.rm.ui.components.document.DocumentActionsPresenterUtils;
import com.constellio.app.modules.rm.ui.util.ConstellioAgentUtils;
import com.constellio.app.modules.rm.wrappers.Document;
import com.constellio.app.ui.entities.ContentVersionVO;
import com.constellio.app.ui.entities.RecordVO;
import com.constellio.app.ui.entities.RecordVO.VIEW_MODE;
import com.constellio.model.entities.records.Content;
import com.constellio.model.entities.records.Record;
import com.constellio.model.entities.records.wrappers.Event;
import com.constellio.model.services.schemas.SchemaUtils;
public class DocumentContextMenuPresenter extends DocumentActionsPresenterUtils<DocumentContextMenu> {
private DocumentContextMenu contextMenu;
public DocumentContextMenuPresenter(DocumentContextMenu contextMenu) {
super(contextMenu);
this.contextMenu = contextMenu;
}
@Override
public void setRecordVO(RecordVO recordVO) {
super.setRecordVO(recordVO);
updateActionsComponent();
}
@Override
public void updateActionsComponent() {
super.updateActionsComponent();
Content content = getContent();
if (content != null) {
ContentVersionVO contentVersionVO = contentVersionVOBuilder.build(content);
contextMenu.setContentVersionVO(contentVersionVO);
contextMenu.setDownloadDocumentButtonVisible(true);
String agentURL = ConstellioAgentUtils.getAgentURL(documentVO, contentVersionVO);
contextMenu.setOpenDocumentButtonVisible(agentURL != null);
} else {
contextMenu.setDownloadDocumentButtonVisible(false);
contextMenu.setOpenDocumentButtonVisible(false);
}
contextMenu.buildMenuItems();
}
public void displayDocumentButtonClicked() {
contextMenu.navigate().to(RMViews.class).displayDocument(documentVO.getId());
}
public boolean openForRequested(String recordId) {
boolean showContextMenu;
Record record = presenterUtils.getRecord(recordId);
String recordSchemaCode = record.getSchemaCode();
String recordSchemaTypeCode = SchemaUtils.getSchemaTypeCode(recordSchemaCode);
if (Event.SCHEMA_TYPE.equals(recordSchemaTypeCode)) {
Event event = new Event(record, presenterUtils.types());
recordSchemaCode = event.getType().split("_")[1];
recordSchemaTypeCode = SchemaUtils.getSchemaTypeCode(recordSchemaCode);
String linkedRecordId = event.getRecordId();
record = presenterUtils.getRecord(linkedRecordId);
}
if (Document.SCHEMA_TYPE.equals(recordSchemaTypeCode)) {
this.documentVO = voBuilder.build(record, VIEW_MODE.DISPLAY, contextMenu.getSessionContext());
contextMenu.setDocumentVO(documentVO);
updateActionsComponent();
showContextMenu = true;
} else {
showContextMenu = false;
}
contextMenu.setVisible(showContextMenu);
return showContextMenu;
}
public boolean openForRequested(RecordVO recordVO) {
return openForRequested(recordVO.getId());
}
}