use of de.catma.project.Project 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);
}
use of de.catma.project.Project in project catma by forTEXT.
the class PropertyQuery method execute.
@Override
protected QueryResult execute() throws Exception {
QueryOptions queryOptions = getQueryOptions();
Project repository = queryOptions.getRepository();
Indexer indexer = queryOptions.getIndexer();
List<String> relevantUserMarkupCollIDs = queryOptions.getRelevantUserMarkupCollIDs();
if (relevantUserMarkupCollIDs.isEmpty() && !queryOptions.getRelevantSourceDocumentIDs().isEmpty()) {
relevantUserMarkupCollIDs = new ArrayList<String>();
for (String sourceDocumentId : queryOptions.getRelevantSourceDocumentIDs()) {
for (AnnotationCollectionReference umcRef : repository.getSourceDocument(sourceDocumentId).getUserMarkupCollectionRefs()) {
relevantUserMarkupCollIDs.add(umcRef.getId());
}
}
if (relevantUserMarkupCollIDs.isEmpty()) {
return new QueryResultRowArray();
}
}
QueryResult result = indexer.searchProperty(queryOptions.getQueryId(), relevantUserMarkupCollIDs, propertyName, propertyValue, tagPhrase);
for (QueryResultRow row : result) {
SourceDocument sd = repository.getSourceDocument(row.getSourceDocumentId());
TagQueryResultRow tRow = (TagQueryResultRow) row;
if (tRow.getRanges().size() > 1) {
StringBuilder builder = new StringBuilder();
String conc = "";
for (Range range : tRow.getRanges()) {
builder.append(conc);
builder.append(sd.getContent(range));
conc = "[...]";
}
row.setPhrase(builder.toString());
} else {
row.setPhrase(sd.getContent(row.getRange()));
}
}
return result;
}
use of de.catma.project.Project in project catma by forTEXT.
the class RegQuery method execute.
@Override
protected QueryResult execute() throws Exception {
QueryResultRowArray result = new QueryResultRowArray();
QueryOptions queryOptions = getQueryOptions();
Project repository = queryOptions.getRepository();
List<String> relevantSourceDocIDs = queryOptions.getRelevantSourceDocumentIDs();
Collection<SourceDocument> relevantSourceDocuments = null;
if ((relevantSourceDocIDs != null) && !relevantSourceDocIDs.isEmpty()) {
relevantSourceDocuments = new ArrayList<SourceDocument>();
for (String sourceDocumentID : relevantSourceDocIDs) {
relevantSourceDocuments.add(repository.getSourceDocument(sourceDocumentID));
}
} else {
relevantSourceDocuments = repository.getSourceDocuments();
}
for (SourceDocument sourceDoc : relevantSourceDocuments) {
boolean sourceDocWasLoaded = sourceDoc.isLoaded();
int flags = Pattern.DOTALL;
if (caseInsensitive) {
flags |= Pattern.CASE_INSENSITIVE;
}
Pattern pattern = Pattern.compile(phrase.getPhrase(), flags);
Matcher matcher = pattern.matcher(sourceDoc.getContent());
while (matcher.find()) {
result.add(new QueryResultRow(queryOptions.getQueryId(), sourceDoc.getUuid(), new Range(matcher.start(), matcher.end()), matcher.group()));
}
if (!sourceDocWasLoaded) {
sourceDoc.unload();
}
}
return result;
}
use of de.catma.project.Project in project catma by forTEXT.
the class TagQuery method execute.
@Override
protected QueryResult execute() throws Exception {
QueryOptions queryOptions = getQueryOptions();
Project repository = queryOptions.getRepository();
Indexer indexer = queryOptions.getIndexer();
List<String> relevantUserMarkupCollIDs = queryOptions.getRelevantUserMarkupCollIDs();
if (relevantUserMarkupCollIDs.isEmpty()) {
return new QueryResultRowArray();
}
QueryResult result = indexer.searchTagDefinitionPath(queryOptions.getQueryId(), relevantUserMarkupCollIDs, tagPhrase);
for (QueryResultRow row : result) {
SourceDocument sd = repository.getSourceDocument(row.getSourceDocumentId());
TagQueryResultRow tRow = (TagQueryResultRow) row;
if (tRow.getRanges().size() > 1) {
StringBuilder builder = new StringBuilder();
String conc = "";
for (Range range : tRow.getRanges()) {
builder.append(conc);
builder.append(sd.getContent(range));
conc = "[...]";
}
row.setPhrase(builder.toString());
} else {
row.setPhrase(sd.getContent(row.getRange()));
}
}
return result;
}
use of de.catma.project.Project in project catma by forTEXT.
the class CommentQuery method execute.
@Override
protected QueryResult execute() throws Exception {
QueryOptions queryOptions = getQueryOptions();
WildcardTermExtractor termExtractor = new WildcardTermExtractor(commentPhrase, queryOptions.getUnseparableCharacterSequences(), queryOptions.getUserDefinedSeparatingCharacters(), queryOptions.getLocale());
List<String> termList = termExtractor.getOrderedTerms();
Indexer indexer = queryOptions.getIndexer();
QueryResult result = indexer.searchCommentPhrase(queryOptions.getQueryId(), queryOptions.getRelevantSourceDocumentIDs(), termList, queryOptions.getLimit(), queryOptions.getUnseparableCharacterSequences(), queryOptions.getUserDefinedSeparatingCharacters(), queryOptions.getLocale());
Project repository = queryOptions.getRepository();
for (QueryResultRow row : result) {
SourceDocument sd = repository.getSourceDocument(row.getSourceDocumentId());
row.setPhrase(sd.getContent(row.getRange()));
}
return result;
}
Aggregations