diff options
author | Michael Valenta | 2006-11-14 15:42:59 +0000 |
---|---|---|
committer | Michael Valenta | 2006-11-14 15:42:59 +0000 |
commit | 45144ff52e4c1fdf718d104d01994a0e2b04b999 (patch) | |
tree | 06a4e057a978b273facf5986cbf0ed1ead10c4b7 | |
parent | 33a389f62d6b8e1c0fe028263db5e4b0c4df44c1 (diff) | |
download | eclipse.platform.team-45144ff52e4c1fdf718d104d01994a0e2b04b999.tar.gz eclipse.platform.team-45144ff52e4c1fdf718d104d01994a0e2b04b999.tar.xz eclipse.platform.team-45144ff52e4c1fdf718d104d01994a0e2b04b999.zip |
Bug 145013 [History View] Compare with local history is broken due to merged history
2 files changed, 68 insertions, 43 deletions
diff --git a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/filehistory/CVSFileHistory.java b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/filehistory/CVSFileHistory.java index 9d4ab1a07..b92f0bd5c 100644 --- a/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/filehistory/CVSFileHistory.java +++ b/bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/filehistory/CVSFileHistory.java @@ -320,5 +320,13 @@ public class CVSFileHistory extends FileHistory { } finally { monitor.done(); } + } + + public boolean isInitialized() { + return revisions != null; + } + + public boolean isIncludeLocal() { + return includeLocalRevisions; } } diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSHistoryPage.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSHistoryPage.java index 7b1b8648f..077a8aa73 100644 --- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSHistoryPage.java +++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSHistoryPage.java @@ -1106,53 +1106,78 @@ public class CVSHistoryPage extends HistoryPage implements IAdaptable, IHistoryC IStatus status = Status.OK_STATUS; if (fileHistory != null && !shutdown) { - //If fileHistory termintates in a bad way, try to fetch the local + //If fileHistory terminates in a bad way, try to fetch the local //revisions only + boolean localFetched = false; + boolean needsUpdate = true; + if (!fileHistory.isInitialized() && fileHistory.isIncludeLocal()) { + // If this is the first refresh, show the local history before hitting the server + fileHistory.fetchLocalOnly(monitor); + updateTable(); + localFetched = true; + needsUpdate = false; + } try { fileHistory.refresh(monitor); + needsUpdate = true; } catch (TeamException ex) { - fileHistory.fetchLocalOnly(monitor); + if (!localFetched) { + fileHistory.fetchLocalOnly(monitor); + needsUpdate = true; + } status = new CVSStatus(ex.getStatus().getSeverity(), ex.getStatus().getCode(), ex.getMessage(), ex); } + if (needsUpdate) + updateTable(); + } - if (grouping) - revisionsFound = sortRevisions(); + if (status != Status.OK_STATUS ) { + this.setProperty(IProgressConstants.KEEP_PROPERTY, Boolean.TRUE); + this.setProperty(IProgressConstants.NO_IMMEDIATE_ERROR_PROMPT_PROPERTY, Boolean.TRUE); + } + + return status; + } - Utils.asyncExec(new Runnable() { - public void run() { - historyTableProvider.setLocalRevisionsDisplayed(fileHistory.getIncludesExists()); - historyTableProvider.setFile(fileHistory, workspaceFile); - //historyTableProvider.setWorkspaceFile(workspaceFile); - if (!selectOnly){ - if (grouping) { - mapExpandedElements(treeViewer.getExpandedElements()); - treeViewer.getTree().setLinesVisible(revisionsFound); - treeViewer.getTree().setRedraw(false); - treeViewer.setInput(categories); - //if user is switching modes and already has expanded elements - //selected try to expand those, else expand all - if (elementsToExpand.length > 0) - treeViewer.setExpandedElements(elementsToExpand); - else { - treeViewer.expandAll(); - Object[] el = treeViewer.getExpandedElements(); - if (el != null && el.length > 0) { - treeViewer.setSelection(new StructuredSelection(el[0])); - treeViewer.getTree().deselectAll(); - } + private void updateTable() { + if (grouping) + revisionsFound = sortRevisions(); + + Utils.asyncExec(new Runnable() { + public void run() { + historyTableProvider.setLocalRevisionsDisplayed(fileHistory.getIncludesExists()); + historyTableProvider.setFile(fileHistory, workspaceFile); + //historyTableProvider.setWorkspaceFile(workspaceFile); + if (!selectOnly){ + if (grouping) { + mapExpandedElements(treeViewer.getExpandedElements()); + treeViewer.getTree().setLinesVisible(revisionsFound); + treeViewer.getTree().setRedraw(false); + treeViewer.setInput(categories); + //if user is switching modes and already has expanded elements + //selected try to expand those, else expand all + if (elementsToExpand.length > 0) + treeViewer.setExpandedElements(elementsToExpand); + else { + treeViewer.expandAll(); + Object[] el = treeViewer.getExpandedElements(); + if (el != null && el.length > 0) { + treeViewer.setSelection(new StructuredSelection(el[0])); + treeViewer.getTree().deselectAll(); } - treeViewer.getTree().setRedraw(true); + } + treeViewer.getTree().setRedraw(true); + } else { + if (fileHistory.getFileRevisions().length > 0) { + treeViewer.getTree().setLinesVisible(true); + treeViewer.setInput(fileHistory); } else { - if (fileHistory.getFileRevisions().length > 0) { - treeViewer.getTree().setLinesVisible(true); - treeViewer.setInput(fileHistory); - } else { - categories = new AbstractHistoryCategory[] {getErrorMessage()}; - treeViewer.getTree().setLinesVisible(false); - treeViewer.setInput(categories); - } + categories = new AbstractHistoryCategory[] {getErrorMessage()}; + treeViewer.getTree().setLinesVisible(false); + treeViewer.setInput(categories); } } + } //Update the history (if it exists) to reflect the new //counts if (historyFilter != null){ @@ -1179,14 +1204,6 @@ public class CVSHistoryPage extends HistoryPage implements IAdaptable, IHistoryC }, treeViewer); } - if (status != Status.OK_STATUS ) { - this.setProperty(IProgressConstants.KEEP_PROPERTY, Boolean.TRUE); - this.setProperty(IProgressConstants.NO_IMMEDIATE_ERROR_PROMPT_PROPERTY, Boolean.TRUE); - } - - return status; - } - private void mapExpandedElements(Object[] expandedElements) { //store the names of the currently expanded categories in a map HashMap elementMap = new HashMap(); |