From e34fcdecabaf490c45685797b9ca797c76d5f0df Mon Sep 17 00:00:00 2001 From: Aleksey Pivovarov Date: Mon, 1 Feb 2016 19:58:47 +0300 Subject: [PATCH] vcs: turn ColumnInfo into static classes in FileHistoryPanel --- .../vcs/history/FileHistoryPanelImpl.java | 73 +++++++++++-------- 1 file changed, 41 insertions(+), 32 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 d132dd599e84..9ddb208191fa 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,30 +144,40 @@ public class FileHistoryPanelImpl extends PanelWithActionsAndCloseButton { } }; - private final DualViewColumnInfo REVISION = - new VcsColumnInfo(VcsBundle.message("column.name.revision.version")) { - protected VcsRevisionNumber getDataOf(VcsFileRevision object) { - return object.getRevisionNumber(); - } + private static class RevisionColumnInfo extends VcsColumnInfo { + private final Comparator myComparator; - @Override - public Comparator getComparator() { - return myRevisionsInOrderComparator; - } + public RevisionColumnInfo(Comparator comparator) { + super(VcsBundle.message("column.name.revision.version")); + myComparator = comparator; + } - public String valueOf(VcsFileRevision object) { - final VcsRevisionNumber revisionNumber = object.getRevisionNumber(); - return revisionNumber instanceof ShortVcsRevisionNumber ? ((ShortVcsRevisionNumber)revisionNumber).toShortString() : revisionNumber.asString(); - } + @Override + protected VcsRevisionNumber getDataOf(VcsFileRevision object) { + return object.getRevisionNumber(); + } - @Override - public String getPreferredStringValue() { - return "123.4567"; - } + @Override + public Comparator getComparator() { + return myComparator; + } - }; + public String valueOf(VcsFileRevision object) { + final VcsRevisionNumber revisionNumber = object.getRevisionNumber(); + return revisionNumber instanceof ShortVcsRevisionNumber ? ((ShortVcsRevisionNumber)revisionNumber).toShortString() : revisionNumber.asString(); + } + + @Override + public String getPreferredStringValue() { + return "123.4567"; + } + } + + private static class DateColumnInfo extends VcsColumnInfo { + public DateColumnInfo() { + super(VcsBundle.message("column.name.revision.date")); + } - private final DualViewColumnInfo DATE = new VcsColumnInfo(VcsBundle.message("column.name.revision.date")) { protected String getDataOf(VcsFileRevision object) { Date date = object.getRevisionDate(); if (date == null) return ""; @@ -182,8 +192,7 @@ public class FileHistoryPanelImpl extends PanelWithActionsAndCloseButton { public String getPreferredStringValue() { return DateFormatUtil.formatPrettyDateTime(Clock.getTime()); } - - }; + } public void scheduleRefresh(final boolean canUseLastRevision) { ApplicationManager.getApplication().invokeLater(new Runnable() { @@ -224,9 +233,14 @@ public class FileHistoryPanelImpl extends PanelWithActionsAndCloseButton { } } - private static final TableCellRenderer AUTHOR_RENDERER = new AuthorCellRenderer(); - private final DualViewColumnInfo AUTHOR = new VcsColumnInfo(VcsBundle.message("column.name.revision.list.author")) { + private static class AuthorColumnInfo extends VcsColumnInfo { + private final TableCellRenderer AUTHOR_RENDERER = new AuthorCellRenderer(); + + public AuthorColumnInfo() { + super(VcsBundle.message("column.name.revision.list.author")); + } + protected String getDataOf(VcsFileRevision object) { VcsFileRevision rev = object; if (object instanceof TreeNodeOnVcsRevision) { @@ -273,8 +287,7 @@ public class FileHistoryPanelImpl extends PanelWithActionsAndCloseButton { public String getPreferredStringValue() { return "author_author"; } - - }; + } private static class MessageColumnInfo extends VcsColumnInfo { private final ColoredTableCellRenderer myRenderer; @@ -504,13 +517,9 @@ public class FileHistoryPanelImpl extends PanelWithActionsAndCloseButton { myListener = components.getRevisionListener(); ArrayList columns = new ArrayList(); - if (provider.isDateOmittable()) { - columns.addAll(Arrays.asList(REVISION, AUTHOR)); - } - else { - columns.addAll(Arrays.asList(REVISION, DATE, AUTHOR)); - } - + columns.add(new RevisionColumnInfo(myRevisionsInOrderComparator)); + if (!provider.isDateOmittable()) columns.add(new DateColumnInfo()); + columns.add(new AuthorColumnInfo()); columns.addAll(wrapAdditionalColumns(components.getColumns())); columns.add(new MessageColumnInfo(project)); return columns.toArray(new DualViewColumnInfo[columns.size()]);