text="Show History as Graph" description="Show History as Graph" internal="true"/>
<action class="com.intellij.vcs.log.ui.actions.PrintIndexInfoAction" id="Vcs.Log.Print.Index.Info"
text="Print Index Info" description="Print Index Info for a Commit into Log File" internal="true"/>
+ <action class="com.intellij.vcs.log.ui.actions.ShowCommitTooltipAction" id="Vcs.Log.ShowTooltip"
+ text="Show Commit Tooltip" description="Show tooltip for currently selected commit in the Log"
+ use-shortcut-of="QuickJavaDoc"/>
<group id="Vcs.Log.Settings">
<reference id="Vcs.Log.ShowRootsColumnAction"/>
--- /dev/null
+/*
+ * Copyright 2000-2016 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.intellij.vcs.log.ui.actions;
+
+import com.intellij.openapi.actionSystem.AnActionEvent;
+import com.intellij.openapi.project.DumbAwareAction;
+import com.intellij.openapi.project.Project;
+import com.intellij.vcs.log.VcsLogDataKeys;
+import com.intellij.vcs.log.VcsLogUi;
+import com.intellij.vcs.log.ui.VcsLogUiImpl;
+import com.intellij.vcs.log.ui.frame.VcsLogGraphTable;
+import org.jetbrains.annotations.NotNull;
+
+public class ShowCommitTooltipAction extends DumbAwareAction {
+ public ShowCommitTooltipAction() {
+ super("Show Commit Tooltip", "Show tooltip for currently selected commit in the Log", null);
+ }
+
+ @Override
+ public void update(@NotNull AnActionEvent e) {
+ Project project = e.getProject();
+ VcsLogUi ui = e.getData(VcsLogDataKeys.VCS_LOG_UI);
+ if (project == null || ui == null) {
+ e.getPresentation().setEnabledAndVisible(false);
+ }
+ else {
+ e.getPresentation().setEnabledAndVisible(ui instanceof VcsLogUiImpl && ((VcsLogUiImpl)ui).getTable().getSelectedRowCount() == 1);
+ }
+ }
+
+ @Override
+ public void actionPerformed(@NotNull AnActionEvent e) {
+ VcsLogGraphTable table = ((VcsLogUiImpl)e.getRequiredData(VcsLogDataKeys.VCS_LOG_UI)).getTable();
+ table.showTooltip(table.getSelectedRow());
+ }
+}
}
private void showOrHideCommitTooltip(int row, int column, @NotNull MouseEvent e) {
- JComponent tipComponent = myCommitRenderer.getTooltip(myTable.getValueAt(row, column), calcPoint4Graph(e.getPoint()),
+ if (!showTooltip(row, column, e.getPoint(), false)) {
+ if (IdeTooltipManager.getInstance().hasCurrent()) {
+ IdeTooltipManager.getInstance().hideCurrent(e);
+ }
+ }
+ }
+
+ private boolean showTooltip(int row, int column, @NotNull Point point, boolean now) {
+ JComponent tipComponent = myCommitRenderer.getTooltip(myTable.getValueAt(row, column), calcPoint4Graph(point),
myTable.getColumnModel().getColumn(GraphTableModel.COMMIT_COLUMN)
.getWidth());
if (tipComponent != null) {
myTable.getExpandableItemsHandler().setEnabled(false);
IdeTooltip tooltip =
- new IdeTooltip(myTable, e.getPoint(), new Wrapper(tipComponent)).setPreferredPosition(Balloon.Position.below);
- IdeTooltipManager.getInstance().show(tooltip, false);
- }
- else {
- if (IdeTooltipManager.getInstance().hasCurrent()) {
- IdeTooltipManager.getInstance().hideCurrent(e);
- }
+ new IdeTooltip(myTable, point, new Wrapper(tipComponent)).setPreferredPosition(Balloon.Position.below);
+ IdeTooltipManager.getInstance().show(tooltip, now);
+ return true;
}
+ return false;
+ }
+
+ public void showTooltip(int row) {
+ TableColumn rootColumn = myTable.getColumnModel().getColumn(GraphTableModel.ROOT_COLUMN);
+ Point point = new Point(rootColumn.getWidth() + myCommitRenderer.getToolipXCoordinate(row),
+ row * myTable.getRowHeight() + myTable.getRowHeight() / 2);
+ showTooltip(row, GraphTableModel.COMMIT_COLUMN, point, true);
}
private void performRootColumnAction() {
myController.handleGraphAnswer(answer, dataCouldChange, null, null);
}
+ public void showTooltip(int row) {
+ myController.showTooltip(row);
+ }
+
static class Selection {
@NotNull private final VcsLogGraphTable myTable;
@NotNull private final TIntHashSet mySelectedCommits;
import com.intellij.vcs.log.paint.PaintParameters;
import com.intellij.vcs.log.ui.frame.ReferencesPanel;
import com.intellij.vcs.log.ui.frame.VcsLogGraphTable;
+import com.intellij.vcs.log.ui.tables.GraphTableModel;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
+import javax.swing.table.TableColumn;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.util.Collection;
return null;
}
+ public int getToolipXCoordinate(int row) {
+ GraphCommitCell cell = getAssertCommitCell(myGraphTable.getModel().getValueAt(row, GraphTableModel.COMMIT_COLUMN));
+ Collection<VcsRef> refs = cell.getRefsToThisCommit();
+ if (!refs.isEmpty()) {
+ customizeRefsPainter(myReferencePainter, refs, getForeground());
+ TableColumn commitColumn = myGraphTable.getColumnModel().getColumn(GraphTableModel.COMMIT_COLUMN);
+ return commitColumn.getWidth() - (myReferencePainter.getSize().width - LabelPainter.GRADIENT_WIDTH) / 2;
+ }
+ return -1;
+ }
+
private static class PaintInfo {
private int myWidth;
@NotNull private Image myImage;