private Label createSelectedAnnotationLayerLabel() { Label label = new Label("selectedAnnotationLayer", new Model<String>()); label.setOutputMarkupPlaceholderTag(true); label.add(visibleWhen(() -> getModelObject().getPreferences().isRememberLayer())); return label; }
public static void savePreference(UserPreferencesService aPrefService, AnnotatorState aState, String aUsername) throws IOException { aPrefService.savePreferences(aState.getProject(), aUsername, aState.getMode(), aState.getPreferences()); } }
private Preferences loadModel(AnnotatorState state) AnnotationPreference prefs = state.getPreferences(); .getEditorFactory(state.getPreferences().getEditor()); if (editorFactory == null) { editorFactory = annotationEditorRegistry.getDefaultEditorFactory();
private SidebarPanel createLeftSidebar() { SidebarPanel leftSidebar = new SidebarPanel("leftSidebar", getModel(), detailEditor, () -> getEditorCas(), AnnotationPage.this); // Override sidebar width from preferences leftSidebar.add(new AttributeModifier("style", LambdaModel.of(() -> String .format("flex-basis: %d%%;", getModelObject().getPreferences().getSidebarSize())))); return leftSidebar; }
/** * for the first time, open the <b>open document dialog</b> */ @Override public void renderHead(IHeaderResponse aResponse) { super.renderHead(aResponse); if (!initialLoadCompleted) { aResponse.render(OnLoadHeaderItem .forScript("jQuery('#initialLoadComplete').trigger('click');")); initialLoadCompleted = true; } aResponse.render(CssContentHeaderItem.forCSS( String.format(Locale.US, ".sidebarCell { flex-basis: %d%%; }", getModelObject().getPreferences().getSidebarSize()), "sidebar-width")); }
private WebMarkupContainer createRightSidebar() { WebMarkupContainer rightSidebar = new WebMarkupContainer("rightSidebar"); rightSidebar.setOutputMarkupId(true); // Override sidebar width from preferences rightSidebar.add(new AttributeModifier("style", LambdaModel.of(() -> String .format("flex-basis: %d%%;", getModelObject().getPreferences().getSidebarSize())))); detailEditor = createDetailEditor(); rightSidebar.add(detailEditor); return rightSidebar; }
private void actionSave(AjaxRequestTarget aTarget, Form<Preferences> aForm) { String username = userDao.getCurrentUser().getUsername(); try { AnnotatorState state = stateModel.getObject(); Preferences model = form.getModelObject(); AnnotationPreference prefs = state.getPreferences(); prefs.setScrollPage(model.scrollPage); prefs.setRememberLayer(model.rememberLayer); prefs.setWindowSize(model.windowSize); prefs.setSidebarSize(model.sidebarSize); prefs.setFontZoom(model.fontZoom); prefs.setColorPerLayer(model.colorPerLayer); prefs.setReadonlyLayerColoringBehaviour(model.readonlyLayerColoringBehaviour); prefs.setEditor(model.editor.getKey()); state.setAnnotationLayers(model.annotationLayers.stream() .filter(l -> !prefs.getHiddenAnnotationLayerIds().contains(l.getId())) .collect(Collectors.toList())); PreferencesUtil.savePreference(userPreferencesService, state, username); } catch (IOException e) { error("Preference file not found"); } modalWindow.close(aTarget); }
private void internalCompleteAnnotation(AjaxRequestTarget aTarget, JCas aJCas) { AnnotatorState state = getModelObject(); // Perform auto-scroll if it is enabled if (state.getPreferences().isScrollPage()) { autoScroll(aJCas, false); } annotationFeatureForm.getForwardAnnotationText().setModelObject(null); LOG.trace("onChange()"); onChange(aTarget); // If we created a new annotation, then refresh the available annotation layers in the // detail panel. if (state.getSelection().getAnnotation().isNotSet()) { refresh(state); } }
private void commonUpdate() throws IOException { JCas jCas = curationDocumentService.readCurationCas(state.getDocument()); // Determine the FIRST visible unit final Sentence firstVisibleUnit = selectSentenceAt(jCas, state.getFirstVisibleUnitBegin(), state.getFirstVisibleUnitEnd()); state.setFirstVisibleUnit(firstVisibleUnit); // Determine the LAST visible unit List<Sentence> followingUnits = selectFollowing(jCas, Sentence.class, firstVisibleUnit, state.getPreferences().getWindowSize()); // Check also, when getting the last sentence address in the display window, if this is the // last sentence or the ONLY sentence in the document Sentence lastVisibleUnit = followingUnits.size() == 0 ? firstVisibleUnit : followingUnits.get(followingUnits.size() - 1); curationView.setCurationBegin(firstVisibleUnit.getBegin()); curationView.setCurationEnd(lastVisibleUnit.getEnd()); // Determine the number of the first and last visible unit int ws = state.getPreferences().getWindowSize(); Sentence fs = WebAnnoCasUtil.selectSentenceAt(jCas, state.getFirstVisibleUnitBegin(), state.getFirstVisibleUnitEnd()); Sentence ls = WebAnnoCasUtil.getLastSentenceInDisplayWindow(jCas, getAddr(fs), ws); fSn = WebAnnoCasUtil.getSentenceNumber(jCas, fs.getBegin()); lSn = WebAnnoCasUtil.getSentenceNumber(jCas, ls.getBegin()); }
private void commonUpdate() throws IOException { JCas jCas = curationDocumentService.readCurationCas(state.getDocument()); // Determine the FIRST visible unit final Sentence firstVisibleUnit = selectSentenceAt(jCas, state.getFirstVisibleUnitBegin(), state.getFirstVisibleUnitEnd()); state.setFirstVisibleUnit(firstVisibleUnit); // Determine the LAST visible unit List<Sentence> followingUnits = selectFollowing(jCas, Sentence.class, firstVisibleUnit, state.getPreferences().getWindowSize()); // Check also, when getting the last sentence address in the display window, if this is the // last sentence or the ONLY sentence in the document Sentence lastVisibleUnit = followingUnits.size() == 0 ? firstVisibleUnit : followingUnits.get(followingUnits.size() - 1); curationView.setCurationBegin(firstVisibleUnit.getBegin()); curationView.setCurationEnd(lastVisibleUnit.getEnd()); // Determine the number of the first and last visible unit int ws = state.getPreferences().getWindowSize(); Sentence fs = WebAnnoCasUtil.selectSentenceAt(jCas, state.getFirstVisibleUnitBegin(), state.getFirstVisibleUnitEnd()); Sentence ls = WebAnnoCasUtil.getLastSentenceInDisplayWindow(jCas, getAddr(fs), ws); fSn = WebAnnoCasUtil.getSentenceNumber(jCas, fs.getBegin()); lSn = WebAnnoCasUtil.getSentenceNumber(jCas, ls.getBegin()); }
Set<Long> hiddenLayerIds = stateModel.getObject().getPreferences() .getHiddenAnnotationLayerIds();
private void updateCurationView(final CurationContainer curationContainer, final SourceListView curationViewItem, AjaxRequestTarget aTarget, JCas jCas) { Sentence currentSent = WebAnnoCasUtil.getCurrentSentence(jCas, curationViewItem.getBegin(), curationViewItem.getEnd()); state.setFirstVisibleUnit(WebAnnoCasUtil.findWindowStartCenteringOnSelection(jCas, currentSent, curationViewItem.getBegin(), state.getProject(), state.getDocument(), state.getPreferences().getWindowSize())); curationContainer.setBratAnnotatorModel(state); onChange(aTarget); }
private void updateCurationView(final CurationContainer curationContainer, final SourceListView curationViewItem, AjaxRequestTarget aTarget, JCas jCas) { Sentence currentSent = WebAnnoCasUtil.getCurrentSentence(jCas, curationViewItem.getBegin(), curationViewItem.getEnd()); state.setFirstVisibleUnit(WebAnnoCasUtil.findWindowStartCenteringOnSelection(jCas, currentSent, curationViewItem.getBegin(), state.getProject(), state.getDocument(), state.getPreferences().getWindowSize())); curationContainer.setBratAnnotatorModel(state); onChange(aTarget); }
private AnnotationEditorBase createAnnotationEditor() { String editorId = getModelObject().getPreferences().getEditor(); AnnotationEditorFactory factory = editorRegistry.getEditorFactory(editorId); if (factory == null) { factory = editorRegistry.getDefaultEditorFactory(); } AnnotationEditorBase editor = factory.create("editor", getModel(), detailEditor, this::getEditorCas); editor.add(LambdaBehavior.visibleWhen(() -> getModelObject().getDocument() != null)); editor.setOutputMarkupPlaceholderTag(true); return editor; }
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 createSpan(String spanType, AnnotatorState aBModel, JCas aMergeJCas, AnnotationDocument aAnnotationDocument, int aAddress) throws IOException, UIMAException, ClassNotFoundException, AnnotationException { JCas clickedJCas = getJCas(aBModel, aAnnotationDocument); AnnotationFS fsClicked = selectByAddr(clickedJCas, aAddress); if (isCorefType(fsClicked)) { throw new AnnotationException("Coreference Annotation not supported in curation"); } long layerId = TypeUtil.getLayerId(spanType); AnnotationLayer layer = annotationService.getLayer(layerId); MergeCas.addSpanAnnotation(aBModel, annotationService, layer, aMergeJCas, fsClicked, layer.isAllowStacking()); writeEditorCas(aBModel, aMergeJCas); // update timestamp int sentenceNumber = getSentenceNumber(clickedJCas, fsClicked.getBegin()); aBModel.setFocusUnitIndex(sentenceNumber); aBModel.getDocument().setSentenceAccessed(sentenceNumber); if (aBModel.getPreferences().isScrollPage()) { Sentence sentence = selectSentenceAt(aMergeJCas, aBModel.getFirstVisibleUnitBegin(), aBModel.getFirstVisibleUnitEnd()); sentence = findWindowStartCenteringOnSelection(aMergeJCas, sentence, fsClicked.getBegin(), aBModel.getProject(), aBModel.getDocument(), aBModel.getPreferences().getWindowSize()); aBModel.setFirstVisibleUnit(sentence); } }
private void createSpan(String spanType, AnnotatorState aBModel, JCas aMergeJCas, AnnotationDocument aAnnotationDocument, int aAddress) throws IOException, UIMAException, ClassNotFoundException, AnnotationException { JCas clickedJCas = getJCas(aBModel, aAnnotationDocument); AnnotationFS fsClicked = selectByAddr(clickedJCas, aAddress); if (isCorefType(fsClicked)) { throw new AnnotationException("Coreference Annotation not supported in curation"); } long layerId = TypeUtil.getLayerId(spanType); AnnotationLayer layer = annotationService.getLayer(layerId); MergeCas.addSpanAnnotation(aBModel, annotationService, layer, aMergeJCas, fsClicked, layer.isAllowStacking()); writeEditorCas(aBModel, aMergeJCas); // update timestamp int sentenceNumber = getSentenceNumber(clickedJCas, fsClicked.getBegin()); aBModel.setFocusUnitIndex(sentenceNumber); aBModel.getDocument().setSentenceAccessed(sentenceNumber); if (aBModel.getPreferences().isScrollPage()) { Sentence sentence = selectSentenceAt(aMergeJCas, aBModel.getFirstVisibleUnitBegin(), aBModel.getFirstVisibleUnitEnd()); sentence = findWindowStartCenteringOnSelection(aMergeJCas, sentence, fsClicked.getBegin(), aBModel.getProject(), aBModel.getDocument(), aBModel.getPreferences().getWindowSize()); aBModel.setFirstVisibleUnit(sentence); } }
state.getPreferences().setWindowSize(10); state.setFirstVisibleUnit(WebAnnoCasUtil.getFirstSentence(jCas));
if (state.getPreferences().isScrollPage()) { autoScroll(jCas, false);
state.getDocument().setSentenceAccessed(sentenceNumber); if (state.getPreferences().isScrollPage()) { autoScroll(jCas, false);