use of net.codemirror.lib.TextMarker.FromTo in project gerrit by GerritCodeReview.
the class SideBySideCommentManager method newDraft.
@Override
void newDraft(CodeMirror cm) {
int line = cm.getLineNumber(cm.extras().activeLine()) + 1;
if (cm.somethingSelected()) {
FromTo fromTo = adjustSelection(cm);
addDraftBox(cm.side(), CommentInfo.create(getPath(), getStoredSideFromDisplaySide(cm.side()), getParentNumFromDisplaySide(cm.side()), line, CommentRange.create(fromTo), false)).setEdit(true);
cm.setCursor(fromTo.to());
cm.setSelection(cm.getCursor());
} else {
insertNewDraft(cm.side(), line);
}
}
use of net.codemirror.lib.TextMarker.FromTo in project gerrit by GerritCodeReview.
the class UnifiedCommentManager method newDraft.
@Override
void newDraft(CodeMirror cm) {
if (cm.somethingSelected()) {
FromTo fromTo = adjustSelection(cm);
Pos from = fromTo.from();
Pos to = fromTo.to();
Unified unified = (Unified) host;
UnifiedChunkManager manager = unified.getChunkManager();
LineRegionInfo fromInfo = unified.getLineRegionInfoFromCmLine(from.line());
LineRegionInfo toInfo = unified.getLineRegionInfoFromCmLine(to.line());
DisplaySide side = toInfo.getSide();
// start line to be on the same side as the end line.
if ((fromInfo.type == RegionType.INSERT || fromInfo.type == RegionType.COMMON) && toInfo.type == RegionType.DELETE) {
LineOnOtherInfo infoOnSideA = manager.lineMapper.lineOnOther(DisplaySide.B, fromInfo.line);
int startLineOnSideA = infoOnSideA.getLine();
if (infoOnSideA.isAligned()) {
from.line(startLineOnSideA);
} else {
from.line(startLineOnSideA + 1);
}
from.ch(0);
to.line(toInfo.line);
} else if (fromInfo.type == RegionType.DELETE && toInfo.type == RegionType.INSERT) {
LineOnOtherInfo infoOnSideB = manager.lineMapper.lineOnOther(DisplaySide.A, fromInfo.line);
int startLineOnSideB = infoOnSideB.getLine();
if (infoOnSideB.isAligned()) {
from.line(startLineOnSideB);
} else {
from.line(startLineOnSideB + 1);
}
from.ch(0);
to.line(toInfo.line);
} else if (fromInfo.type == RegionType.DELETE && toInfo.type == RegionType.COMMON) {
int toLineOnSideA = manager.lineMapper.lineOnOther(DisplaySide.B, toInfo.line).getLine();
from.line(fromInfo.line);
// Force the end line to be on the same side as the start line.
to.line(toLineOnSideA);
side = DisplaySide.A;
} else {
// Common case
from.line(fromInfo.line);
to.line(toInfo.line);
}
addDraftBox(side, CommentInfo.create(getPath(), getStoredSideFromDisplaySide(side), to.line() + 1, CommentRange.create(fromTo), false)).setEdit(true);
cm.setCursor(Pos.create(host.getCmLine(to.line(), side), to.ch()));
cm.setSelection(cm.getCursor());
} else {
int cmLine = cm.getLineNumber(cm.extras().activeLine());
LineRegionInfo info = ((Unified) host).getLineRegionInfoFromCmLine(cmLine);
insertNewDraft(info.getSide(), cmLine + 1);
}
}
use of net.codemirror.lib.TextMarker.FromTo in project gerrit by GerritCodeReview.
the class SkipBar method updateSelection.
private void updateSelection() {
if (cm.somethingSelected()) {
FromTo sel = cm.getSelectedRange();
cm.setSelection(sel.from(), sel.to());
}
}
use of net.codemirror.lib.TextMarker.FromTo in project gerrit by GerritCodeReview.
the class SkipBar method expandSideBefore.
private void expandSideBefore(int cnt) {
FromTo range = textMarker.find();
int oldStart = range.from().line();
int newStart = oldStart + cnt;
int end = range.to().line();
clearMarkerAndWidget();
collapse(newStart, end, true);
updateSelection();
}
use of net.codemirror.lib.TextMarker.FromTo in project gerrit by GerritCodeReview.
the class SkipBar method expandAfter.
private void expandAfter() {
FromTo range = textMarker.find();
int start = range.from().line();
int oldEnd = range.to().line();
int newEnd = oldEnd - NUM_ROWS_TO_EXPAND;
boolean attach = start == 0;
if (attach) {
clearMarkerAndWidget();
} else {
textMarker.clear();
}
collapse(start, newEnd, attach);
updateSelection();
}
Aggregations