package com.constellio.app.modules.tasks.extensions;
import com.constellio.app.extensions.records.RecordNavigationExtension;
import com.constellio.app.extensions.records.params.NavigationParams;
import com.constellio.app.modules.tasks.model.wrappers.Task;
import com.constellio.app.modules.tasks.navigation.TaskViews;
import com.constellio.app.ui.framework.components.display.ReferenceDisplay;
import com.vaadin.ui.Component;
import com.vaadin.ui.Table;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Button.ClickListener;
public class TaskRecordNavigationExtension implements RecordNavigationExtension {
@Override
public void navigateToEdit(NavigationParams navigationParams) {
String schemaTypeCode = navigationParams.getSchemaTypeCode();
String recordId = navigationParams.getRecordId();
if (Task.SCHEMA_TYPE.equals(schemaTypeCode)) {
navigationParams.navigate().to(TaskViews.class).editTask(recordId);
} else {
throw new UnsupportedOperationException("No navigation for schema type code " + schemaTypeCode);
}
}
@Override
public void navigateToView(NavigationParams navigationParams) {
String schemaTypeCode = navigationParams.getSchemaTypeCode();
String recordId = navigationParams.getRecordId();
if (Task.SCHEMA_TYPE.equals(schemaTypeCode)) {
navigationParams.navigate().to(TaskViews.class).displayTask(recordId);
} else {
throw new UnsupportedOperationException("No navigation for schema type code " + schemaTypeCode);
}
}
@Override
public boolean isViewForSchemaTypeCode(String schemaTypeCode) {
return Task.SCHEMA_TYPE.equals(schemaTypeCode);
}
@Override
public void prepareLinkToView(final NavigationParams navigationParams) {
if (isViewForSchemaTypeCode(navigationParams.getSchemaTypeCode())) {
Component component = navigationParams.getComponent();
if (component instanceof ReferenceDisplay) {
ReferenceDisplay referenceDisplay = (ReferenceDisplay) component;
ClickListener clickListener = new ClickListener() {
@Override
public void buttonClick(ClickEvent event) {
navigateToView(navigationParams);
}
};
referenceDisplay.setEnabled(true);
referenceDisplay.addClickListener(clickListener);
} else if (component instanceof Table) {
// FIXME Assumes that it is called by an item click listener
navigateToView(navigationParams);
}
}
}
}