Search in sources :

Example 1 with IndexedProject

use of de.catma.indexer.IndexedProject in project catma by forTEXT.

the class TaggerView method initComponents.

private void initComponents() {
    setSizeFull();
    VerticalLayout taggerPanel = new VerticalLayout();
    taggerPanel.setSizeFull();
    taggerPanel.setSpacing(true);
    taggerPanel.setMargin(new MarginInfo(true, true, true, false));
    boolean isRtl = sourceDocument == null ? false : sourceDocument.getSourceContentHandler().getSourceDocumentInfo().getIndexInfoSet().isRightToLeftWriting();
    pager = new Pager(taggerID, approxMaxLineLength, maxPageLengthInLines, isRtl);
    tagger = new Tagger(taggerID, pager, this, project);
    // $NON-NLS-1$
    tagger.addStyleName("tagger");
    // $NON-NLS-1$
    tagger.setWidth("100%");
    taggerPanel.addComponent(tagger);
    taggerPanel.setExpandRatio(tagger, 1.0f);
    HorizontalLayout actionPanel = new HorizontalLayout();
    actionPanel.setSpacing(false);
    taggerPanel.addComponent(actionPanel);
    pagerComponent = new PagerComponent(pager, new PageChangeListener() {

        public void pageChanged(int number) {
            tagger.setPage(number);
        }
    });
    actionPanel.addComponent(pagerComponent);
    linesPerPageSlider = new Slider(1, 100, 0);
    // $NON-NLS-1$
    linesPerPageSlider.setWidth("100px");
    actionPanel.addComponent(linesPerPageSlider);
    cbTraceSelection = new IconButton(VaadinIcons.TWIN_COL_SELECT);
    // state
    cbTraceSelection.setData(false);
    cbTraceSelection.setDescription("Allow multiple discontinuous selections");
    actionPanel.addComponent(cbTraceSelection);
    btClearSearchHighlights = new IconButton(VaadinIcons.ERASER);
    btClearSearchHighlights.setDescription("Clear all search highlights");
    actionPanel.addComponent(btClearSearchHighlights);
    cbAutoShowComments = new IconButton(VaadinIcons.COMMENT);
    cbAutoShowComments.setDescription("Toggle live Comments");
    // state
    cbAutoShowComments.setData(true);
    actionPanel.addComponent(cbAutoShowComments);
    btAnalyze = new Button("Analyze");
    // $NON-NLS-1$
    btAnalyze.addStyleName("primary-button");
    btAnalyze.setEnabled(project instanceof IndexedProject);
    actionPanel.addComponent(btAnalyze);
    rightSplitPanel = new VerticalSplitPanel();
    rightSplitPanel.setSizeFull();
    kwicPanel = new KwicPanel(eventBus, project, KwicProvider.buildKwicProviderByDocumentIdCache(project));
    kwicPanel.setExpandResource(VaadinIcons.CLOSE);
    kwicPanel.setCompressResource(VaadinIcons.CLOSE);
    rightSplitPanel.addComponent(kwicPanel);
    hideKwicPanel();
    annotationPanel = new AnnotationPanel(project, userMarkupCollectionManager, selectedAnnotationId -> tagger.setTagInstanceSelected(selectedAnnotationId), collection -> handleCollectionValueChange(collection), tag -> tagger.addTagInstanceWith(tag), () -> sourceDocument, eventBus);
    rightSplitPanel.addComponent(annotationPanel);
    splitPanel = new TaggerSplitPanel();
    splitPanel.addComponent(taggerPanel);
    splitPanel.addComponent(rightSplitPanel);
    splitPanel.setSplitPosition(initialSplitterPositionInPixels, Unit.PIXELS);
    // $NON-NLS-1$
    splitPanel.addStyleName("catma-tab-spacing");
    SplitterPositionChangedListener listener = new SplitterPositionChangedListener() {

        @Override
        public void positionChanged(SplitterPositionChangedEvent event) {
            float width = event.getPosition();
            // TODO: if it is PERCENTAGE, work out the splitter position in pixels
            if (event.getPositionUnit() != Unit.PIXELS) {
                // $NON-NLS-1$
                String message = "Must use PIXELS Unit for split position";
                errorHandler.showAndLogError(message, new IllegalArgumentException(message));
            }
            int approxMaxLineLength = getApproximateMaxLineLengthForSplitterPanel(width);
            List<ClientTagInstance> absoluteTagInstances = pager.getAbsoluteTagInstances();
            Page currentPage = null;
            if (pager.hasPages()) {
                currentPage = pager.getCurrentPage();
            }
            pager.setApproxMaxLineLength(approxMaxLineLength);
            if (pager.hasPages()) {
                // recalculate pages
                try {
                    pager.setText(sourceDocument.getContent(), comments);
                    int previousPageNumber = pager.getPageNumberFor(currentPage.getPageStart());
                    tagger.setPage(previousPageNumber);
                    tagger.setTagInstancesVisible(absoluteTagInstances, true);
                    pagerComponent.setPage(previousPageNumber);
                } catch (IOException e) {
                    // $NON-NLS-1$
                    errorHandler.showAndLogError("Error showing the Document!", e);
                }
            }
        }
    };
    splitPanel.addListener(SplitterPositionChangedEvent.class, listener, SplitterPositionChangedListener.positionChangedMethod);
    resourcePanel = new AnnotateResourcePanel(project, sourceDocument, eventBus);
    drawer = new SliderPanelBuilder(resourcePanel).mode(SliderMode.LEFT).expanded(sourceDocument == null).build();
    addComponent(drawer);
    addComponent(splitPanel);
    setExpandRatio(splitPanel, 1.0f);
}
Also used : BackgroundServiceProvider(de.catma.backgroundservice.BackgroundServiceProvider) ZonedDateTime(java.time.ZonedDateTime) VerticalSplitPanel(com.vaadin.ui.VerticalSplitPanel) EditAnnotationPropertiesDialog(de.catma.ui.module.annotate.annotationpanel.EditAnnotationPropertiesDialog) IndexedProject(de.catma.indexer.IndexedProject) ClientCommentReply(de.catma.ui.client.ui.tagger.shared.ClientCommentReply) KwicProvider(de.catma.indexer.KwicProvider) ValueOutOfBoundsException(com.vaadin.ui.Slider.ValueOutOfBoundsException) ExpansionListener(de.catma.ui.module.analyze.visualization.ExpansionListener) ExecutionListener(de.catma.backgroundservice.ExecutionListener) Slider(com.vaadin.ui.Slider) Set(java.util.Set) TagInstance(de.catma.tag.TagInstance) ClosableTab(de.catma.ui.component.tabbedview.ClosableTab) Pager(de.catma.ui.module.annotate.pager.Pager) Type(com.vaadin.ui.Notification.Type) PropertyChangeListener(java.beans.PropertyChangeListener) SliderMode(org.vaadin.sliderpanel.client.SliderMode) DefaultProgressCallable(de.catma.backgroundservice.DefaultProgressCallable) Range(de.catma.document.Range) TagManager(de.catma.tag.TagManager) VerticalLayout(com.vaadin.ui.VerticalLayout) SplitterPositionChangedListener(de.catma.ui.module.annotate.TaggerSplitPanel.SplitterPositionChangedListener) CommentMessage(de.catma.ui.events.CommentMessage) ArrayList(java.util.ArrayList) Pair(de.catma.util.Pair) SaveCancelListener(de.catma.ui.dialog.SaveCancelListener) ResourceSelectionListener(de.catma.ui.module.annotate.resourcepanel.ResourceSelectionListener) Property(de.catma.tag.Property) QueryResultRow(de.catma.queryengine.result.QueryResultRow) IOException(java.io.IOException) SourceDocument(de.catma.document.source.SourceDocument) AnnotationCollection(de.catma.document.annotation.AnnotationCollection) ValueChangeListener(com.vaadin.data.HasValue.ValueChangeListener) Annotation(de.catma.document.annotation.Annotation) TagManagerEvent(de.catma.tag.TagManager.TagManagerEvent) ClientTagInstance(de.catma.ui.client.ui.tagger.shared.ClientTagInstance) Button(com.vaadin.ui.Button) ChangeType(de.catma.project.event.ChangeType) TextRange(de.catma.ui.client.ui.tagger.shared.TextRange) HorizontalLayout(com.vaadin.ui.HorizontalLayout) AnnotateResourcePanel(de.catma.ui.module.annotate.resourcepanel.AnnotateResourcePanel) SplitterPositionChangedEvent(de.catma.ui.module.annotate.TaggerSplitPanel.SplitterPositionChangedEvent) Reply(de.catma.document.comment.Reply) ClientComment(de.catma.ui.client.ui.tagger.shared.ClientComment) URISyntaxException(java.net.URISyntaxException) UI(com.vaadin.ui.UI) ConfirmDialog(org.vaadin.dialogs.ConfirmDialog) RouteToAnalyzeEvent(de.catma.ui.events.routing.RouteToAnalyzeEvent) TaggerContextMenu(de.catma.ui.module.annotate.contextmenu.TaggerContextMenu) ErrorHandler(de.catma.ui.module.main.ErrorHandler) CatmaApplication(de.catma.ui.CatmaApplication) SliderPanel(org.vaadin.sliderpanel.SliderPanel) VaadinIcons(com.vaadin.icons.VaadinIcons) Version(de.catma.tag.Version) IconButton(de.catma.ui.component.IconButton) Collection(java.util.Collection) Logger(java.util.logging.Logger) Collectors(java.util.stream.Collectors) MarginInfo(com.vaadin.shared.ui.MarginInfo) TagReference(de.catma.document.annotation.TagReference) List(java.util.List) TaggerListener(de.catma.ui.module.annotate.Tagger.TaggerListener) Corpus(de.catma.document.corpus.Corpus) TagDefinition(de.catma.tag.TagDefinition) Optional(java.util.Optional) HazelCastService(de.catma.hazelcast.HazelCastService) SliderPanelBuilder(org.vaadin.sliderpanel.SliderPanelBuilder) ValueChangeEvent(com.vaadin.data.HasValue.ValueChangeEvent) KwicPanel(de.catma.ui.module.analyze.visualization.kwic.KwicPanel) ClickListener(com.vaadin.ui.Button.ClickListener) PagerComponent(de.catma.ui.module.annotate.pager.PagerComponent) AnnotationPanel(de.catma.ui.module.annotate.annotationpanel.AnnotationPanel) AnnotationCollectionManager(de.catma.document.annotation.AnnotationCollectionManager) PageChangeListener(de.catma.ui.module.annotate.pager.PagerComponent.PageChangeListener) UIMessageListener(de.catma.ui.UIMessageListener) User(de.catma.user.User) Level(java.util.logging.Level) HashSet(java.util.HashSet) EventBus(com.google.common.eventbus.EventBus) CommentChangeEvent(de.catma.project.event.CommentChangeEvent) Comment(de.catma.document.comment.Comment) Notification(com.vaadin.ui.Notification) Page(de.catma.ui.module.annotate.pager.Page) HazelcastConfiguration(de.catma.hazelcast.HazelcastConfiguration) TagsetDefinition(de.catma.tag.TagsetDefinition) IDGenerator(de.catma.util.IDGenerator) Subscribe(com.google.common.eventbus.Subscribe) TagLibrary(de.catma.tag.TagLibrary) PropertyChangeEvent(java.beans.PropertyChangeEvent) ClickEvent(com.vaadin.ui.Button.ClickEvent) AnnotationCollectionReference(de.catma.document.annotation.AnnotationCollectionReference) Project(de.catma.project.Project) RepositoryChangeEvent(de.catma.project.Project.RepositoryChangeEvent) ReplyChangeEvent(de.catma.project.event.ReplyChangeEvent) TabCaptionChangeListener(de.catma.ui.component.tabbedview.TabCaptionChangeListener) DateTimeFormatter(java.time.format.DateTimeFormatter) ITopic(com.hazelcast.core.ITopic) PagerComponent(de.catma.ui.module.annotate.pager.PagerComponent) Slider(com.vaadin.ui.Slider) ClientTagInstance(de.catma.ui.client.ui.tagger.shared.ClientTagInstance) VerticalSplitPanel(com.vaadin.ui.VerticalSplitPanel) Page(de.catma.ui.module.annotate.pager.Page) HorizontalLayout(com.vaadin.ui.HorizontalLayout) IconButton(de.catma.ui.component.IconButton) SplitterPositionChangedListener(de.catma.ui.module.annotate.TaggerSplitPanel.SplitterPositionChangedListener) Button(com.vaadin.ui.Button) IconButton(de.catma.ui.component.IconButton) KwicPanel(de.catma.ui.module.analyze.visualization.kwic.KwicPanel) MarginInfo(com.vaadin.shared.ui.MarginInfo) SliderPanelBuilder(org.vaadin.sliderpanel.SliderPanelBuilder) VerticalLayout(com.vaadin.ui.VerticalLayout) IndexedProject(de.catma.indexer.IndexedProject) PageChangeListener(de.catma.ui.module.annotate.pager.PagerComponent.PageChangeListener) AnnotateResourcePanel(de.catma.ui.module.annotate.resourcepanel.AnnotateResourcePanel) IOException(java.io.IOException) SplitterPositionChangedEvent(de.catma.ui.module.annotate.TaggerSplitPanel.SplitterPositionChangedEvent) AnnotationPanel(de.catma.ui.module.annotate.annotationpanel.AnnotationPanel) Pager(de.catma.ui.module.annotate.pager.Pager)

Example 2 with IndexedProject

use of de.catma.indexer.IndexedProject in project catma by forTEXT.

the class TaggerView method analyzeDocument.

public void analyzeDocument() {
    Corpus corpus = new Corpus();
    corpus.addSourceDocument(sourceDocument);
    for (AnnotationCollection umc : userMarkupCollectionManager.getUserMarkupCollections()) {
        AnnotationCollectionReference userMarkupCollRef = sourceDocument.getUserMarkupCollectionReference(umc.getId());
        if (userMarkupCollRef != null) {
            corpus.addUserMarkupCollectionReference(userMarkupCollRef);
        }
    }
    if (project instanceof IndexedProject) {
        eventBus.post(new RouteToAnalyzeEvent((IndexedProject) project, corpus));
    }
}
Also used : AnnotationCollection(de.catma.document.annotation.AnnotationCollection) AnnotationCollectionReference(de.catma.document.annotation.AnnotationCollectionReference) IndexedProject(de.catma.indexer.IndexedProject) Corpus(de.catma.document.corpus.Corpus) RouteToAnalyzeEvent(de.catma.ui.events.routing.RouteToAnalyzeEvent)

Example 3 with IndexedProject

use of de.catma.indexer.IndexedProject in project catma by forTEXT.

the class TaggerView method initData.

private void initData(final AfterDocumentLoadedOperation afterDocumentLoadedOperation) {
    if (sourceDocument != null) {
        // loading of the Document is done in an extra step,
        // because of a client side rendering racing condition which prevents the first page to be displayed
        final UI ui = UI.getCurrent();
        ((CatmaApplication) ui).submit("Load Document", new DefaultProgressCallable<Void>() {

            @Override
            public Void call() throws Exception {
                ui.accessSynchronously(() -> {
                    try {
                        linesPerPageSlider.setEnabled(true);
                        btAnalyze.setEnabled(project instanceof IndexedProject);
                        pagerComponent.setEnabled(true);
                        TaggerView.this.comments.clear();
                        TaggerView.this.comments.addAll(TaggerView.this.project.getComments(sourceDocument.getUuid()));
                        tagger.setText(sourceDocument.getContent(), TaggerView.this.comments);
                        totalLineCount = pager.getTotalLineCount();
                        try {
                            linesPerPageSlider.setValue((100.0 / totalLineCount) * maxPageLengthInLines);
                        } catch (ValueOutOfBoundsException toBeIgnored) {
                        }
                        List<AnnotationCollectionReference> collectionReferences = resourcePanel.getSelectedAnnotationCollectionReferences();
                        userMarkupCollectionManager.clear();
                        for (AnnotationCollectionReference collectionRef : collectionReferences) {
                            AnnotationCollection collection = project.getUserMarkupCollection(collectionRef);
                            userMarkupCollectionManager.add(collection);
                        }
                        Collection<TagsetDefinition> tagsets = new HashSet<>(resourcePanel.getSelectedTagsets());
                        annotationPanel.setData(sourceDocument, tagsets, new ArrayList<>(userMarkupCollectionManager.getUserMarkupCollections()));
                        if (taggerContextMenu != null) {
                            taggerContextMenu.setTagsets(tagsets);
                        }
                        if (afterDocumentLoadedOperation != null) {
                            afterDocumentLoadedOperation.afterDocumentLoaded(TaggerView.this);
                        }
                        ui.push();
                    } catch (IOException e) {
                        errorHandler.showAndLogError("Error showing the Document!", e);
                    }
                });
                return null;
            }
        }, new ExecutionListener<Void>() {

            @Override
            public void done(Void result) {
            /*noop*/
            }

            @Override
            public void error(Throwable t) {
                errorHandler.showAndLogError("Error showing the Document!", t);
            }
        });
    } else {
        linesPerPageSlider.setEnabled(false);
        btAnalyze.setEnabled(false);
        pagerComponent.setEnabled(false);
    }
}
Also used : AnnotationCollection(de.catma.document.annotation.AnnotationCollection) ArrayList(java.util.ArrayList) AnnotationCollectionReference(de.catma.document.annotation.AnnotationCollectionReference) IOException(java.io.IOException) ValueOutOfBoundsException(com.vaadin.ui.Slider.ValueOutOfBoundsException) IOException(java.io.IOException) URISyntaxException(java.net.URISyntaxException) CatmaApplication(de.catma.ui.CatmaApplication) UI(com.vaadin.ui.UI) ValueOutOfBoundsException(com.vaadin.ui.Slider.ValueOutOfBoundsException) AnnotationCollection(de.catma.document.annotation.AnnotationCollection) Collection(java.util.Collection) ArrayList(java.util.ArrayList) List(java.util.List) IndexedProject(de.catma.indexer.IndexedProject)

Example 4 with IndexedProject

use of de.catma.indexer.IndexedProject in project catma by forTEXT.

the class ProjectView method handleAnalyzeResources.

private void handleAnalyzeResources(MenuBar.MenuItem menuItem, TreeGrid<Resource> resourceGrid) {
    if (resourceGrid.getSelectedItems().isEmpty()) {
        Notification.show("Info", "Please select something first!", Type.HUMANIZED_MESSAGE);
    } else {
        Corpus corpus = new Corpus();
        for (Resource resource : resourceGrid.getSelectedItems()) {
            try {
                if (resource.getClass().equals(DocumentResource.class)) {
                    DocumentResource docResource = (DocumentResource) resource;
                    corpus.addSourceDocument(docResource.getDocument());
                } else {
                    CollectionResource collResource = (CollectionResource) resource;
                    corpus.addUserMarkupCollectionReference(collResource.getCollectionReference());
                    DocumentResource docParent = (DocumentResource) resourceGrid.getTreeData().getParent(collResource);
                    if (!corpus.getSourceDocuments().contains(docParent.getDocument())) {
                        corpus.addSourceDocument(docParent.getDocument());
                    }
                }
            } catch (Exception e) {
                errorHandler.showAndLogError("Error adding resource to analyzer module " + resource, e);
            }
        }
        eventBus.post(new RouteToAnalyzeEvent((IndexedProject) project, corpus));
    }
}
Also used : IndexedProject(de.catma.indexer.IndexedProject) Corpus(de.catma.document.corpus.Corpus) IOException(java.io.IOException) URISyntaxException(java.net.URISyntaxException) RouteToAnalyzeEvent(de.catma.ui.events.routing.RouteToAnalyzeEvent)

Aggregations

IndexedProject (de.catma.indexer.IndexedProject)4 AnnotationCollection (de.catma.document.annotation.AnnotationCollection)3 AnnotationCollectionReference (de.catma.document.annotation.AnnotationCollectionReference)3 Corpus (de.catma.document.corpus.Corpus)3 RouteToAnalyzeEvent (de.catma.ui.events.routing.RouteToAnalyzeEvent)3 IOException (java.io.IOException)3 URISyntaxException (java.net.URISyntaxException)3 ValueOutOfBoundsException (com.vaadin.ui.Slider.ValueOutOfBoundsException)2 UI (com.vaadin.ui.UI)2 CatmaApplication (de.catma.ui.CatmaApplication)2 ArrayList (java.util.ArrayList)2 Collection (java.util.Collection)2 List (java.util.List)2 EventBus (com.google.common.eventbus.EventBus)1 Subscribe (com.google.common.eventbus.Subscribe)1 ITopic (com.hazelcast.core.ITopic)1 ValueChangeEvent (com.vaadin.data.HasValue.ValueChangeEvent)1 ValueChangeListener (com.vaadin.data.HasValue.ValueChangeListener)1 VaadinIcons (com.vaadin.icons.VaadinIcons)1 MarginInfo (com.vaadin.shared.ui.MarginInfo)1