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
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) {
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;
+ }
+ }
}
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..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
@@ -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);
- //}
- return insets;
+ final JBInsets result = JBUI.insets(insets);
+ if (shouldPaintWrapperPanel()) {
+ result.top += JBUI.scale(1);
+ }
+ return result;
}
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() {
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();
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();