Search in sources :

Example 1 with CENTERED

use of de.tudarmstadt.ukp.clarin.webanno.api.annotation.paging.FocusPosition.CENTERED in project webanno by webanno.

the class SuggestionViewPanel method onClientEvent.

/**
 * Method is called, if user has clicked on a span or an arc in the sentence panel. The span or
 * arc respectively is identified and copied to the merge CAS.
 */
protected void onClientEvent(AjaxRequestTarget aTarget, UserAnnotationSegment aSegment) throws UIMAException, IOException, AnnotationException {
    if (isDocumentFinished(documentService, aSegment.getAnnotatorState())) {
        error("This document is already closed. Please ask the project manager to re-open it.");
        aTarget.addChildren(getPage(), IFeedback.class);
        return;
    }
    IRequestParameters request = getRequest().getPostParameters();
    StringValue action = request.getParameterValue(PARAM_ACTION);
    if (!action.isEmpty()) {
        String type = removePrefix(request.getParameterValue(PARAM_TYPE).toString());
        AnnotationLayer layer = schemaService.getLayer(TypeUtil.getLayerId(type));
        VID sourceVid = VID.parse(request.getParameterValue(PARAM_ID).toString());
        CAS targetCas = readEditorCas(aSegment.getAnnotatorState());
        CAS sourceCas = readAnnotatorCas(aSegment);
        AnnotatorState sourceState = aSegment.getAnnotatorState();
        if (CHAIN_TYPE.equals(layer.getType())) {
            error("Coreference annotations are not supported in curation");
            aTarget.addChildren(getPage(), IFeedback.class);
            return;
        }
        if (ACTION_CONTEXT_MENU.equals(action.toString())) {
            // No bulk actions supports for slots at the moment.
            if (sourceVid.isSlotSet()) {
                return;
            }
            List<IMenuItem> items = contextMenu.getItemList();
            items.clear();
            items.add(new LambdaMenuItem(String.format("Merge all %s", layer.getUiName()), _target -> actionAcceptAll(_target, aSegment, layer)));
            contextMenu.onOpen(aTarget);
            return;
        }
        // check if clicked on a span
        CasMerge casMerge = new CasMerge(schemaService);
        if (ACTION_SELECT_SPAN_FOR_MERGE.equals(action.toString())) {
            mergeSpan(casMerge, targetCas, sourceCas, sourceVid, sourceState.getDocument(), sourceState.getUser().getUsername(), layer);
        } else // check if clicked on an arc (relation or slot)
        if (ACTION_SELECT_ARC_FOR_MERGE.equals(action.toString())) {
            // this is a slot arc
            if (sourceVid.isSlotSet()) {
                mergeSlot(casMerge, targetCas, sourceCas, sourceVid, sourceState.getDocument(), sourceState.getUser().getUsername(), layer);
            } else // normal relation annotation arc is clicked
            {
                mergeRelation(casMerge, targetCas, sourceCas, sourceVid, sourceState.getDocument(), sourceState.getUser().getUsername(), layer);
            }
        }
        writeEditorCas(sourceState, targetCas);
        // Update timestamp
        AnnotationFS sourceAnnotation = selectAnnotationByAddr(sourceCas, sourceVid.getId());
        int sentenceNumber = getSentenceNumber(sourceAnnotation.getCAS(), sourceAnnotation.getBegin());
        sourceState.getDocument().setSentenceAccessed(sentenceNumber);
        if (sourceState.getPreferences().isScrollPage()) {
            sourceState.getPagingStrategy().moveToOffset(sourceState, targetCas, sourceAnnotation.getBegin(), CENTERED);
        }
        onChange(aTarget);
    }
}
Also used : TypeAdapter(de.tudarmstadt.ukp.clarin.webanno.api.annotation.adapter.TypeAdapter) SpringBean(org.apache.wicket.spring.injection.annot.SpringBean) Configuration(de.tudarmstadt.ukp.clarin.webanno.curation.casdiff.CasDiff.Configuration) ConfigurationSet(de.tudarmstadt.ukp.clarin.webanno.curation.casdiff.CasDiff.ConfigurationSet) LoggerFactory(org.slf4j.LoggerFactory) IMenuItem(com.googlecode.wicket.jquery.ui.widget.menu.IMenuItem) WebAnnoCasUtil(de.tudarmstadt.ukp.clarin.webanno.api.annotation.util.WebAnnoCasUtil) Sentence(de.tudarmstadt.ukp.dkpro.core.api.segmentation.type.Sentence) AnnotationException(de.tudarmstadt.ukp.clarin.webanno.api.annotation.exception.AnnotationException) CasMergeOperationResult(de.tudarmstadt.ukp.clarin.webanno.curation.casmerge.CasMergeOperationResult) CorrectionDocumentService(de.tudarmstadt.ukp.clarin.webanno.api.CorrectionDocumentService) VObject(de.tudarmstadt.ukp.clarin.webanno.api.annotation.rendering.model.VObject) Map(java.util.Map) AlreadyMergedException(de.tudarmstadt.ukp.clarin.webanno.curation.casmerge.AlreadyMergedException) ColoringRules(de.tudarmstadt.ukp.clarin.webanno.api.annotation.coloring.ColoringRules) AnnotatorStateUtils.updateDocumentTimestampAfterWrite(de.tudarmstadt.ukp.clarin.webanno.api.annotation.model.AnnotatorStateUtils.updateDocumentTimestampAfterWrite) AjaxRequestTarget(org.apache.wicket.ajax.AjaxRequestTarget) ColoringService(de.tudarmstadt.ukp.clarin.webanno.api.annotation.coloring.ColoringService) CurationContainer(de.tudarmstadt.ukp.clarin.webanno.ui.curation.component.model.CurationContainer) LambdaMenuItem(de.tudarmstadt.ukp.clarin.webanno.support.lambda.LambdaMenuItem) WebAnnoCasUtil.selectAnnotationByAddr(de.tudarmstadt.ukp.clarin.webanno.api.annotation.util.WebAnnoCasUtil.selectAnnotationByAddr) FeatureStructure(org.apache.uima.cas.FeatureStructure) CasMerge(de.tudarmstadt.ukp.clarin.webanno.curation.casmerge.CasMerge) IModel(org.apache.wicket.model.IModel) StringValue(org.apache.wicket.util.string.StringValue) ListView(org.apache.wicket.markup.html.list.ListView) WebAnnoCasUtil.getSentenceNumber(de.tudarmstadt.ukp.clarin.webanno.api.annotation.util.WebAnnoCasUtil.getSentenceNumber) UIMAException(org.apache.uima.UIMAException) GetCollectionInformationResponse(de.tudarmstadt.ukp.clarin.webanno.brat.message.GetCollectionInformationResponse) DiffResult(de.tudarmstadt.ukp.clarin.webanno.curation.casdiff.CasDiff.DiffResult) AnnotationSelection(de.tudarmstadt.ukp.clarin.webanno.ui.curation.component.model.AnnotationSelection) ListItem(org.apache.wicket.markup.html.list.ListItem) Collection(java.util.Collection) CENTERED(de.tudarmstadt.ukp.clarin.webanno.api.annotation.paging.FocusPosition.CENTERED) Model(org.apache.wicket.model.Model) UserDao(de.tudarmstadt.ukp.clarin.webanno.security.UserDao) Set(java.util.Set) MarkupContainer(org.apache.wicket.MarkupContainer) UserAnnotationSegment(de.tudarmstadt.ukp.clarin.webanno.ui.curation.component.model.UserAnnotationSegment) AnnotationDocument(de.tudarmstadt.ukp.clarin.webanno.model.AnnotationDocument) AnnotationDocumentState(de.tudarmstadt.ukp.clarin.webanno.model.AnnotationDocumentState) IFeedback(org.apache.wicket.feedback.IFeedback) ContextMenu(de.tudarmstadt.ukp.clarin.webanno.support.wicket.ContextMenu) LINK_ROLE_AS_LABEL(de.tudarmstadt.ukp.clarin.webanno.curation.casdiff.LinkCompareBehavior.LINK_ROLE_AS_LABEL) List(java.util.List) TypeUtil(de.tudarmstadt.ukp.clarin.webanno.api.annotation.util.TypeUtil) AnnotationLayer(de.tudarmstadt.ukp.clarin.webanno.model.AnnotationLayer) SourceDocument(de.tudarmstadt.ukp.clarin.webanno.model.SourceDocument) CasDiff.getDiffAdapters(de.tudarmstadt.ukp.clarin.webanno.curation.casdiff.CasDiff.getDiffAdapters) ApplicationEventPublisherHolder(de.tudarmstadt.ukp.clarin.webanno.support.spring.ApplicationEventPublisherHolder) BratRenderer(de.tudarmstadt.ukp.clarin.webanno.brat.render.BratRenderer) VDocument(de.tudarmstadt.ukp.clarin.webanno.api.annotation.rendering.model.VDocument) USE(de.tudarmstadt.ukp.clarin.webanno.ui.curation.component.model.AnnotationState.USE) AnnotationFS(org.apache.uima.cas.text.AnnotationFS) AnnotatorState(de.tudarmstadt.ukp.clarin.webanno.api.annotation.model.AnnotatorState) AGREE(de.tudarmstadt.ukp.clarin.webanno.ui.curation.component.model.AnnotationState.AGREE) CAS(org.apache.uima.cas.CAS) HashMap(java.util.HashMap) ColoringStrategy(de.tudarmstadt.ukp.clarin.webanno.api.annotation.coloring.ColoringStrategy) Mode(de.tudarmstadt.ukp.clarin.webanno.model.Mode) MergeConflictException(de.tudarmstadt.ukp.clarin.webanno.curation.casmerge.MergeConflictException) ArrayList(java.util.ArrayList) AnnotationSchemaService(de.tudarmstadt.ukp.clarin.webanno.api.AnnotationSchemaService) SourceListView(de.tudarmstadt.ukp.clarin.webanno.ui.curation.component.model.SourceListView) Token(de.tudarmstadt.ukp.dkpro.core.api.segmentation.type.Token) AnnotationState(de.tudarmstadt.ukp.clarin.webanno.ui.curation.component.model.AnnotationState) User(de.tudarmstadt.ukp.clarin.webanno.security.model.User) GetDocumentResponse(de.tudarmstadt.ukp.clarin.webanno.brat.message.GetDocumentResponse) DISAGREE(de.tudarmstadt.ukp.clarin.webanno.ui.curation.component.model.AnnotationState.DISAGREE) Project(de.tudarmstadt.ukp.clarin.webanno.model.Project) IRequestParameters(org.apache.wicket.request.IRequestParameters) BratSuggestionVisualizer(de.tudarmstadt.ukp.clarin.webanno.ui.curation.component.model.BratSuggestionVisualizer) LinkedHashSet(java.util.LinkedHashSet) PreRenderer(de.tudarmstadt.ukp.clarin.webanno.api.annotation.rendering.PreRenderer) DO_NOT_USE(de.tudarmstadt.ukp.clarin.webanno.ui.curation.component.model.AnnotationState.DO_NOT_USE) DocumentService(de.tudarmstadt.ukp.clarin.webanno.api.DocumentService) CURATION(de.tudarmstadt.ukp.clarin.webanno.model.Mode.CURATION) Logger(org.slf4j.Logger) CasUtil.select(org.apache.uima.fit.util.CasUtil.select) CurationDocumentService(de.tudarmstadt.ukp.clarin.webanno.curation.storage.CurationDocumentService) IOException(java.io.IOException) RELATION_TYPE(de.tudarmstadt.ukp.clarin.webanno.api.WebAnnoConst.RELATION_TYPE) SPAN_TYPE(de.tudarmstadt.ukp.clarin.webanno.api.WebAnnoConst.SPAN_TYPE) AjaxComponentRespondListener(de.tudarmstadt.ukp.clarin.webanno.support.wicket.AjaxComponentRespondListener) BratAnnotatorUtility.isDocumentFinished(de.tudarmstadt.ukp.clarin.webanno.brat.util.BratAnnotatorUtility.isDocumentFinished) JSONUtil(de.tudarmstadt.ukp.clarin.webanno.support.JSONUtil) CasDiff.doDiffSingle(de.tudarmstadt.ukp.clarin.webanno.curation.casdiff.CasDiff.doDiffSingle) StringUtils.isBlank(org.apache.commons.lang3.StringUtils.isBlank) WebMarkupContainer(org.apache.wicket.markup.html.WebMarkupContainer) BulkAnnotationEvent(de.tudarmstadt.ukp.clarin.webanno.api.annotation.event.BulkAnnotationEvent) AnnotationFeature(de.tudarmstadt.ukp.clarin.webanno.model.AnnotationFeature) DiffAdapter(de.tudarmstadt.ukp.clarin.webanno.curation.casdiff.api.DiffAdapter) CHAIN_TYPE(de.tudarmstadt.ukp.clarin.webanno.api.WebAnnoConst.CHAIN_TYPE) VID(de.tudarmstadt.ukp.clarin.webanno.api.annotation.model.VID) Collections(java.util.Collections) IMenuItem(com.googlecode.wicket.jquery.ui.widget.menu.IMenuItem) AnnotatorState(de.tudarmstadt.ukp.clarin.webanno.api.annotation.model.AnnotatorState) AnnotationLayer(de.tudarmstadt.ukp.clarin.webanno.model.AnnotationLayer) VID(de.tudarmstadt.ukp.clarin.webanno.api.annotation.model.VID) AnnotationFS(org.apache.uima.cas.text.AnnotationFS) CAS(org.apache.uima.cas.CAS) CasMerge(de.tudarmstadt.ukp.clarin.webanno.curation.casmerge.CasMerge) StringValue(org.apache.wicket.util.string.StringValue) LambdaMenuItem(de.tudarmstadt.ukp.clarin.webanno.support.lambda.LambdaMenuItem) IRequestParameters(org.apache.wicket.request.IRequestParameters)

Aggregations

IMenuItem (com.googlecode.wicket.jquery.ui.widget.menu.IMenuItem)1 AnnotationSchemaService (de.tudarmstadt.ukp.clarin.webanno.api.AnnotationSchemaService)1 CorrectionDocumentService (de.tudarmstadt.ukp.clarin.webanno.api.CorrectionDocumentService)1 DocumentService (de.tudarmstadt.ukp.clarin.webanno.api.DocumentService)1 CHAIN_TYPE (de.tudarmstadt.ukp.clarin.webanno.api.WebAnnoConst.CHAIN_TYPE)1 RELATION_TYPE (de.tudarmstadt.ukp.clarin.webanno.api.WebAnnoConst.RELATION_TYPE)1 SPAN_TYPE (de.tudarmstadt.ukp.clarin.webanno.api.WebAnnoConst.SPAN_TYPE)1 TypeAdapter (de.tudarmstadt.ukp.clarin.webanno.api.annotation.adapter.TypeAdapter)1 ColoringRules (de.tudarmstadt.ukp.clarin.webanno.api.annotation.coloring.ColoringRules)1 ColoringService (de.tudarmstadt.ukp.clarin.webanno.api.annotation.coloring.ColoringService)1 ColoringStrategy (de.tudarmstadt.ukp.clarin.webanno.api.annotation.coloring.ColoringStrategy)1 BulkAnnotationEvent (de.tudarmstadt.ukp.clarin.webanno.api.annotation.event.BulkAnnotationEvent)1 AnnotationException (de.tudarmstadt.ukp.clarin.webanno.api.annotation.exception.AnnotationException)1 AnnotatorState (de.tudarmstadt.ukp.clarin.webanno.api.annotation.model.AnnotatorState)1 AnnotatorStateUtils.updateDocumentTimestampAfterWrite (de.tudarmstadt.ukp.clarin.webanno.api.annotation.model.AnnotatorStateUtils.updateDocumentTimestampAfterWrite)1 VID (de.tudarmstadt.ukp.clarin.webanno.api.annotation.model.VID)1 CENTERED (de.tudarmstadt.ukp.clarin.webanno.api.annotation.paging.FocusPosition.CENTERED)1 PreRenderer (de.tudarmstadt.ukp.clarin.webanno.api.annotation.rendering.PreRenderer)1 VDocument (de.tudarmstadt.ukp.clarin.webanno.api.annotation.rendering.model.VDocument)1 VObject (de.tudarmstadt.ukp.clarin.webanno.api.annotation.rendering.model.VObject)1