From b65fc4b91f546da5b76eab617d2a51b6daa5c336 Mon Sep 17 00:00:00 2001 From: "Egor.Ushakov" Date: Fri, 12 Feb 2016 16:45:52 +0300 Subject: [PATCH 1/7] fixes for IDEA-CR-8404 --- .../ide/navigationToolbar/ui/AbstractNavBarUI.java | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/ide/navigationToolbar/ui/AbstractNavBarUI.java b/platform/lang-impl/src/com/intellij/ide/navigationToolbar/ui/AbstractNavBarUI.java index 48ca9172ae75..0e4716469318 100644 --- a/platform/lang-impl/src/com/intellij/ide/navigationToolbar/ui/AbstractNavBarUI.java +++ b/platform/lang-impl/src/com/intellij/ide/navigationToolbar/ui/AbstractNavBarUI.java @@ -17,7 +17,6 @@ package com.intellij.ide.navigationToolbar.ui; import com.intellij.ide.navigationToolbar.NavBarItem; import com.intellij.ide.navigationToolbar.NavBarPanel; -import com.intellij.ide.navigationToolbar.NavBarRootPaneExtension; import com.intellij.ide.ui.UISettings; import com.intellij.openapi.util.SystemInfo; import com.intellij.ui.ColorUtil; @@ -290,15 +289,15 @@ public abstract class AbstractNavBarUI implements NavBarUI { @Override public Insets getWrapperPanelInsets(Insets insets) { - //final JBInsets result = JBUI.insets(insets); - //if (shouldPaintWrapperPanel()) { - // result.top += JBUI.scale(1); - //} + final JBInsets result = JBUI.insets(insets); + if (shouldPaintWrapperPanel()) { + result.top += JBUI.scale(1); + } return insets; } private static boolean shouldPaintWrapperPanel() { - return !UISettings.getInstance().SHOW_MAIN_TOOLBAR && NavBarRootPaneExtension.runToolbarExists(); + return false; //return !UISettings.getInstance().SHOW_MAIN_TOOLBAR && NavBarRootPaneExtension.runToolbarExists(); } protected Color getBackgroundColor() { From dfaebe2e22022441d8c7465a25d749386007d574 Mon Sep 17 00:00:00 2001 From: "Egor.Ushakov" Date: Fri, 12 Feb 2016 16:50:42 +0300 Subject: [PATCH 2/7] misprint (IDEA-CR-8404) --- .../com/intellij/ide/navigationToolbar/ui/AbstractNavBarUI.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platform/lang-impl/src/com/intellij/ide/navigationToolbar/ui/AbstractNavBarUI.java b/platform/lang-impl/src/com/intellij/ide/navigationToolbar/ui/AbstractNavBarUI.java index 0e4716469318..b3f4d4c33b35 100644 --- a/platform/lang-impl/src/com/intellij/ide/navigationToolbar/ui/AbstractNavBarUI.java +++ b/platform/lang-impl/src/com/intellij/ide/navigationToolbar/ui/AbstractNavBarUI.java @@ -293,7 +293,7 @@ public abstract class AbstractNavBarUI implements NavBarUI { if (shouldPaintWrapperPanel()) { result.top += JBUI.scale(1); } - return insets; + return result; } private static boolean shouldPaintWrapperPanel() { From 8954da0f592fe6e316eb2c03b5fd5496d311b08a Mon Sep 17 00:00:00 2001 From: Aleksey Pivovarov Date: Fri, 12 Feb 2016 14:24:01 +0300 Subject: [PATCH 3/7] add terminal plugin to community-main.iml --- community-main.iml | 1 + 1 file changed, 1 insertion(+) diff --git a/community-main.iml b/community-main.iml index 6dcf144cc226..c6a02fa3a573 100644 --- a/community-main.iml +++ b/community-main.iml @@ -122,5 +122,6 @@ + \ No newline at end of file From 3900c4f699d079e0b59bda014f0cd67029599fa7 Mon Sep 17 00:00:00 2001 From: Aleksey Pivovarov Date: Fri, 12 Feb 2016 14:24:52 +0300 Subject: [PATCH 4/7] ui: DumbAware actions in DialogWrapper --- .../src/com/intellij/openapi/ui/DialogWrapper.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/platform/platform-api/src/com/intellij/openapi/ui/DialogWrapper.java b/platform/platform-api/src/com/intellij/openapi/ui/DialogWrapper.java index 9a66d45345a9..f66a87c3c9d0 100644 --- a/platform/platform-api/src/com/intellij/openapi/ui/DialogWrapper.java +++ b/platform/platform-api/src/com/intellij/openapi/ui/DialogWrapper.java @@ -30,6 +30,7 @@ import com.intellij.openapi.application.ModalityState; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.help.HelpManager; import com.intellij.openapi.keymap.KeymapUtil; +import com.intellij.openapi.project.DumbAwareAction; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.popup.util.PopupUtil; import com.intellij.openapi.util.*; @@ -710,7 +711,7 @@ public abstract class DialogWrapper { final char mnemonic = (char)eachInfo.getMnemonic(); JRootPane rootPane = getPeer().getRootPane(); if (rootPane != null) { - new AnAction() { + new DumbAwareAction() { @Override public void actionPerformed(AnActionEvent e) { final JBOptionButton buttonToActivate = eachInfo.getButton(); @@ -1250,7 +1251,7 @@ public abstract class DialogWrapper { myPeer.setContentPane(root); final CustomShortcutSet sc = new CustomShortcutSet(SHOW_OPTION_KEYSTROKE); - final AnAction toggleShowOptions = new AnAction() { + final AnAction toggleShowOptions = new DumbAwareAction() { @Override public void actionPerformed(@NotNull AnActionEvent e) { expandNextOptionButton(); @@ -1306,7 +1307,7 @@ public abstract class DialogWrapper { } private static void installEnterHook(JComponent root, Disposable disposable) { - new AnAction() { + new DumbAwareAction() { @Override public void actionPerformed(AnActionEvent e) { final Component owner = KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner(); From ec85e601d449b37f1fe55e5824f375c14f7cce66 Mon Sep 17 00:00:00 2001 From: Aleksey Pivovarov Date: Fri, 12 Feb 2016 14:17:35 +0300 Subject: [PATCH 5/7] diff: do not expose Throwable.toString() to the user use getMessage() instead --- .../com/intellij/diff/chains/DiffRequestProducerException.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platform/diff-api/src/com/intellij/diff/chains/DiffRequestProducerException.java b/platform/diff-api/src/com/intellij/diff/chains/DiffRequestProducerException.java index 2b1657a4cf52..81991cfe7ddf 100644 --- a/platform/diff-api/src/com/intellij/diff/chains/DiffRequestProducerException.java +++ b/platform/diff-api/src/com/intellij/diff/chains/DiffRequestProducerException.java @@ -17,7 +17,7 @@ package com.intellij.diff.chains; public class DiffRequestProducerException extends Exception { public DiffRequestProducerException(Throwable cause) { - super(cause); + super(cause.getMessage(), cause); } public DiffRequestProducerException(String message, Throwable cause) { From b94b2bf5433389a64a4f21e293db3b8731cf17cc Mon Sep 17 00:00:00 2001 From: Aleksey Pivovarov Date: Fri, 12 Feb 2016 13:52:16 +0300 Subject: [PATCH 6/7] diff: better UI for error messages * allow to copy text * support newlines in message --- .../requests/UnknownFileTypeDiffRequest.java | 7 +- .../src/com/intellij/diff/util/DiffUtil.java | 76 ++++++++++++++----- 2 files changed, 64 insertions(+), 19 deletions(-) diff --git a/platform/diff-impl/src/com/intellij/diff/requests/UnknownFileTypeDiffRequest.java b/platform/diff-impl/src/com/intellij/diff/requests/UnknownFileTypeDiffRequest.java index 03a21984ff2d..d3ee5f5c1614 100644 --- a/platform/diff-impl/src/com/intellij/diff/requests/UnknownFileTypeDiffRequest.java +++ b/platform/diff-impl/src/com/intellij/diff/requests/UnknownFileTypeDiffRequest.java @@ -17,7 +17,6 @@ package com.intellij.diff.requests; import com.intellij.diff.DiffContext; import com.intellij.diff.DiffContextEx; -import com.intellij.diff.util.DiffUtil; import com.intellij.openapi.fileTypes.FileType; import com.intellij.openapi.fileTypes.FileTypeManager; import com.intellij.openapi.fileTypes.UnknownFileType; @@ -28,11 +27,14 @@ import com.intellij.openapi.vcs.changes.issueLinks.LinkMouseListenerBase; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.ui.SimpleColoredComponent; import com.intellij.ui.SimpleTextAttributes; +import com.intellij.util.ui.GridBag; +import com.intellij.util.ui.JBUI; import com.intellij.util.ui.UIUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import javax.swing.*; +import java.awt.*; public class UnknownFileTypeDiffRequest extends ComponentDiffRequest { @Nullable private final String myFileName; @@ -52,6 +54,7 @@ public class UnknownFileTypeDiffRequest extends ComponentDiffRequest { @Override public JComponent getComponent(@NotNull final DiffContext context) { final SimpleColoredComponent label = new SimpleColoredComponent(); + label.setTextAlign(SwingConstants.CENTER); label.append("Can't show diff for unknown file type. ", new SimpleTextAttributes(SimpleTextAttributes.STYLE_PLAIN, UIUtil.getInactiveTextColor())); if (myFileName != null) { @@ -69,7 +72,7 @@ public class UnknownFileTypeDiffRequest extends ComponentDiffRequest { }); LinkMouseListenerBase.installSingleTagOn(label); } - return DiffUtil.createMessagePanel(label); + return JBUI.Panels.simplePanel(label).withBorder(JBUI.Borders.empty(5)); } @Nullable diff --git a/platform/diff-impl/src/com/intellij/diff/util/DiffUtil.java b/platform/diff-impl/src/com/intellij/diff/util/DiffUtil.java index fb87929c8f9d..d05bf977b1b0 100644 --- a/platform/diff-impl/src/com/intellij/diff/util/DiffUtil.java +++ b/platform/diff-impl/src/com/intellij/diff/util/DiffUtil.java @@ -84,7 +84,7 @@ import com.intellij.util.DocumentUtil; import com.intellij.util.Function; import com.intellij.util.LineSeparator; import com.intellij.util.containers.ContainerUtil; -import com.intellij.util.ui.GridBag; +import com.intellij.util.ui.JBInsets; import com.intellij.util.ui.JBUI; import com.intellij.util.ui.UIUtil; import org.jetbrains.annotations.*; @@ -284,24 +284,21 @@ public class DiffUtil { @NotNull public static JPanel createMessagePanel(@NotNull String message) { - Pair pair = createMessagePanel(); - pair.getSecond().setText(message); - return pair.getFirst(); - } - - @NotNull - public static Pair createMessagePanel() { - JLabel label = new JLabel(); + String text = StringUtil.replace(message, "\n", "
"); + JLabel label = new JBLabel(text) { + @Override + public Dimension getMinimumSize() { + Dimension size = super.getMinimumSize(); + size.width = Math.min(size.width, 200); + size.height = Math.min(size.height, 100); + return size; + } + }.setCopyable(true); label.setForeground(UIUtil.getInactiveTextColor()); - JPanel wrapper = createMessagePanel(label); - return Pair.create(wrapper, label); - } - @NotNull - public static JPanel createMessagePanel(@NotNull JComponent comp) { - JPanel wrapper = new JPanel(new GridBagLayout()); - wrapper.add(comp, new GridBag().insets(JBUI.insets(1))); - return wrapper; + JPanel panel = new CenteredPanel(label); + panel.setBorder(JBUI.Borders.empty(5)); + return panel; } public static void addActionBlock(@NotNull DefaultActionGroup group, AnAction... actions) { @@ -1289,4 +1286,49 @@ public class DiffUtil { return height; } } + + private static class CenteredPanel extends JPanel { + private final JComponent myComponent; + + public CenteredPanel(@NotNull JComponent component) { + myComponent = component; + add(component); + } + + @Override + public void doLayout() { + final Dimension size = getSize(); + final Dimension preferredSize = myComponent.getPreferredSize(); + + Insets insets = getInsets(); + JBInsets.removeFrom(size, insets); + + int width = Math.min(size.width, preferredSize.width); + int height = Math.min(size.height, preferredSize.height); + int x = Math.max(0, (size.width - preferredSize.width) / 2); + int y = Math.max(0, (size.height - preferredSize.height) / 2); + + myComponent.setBounds(insets.left + x, insets.top + y, width, height); + } + + @Override + public Dimension getPreferredSize() { + return addInsets(myComponent.getPreferredSize()); + } + + @Override + public Dimension getMinimumSize() { + return addInsets(myComponent.getMinimumSize()); + } + + @Override + public Dimension getMaximumSize() { + return addInsets(myComponent.getMaximumSize()); + } + + private Dimension addInsets(Dimension dimension) { + JBInsets.addTo(dimension, getInsets()); + return dimension; + } + } } From bcea02d5c51ea77d45c93fa7573db446dadbe96e Mon Sep 17 00:00:00 2001 From: Aleksey Pivovarov Date: Fri, 12 Feb 2016 16:38:54 +0300 Subject: [PATCH 7/7] lst: mark file as unchanged on ranges recalculation --- .../src/com/intellij/openapi/vcs/ex/LineStatusTracker.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/ex/LineStatusTracker.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/ex/LineStatusTracker.java index d40546df0d85..6d33c46ab480 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/ex/LineStatusTracker.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/ex/LineStatusTracker.java @@ -156,6 +156,10 @@ public class LineStatusTracker { for (final Range range : myRanges) { createHighlighter(range); } + + if (myRanges.isEmpty()) { + markFileUnchanged(); + } } catch (FilesTooBigForDiffException e) { installAnathema();