From 762fc193868ee897695c06d47bb7ff2aba342d94 Mon Sep 17 00:00:00 2001 From: Julia Beliaeva Date: Fri, 29 Dec 2017 22:21:34 +0300 Subject: [PATCH] [vcs-log] align changes toolbar height with main toolbar height Main toolbar has text components that can get taller than standard action buttons for various text sizes. So in order for the toolbars to be even, need to manually adjust changes toolbar height. --- .../vcs/changes/ui/ChangesBrowserBase.java | 6 +++++- .../intellij/vcs/log/ui/frame/MainFrame.java | 1 + .../vcs/log/ui/frame/VcsLogChangesBrowser.java | 17 ++++++++++++++++- 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ui/ChangesBrowserBase.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ui/ChangesBrowserBase.java index 1c86403e5e1a..29434af8c04c 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ui/ChangesBrowserBase.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ui/ChangesBrowserBase.java @@ -78,7 +78,7 @@ public abstract class ChangesBrowserBase extends JPanel implements DataProvider setFocusable(false); JPanel topPanel = new JPanel(new BorderLayout()); - topPanel.add(myToolbar.getComponent(), BorderLayout.CENTER); + topPanel.add(getToolbarComponent(), BorderLayout.CENTER); JComponent headerPanel = createHeaderPanel(); if (headerPanel != null) topPanel.add(headerPanel, BorderLayout.EAST); @@ -92,6 +92,10 @@ public abstract class ChangesBrowserBase extends JPanel implements DataProvider myShowDiffAction.registerCustomShortcutSet(this, null); } + @NotNull + protected JComponent getToolbarComponent() { + return myToolbar.getComponent(); + } @NotNull protected abstract DefaultTreeModel buildTreeModel(boolean showFlatten); diff --git a/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/frame/MainFrame.java b/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/frame/MainFrame.java index 2f95929c9660..022bed7ff72b 100644 --- a/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/frame/MainFrame.java +++ b/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/frame/MainFrame.java @@ -109,6 +109,7 @@ public class MainFrame extends JPanel implements DataProvider, Disposable { myTextFilter = myFilterUi.createTextFilter(); myToolbar = createActionsToolbar(); + myChangesBrowser.setToolbarHeightReferent(myToolbar); JComponent toolbars = new JPanel(new BorderLayout()); toolbars.add(myToolbar, BorderLayout.NORTH); diff --git a/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/frame/VcsLogChangesBrowser.java b/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/frame/VcsLogChangesBrowser.java index 2d5aeacf999f..9683cbc7f7ac 100644 --- a/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/frame/VcsLogChangesBrowser.java +++ b/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/frame/VcsLogChangesBrowser.java @@ -34,6 +34,7 @@ import com.intellij.openapi.vcs.changes.ui.*; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.ui.IdeBorderFactory; import com.intellij.ui.SideBorder; +import com.intellij.ui.components.panels.Wrapper; import com.intellij.util.Function; import com.intellij.util.containers.ContainerUtil; import com.intellij.vcs.log.CommitId; @@ -52,6 +53,7 @@ import gnu.trove.THashSet; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import javax.swing.*; import javax.swing.tree.DefaultTreeModel; import java.util.*; @@ -72,6 +74,7 @@ class VcsLogChangesBrowser extends ChangesBrowserBase implements Disposable { @NotNull private final Set myRoots = ContainerUtil.newHashSet(); @NotNull private final List myChanges = ContainerUtil.newArrayList(); @NotNull private final Map> myChangesToParents = ContainerUtil.newHashMap(); + @NotNull private final Wrapper myToolbarWrapper; public VcsLogChangesBrowser(@NotNull Project project, @NotNull MainVcsLogUiProperties uiProperties, @@ -94,12 +97,24 @@ class VcsLogChangesBrowser extends ChangesBrowserBase implements Disposable { Disposer.register(parent, this); + myToolbarWrapper = new Wrapper(getToolbar().getComponent()); + init(); getViewerScrollPane().setBorder(IdeBorderFactory.createBorder(SideBorder.TOP)); myViewer.rebuildTree(); } + @NotNull + @Override + protected JComponent getToolbarComponent() { + return myToolbarWrapper; + } + + public void setToolbarHeightReferent(@NotNull JComponent referent) { + myToolbarWrapper.setVerticalSizeReferent(referent); + } + @Override public void dispose() { myUiProperties.removeChangeListener(myListener); @@ -216,7 +231,7 @@ class VcsLogChangesBrowser extends ChangesBrowserBase implements Disposable { List selectedChanges = VcsTreeModelData.selected(myViewer).userObjects(Change.class); Set selectedVcs = ChangesUtil.getAffectedVcses(selectedChanges, myProject); if (selectedVcs.size() == 1) return notNull(getFirstItem(selectedVcs)); - + return null; }