Search in sources :

Example 1 with Page

use of de.catma.ui.module.annotate.pager.Page in project catma by forTEXT.

the class TaggerView method initActions.

private void initActions() {
    btClearSearchHighlights.addClickListener(new ClickListener() {

        @Override
        public void buttonClick(ClickEvent event) {
            tagger.removeHighlights();
        }
    });
    cbTraceSelection.addClickListener(clickEvent -> {
        boolean traceSelection = (boolean) cbTraceSelection.getData();
        traceSelection = !traceSelection;
        cbTraceSelection.setData(traceSelection);
        tagger.setTraceSelection(traceSelection);
        if (traceSelection) {
            cbTraceSelection.addStyleName("tagger-trace-checkbox-selected");
        } else {
            cbTraceSelection.removeStyleName("tagger-trace-checkbox-selected");
        }
    });
    cbAutoShowComments.addClickListener(clickEvent -> {
        boolean autoShowComments = (boolean) cbAutoShowComments.getData();
        autoShowComments = !autoShowComments;
        cbAutoShowComments.setData(autoShowComments);
        if (autoShowComments) {
            cbAutoShowComments.setIcon(VaadinIcons.COMMENT);
            try {
                TaggerView.this.comments.clear();
                TaggerView.this.comments.addAll(TaggerView.this.project.getComments(sourceDocument.getUuid()));
                tagger.updateComments(comments);
            } catch (IOException e) {
                logger.log(Level.SEVERE, "unable to reload comments", e);
            }
        } else {
            cbAutoShowComments.setIcon(VaadinIcons.COMMENT_O);
        }
    });
    btAnalyze.addClickListener(new ClickListener() {

        public void buttonClick(ClickEvent event) {
            analyzeDocument();
        }
    });
    linesPerPageSlider.addValueChangeListener(new ValueChangeListener<Double>() {

        public void valueChange(ValueChangeEvent<Double> event) {
            Double perCentValue = (Double) linesPerPageSlider.getValue();
            int lines = (int) ((totalLineCount / 100.0) * perCentValue);
            List<ClientTagInstance> absoluteTagInstances = pager.getAbsoluteTagInstances();
            Page currentPage = null;
            if (pager.hasPages()) {
                currentPage = pager.getCurrentPage();
            }
            pager.setMaxPageLengthInLines(lines);
            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) {
                    errorHandler.showAndLogError("Error showing the Document!", e);
                }
            }
        }
    });
    resourcePanel.setSelectionListener(new ResourceSelectionListener() {

        @Override
        public void resourcesChanged() {
            AnnotationCollection selectedEditableCollection = annotationPanel.getSelectedEditableCollection();
            List<AnnotationCollectionReference> selectedAnnotationCollectionRefs = resourcePanel.getSelectedAnnotationCollectionReferences();
            for (AnnotationCollection collection : userMarkupCollectionManager.getUserMarkupCollections()) {
                userMarkupCollectionManager.remove(collection.getId());
                annotationPanel.removeCollection(collection.getId());
                tagger.setVisible(collection.getTagReferences(), false);
            }
            userMarkupCollectionManager.clear();
            for (AnnotationCollectionReference collectionReference : selectedAnnotationCollectionRefs) {
                try {
                    AnnotationCollection collection = project.getUserMarkupCollection(collectionReference);
                    setAnnotationCollectionSelected(new AnnotationCollectionReference(collection), true);
                } catch (IOException e) {
                    ((ErrorHandler) UI.getCurrent()).showAndLogError("error refreshing Annotation Collection!", e);
                }
            }
            if ((selectedEditableCollection != null) && (userMarkupCollectionManager.contains(selectedEditableCollection.getId()))) {
                annotationPanel.setSelectedEditableCollection(userMarkupCollectionManager.getUserMarkupCollection(selectedEditableCollection.getId()));
            }
            annotationPanel.clearTagsets();
            tagsetsSelected(resourcePanel.getSelectedTagsets());
        }

        @Override
        public void documentSelected(SourceDocument sourceDocument) {
            setSourceDocument(sourceDocument, null);
        }

        @Override
        public void annotationCollectionSelected(AnnotationCollectionReference collectionReference, boolean selected) {
            setAnnotationCollectionSelected(collectionReference, selected);
        }

        @Override
        public void tagsetsSelected(Collection<TagsetDefinition> tagsets) {
            try {
                annotationPanel.setTagsets(tagsets);
                if (taggerContextMenu != null) {
                    taggerContextMenu.setTagsets(tagsets);
                }
                for (AnnotationCollection collection : userMarkupCollectionManager.getUserMarkupCollections()) {
                    tagger.setVisible(collection.getTagReferences(), false);
                    List<TagReference> visibleRefs = annotationPanel.getVisibleTagReferences(collection.getTagReferences());
                    if (!visibleRefs.isEmpty()) {
                        tagger.setVisible(visibleRefs, true);
                    }
                }
            } catch (Exception e) {
                errorHandler.showAndLogError("Error handling Tagset!", e);
            }
        }
    });
    annotationPanel.setTagReferenceSelectionChangeListener((tagReferences, selected) -> {
        if (!tagReferences.isEmpty()) {
            tagger.setVisible(tagReferences, selected);
        }
    });
    kwicPanel.setExpansionListener(new ExpansionListener() {

        @Override
        public void expand() {
            // we hide on expand and on compress since both is considered a "close"
            hideKwicPanel();
        }

        @Override
        public void compress() {
            // we hide on expand and on compress since both is considered a "close"
            hideKwicPanel();
        }
    });
    kwicPanel.addItemClickListener(itemClick -> {
        if (itemClick.getMouseEventDetails().isDoubleClick()) {
            show(itemClick.getItem().getRange());
        }
    });
}
Also used : ErrorHandler(de.catma.ui.module.main.ErrorHandler) AnnotationCollection(de.catma.document.annotation.AnnotationCollection) ClickEvent(com.vaadin.ui.Button.ClickEvent) SourceDocument(de.catma.document.source.SourceDocument) AnnotationCollectionReference(de.catma.document.annotation.AnnotationCollectionReference) Page(de.catma.ui.module.annotate.pager.Page) IOException(java.io.IOException) ValueOutOfBoundsException(com.vaadin.ui.Slider.ValueOutOfBoundsException) IOException(java.io.IOException) URISyntaxException(java.net.URISyntaxException) TagsetDefinition(de.catma.tag.TagsetDefinition) ResourceSelectionListener(de.catma.ui.module.annotate.resourcepanel.ResourceSelectionListener) ArrayList(java.util.ArrayList) List(java.util.List) ExpansionListener(de.catma.ui.module.analyze.visualization.ExpansionListener) ClickListener(com.vaadin.ui.Button.ClickListener)

Example 2 with Page

use of de.catma.ui.module.annotate.pager.Page 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 3 with Page

use of de.catma.ui.module.annotate.pager.Page in project catma by forTEXT.

the class Tagger method setPage.

public void setPage(int pageNumber) {
    Page page = pager.getPage(pageNumber);
    setPage(page.toHTML(), page.getLineCount(), page.getRelativeCommentsCopy());
}
Also used : Page(de.catma.ui.module.annotate.pager.Page)

Aggregations

Page (de.catma.ui.module.annotate.pager.Page)3 ClickEvent (com.vaadin.ui.Button.ClickEvent)2 ClickListener (com.vaadin.ui.Button.ClickListener)2 ValueOutOfBoundsException (com.vaadin.ui.Slider.ValueOutOfBoundsException)2 AnnotationCollection (de.catma.document.annotation.AnnotationCollection)2 AnnotationCollectionReference (de.catma.document.annotation.AnnotationCollectionReference)2 SourceDocument (de.catma.document.source.SourceDocument)2 TagsetDefinition (de.catma.tag.TagsetDefinition)2 ExpansionListener (de.catma.ui.module.analyze.visualization.ExpansionListener)2 ResourceSelectionListener (de.catma.ui.module.annotate.resourcepanel.ResourceSelectionListener)2 ErrorHandler (de.catma.ui.module.main.ErrorHandler)2 IOException (java.io.IOException)2 URISyntaxException (java.net.URISyntaxException)2 ArrayList (java.util.ArrayList)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