package com.constellio.app.modules.rm.ui.components.menuBar; 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 DocumentMenuBarPresenter extends DocumentActionsPresenterUtils<DocumentMenuBar> { private DocumentMenuBar menuBar; public DocumentMenuBarPresenter(DocumentMenuBar menuBar) { super(menuBar); this.menuBar = menuBar; } @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); menuBar.setContentVersionVO(contentVersionVO); menuBar.setDownloadDocumentButtonVisible(true); String agentURL = ConstellioAgentUtils.getAgentURL(documentVO, contentVersionVO); menuBar.setOpenDocumentButtonVisible(agentURL != null); } else { menuBar.setDownloadDocumentButtonVisible(false); menuBar.setOpenDocumentButtonVisible(false); } menuBar.buildMenuItems(); } public void displayDocumentButtonClicked() { menuBar.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, menuBar.getSessionContext()); menuBar.setDocumentVO(documentVO); updateActionsComponent(); showContextMenu = true; } else { showContextMenu = false; } menuBar.setVisible(showContextMenu); return showContextMenu; } public boolean openForRequested(RecordVO recordVO) { return openForRequested(recordVO.getId()); } }