From 35105f382cb5facdbcc3771cf3ad463eee9b3d2a Mon Sep 17 00:00:00 2001 From: Aleksey Pivovarov Date: Mon, 1 Feb 2016 20:01:20 +0300 Subject: [PATCH] IDEA-117462 vcs: History For Selection - support links in commit messages --- .../vcs/history/FileHistoryPanelImpl.java | 8 ++-- .../impl/VcsSelectionHistoryDialog.java | 42 ++++--------------- 2 files changed, 12 insertions(+), 38 deletions(-) diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/history/FileHistoryPanelImpl.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/history/FileHistoryPanelImpl.java index 9ddb208191fa..b1d95df2a156 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/history/FileHistoryPanelImpl.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/history/FileHistoryPanelImpl.java @@ -144,7 +144,7 @@ public class FileHistoryPanelImpl extends PanelWithActionsAndCloseButton { } }; - private static class RevisionColumnInfo extends VcsColumnInfo { + public static class RevisionColumnInfo extends VcsColumnInfo { private final Comparator myComparator; public RevisionColumnInfo(Comparator comparator) { @@ -173,7 +173,7 @@ public class FileHistoryPanelImpl extends PanelWithActionsAndCloseButton { } } - private static class DateColumnInfo extends VcsColumnInfo { + public static class DateColumnInfo extends VcsColumnInfo { public DateColumnInfo() { super(VcsBundle.message("column.name.revision.date")); } @@ -234,7 +234,7 @@ public class FileHistoryPanelImpl extends PanelWithActionsAndCloseButton { } - private static class AuthorColumnInfo extends VcsColumnInfo { + public static class AuthorColumnInfo extends VcsColumnInfo { private final TableCellRenderer AUTHOR_RENDERER = new AuthorCellRenderer(); public AuthorColumnInfo() { @@ -289,7 +289,7 @@ public class FileHistoryPanelImpl extends PanelWithActionsAndCloseButton { } } - private static class MessageColumnInfo extends VcsColumnInfo { + public static class MessageColumnInfo extends VcsColumnInfo { private final ColoredTableCellRenderer myRenderer; private final IssueLinkRenderer myIssueLinkRenderer; diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/history/impl/VcsSelectionHistoryDialog.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/history/impl/VcsSelectionHistoryDialog.java index 095b59958cdf..7dbbe31dd8c6 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/history/impl/VcsSelectionHistoryDialog.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/history/impl/VcsSelectionHistoryDialog.java @@ -36,6 +36,7 @@ import com.intellij.openapi.ui.Splitter; import com.intellij.openapi.ui.popup.util.PopupUtil; import com.intellij.openapi.vcs.*; import com.intellij.openapi.vcs.annotate.ShowAllAffectedGenericAction; +import com.intellij.openapi.vcs.changes.issueLinks.TableLinkMouseListener; import com.intellij.openapi.vcs.history.*; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.ui.JBSplitter; @@ -45,7 +46,6 @@ import com.intellij.ui.table.TableView; import com.intellij.util.ArrayUtil; import com.intellij.util.Function; import com.intellij.util.containers.ContainerUtil; -import com.intellij.util.text.DateFormatUtil; import com.intellij.util.ui.ColumnInfo; import com.intellij.util.ui.ListTableModel; import com.intellij.vcsUtil.VcsUtil; @@ -61,7 +61,6 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.Collections; -import java.util.Date; import java.util.List; import static com.intellij.util.ObjectUtils.notNull; @@ -86,37 +85,6 @@ public class VcsSelectionHistoryDialog extends FrameWrapper implements DataProvi } }; - private static final ColumnInfo REVISION = new ColumnInfo(VcsBundle.message("column.name.revision.version")) { - @Override - public Object valueOf(Object object) { - return ((VcsFileRevision)object).getRevisionNumber(); - } - }; - - private static final ColumnInfo DATE = new ColumnInfo(VcsBundle.message("column.name.revision.list.date")) { - @Override - public Object valueOf(Object object) { - Date date = ((VcsFileRevision)object).getRevisionDate(); - if (date == null) return ""; - return DateFormatUtil.formatPrettyDateTime(date); - } - }; - - private static final ColumnInfo MESSAGE = new ColumnInfo(VcsBundle.message("column.name.revision.list.message")) { - @Override - public Object valueOf(Object object) { - return ((VcsFileRevision)object).getCommitMessage(); - } - }; - - private static final ColumnInfo AUTHOR = new ColumnInfo(VcsBundle.message("column.name.revision.list.author")) { - @Override - public Object valueOf(Object object) { - return ((VcsFileRevision)object).getAuthor(); - } - }; - private static final ColumnInfo[] COLUMNS = new ColumnInfo[]{REVISION, DATE, AUTHOR, MESSAGE}; - private static final float DIFF_SPLITTER_PROPORTION = 0.5f; private static final float COMMENTS_SPLITTER_PROPORTION = 0.8f; private static final String DIFF_SPLITTER_PROPORTION_KEY = "file.history.selection.diff.splitter.proportion"; @@ -170,10 +138,16 @@ public class VcsSelectionHistoryDialog extends FrameWrapper implements DataProvi JRootPane rootPane = ((RootPaneContainer)getFrame()).getRootPane(); final VcsDependentHistoryComponents components = vcsHistoryProvider.getUICustomization(session, rootPane); + ColumnInfo[] defaultColumns = new ColumnInfo[]{ + new FileHistoryPanelImpl.RevisionColumnInfo(null), + new FileHistoryPanelImpl.DateColumnInfo(), + new FileHistoryPanelImpl.AuthorColumnInfo(), + new FileHistoryPanelImpl.MessageColumnInfo(project)}; ColumnInfo[] additionalColumns = notNull(components.getColumns(), ColumnInfo.EMPTY_ARRAY); - myListModel = new ListTableModel(ArrayUtil.mergeArrays(COLUMNS, additionalColumns)); + myListModel = new ListTableModel(ArrayUtil.mergeArrays(defaultColumns, additionalColumns)); myListModel.setSortable(false); myList = new TableView(myListModel); + new TableLinkMouseListener().installOn(myList); myList.getEmptyText().setText(VcsBundle.message("history.empty"));