Map<String, String> getBindTags() { AnnotationFeature f = annotationService .listAnnotationFeature(getModelObject().getSelectedAnnotationLayer()).get(0); TagSet tagSet = f.getTagset(); Map<Character, String> tagNames = new LinkedHashMap<>(); Map<String, String> bindTag2Key = new LinkedHashMap<>(); for (Tag tag : annotationService.listTags(tagSet)) { if (tagNames.containsKey(tag.getName().toLowerCase().charAt(0))) { String oldBinding = tagNames.get(tag.getName().toLowerCase().charAt(0)); String newBinding = oldBinding + tag.getName().toLowerCase().charAt(0); tagNames.put(tag.getName().toLowerCase().charAt(0), newBinding); bindTag2Key.put(newBinding, tag.getName()); } else { tagNames.put(tag.getName().toLowerCase().charAt(0), tag.getName().toLowerCase().substring(0, 1)); bindTag2Key.put(tag.getName().toLowerCase().substring(0, 1), tag.getName()); } } return bindTag2Key; }
void updateRememberLayer() { AnnotatorState state = getModelObject(); if (state.getPreferences().isRememberLayer()) { if (state.getDefaultAnnotationLayer() == null) { state.setDefaultAnnotationLayer(state.getSelectedAnnotationLayer()); } } else if (!state.getSelection().isArc()) { state.setDefaultAnnotationLayer(state.getSelectedAnnotationLayer()); } // if no layer is selected in Settings if (state.getSelectedAnnotationLayer() != null) { selectedAnnotationLayer.setDefaultModelObject( state.getSelectedAnnotationLayer().getUiName()); } }
private void refresh(AnnotatorState state) { // This already happens in loadFeatureEditorModels() above - probably not needed // here again // annotationFeatureForm.updateLayersDropdown(); LOG.trace("actionAnnotate() setting selected layer (not sure why)"); if (annotationFeatureForm.getAnnotationLayers().isEmpty()) { state.setSelectedAnnotationLayer(new AnnotationLayer()); } else if (state.getSelectedAnnotationLayer() == null) { if (state.getRememberedSpanLayer() == null) { state.setSelectedAnnotationLayer(annotationFeatureForm.getAnnotationLayers() .get(0)); } else { state.setSelectedAnnotationLayer(state.getRememberedSpanLayer()); } } LOG.trace("actionAnnotate() selectedLayer: {}", state.getSelectedAnnotationLayer().getUiName()); // Actually not sure why we would want to clear these here - in fact, they should // still be around for the rendering phase of the feature editors... //clearFeatureEditorModels(aTarget); // This already happens in loadFeatureEditorModels() above - probably not needed // here again // annotationFeatureForm.updateRememberLayer(); }
private Component createReverseButton() { LambdaAjaxLink link = new LambdaAjaxLink("reverse", editorPanel::actionReverse); link.setOutputMarkupPlaceholderTag(true); link.add(LambdaBehavior.onConfigure(_this -> { AnnotatorState state = AnnotationFeatureForm.this.getModelObject(); _this.setVisible(state.getSelection().getAnnotation().isSet() && state.getSelection().isArc() && state.getSelectedAnnotationLayer() .getType().equals(WebAnnoConst.RELATION_TYPE)); // Avoid reversing in read-only layers _this.setEnabled(state.getSelectedAnnotationLayer() != null && !state.getSelectedAnnotationLayer().isReadonly()); })); return link; }
private boolean isForwardable() { AnnotatorState state = getModelObject(); AnnotationLayer selectedLayer = state.getSelectedAnnotationLayer(); if (isNull(selectedLayer) || isNull(selectedLayer.getId())) { return false; } if (!selectedLayer.getType().equals(WebAnnoConst.SPAN_TYPE)) { return false; } if (!SINGLE_TOKEN.equals(selectedLayer.getAnchoringMode())) { return false; } // no forward annotation for multi-feature and zero-feature layers (where features count // which are are both enabled and visible). if (getEnabledFeatures(selectedLayer).size() != 1) { return false; } // we allow forward annotation only for a feature with a tagset if (annotationService.listAnnotationFeature(selectedLayer).get(0).getTagset() != null) { // there should be at least one tag in the tagset TagSet tagSet = annotationService.listAnnotationFeature(selectedLayer).get(0) .getTagset(); return !annotationService.listTags(tagSet).isEmpty(); } // Or layers with a single visible/enabled free-text feature. return true; }
private LambdaAjaxLink createDeleteButton() { LambdaAjaxLink link = new LambdaAjaxLink("delete", this::actionDelete); link.setOutputMarkupPlaceholderTag(true); link.add(visibleWhen(() -> getModelObject().getSelection().getAnnotation().isSet())); // Avoid deleting in read-only layers link.add(enabledWhen(() -> getModelObject().getSelectedAnnotationLayer() != null && !getModelObject().getSelectedAnnotationLayer().isReadonly())); return link; }
List<AnnotationFeature> features = getEnabledFeatures( AnnotationFeatureForm.this.getModelObject() .getSelectedAnnotationLayer()); if (features.size() > 1) {
new ActiveLearningRecommendationEvent(this, eventState.getDocument(), rejectedRecommendation, annotatorState.getUser().getUsername(), eventState.getSelectedAnnotationLayer(), rejectedRecommendation.getFeature(), REJECTED, model.getPredictionsByTokenAndFeature( rejectedRecommendation.getDocumentName(), eventState.getSelectedAnnotationLayer(), rejectedRecommendation.getBegin(), rejectedRecommendation.getEnd(),
String bratLabelText = TypeUtil.getUiLabelText(aAdapter, selectByAddr(aJCas, state.getSelection().getAnnotation().getId()), features); info(generateMessage(state.getSelectedAnnotationLayer(), bratLabelText, false));
new ActiveLearningRecommendationEvent(this, eventState.getDocument(), acceptedSuggestion, state.getUser().getUsername(), eventState.getSelectedAnnotationLayer(), acceptedSuggestion.getFeature(), ACCEPTED, model.getPredictionsByTokenAndFeature( acceptedSuggestion.getDocumentName(), eventState.getSelectedAnnotationLayer(), acceptedSuggestion.getBegin(), acceptedSuggestion.getEnd(),
new ActiveLearningRecommendationEvent(this, eventState.getDocument(), rejectedRecommendation, annotatorState.getUser().getUsername(), eventState.getSelectedAnnotationLayer(), rejectedRecommendation.getFeature(), REJECTED, model.getPredictionsByTokenAndFeature( rejectedRecommendation.getDocumentName(), eventState.getSelectedAnnotationLayer(), rejectedRecommendation.getBegin(), rejectedRecommendation.getEnd(),
new ActiveLearningRecommendationEvent(this, eventState.getDocument(), acceptedSuggestion, state.getUser().getUsername(), eventState.getSelectedAnnotationLayer(), acceptedSuggestion.getFeature(), ACCEPTED, model.getPredictionsByTokenAndFeature( acceptedSuggestion.getDocumentName(), eventState.getSelectedAnnotationLayer(), acceptedSuggestion.getBegin(), acceptedSuggestion.getEnd(),
AnnotationLayer layer = state.getSelectedAnnotationLayer(); for (AnnotationFeature f : annotationService.listAnnotationFeature(layer)) { if (!automationService.existsMiraTemplate(f)) {
AnnotationLayer layer = state.getSelectedAnnotationLayer(); for (AnnotationFeature f : annotationService.listAnnotationFeature(layer)) { if (!automationService.existsMiraTemplate(f)) {
return; AnnotationLayer layer = state.getSelectedAnnotationLayer(); int address = state.getSelection().getAnnotation().getId(); try {
return; AnnotationLayer layer = state.getSelectedAnnotationLayer(); int address = state.getSelection().getAnnotation().getId(); try {
AnnotationLayer layer = state.getSelectedAnnotationLayer(); TypeAdapter adapter = annotationService.getAdapter(layer);
info(generateMessage(state.getSelectedAnnotationLayer(), null, true));
}); replaceAnnotationDialog.setCancelAction((_target) -> { state.setDefaultAnnotationLayer(state.getSelectedAnnotationLayer()); _target.add(AnnotationFeatureForm.this); });
TypeAdapter adapter = annotationService.getAdapter(state.getSelectedAnnotationLayer()); if (adapter instanceof RelationAdapter) {