Search in sources :

Example 1 with FromTo

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);
    }
}
Also used : FromTo(net.codemirror.lib.TextMarker.FromTo)

Example 2 with FromTo

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);
    }
}
Also used : Pos(net.codemirror.lib.Pos) FromTo(net.codemirror.lib.TextMarker.FromTo) LineOnOtherInfo(com.google.gerrit.client.diff.LineMapper.LineOnOtherInfo) LineRegionInfo(com.google.gerrit.client.diff.UnifiedChunkManager.LineRegionInfo)

Example 3 with FromTo

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());
    }
}
Also used : FromTo(net.codemirror.lib.TextMarker.FromTo)

Example 4 with FromTo

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();
}
Also used : FromTo(net.codemirror.lib.TextMarker.FromTo)

Example 5 with FromTo

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();
}
Also used : FromTo(net.codemirror.lib.TextMarker.FromTo)

Aggregations

FromTo (net.codemirror.lib.TextMarker.FromTo)6 Pos (net.codemirror.lib.Pos)2 LineOnOtherInfo (com.google.gerrit.client.diff.LineMapper.LineOnOtherInfo)1 LineRegionInfo (com.google.gerrit.client.diff.UnifiedChunkManager.LineRegionInfo)1