mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-54491 diff: ask if there are left unprocessed changes on merge apply
This commit is contained in:
+17
-3
@@ -53,13 +53,14 @@ import com.intellij.openapi.fileTypes.FileType;
|
||||
import com.intellij.openapi.fileTypes.FileTypes;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.ui.DialogBuilder;
|
||||
import com.intellij.openapi.ui.DialogWrapper;
|
||||
import com.intellij.openapi.ui.LabeledComponent;
|
||||
import com.intellij.openapi.ui.Messages;
|
||||
import com.intellij.openapi.util.Disposer;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.openapi.vfs.LocalFileSystem;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.ui.EditorNotificationPanel;
|
||||
import com.intellij.util.diff.FilesTooBigForDiffException;
|
||||
import com.intellij.util.containers.Convertor;
|
||||
import gnu.trove.TIntHashSet;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -371,7 +372,20 @@ public class MergePanel2 implements DiffViewer {
|
||||
data.customizeToolbar(myPanel.resetToolbar());
|
||||
myPanel.registerToolbarActions();
|
||||
if ( data instanceof MergeRequestImpl && myBuilder != null){
|
||||
((MergeRequestImpl)data).setActions(myBuilder, this);
|
||||
Convertor<DialogWrapper, Boolean> preOkHook = new Convertor<DialogWrapper, Boolean>() {
|
||||
@Override
|
||||
public Boolean convert(DialogWrapper dialog) {
|
||||
ChangeCounter counter = ChangeCounter.getOrCreate(myMergeList);
|
||||
int changes = counter.getChangeCounter();
|
||||
int conflicts = counter.getConflictCounter();
|
||||
if (changes == 0 && conflicts == 0) return true;
|
||||
return Messages.showYesNoDialog(dialog.getRootPane(),
|
||||
DiffBundle.message("merge.dialog.apply.partially.resolved.changes.confirmation.message", changes, conflicts),
|
||||
DiffBundle.message("apply.partially.resolved.merge.dialog.title"),
|
||||
Messages.getQuestionIcon()) == Messages.YES;
|
||||
}
|
||||
};
|
||||
((MergeRequestImpl)data).setActions(myBuilder, this, preOkHook);
|
||||
}
|
||||
}
|
||||
finally {
|
||||
|
||||
+6
@@ -28,6 +28,7 @@ import com.intellij.openapi.ui.DialogBuilder;
|
||||
import com.intellij.openapi.ui.DialogWrapper;
|
||||
import com.intellij.openapi.ui.Messages;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.util.containers.Convertor;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -189,6 +190,10 @@ public class MergeRequestImpl extends MergeRequest {
|
||||
}
|
||||
|
||||
public void setActions(final DialogBuilder builder, MergePanel2 mergePanel) {
|
||||
setActions(builder, mergePanel, null);
|
||||
}
|
||||
|
||||
public void setActions(final DialogBuilder builder, MergePanel2 mergePanel, final Convertor<DialogWrapper, Boolean> preOkHook) {
|
||||
builder.removeAllActions(); // otherwise dialog will get default actions (OK, Cancel)
|
||||
|
||||
if (myOkButtonPresentation != null) {
|
||||
@@ -200,6 +205,7 @@ public class MergeRequestImpl extends MergeRequest {
|
||||
builder.setOkOperation(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (preOkHook != null && !preOkHook.convert(builder.getDialogWrapper())) return;
|
||||
myOkButtonPresentation.run(builder.getDialogWrapper());
|
||||
}
|
||||
});
|
||||
|
||||
@@ -67,6 +67,8 @@ merge.partial.diff.action.name.0.1=Compare left and middle panel contents
|
||||
merge.partial.diff.action.name.1.2=Compare middle and right panel contents
|
||||
merge.dialog.exit.without.applying.changes.confirmation.message=Are you sure you want to exit without applying changes?
|
||||
cancel.visual.merge.dialog.title=Cancel Visual Merge
|
||||
merge.dialog.apply.partially.resolved.changes.confirmation.message=There are {0, choice, 0#|1#one change|2#{0, number} changes}{0, choice, 0#|1#'{1, choice, 0#|1# and }'}{1, choice, 0#|1#one conflict|2#{1, number} conflicts} left unprocessed.\nAre you sure you want to save changes and finish merging?
|
||||
apply.partially.resolved.merge.dialog.title=Apply Changes
|
||||
merge.all.changes.have.processed.save.and.finish.confirmation.text=All changes have been processed.\nWould you like to save changes and finish merging?
|
||||
all.changes.processed.dialog.title=All Changes Processed
|
||||
merge.save.and.finish.button=Save and &Finish
|
||||
|
||||
Reference in New Issue
Block a user