diff --git a/platform/diff-api/src/com/intellij/diff/DiffContext.java b/platform/diff-api/src/com/intellij/diff/DiffContext.java
index 536b2e5b19ef..4b59e20f1eeb 100644
--- a/platform/diff-api/src/com/intellij/diff/DiffContext.java
+++ b/platform/diff-api/src/com/intellij/diff/DiffContext.java
@@ -30,10 +30,22 @@ public abstract class DiffContext implements UserDataHolder {
public abstract boolean isWindowFocused();
+ /**
+ * @return whether diff panel holds focus
+ */
public abstract boolean isFocused();
+ /**
+ * Request focus on diff panel ({@link FrameDiffTool.DiffViewer#getPreferredFocusedComponent()} in current viewer)
+ * NB: focus requested via {@link java.awt.Component#requestFocus()}, ignoring {@link com.intellij.openapi.wm.IdeFocusManager}
+ *
+ * This method can be used in pair with {@link #isFocused()} to keep focus on modifications of component tree
+ */
public abstract void requestFocus();
+ /**
+ * @see com.intellij.diff.util.DiffUserDataKeys
+ */
@Nullable
@Override
public T getUserData(@NotNull Key key) {
diff --git a/platform/diff-api/src/com/intellij/diff/DiffRequestFactory.java b/platform/diff-api/src/com/intellij/diff/DiffRequestFactory.java
index 79ae2f5f53b8..15e6f31bc515 100644
--- a/platform/diff-api/src/com/intellij/diff/DiffRequestFactory.java
+++ b/platform/diff-api/src/com/intellij/diff/DiffRequestFactory.java
@@ -30,7 +30,7 @@ import org.jetbrains.annotations.Nullable;
import java.util.List;
-/*
+/**
* Use ProgressManager.executeProcessUnderProgress() to pass modality state if needed
*/
public abstract class DiffRequestFactory {
diff --git a/platform/diff-api/src/com/intellij/diff/FrameDiffTool.java b/platform/diff-api/src/com/intellij/diff/FrameDiffTool.java
index 86f354889cc2..6523530397c7 100644
--- a/platform/diff-api/src/com/intellij/diff/FrameDiffTool.java
+++ b/platform/diff-api/src/com/intellij/diff/FrameDiffTool.java
@@ -26,6 +26,9 @@ import javax.swing.*;
import java.util.List;
public interface FrameDiffTool extends DiffTool {
+ /**
+ * Creates viewer for the given request. Clients should call {@link #canShow(DiffContext, DiffRequest)} first.
+ */
@CalledInAwt
@NotNull
DiffViewer createComponent(@NotNull DiffContext context, @NotNull DiffRequest request);
@@ -37,6 +40,9 @@ public interface FrameDiffTool extends DiffTool {
@Nullable
JComponent getPreferredFocusedComponent();
+ /**
+ * Should be called after adding {@link #getComponent()} to the components hierarchy.
+ */
@NotNull
@CalledInAwt
ToolbarComponents init();
diff --git a/platform/diff-api/src/com/intellij/diff/SuppressiveDiffTool.java b/platform/diff-api/src/com/intellij/diff/SuppressiveDiffTool.java
index bb4a1bb898f8..668be3b18d40 100644
--- a/platform/diff-api/src/com/intellij/diff/SuppressiveDiffTool.java
+++ b/platform/diff-api/src/com/intellij/diff/SuppressiveDiffTool.java
@@ -17,7 +17,7 @@ package com.intellij.diff;
import java.util.List;
-/*
+/**
* Allows to remove other DiffTools from list of available if current one can show request.
*
* 4ex: this could be used by 'image comparator plugin' to hide default binary diff tool
diff --git a/platform/diff-api/src/com/intellij/diff/contents/DiffContent.java b/platform/diff-api/src/com/intellij/diff/contents/DiffContent.java
index 17782dde3b2f..73aecc968f50 100644
--- a/platform/diff-api/src/com/intellij/diff/contents/DiffContent.java
+++ b/platform/diff-api/src/com/intellij/diff/contents/DiffContent.java
@@ -36,8 +36,8 @@ public interface DiffContent {
@Nullable
OpenFileDescriptor getOpenFileDescriptor();
- /*
- * @See DiffRequest.onAssigned()
+ /**
+ * @see DiffRequest#onAssigned(boolean)
*/
@CalledInAwt
void onAssigned(boolean isAssigned);
diff --git a/platform/diff-api/src/com/intellij/diff/fragments/DiffFragment.java b/platform/diff-api/src/com/intellij/diff/fragments/DiffFragment.java
index a208a0b6aefc..c129de493cfc 100644
--- a/platform/diff-api/src/com/intellij/diff/fragments/DiffFragment.java
+++ b/platform/diff-api/src/com/intellij/diff/fragments/DiffFragment.java
@@ -15,6 +15,9 @@
*/
package com.intellij.diff.fragments;
+/**
+ * Modified part of the text
+ */
public interface DiffFragment {
int getStartOffset1();
diff --git a/platform/diff-api/src/com/intellij/diff/fragments/LineFragment.java b/platform/diff-api/src/com/intellij/diff/fragments/LineFragment.java
index 1cb657e6ac74..7f8059815b82 100644
--- a/platform/diff-api/src/com/intellij/diff/fragments/LineFragment.java
+++ b/platform/diff-api/src/com/intellij/diff/fragments/LineFragment.java
@@ -19,6 +19,11 @@ import org.jetbrains.annotations.Nullable;
import java.util.List;
+/**
+ * Modified part of the text
+ *
+ * Offset ranges cover whole line, including '\n' at the end. But '\n' can be absent for the last line.
+ */
public interface LineFragment extends DiffFragment {
int getStartLine1();
diff --git a/platform/diff-api/src/com/intellij/diff/merge/MergeContext.java b/platform/diff-api/src/com/intellij/diff/merge/MergeContext.java
index 6727d7e6eafd..148c74d81a7f 100644
--- a/platform/diff-api/src/com/intellij/diff/merge/MergeContext.java
+++ b/platform/diff-api/src/com/intellij/diff/merge/MergeContext.java
@@ -33,9 +33,15 @@ public abstract class MergeContext implements UserDataHolder {
public abstract void requestFocus();
+ /**
+ * Called by MergeTool on conflict resolve end. Should delegate to the {@link MergeRequest#applyResult(MergeResult)}
+ */
@CalledInAwt
public abstract void finishMerge(@NotNull MergeResult result);
+ /**
+ * @see com.intellij.diff.util.DiffUserDataKeys
+ */
@Nullable
@Override
public T getUserData(@NotNull Key key) {
diff --git a/platform/diff-api/src/com/intellij/diff/merge/MergeRequest.java b/platform/diff-api/src/com/intellij/diff/merge/MergeRequest.java
index 3eb03a8a4495..5428bed24f43 100644
--- a/platform/diff-api/src/com/intellij/diff/merge/MergeRequest.java
+++ b/platform/diff-api/src/com/intellij/diff/merge/MergeRequest.java
@@ -28,8 +28,10 @@ public abstract class MergeRequest implements UserDataHolder {
@Nullable
public abstract String getTitle();
- /*
- * Called on conflict resolve end.
+ /**
+ * Called on conflict resolve end. Should be called exactly once for each request, that was shown.
+ *
+ * MergeRequest should keep initial state of its content and restore it on {@link MergeResult.CANCEL}
*/
@CalledInAwt
public abstract void applyResult(@NotNull MergeResult result);
diff --git a/platform/diff-api/src/com/intellij/diff/merge/MergeTool.java b/platform/diff-api/src/com/intellij/diff/merge/MergeTool.java
index 86bc574a5ebd..0136e2bf9480 100644
--- a/platform/diff-api/src/com/intellij/diff/merge/MergeTool.java
+++ b/platform/diff-api/src/com/intellij/diff/merge/MergeTool.java
@@ -29,16 +29,19 @@ import java.util.List;
public interface MergeTool {
ExtensionPointName EP_NAME = ExtensionPointName.create("com.intellij.diff.merge.MergeTool");
+ /**
+ * Creates viewer for the given request. Clients should call {@link #canShow(MergeContext, MergeRequest)} first.
+ */
@CalledInAwt
@NotNull
MergeViewer createComponent(@NotNull MergeContext context, @NotNull MergeRequest request);
boolean canShow(@NotNull MergeContext context, @NotNull MergeRequest request);
- /*
- * Merge viewer should call MergeContext.finishMerge(MergeResult) when processing is over.
+ /**
+ * Merge viewer should call {@link MergeContext#finishMerge(MergeResult)} when processing is over.
*
- * MergeRequest.applyResult() will be performed by the caller, so it shouldn't be called by MergeViewer directly.
+ * {@link MergeRequest#applyResult(MergeResult)} will be performed by the caller, so it shouldn't be called by MergeViewer directly.
*/
interface MergeViewer extends Disposable {
@NotNull
@@ -47,9 +50,20 @@ public interface MergeTool {
@Nullable
JComponent getPreferredFocusedComponent();
+ /**
+ * @return Action that should be triggered on the corresponding action.
+ *
+ * Typical implementation can perform some checks and either call finishMerge(result) or do nothing
+ *
+ * return null if action is not available
+ */
@Nullable
Action getResolveAction(@NotNull MergeResult result);
+ /**
+ * Should be called after adding {@link #getComponent()} to the components hierarchy.
+ */
+ @NotNull
@CalledInAwt
ToolbarComponents init();
@@ -61,6 +75,10 @@ public interface MergeTool {
class ToolbarComponents {
@Nullable public List toolbarActions;
@Nullable public JComponent statusPanel;
- @Nullable public BooleanGetter closeHandler; // return false if merge window should be prevented from closing and canceling resolve.
+
+ /**
+ * return false if merge window should be prevented from closing and canceling resolve.
+ */
+ @Nullable public BooleanGetter closeHandler;
}
}
diff --git a/platform/diff-api/src/com/intellij/diff/merge/ThreesideMergeRequest.java b/platform/diff-api/src/com/intellij/diff/merge/ThreesideMergeRequest.java
index 982402b26ba9..f47ede181f72 100644
--- a/platform/diff-api/src/com/intellij/diff/merge/ThreesideMergeRequest.java
+++ b/platform/diff-api/src/com/intellij/diff/merge/ThreesideMergeRequest.java
@@ -16,13 +16,12 @@
package com.intellij.diff.merge;
import com.intellij.diff.contents.DiffContent;
-import org.jetbrains.annotations.CalledInAwt;
import org.jetbrains.annotations.NotNull;
import java.util.List;
public abstract class ThreesideMergeRequest extends MergeRequest {
- /*
+ /**
* 3 contents: left - middle - right (local - base - server)
*/
@NotNull
diff --git a/platform/diff-api/src/com/intellij/diff/requests/DiffRequest.java b/platform/diff-api/src/com/intellij/diff/requests/DiffRequest.java
index 2adddcf5c3cf..90eda329274b 100644
--- a/platform/diff-api/src/com/intellij/diff/requests/DiffRequest.java
+++ b/platform/diff-api/src/com/intellij/diff/requests/DiffRequest.java
@@ -41,6 +41,9 @@ public abstract class DiffRequest implements UserDataHolder {
public void onAssigned(boolean isAssigned) {
}
+ /**
+ * @see com.intellij.diff.util.DiffUserDataKeys
+ */
@Nullable
@Override
public T getUserData(@NotNull Key key) {
diff --git a/platform/diff-impl/src/com/intellij/diff/impl/DiffViewerWrapper.java b/platform/diff-impl/src/com/intellij/diff/impl/DiffViewerWrapper.java
index bc7667324eae..657121fab339 100644
--- a/platform/diff-impl/src/com/intellij/diff/impl/DiffViewerWrapper.java
+++ b/platform/diff-impl/src/com/intellij/diff/impl/DiffViewerWrapper.java
@@ -21,6 +21,11 @@ import com.intellij.diff.requests.DiffRequest;
import com.intellij.openapi.util.Key;
import org.jetbrains.annotations.NotNull;
+/*
+ * This is not an extension point you are looking for.
+ *
+ * Please, consider using DiffTool, DiffExtension or introducing a better extension point instead.
+ */
public interface DiffViewerWrapper {
Key KEY = Key.create("Diff.DiffViewerWrapper");
diff --git a/platform/diff-impl/src/com/intellij/diff/merge/TextMergeTool.java b/platform/diff-impl/src/com/intellij/diff/merge/TextMergeTool.java
index 2d1462edd615..4bef4e6374d2 100644
--- a/platform/diff-impl/src/com/intellij/diff/merge/TextMergeTool.java
+++ b/platform/diff-impl/src/com/intellij/diff/merge/TextMergeTool.java
@@ -155,6 +155,7 @@ public class TextMergeTool implements MergeTool {
return myViewer.getPreferredFocusedComponent();
}
+ @NotNull
@Override
public ToolbarComponents init() {
ToolbarComponents components = new ToolbarComponents();
diff --git a/platform/diff-impl/src/com/intellij/diff/tools/util/FoldingModelSupport.java b/platform/diff-impl/src/com/intellij/diff/tools/util/FoldingModelSupport.java
index 859aa59a06fd..addf802d7f9e 100644
--- a/platform/diff-impl/src/com/intellij/diff/tools/util/FoldingModelSupport.java
+++ b/platform/diff-impl/src/com/intellij/diff/tools/util/FoldingModelSupport.java
@@ -48,12 +48,12 @@ import java.util.Iterator;
import java.util.List;
import java.util.Set;
-/*
+/**
* This class allows to add custom foldings to hide unchanged regions in diff.
* EditorSettings#isAutoCodeFoldingEnabled() should be true, to avoid collisions with language-specific foldings
* (as it's impossible to create partially overlapped folding regions)
- * @See DiffUtil.setFoldingModelSupport()
*
+ * @see DiffUtil#setFoldingModelSupport(EditorEx)
*/
public class FoldingModelSupport {
public static final String PLACEHOLDER = " ";
diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/patch/ApplyPatchMergeTool.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/patch/ApplyPatchMergeTool.java
index 5458ebafd5ed..26a8bb6afa8a 100644
--- a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/patch/ApplyPatchMergeTool.java
+++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/patch/ApplyPatchMergeTool.java
@@ -86,6 +86,7 @@ public class ApplyPatchMergeTool implements MergeTool {
return myViewer.getPreferredFocusedComponent();
}
+ @NotNull
@Override
public ToolbarComponents init() {
final Project project = myMergeContext.getProject();