diff options
author | Michael Valenta | 2004-09-10 19:55:52 +0000 |
---|---|---|
committer | Michael Valenta | 2004-09-10 19:55:52 +0000 |
commit | 49fc937b39e6e44d89d9b0eea5d1e6f3b76075e0 (patch) | |
tree | 51e7ba1c0e66577106d1e9fd1321a16d7c3a8d06 | |
parent | 02590555fc5348429df182906ac416fbc9389ad2 (diff) | |
download | eclipse.platform.team-49fc937b39e6e44d89d9b0eea5d1e6f3b76075e0.tar.gz eclipse.platform.team-49fc937b39e6e44d89d9b0eea5d1e6f3b76075e0.tar.xz eclipse.platform.team-49fc937b39e6e44d89d9b0eea5d1e6f3b76075e0.zip |
Work continues
3 files changed, 130 insertions, 104 deletions
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/AbstractSynchronizeModelProvider.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/AbstractSynchronizeModelProvider.java index 44573e628..8c24be429 100644 --- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/AbstractSynchronizeModelProvider.java +++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/AbstractSynchronizeModelProvider.java @@ -10,6 +10,9 @@ *******************************************************************************/ package org.eclipse.team.internal.ui.synchronize; +import java.util.*; +import java.util.ArrayList; + import org.eclipse.compare.structuremergeviewer.IDiffContainer; import org.eclipse.compare.structuremergeviewer.IDiffElement; import org.eclipse.core.resources.*; @@ -315,30 +318,109 @@ public abstract class AbstractSynchronizeModelProvider implements ISynchronizeMo protected abstract IDiffElement[] buildModelObjects(ISynchronizeModelElement node); /** - * @return + * Returns whether the viewer has state to be saved. + * @return whether the viewer has state to be saved */ - protected boolean hasViewerState() { - // TODO Auto-generated method stub - return false; - } + protected abstract boolean hasViewerState(); /** - * + * Save the viewer state (expansion and selection) */ protected void saveViewerState() { - // TODO Auto-generated method stub - - } + // save visible expanded elements and selection + final StructuredViewer viewer = getViewer(); + if (viewer != null && !viewer.getControl().isDisposed() && viewer instanceof AbstractTreeViewer) { + final Object[][] expandedElements = new Object[1][1]; + final Object[][] selectedElements = new Object[1][1]; + viewer.getControl().getDisplay().syncExec(new Runnable() { + public void run() { + if (viewer != null && !viewer.getControl().isDisposed()) { + expandedElements[0] = ((AbstractTreeViewer) viewer).getVisibleExpandedElements(); + selectedElements[0] = ((IStructuredSelection) viewer.getSelection()).toArray(); + } + } + }); + // + // Save expansion + // + if (expandedElements[0].length > 0) { + ISynchronizePageConfiguration config = getConfiguration(); + ArrayList savedExpansionState = new ArrayList(); + for (int i = 0; i < expandedElements[0].length; i++) { + if (expandedElements[0][i] instanceof ISynchronizeModelElement) { + IResource resource = ((ISynchronizeModelElement) expandedElements[0][i]).getResource(); + if(resource != null) + savedExpansionState.add(resource.getFullPath().toString()); + } + } + config.setProperty(P_VIEWER_EXPANSION_STATE, savedExpansionState); + } + // + // Save selection + // + if (selectedElements[0].length > 0) { + ISynchronizePageConfiguration config = getConfiguration(); + ArrayList savedSelectedState = new ArrayList(); + for (int i = 0; i < selectedElements[0].length; i++) { + if (selectedElements[0][i] instanceof ISynchronizeModelElement) { + IResource resource = ((ISynchronizeModelElement) selectedElements[0][i]).getResource(); + if(resource != null) + savedSelectedState.add(resource.getFullPath().toString()); + } + } + config.setProperty(P_VIEWER_SELECTION_STATE, savedSelectedState); + } + } + } - /** - * + protected void restoreViewerState() { + // restore expansion state and selection state + final StructuredViewer viewer = getViewer(); + if (viewer != null && !viewer.getControl().isDisposed() && viewer instanceof AbstractTreeViewer) { + List savedExpansionState = (List)getConfiguration().getProperty(P_VIEWER_EXPANSION_STATE); + List savedSelectionState = (List)getConfiguration().getProperty(P_VIEWER_SELECTION_STATE); + IContainer container = ResourcesPlugin.getWorkspace().getRoot(); + final ArrayList expandedElements = new ArrayList(); + if (savedExpansionState != null) { + for (Iterator it = savedExpansionState.iterator(); it.hasNext();) { + String path = (String) it.next(); + IResource resource = container.findMember(path, true /* include phantoms */); + ISynchronizeModelElement[] elements = getModelObjects(resource); + for (int i = 0; i < elements.length; i++) { + ISynchronizeModelElement element = elements[i]; + expandedElements.add(element); + } + } + } + final ArrayList selectedElements = new ArrayList(); + if (savedSelectionState != null) { + for (Iterator it = savedSelectionState.iterator(); it.hasNext();) { + String path = (String) it.next(); + IResource resource = container.findMember(path, true /* include phantoms */); + ISynchronizeModelElement[] elements = getModelObjects(resource); + for (int i = 0; i < elements.length; i++) { + ISynchronizeModelElement element = elements[i]; + selectedElements.add(element); + } + } + } + Utils.asyncExec(new Runnable() { + public void run() { + ((AbstractTreeViewer) viewer).setExpandedElements(expandedElements.toArray()); + viewer.setSelection(new StructuredSelection(selectedElements)); + } + }, viewer); + } + } + + /** + * Return all the model objects in this provider that represent the given resource + * @param resource the resource + * @return the model objects for the resource */ - protected void restoreViewerState() { - // TODO Auto-generated method stub - - } + protected abstract ISynchronizeModelElement[] getModelObjects(IResource resource); - /* (non-Javadoc) + /* (non-Javadoc) * @see org.eclipse.team.internal.ui.synchronize.ISynchronizeModelProvider#saveState() */ public void saveState() { diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/CompositeModelProvider.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/CompositeModelProvider.java index f2a760894..0ce441603 100644 --- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/CompositeModelProvider.java +++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/CompositeModelProvider.java @@ -319,4 +319,22 @@ public abstract class CompositeModelProvider extends AbstractSynchronizeModelPro clearProviders(); super.dispose(); } + + /* (non-Javadoc) + * @see org.eclipse.team.internal.ui.synchronize.AbstractSynchronizeModelProvider#hasViewerState() + */ + protected boolean hasViewerState() { + return !resourceToElements.isEmpty(); + } + + /* (non-Javadoc) + * @see org.eclipse.team.internal.ui.synchronize.AbstractSynchronizeModelProvider#getModelObjects(org.eclipse.core.resources.IResource) + */ + protected ISynchronizeModelElement[] getModelObjects(IResource resource) { + List elements = (List)resourceToElements.get(resource); + if (elements == null) { + return new ISynchronizeModelElement[0]; + } + return (ISynchronizeModelElement[]) elements.toArray(new ISynchronizeModelElement[elements.size()]); + } } diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/SynchronizeModelProvider.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/SynchronizeModelProvider.java index 630ac521c..bdcd34040 100644 --- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/SynchronizeModelProvider.java +++ b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/synchronize/SynchronizeModelProvider.java @@ -12,11 +12,11 @@ package org.eclipse.team.internal.ui.synchronize; import java.util.*; -import org.eclipse.core.resources.*; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.jface.viewers.*; +import org.eclipse.jface.viewers.ViewerSorter; import org.eclipse.team.core.synchronize.*; -import org.eclipse.team.internal.ui.Utils; import org.eclipse.team.ui.synchronize.ISynchronizeModelElement; import org.eclipse.team.ui.synchronize.ISynchronizePageConfiguration; @@ -94,6 +94,17 @@ public abstract class SynchronizeModelProvider extends AbstractSynchronizeModelP return (ISynchronizeModelElement) resourceMap.get(resource); } + /* (non-Javadoc) + * @see org.eclipse.team.internal.ui.synchronize.AbstractSynchronizeModelProvider#getModelObjects(org.eclipse.core.resources.IResource) + */ + protected ISynchronizeModelElement[] getModelObjects(IResource resource) { + ISynchronizeModelElement element = getModelObject(resource); + if (element == null) { + return new ISynchronizeModelElement[0]; + } + return new ISynchronizeModelElement[] { element }; + } + protected void associateDiffNode(ISynchronizeModelElement node) { IResource resource = node.getResource(); if(resource != null) { @@ -150,91 +161,6 @@ public abstract class SynchronizeModelProvider extends AbstractSynchronizeModelP protected boolean hasViewerState() { return ! resourceMap.isEmpty(); } - - protected void saveViewerState() { - // save visible expanded elements and selection - final StructuredViewer viewer = getViewer(); - if (viewer != null && !viewer.getControl().isDisposed() && viewer instanceof AbstractTreeViewer) { - final Object[][] expandedElements = new Object[1][1]; - final Object[][] selectedElements = new Object[1][1]; - viewer.getControl().getDisplay().syncExec(new Runnable() { - public void run() { - if (viewer != null && !viewer.getControl().isDisposed()) { - expandedElements[0] = ((AbstractTreeViewer) viewer).getVisibleExpandedElements(); - selectedElements[0] = ((IStructuredSelection) viewer.getSelection()).toArray(); - } - } - }); - // - // Save expansion - // - if (expandedElements[0].length > 0) { - ISynchronizePageConfiguration config = getConfiguration(); - ArrayList savedExpansionState = new ArrayList(); - for (int i = 0; i < expandedElements[0].length; i++) { - if (expandedElements[0][i] instanceof ISynchronizeModelElement) { - IResource resource = ((ISynchronizeModelElement) expandedElements[0][i]).getResource(); - if(resource != null) - savedExpansionState.add(resource.getFullPath().toString()); - } - } - config.setProperty(P_VIEWER_EXPANSION_STATE, savedExpansionState); - } - // - // Save selection - // - if (selectedElements[0].length > 0) { - ISynchronizePageConfiguration config = getConfiguration(); - ArrayList savedSelectedState = new ArrayList(); - for (int i = 0; i < selectedElements[0].length; i++) { - if (selectedElements[0][i] instanceof ISynchronizeModelElement) { - IResource resource = ((ISynchronizeModelElement) selectedElements[0][i]).getResource(); - if(resource != null) - savedSelectedState.add(resource.getFullPath().toString()); - } - } - config.setProperty(P_VIEWER_SELECTION_STATE, savedSelectedState); - } - } - } - - protected void restoreViewerState() { - // restore expansion state and selection state - final StructuredViewer viewer = getViewer(); - if (viewer != null && !viewer.getControl().isDisposed() && viewer instanceof AbstractTreeViewer) { - List savedExpansionState = (List)getConfiguration().getProperty(P_VIEWER_EXPANSION_STATE); - List savedSelectionState = (List)getConfiguration().getProperty(P_VIEWER_SELECTION_STATE); - IContainer container = ResourcesPlugin.getWorkspace().getRoot(); - final ArrayList expandedElements = new ArrayList(); - if (savedExpansionState != null) { - for (Iterator it = savedExpansionState.iterator(); it.hasNext();) { - String path = (String) it.next(); - IResource resource = container.findMember(path, true /* include phantoms */); - ISynchronizeModelElement element = getModelObject(resource); - if (element != null) { - expandedElements.add(element); - } - } - } - final ArrayList selectedElements = new ArrayList(); - if (savedSelectionState != null) { - for (Iterator it = savedSelectionState.iterator(); it.hasNext();) { - String path = (String) it.next(); - IResource resource = container.findMember(path, true /* include phantoms */); - ISynchronizeModelElement element = getModelObject(resource); - if (element != null) { - selectedElements.add(element); - } - } - } - Utils.asyncExec(new Runnable() { - public void run() { - ((AbstractTreeViewer) viewer).setExpandedElements(expandedElements.toArray()); - viewer.setSelection(new StructuredSelection(selectedElements)); - } - }, viewer); - } - } public ISynchronizeModelElement[] getClosestExistingParents(IResource resource) { ISynchronizeModelElement element = getModelObject(resource); |