[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.
This commit is contained in:
Julia Beliaeva
2017-12-31 00:04:36 +03:00
parent 02e4c9bbc1
commit 762fc19386
3 changed files with 22 additions and 2 deletions
@@ -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);
@@ -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);
@@ -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<VirtualFile> myRoots = ContainerUtil.newHashSet();
@NotNull private final List<Change> myChanges = ContainerUtil.newArrayList();
@NotNull private final Map<CommitId, Set<Change>> 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<Change> selectedChanges = VcsTreeModelData.selected(myViewer).userObjects(Change.class);
Set<AbstractVcs> selectedVcs = ChangesUtil.getAffectedVcses(selectedChanges, myProject);
if (selectedVcs.size() == 1) return notNull(getFirstItem(selectedVcs));
return null;
}