mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
merge: cleanup
This commit is contained in:
@@ -73,11 +73,13 @@ public class TextMergeChange extends ThreesideDiffChangeBase {
|
||||
myEndLine = myFragment.getEndLine(ThreeSide.BASE);
|
||||
|
||||
installHighlighter();
|
||||
installOperations();
|
||||
}
|
||||
|
||||
@CalledInAwt
|
||||
public void destroy() {
|
||||
destroyHighlighter();
|
||||
destroyOperations();
|
||||
destroyInnerHighlighter();
|
||||
}
|
||||
|
||||
@@ -88,8 +90,6 @@ public class TextMergeChange extends ThreesideDiffChangeBase {
|
||||
createHighlighter(ThreeSide.BASE);
|
||||
if (getType().isLeftChange()) createHighlighter(ThreeSide.LEFT);
|
||||
if (getType().isRightChange()) createHighlighter(ThreeSide.RIGHT);
|
||||
|
||||
doInstallActionHighlighters();
|
||||
}
|
||||
|
||||
@CalledInAwt
|
||||
@@ -107,11 +107,6 @@ public class TextMergeChange extends ThreesideDiffChangeBase {
|
||||
highlighter.dispose();
|
||||
}
|
||||
myHighlighters.clear();
|
||||
|
||||
for (MyGutterOperation operation : myOperations) {
|
||||
operation.dispose();
|
||||
}
|
||||
myOperations.clear();
|
||||
}
|
||||
|
||||
@CalledInAwt
|
||||
@@ -127,6 +122,9 @@ public class TextMergeChange extends ThreesideDiffChangeBase {
|
||||
destroyHighlighter();
|
||||
installHighlighter();
|
||||
|
||||
destroyOperations();
|
||||
installOperations();
|
||||
|
||||
myViewer.repaintDividers();
|
||||
}
|
||||
|
||||
@@ -281,13 +279,21 @@ public class TextMergeChange extends ThreesideDiffChangeBase {
|
||||
// Gutter actions
|
||||
//
|
||||
|
||||
private void doInstallActionHighlighters() {
|
||||
private void installOperations() {
|
||||
ContainerUtil.addIfNotNull(myOperations, createOperation(ThreeSide.LEFT, OperationType.APPLY));
|
||||
ContainerUtil.addIfNotNull(myOperations, createOperation(ThreeSide.LEFT, OperationType.IGNORE));
|
||||
ContainerUtil.addIfNotNull(myOperations, createOperation(ThreeSide.RIGHT, OperationType.APPLY));
|
||||
ContainerUtil.addIfNotNull(myOperations, createOperation(ThreeSide.RIGHT, OperationType.IGNORE));
|
||||
}
|
||||
|
||||
@CalledInAwt
|
||||
private void destroyOperations() {
|
||||
for (MyGutterOperation operation : myOperations) {
|
||||
operation.dispose();
|
||||
}
|
||||
myOperations.clear();
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private MyGutterOperation createOperation(@NotNull ThreeSide side, @NotNull OperationType type) {
|
||||
if (isResolved(side)) return null;
|
||||
|
||||
+19
-12
@@ -52,6 +52,10 @@ public class SimpleThreesideDiffChange extends ThreesideDiffChangeBase {
|
||||
createHighlighter(ThreeSide.BASE);
|
||||
if (getType().isLeftChange()) createHighlighter(ThreeSide.LEFT);
|
||||
if (getType().isRightChange()) createHighlighter(ThreeSide.RIGHT);
|
||||
|
||||
createInnerHighlighter(ThreeSide.BASE);
|
||||
if (getType().isLeftChange()) createInnerHighlighter(ThreeSide.LEFT);
|
||||
if (getType().isRightChange()) createInnerHighlighter(ThreeSide.RIGHT);
|
||||
}
|
||||
|
||||
public void destroyHighlighter() {
|
||||
@@ -69,22 +73,25 @@ public class SimpleThreesideDiffChange extends ThreesideDiffChangeBase {
|
||||
Editor editor = side.select(myEditors);
|
||||
|
||||
TextDiffType type = getDiffType();
|
||||
int startLine = myFragment.getStartLine(side);
|
||||
int endLine = myFragment.getEndLine(side);
|
||||
boolean hasInner = myFragment.getInnerFragments() != null;
|
||||
|
||||
int start = DiffUtil.getLinesRange(editor.getDocument(), startLine, endLine).getStartOffset();
|
||||
int startLine = getStartLine(side);
|
||||
int endLine = getEndLine(side);
|
||||
|
||||
boolean ignored = myFragment.getInnerFragments() != null;
|
||||
boolean shouldHideWithoutLineNumbers = side == ThreeSide.BASE && !isChange(Side.LEFT) && isChange(Side.RIGHT);
|
||||
myHighlighters.addAll(DiffDrawUtil.createHighlighter(editor, startLine, endLine, type, hasInner, false, shouldHideWithoutLineNumbers));
|
||||
myHighlighters.addAll(DiffDrawUtil.createHighlighter(editor, startLine, endLine, type, ignored, false, shouldHideWithoutLineNumbers));
|
||||
myHighlighters.addAll(DiffDrawUtil.createLineMarker(editor, startLine, endLine, type, false));
|
||||
}
|
||||
|
||||
if (hasInner) {
|
||||
for (MergeWordFragment innerFragment : myFragment.getInnerFragments()) {
|
||||
int startOffset = innerFragment.getStartOffset(side);
|
||||
int endOffset = innerFragment.getEndOffset(side);
|
||||
myHighlighters.addAll(DiffDrawUtil.createInlineHighlighter(editor, start + startOffset, start + endOffset, type));
|
||||
}
|
||||
private void createInnerHighlighter(@NotNull ThreeSide side) {
|
||||
List<MergeWordFragment> innerFragments = myFragment.getInnerFragments();
|
||||
if (innerFragments == null) return;
|
||||
|
||||
Editor editor = side.select(myEditors);
|
||||
int start = DiffUtil.getLinesRange(editor.getDocument(), getStartLine(side), getEndLine(side)).getStartOffset();
|
||||
for (MergeWordFragment fragment : innerFragments) {
|
||||
int innerStart = start + fragment.getStartOffset(side);
|
||||
int innerEnd = start + fragment.getEndOffset(side);
|
||||
myHighlighters.addAll(DiffDrawUtil.createInlineHighlighter(editor, innerStart, innerEnd, getDiffType()));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user