use of name.graf.emanuel.testfileeditor.model.node.Node in project ch.hsr.ifs.cdttesting by IFS-HSR.
the class OutlinePage method selectionChanged.
@Override
public void selectionChanged(final SelectionChangedEvent event) {
super.selectionChanged(event);
final ISelection selection = event.getSelection();
if (selection.isEmpty()) {
this.editor.resetHighlightRange();
} else if (((IStructuredSelection) selection).getFirstElement() instanceof Node) {
final Node segment = (Node) ((IStructuredSelection) selection).getFirstElement();
final int start = segment.getPosition().getOffset();
final int length = segment.getPosition().getLength();
try {
this.editor.setHighlightRange(start, length, true);
} catch (IllegalArgumentException ex) {
this.editor.resetHighlightRange();
}
} else {
this.editor.resetHighlightRange();
}
}
use of name.graf.emanuel.testfileeditor.model.node.Node in project ch.hsr.ifs.cdttesting by IFS-HSR.
the class VirtualLineNumberRuler method update.
@Override
public void update(final Observable o, final Object arg) {
if (o instanceof TestFile) {
final List<Integer> startLineNumbers = new ArrayList<>();
final List<Integer> endLineNumbers = new ArrayList<>();
final TestFile file = (TestFile) o;
final IDocument document = getEditor().getDocumentProvider().getDocument(getEditor().getEditorInput());
final Test[] tests = file.getTests();
try {
for (final Test test : tests) {
final Node[] files = test.getChildren();
Position nodePosition = test.getPosition();
int realLine = document.getLineOfOffset(nodePosition.offset);
endLineNumbers.add(realLine + 1);
for (final Node testNode : files) {
nodePosition = testNode.getPosition();
realLine = document.getLineOfOffset(nodePosition.offset) + 1;
if (testNode instanceof File) {
final String name = testNode.toString();
if (name.endsWith(".cpp") || name.endsWith(".h") || name.endsWith(".hpp")) {
startLineNumbers.add(realLine);
} else {
endLineNumbers.add(realLine);
}
} else if (testNode instanceof Expected) {
startLineNumbers.add(realLine);
} else {
endLineNumbers.add(realLine);
}
}
}
} catch (final BadLocationException e) {
e.printStackTrace();
}
modelLineToRulerLineMap.clear();
int largestNumber = 0;
final int lines = document.getNumberOfLines() + 1;
boolean inFile = false;
int rulerLine = 1;
for (int line = 1; line < lines; ++line) {
if (startLineNumbers.contains(line)) {
inFile = true;
rulerLine = 1;
continue;
} else if (endLineNumbers.contains(line)) {
inFile = false;
} else if (inFile) {
if (rulerLine > largestNumber) {
largestNumber = rulerLine;
}
modelLineToRulerLineMap.put(line - 1, rulerLine++);
}
}
maxDigits = Integer.toString(largestNumber).length();
redraw();
}
}
Aggregations