From 0ce6c7a234b02cc09cf4e3ff7c17b3295738d660 Mon Sep 17 00:00:00 2001 From: Konstantin Kolosovsky Date: Wed, 4 Mar 2015 08:08:00 +0300 Subject: [PATCH 001/129] svn: Refactored MergeChecker - used SvnChangeList instance (instead of just revision number), @NotNull --- .../idea/svn/integrate/ToBeMergedDialog.java | 2 +- .../jetbrains/idea/svn/mergeinfo/MergeChecker.java | 12 ++++++++++-- .../idea/svn/mergeinfo/OneShotMergeInfoHelper.java | 5 +++-- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/ToBeMergedDialog.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/ToBeMergedDialog.java index 7eb3b62c3ddc..d1ec9715ae45 100644 --- a/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/ToBeMergedDialog.java +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/integrate/ToBeMergedDialog.java @@ -265,7 +265,7 @@ public class ToBeMergedDialog extends DialogWrapper implements MergeDialogI { final List svnChangeLists = ContainerUtil.findAll(changeLists, SvnChangeList.class); for (SvnChangeList svnChangeList : svnChangeLists) { - final Collection notMerged = myMergeChecker.getNotMergedPaths(svnChangeList.getNumber()); + final Collection notMerged = myMergeChecker.getNotMergedPaths(svnChangeList); if (!ContainerUtil.isEmpty(notMerged)) { for (String path : svnChangeList.getAffectedPaths()) { diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/mergeinfo/MergeChecker.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/mergeinfo/MergeChecker.java index e8fc08f4c7d0..6e6e66571c8c 100644 --- a/plugins/svn4idea/src/org/jetbrains/idea/svn/mergeinfo/MergeChecker.java +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/mergeinfo/MergeChecker.java @@ -1,12 +1,20 @@ package org.jetbrains.idea.svn.mergeinfo; +import com.intellij.openapi.vcs.VcsException; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import org.jetbrains.idea.svn.history.SvnChangeList; import java.util.Collection; public interface MergeChecker { - SvnMergeInfoCache.MergeCheckResult checkList(SvnChangeList list); + + void prepare() throws VcsException; + + @NotNull + SvnMergeInfoCache.MergeCheckResult checkList(@NotNull SvnChangeList changeList); // if nothing, maybe all not merged or merged: here only partly not merged - Collection getNotMergedPaths(long number); + @Nullable + Collection getNotMergedPaths(@NotNull SvnChangeList changeList); } diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/mergeinfo/OneShotMergeInfoHelper.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/mergeinfo/OneShotMergeInfoHelper.java index bdd13c820acb..aa42733c4ed5 100644 --- a/plugins/svn4idea/src/org/jetbrains/idea/svn/mergeinfo/OneShotMergeInfoHelper.java +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/mergeinfo/OneShotMergeInfoHelper.java @@ -64,6 +64,7 @@ public class OneShotMergeInfoHelper implements MergeChecker { }); } + @Override public void prepare() throws VcsException { Depth depth = Depth.allOrEmpty(myMergeContext.getVcs().getSvnConfiguration().isCheckNestedForQuickMerge()); File file = myMergeContext.getWcInfo().getRootInfo().getIoFile(); @@ -73,8 +74,8 @@ public class OneShotMergeInfoHelper implements MergeChecker { } @Nullable - public Collection getNotMergedPaths(long number) { - return myPartiallyMerged.get(number); + public Collection getNotMergedPaths(@NotNull SvnChangeList changeList) { + return myPartiallyMerged.get(changeList.getNumber()); } @NotNull From d74c2edbf4e06d4ee36bc33b2c6c21a3b1e649cb Mon Sep 17 00:00:00 2001 From: Dmitry Batrak Date: Mon, 23 Mar 2015 19:28:18 +0300 Subject: [PATCH 002/129] IDEA-136853 readonly locker doesn't work well between splits --- .../openapi/wm/impl/IdeFrameImpl.java | 2 +- .../status/ToggleReadOnlyAttributePanel.java | 22 +++++++++++++++---- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/openapi/wm/impl/IdeFrameImpl.java b/platform/platform-impl/src/com/intellij/openapi/wm/impl/IdeFrameImpl.java index 3dfbe464e517..9d80e5a5746c 100644 --- a/platform/platform-impl/src/com/intellij/openapi/wm/impl/IdeFrameImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/wm/impl/IdeFrameImpl.java @@ -422,7 +422,7 @@ public class IdeFrameImpl extends JFrame implements IdeFrameEx, DataProvider { final LineSeparatorPanel lineSeparatorPanel = new LineSeparatorPanel(project); statusBar.addWidget(lineSeparatorPanel, "before " + encodingPanel.ID()); - final ToggleReadOnlyAttributePanel readOnlyAttributePanel = new ToggleReadOnlyAttributePanel(); + final ToggleReadOnlyAttributePanel readOnlyAttributePanel = new ToggleReadOnlyAttributePanel(project); final InsertOverwritePanel insertOverwritePanel = new InsertOverwritePanel(project); statusBar.addWidget(insertOverwritePanel, "after Encoding"); diff --git a/platform/platform-impl/src/com/intellij/openapi/wm/impl/status/ToggleReadOnlyAttributePanel.java b/platform/platform-impl/src/com/intellij/openapi/wm/impl/status/ToggleReadOnlyAttributePanel.java index 3b89e81eb1f5..98c5aee6653d 100644 --- a/platform/platform-impl/src/com/intellij/openapi/wm/impl/status/ToggleReadOnlyAttributePanel.java +++ b/platform/platform-impl/src/com/intellij/openapi/wm/impl/status/ToggleReadOnlyAttributePanel.java @@ -19,7 +19,7 @@ import com.intellij.icons.AllIcons; import com.intellij.ide.DataManager; import com.intellij.openapi.actionSystem.CommonDataKeys; import com.intellij.openapi.application.ApplicationManager; -import com.intellij.openapi.fileEditor.FileDocumentManager; +import com.intellij.openapi.fileEditor.*; import com.intellij.openapi.fileEditor.ex.FileEditorManagerEx; import com.intellij.openapi.fileEditor.impl.EditorsSplitters; import com.intellij.openapi.project.Project; @@ -30,6 +30,7 @@ import com.intellij.openapi.wm.StatusBarWidget; import com.intellij.ui.UIBundle; import com.intellij.util.Consumer; import com.intellij.util.io.ReadOnlyAttributeUtil; +import com.intellij.util.messages.MessageBusConnection; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -37,10 +38,17 @@ import javax.swing.*; import java.awt.event.MouseEvent; import java.io.IOException; -public class ToggleReadOnlyAttributePanel implements StatusBarWidget.Multiframe, StatusBarWidget.IconPresentation { - +public class ToggleReadOnlyAttributePanel extends FileEditorManagerAdapter implements StatusBarWidget.Multiframe, + StatusBarWidget.IconPresentation{ + private Project myProject; private StatusBar myStatusBar; + public ToggleReadOnlyAttributePanel(@NotNull Project project) { + myProject = project; + MessageBusConnection connection = project.getMessageBus().connect(this); + connection.subscribe(FileEditorManagerListener.FILE_EDITOR_MANAGER, this); + } + @NotNull public Icon getIcon() { VirtualFile virtualFile = getCurrentFile(); @@ -55,7 +63,7 @@ public class ToggleReadOnlyAttributePanel implements StatusBarWidget.Multiframe, @Override public StatusBarWidget copy() { - return new ToggleReadOnlyAttributePanel(); + return new ToggleReadOnlyAttributePanel(myProject); } public WidgetPresentation getPresentation(@NotNull PlatformType type) { @@ -64,6 +72,7 @@ public class ToggleReadOnlyAttributePanel implements StatusBarWidget.Multiframe, public void dispose() { myStatusBar = null; + myProject = null; } public void install(@NotNull StatusBar statusBar) { @@ -119,4 +128,9 @@ public class ToggleReadOnlyAttributePanel implements StatusBarWidget.Multiframe, EditorsSplitters splitters = FileEditorManagerEx.getInstanceEx(project).getSplittersFor(myStatusBar.getComponent()); return splitters.getCurrentFile(); } + + @Override + public void selectionChanged(@NotNull FileEditorManagerEvent event) { + myStatusBar.updateWidget(ID()); + } } From 483e4d2799af1e5edd8337e016f9aca06b931e62 Mon Sep 17 00:00:00 2001 From: Bas Leijdekkers Date: Mon, 23 Mar 2015 16:56:11 +0100 Subject: [PATCH 003/129] SSR: rewrite string constraints handling to enable advanced nested patterns and scripts --- .../XmlStructuralSearchProfile.java | 3 +- .../StringToConstraintsTransformer.java | 339 +++++++++--------- .../source/messages/SSRBundle.properties | 26 +- .../StringToConstraintsTransformerTest.java | 59 ++- 4 files changed, 241 insertions(+), 186 deletions(-) diff --git a/platform/structuralsearch/source/com/intellij/structuralsearch/XmlStructuralSearchProfile.java b/platform/structuralsearch/source/com/intellij/structuralsearch/XmlStructuralSearchProfile.java index b2f83df3f855..5882e2f69f4f 100644 --- a/platform/structuralsearch/source/com/intellij/structuralsearch/XmlStructuralSearchProfile.java +++ b/platform/structuralsearch/source/com/intellij/structuralsearch/XmlStructuralSearchProfile.java @@ -212,7 +212,8 @@ public class XmlStructuralSearchProfile extends StructuralSearchProfile { createSearchTemplateInfo("xml attribute value", "<'_tag '_attribute=\"'value\"/>", HTML_XML, StdFileTypes.XML), createSearchTemplateInfo("html attribute value", "<'_tag '_attribute='value />", HTML_XML, StdFileTypes.HTML), createSearchTemplateInfo("xml/html tag value", "'_content*
", HTML_XML, StdFileTypes.HTML), - //createSearchTemplateInfo("li not contained in ul/ol", "[!within( \"<'_tag:[regex( \"ul|ol\" )] />\" )]
  • ", HTML_XML, StdFileTypes.HTML) + createSearchTemplateInfo("
  • not contained in