diff --git a/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/frame/VcsLogGraphTable.java b/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/frame/VcsLogGraphTable.java index 1f22d55cab90..c13304195cbe 100644 --- a/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/frame/VcsLogGraphTable.java +++ b/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/frame/VcsLogGraphTable.java @@ -3,6 +3,7 @@ package com.intellij.vcs.log.ui.frame; import com.intellij.ide.CopyProvider; import com.intellij.openapi.actionSystem.*; import com.intellij.openapi.ide.CopyPasteManager; +import com.intellij.openapi.project.DumbAwareAction; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vcs.changes.Change; import com.intellij.openapi.vcs.changes.committed.CommittedChangesTreeBrowser; @@ -19,12 +20,10 @@ import com.intellij.vcs.log.Hash; import com.intellij.vcs.log.VcsLogHighlighter; import com.intellij.vcs.log.data.DataPack; import com.intellij.vcs.log.data.VcsLogDataHolder; -import com.intellij.vcs.log.graph.ClickGraphAction; -import com.intellij.vcs.log.graph.MouseOverAction; import com.intellij.vcs.log.graph.*; -import com.intellij.vcs.log.ui.render.GraphCommitCell; import com.intellij.vcs.log.newgraph.render.PositionUtil; import com.intellij.vcs.log.ui.VcsLogUiImpl; +import com.intellij.vcs.log.ui.render.GraphCommitCell; import com.intellij.vcs.log.ui.render.GraphCommitCellRender; import com.intellij.vcs.log.ui.tables.AbstractVcsLogTableModel; import org.jetbrains.annotations.NotNull; @@ -94,6 +93,9 @@ public class VcsLogGraphTable extends JBTable implements TypeSafeDataProvider, C addMouseListener(mouseAdapter); PopupHandler.installPopupHandler(this, VcsLogUiImpl.POPUP_ACTION_GROUP, VcsLogUiImpl.VCS_LOG_TABLE_PLACE); + + new ScrollToAction(true).registerCustomShortcutSet(CommonShortcuts.getMoveHome(), this); + new ScrollToAction(false).registerCustomShortcutSet(CommonShortcuts.getMoveEnd(), this); } @Override @@ -387,4 +389,18 @@ public class VcsLogGraphTable extends JBTable implements TypeSafeDataProvider, C } } + + private class ScrollToAction extends DumbAwareAction { + + private final boolean myTop; + + ScrollToAction(boolean top) { + myTop = top; + } + + @Override + public void actionPerformed(AnActionEvent e) { + scrollRectToVisible(getCellRect(myTop ? 0 : getRowCount() - 1, 0, true)); + } + } }