[log] Supply correct commit object to getCommitData in DetailsPanel

Introduce AbstractVcsLogTableModel#getCommit which returns a Node for
the graph table, and Hash - for the non-graph one.
This commit is contained in:
Kirill Likhodedov
2013-12-20 19:24:45 +04:00
parent 7e9eaf963b
commit 9a92cb95ea
4 changed files with 19 additions and 4 deletions
@@ -104,12 +104,13 @@ class DetailsPanel extends JPanel implements ListSelectionListener {
int row = rows[0];
AbstractVcsLogTableModel tableModel = (AbstractVcsLogTableModel)myGraphTable.getModel();
Hash hash = tableModel.getHashAtRow(row);
if (hash == null) {
Object commit = tableModel.getCommit(row);
if (hash == null || commit == null) {
showMessage("No commits selected");
return;
}
VcsFullCommitDetails commitData = myLogDataHolder.getCommitDetailsGetter().getCommitData(hash, tableModel.getAroundProvider());
VcsFullCommitDetails commitData = myLogDataHolder.getCommitDetailsGetter().getCommitData(commit, tableModel.getAroundProvider());
if (commitData instanceof LoadingDetails) {
myLoadingPanel.startLoading();
myDataPanel.setData(null);
@@ -100,6 +100,9 @@ public abstract class AbstractVcsLogTableModel<CommitColumnClass, CommitId> exte
@Nullable
public abstract Hash getHashAtRow(int row);
@Nullable
public abstract CommitId getCommit(int row);
@Override
public Class<?> getColumnClass(int column) {
switch (column) {
@@ -134,9 +134,14 @@ public class GraphTableModel extends AbstractVcsLogTableModel<GraphCommitCell, N
@Nullable
@Override
public Hash getHashAtRow(int row) {
Node node = myDataPack.getGraphModel().getGraph().getCommitNodeInRow(row);
Node node = getCommit(row);
return node == null ? null : myDataHolder.getHash(node.getCommitIndex());
}
@Nullable
@Override
public Node getCommit(int row) {
return myDataPack.getGraphModel().getGraph().getCommitNodeInRow(row);
}
@NotNull
@@ -124,6 +124,12 @@ public class NoGraphTableModel extends AbstractVcsLogTableModel<CommitCell, Hash
return myCommits.get(row).getHash();
}
@Nullable
@Override
public Hash getCommit(int row) {
return getHashAtRow(row);
}
@NotNull
@Override
public AroundProvider<Hash> getAroundProvider() {