Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'examples/org.eclipse.team.examples.filesystem/src/org/eclipse/team/examples/model/ui/mapping/ModelSyncContentProvider.java')
-rw-r--r--examples/org.eclipse.team.examples.filesystem/src/org/eclipse/team/examples/model/ui/mapping/ModelSyncContentProvider.java120
1 files changed, 77 insertions, 43 deletions
diff --git a/examples/org.eclipse.team.examples.filesystem/src/org/eclipse/team/examples/model/ui/mapping/ModelSyncContentProvider.java b/examples/org.eclipse.team.examples.filesystem/src/org/eclipse/team/examples/model/ui/mapping/ModelSyncContentProvider.java
index e4fb3a66f..3a9c796df 100644
--- a/examples/org.eclipse.team.examples.filesystem/src/org/eclipse/team/examples/model/ui/mapping/ModelSyncContentProvider.java
+++ b/examples/org.eclipse.team.examples.filesystem/src/org/eclipse/team/examples/model/ui/mapping/ModelSyncContentProvider.java
@@ -13,65 +13,97 @@
*******************************************************************************/
package org.eclipse.team.examples.model.ui.mapping;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
-import org.eclipse.core.resources.*;
-import org.eclipse.core.resources.mapping.*;
-import org.eclipse.core.runtime.*;
-import org.eclipse.jface.viewers.*;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.resources.mapping.ResourceMapping;
+import org.eclipse.core.resources.mapping.ResourceMappingContext;
+import org.eclipse.core.resources.mapping.ResourceTraversal;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.StructuredViewer;
+import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.swt.widgets.Tree;
import org.eclipse.swt.widgets.TreeItem;
-import org.eclipse.team.core.diff.*;
+import org.eclipse.team.core.diff.FastDiffFilter;
+import org.eclipse.team.core.diff.IDiff;
+import org.eclipse.team.core.diff.IDiffChangeEvent;
+import org.eclipse.team.core.diff.IDiffTree;
import org.eclipse.team.core.mapping.ISynchronizationContext;
import org.eclipse.team.core.mapping.ISynchronizationScope;
import org.eclipse.team.core.mapping.provider.ResourceDiffTree;
import org.eclipse.team.examples.filesystem.FileSystemPlugin;
-import org.eclipse.team.examples.model.*;
+import org.eclipse.team.examples.model.ModelContainer;
+import org.eclipse.team.examples.model.ModelObject;
+import org.eclipse.team.examples.model.ModelObjectDefinitionFile;
+import org.eclipse.team.examples.model.ModelObjectElementFile;
+import org.eclipse.team.examples.model.ModelProject;
+import org.eclipse.team.examples.model.ModelWorkspace;
import org.eclipse.team.examples.model.mapping.ExampleModelProvider;
import org.eclipse.team.examples.model.ui.ModelNavigatorContentProvider;
import org.eclipse.team.internal.ui.Utils;
import org.eclipse.team.internal.ui.mapping.SynchronizationResourceMappingContext;
import org.eclipse.team.ui.mapping.SynchronizationContentProvider;
-import org.eclipse.ui.navigator.*;
+import org.eclipse.ui.navigator.ICommonContentExtensionSite;
+import org.eclipse.ui.navigator.IPipelinedTreeContentProvider;
+import org.eclipse.ui.navigator.PipelinedShapeModification;
+import org.eclipse.ui.navigator.PipelinedViewerUpdate;
/**
* The content provider that is used for synchronizations.
- * It also makes use of the Common Navigator pipeline
+ * It also makes use of the Common Navigator pipeline
* to override the resource content extension so that model projects will
* replace the corresponding resource project in the Synchronize view.
*/
public class ModelSyncContentProvider extends SynchronizationContentProvider implements IPipelinedTreeContentProvider {
private ModelNavigatorContentProvider delegate;
-
+
public ModelSyncContentProvider() {
super();
}
+ @Override
public void init(ICommonContentExtensionSite site) {
super.init(site);
delegate = new ModelNavigatorContentProvider(getContext() != null);
delegate.init(site);
}
-
+
+ @Override
public void dispose() {
super.dispose();
if (delegate != null)
delegate.dispose();
}
-
+
+ @Override
protected ITreeContentProvider getDelegateContentProvider() {
return delegate;
}
+ @Override
protected String getModelProviderId() {
return ExampleModelProvider.ID;
}
+ @Override
protected Object getModelRoot() {
return ModelWorkspace.getRoot();
}
+ @Override
protected ResourceTraversal[] getTraversals(
ISynchronizationContext context, Object object) {
if (object instanceof ModelObject) {
@@ -88,17 +120,17 @@ public class ModelSyncContentProvider extends SynchronizationContentProvider imp
}
return new ResourceTraversal[0];
}
-
+
+ @Override
protected Object[] getChildrenInContext(ISynchronizationContext context, Object parent, Object[] children) {
- Set allChildren = new HashSet();
+ Set<Object> allChildren = new HashSet<>();
allChildren.addAll(Arrays.asList(super.getChildrenInContext(context, parent, children)));
// We need to override this method in order to ensure that any elements
// that exist in the context but do not exist locally are included
if (parent instanceof ModelContainer) {
ModelContainer mc = (ModelContainer) parent;
IDiff[] diffs = context.getDiffTree().getDiffs(mc.getResource(), IResource.DEPTH_ONE);
- for (int i = 0; i < diffs.length; i++) {
- IDiff diff = diffs[i];
+ for (IDiff diff : diffs) {
IResource resource = ResourceDiffTree.getResourceFor(diff);
if (!resource.exists() && ModelObjectDefinitionFile.isModFile(resource)) {
ModelObject o = ModelObject.create(resource);
@@ -110,8 +142,7 @@ public class ModelSyncContentProvider extends SynchronizationContentProvider imp
if (parent instanceof ModelObjectDefinitionFile) {
ResourceTraversal[] traversals = getTraversals(context, parent);
IDiff[] diffs = context.getDiffTree().getDiffs(traversals);
- for (int i = 0; i < diffs.length; i++) {
- IDiff diff = diffs[i];
+ for (IDiff diff : diffs) {
IResource resource = ResourceDiffTree.getResourceFor(diff);
if (!resource.exists() && ModelObjectElementFile.isMoeFile(resource)) {
ModelObject o = new ModelObjectElementFile((ModelObjectDefinitionFile)parent, (IFile)resource);
@@ -123,15 +154,17 @@ public class ModelSyncContentProvider extends SynchronizationContentProvider imp
return allChildren.toArray(new Object[allChildren.size()]);
}
+ @Override
public void getPipelinedChildren(Object aParent, Set theCurrentChildren) {
// Nothing to do
}
+ @Override
public void getPipelinedElements(Object anInput, Set theCurrentElements) {
// Replace any model projects with a ModelProject if the input
// is a synchronization context
if (anInput instanceof ISynchronizationContext) {
- List newProjects = new ArrayList();
+ List<ModelObject> newProjects = new ArrayList<>();
for (Iterator iter = theCurrentElements.iterator(); iter.hasNext();) {
Object element = iter.next();
if (element instanceof IProject) {
@@ -155,11 +188,13 @@ public class ModelSyncContentProvider extends SynchronizationContentProvider imp
}
}
+ @Override
public Object getPipelinedParent(Object anObject, Object aSuggestedParent) {
// We're not changing the parenting of any resources
return aSuggestedParent;
}
+ @Override
public PipelinedShapeModification interceptAdd(PipelinedShapeModification anAddModification) {
if (anAddModification.getParent() instanceof ISynchronizationContext) {
for (Iterator iter = anAddModification.getChildren().iterator(); iter.hasNext();) {
@@ -179,21 +214,25 @@ public class ModelSyncContentProvider extends SynchronizationContentProvider imp
return null;
}
+ @Override
public boolean interceptRefresh(PipelinedViewerUpdate aRefreshSynchronization) {
// No need to intercept the refresh
return false;
}
+ @Override
public PipelinedShapeModification interceptRemove(PipelinedShapeModification aRemoveModification) {
// No need to intercept the remove
return aRemoveModification;
}
+ @Override
public boolean interceptUpdate(PipelinedViewerUpdate anUpdateSynchronization) {
// No need to intercept the update
return false;
}
-
+
+ @Override
public void diffsChanged(final IDiffChangeEvent event, IProgressMonitor monitor) {
// Override in order to perform custom viewer updates when the diff tree changes
Utils.syncExec((Runnable) () -> handleChange(event), (StructuredViewer)getViewer());
@@ -202,11 +241,10 @@ public class ModelSyncContentProvider extends SynchronizationContentProvider imp
void handleChange(IDiffChangeEvent event) {
Set existingProjects = getVisibleModelProjects();
IProject[] changedProjects = getChangedModelProjects(event);
- List refreshes = new ArrayList(changedProjects.length);
- List additions = new ArrayList(changedProjects.length);
- List removals = new ArrayList(changedProjects.length);
- for (int i = 0; i < changedProjects.length; i++) {
- IProject project = changedProjects[i];
+ List<ModelObject> refreshes = new ArrayList<>(changedProjects.length);
+ List<ModelObject> additions = new ArrayList<>(changedProjects.length);
+ List<ModelObject> removals = new ArrayList<>(changedProjects.length);
+ for (IProject project : changedProjects) {
if (hasVisibleChanges(event.getTree(), project)) {
if (existingProjects.contains(project)) {
refreshes.add(ModelObject.create(project));
@@ -215,7 +253,7 @@ public class ModelSyncContentProvider extends SynchronizationContentProvider imp
}
} else if (existingProjects.contains(project)) {
removals.add(ModelObject.create(project));
-
+
}
}
if (!removals.isEmpty() || !additions.isEmpty() || !refreshes.isEmpty()) {
@@ -228,8 +266,7 @@ public class ModelSyncContentProvider extends SynchronizationContentProvider imp
if (!removals.isEmpty())
viewer.remove(viewer.getInput(), removals.toArray());
if (!refreshes.isEmpty()) {
- for (Iterator iter = refreshes.iterator(); iter.hasNext();) {
- Object element = iter.next();
+ for (Object element : refreshes) {
viewer.refresh(element);
}
}
@@ -241,6 +278,7 @@ public class ModelSyncContentProvider extends SynchronizationContentProvider imp
private boolean hasVisibleChanges(IDiffTree tree, IProject project) {
return tree.hasMatchingDiffs(project.getFullPath(), new FastDiffFilter() {
+ @Override
public boolean select(IDiff diff) {
return isVisible(diff);
}
@@ -251,33 +289,30 @@ public class ModelSyncContentProvider extends SynchronizationContentProvider imp
* Return the list of all projects that are model projects
*/
private IProject[] getChangedModelProjects(IDiffChangeEvent event) {
- Set result = new HashSet();
+ Set<IProject> result = new HashSet<>();
IDiff[] changes = event.getChanges();
- for (int i = 0; i < changes.length; i++) {
- IDiff diff = changes[i];
+ for (IDiff diff : changes) {
IResource resource = ResourceDiffTree.getResourceFor(diff);
if (resource != null && isModProject(resource.getProject())) {
result.add(resource.getProject());
}
}
IDiff[] additions = event.getAdditions();
- for (int i = 0; i < additions.length; i++) {
- IDiff diff = additions[i];
+ for (IDiff diff : additions) {
IResource resource = ResourceDiffTree.getResourceFor(diff);
if (resource != null && isModProject(resource.getProject())) {
result.add(resource.getProject());
}
}
IPath[] removals = event.getRemovals();
- for (int i = 0; i < removals.length; i++) {
- IPath path = removals[i];
+ for (IPath path : removals) {
if (path.segmentCount() > 0) {
IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(path.segment(0));
if (isModProject(project))
result.add(project);
}
}
- return (IProject[]) result.toArray(new IProject[result.size()]);
+ return result.toArray(new IProject[result.size()]);
}
private boolean isModProject(IProject project) {
@@ -297,8 +332,7 @@ public class ModelSyncContentProvider extends SynchronizationContentProvider imp
Tree tree = viewer.getTree();
TreeItem[] children = tree.getItems();
Set result = new HashSet();
- for (int i = 0; i < children.length; i++) {
- TreeItem control = children[i];
+ for (TreeItem control : children) {
Object data = control.getData();
if (data instanceof ModelProject) {
result.add(((ModelProject) data).getProject());
@@ -306,16 +340,16 @@ public class ModelSyncContentProvider extends SynchronizationContentProvider imp
}
return result;
}
-
+
+ @Override
public void propertyChanged(IDiffTree tree, int property, IPath[] paths) {
// We're overriding this message so that label updates occur for any elements
// whose labels may have changed
if (getContext() == null)
return;
- final Set updates = new HashSet();
+ final Set<ModelObject> updates = new HashSet<>();
boolean refresh = false;
- for (int i = 0; i < paths.length; i++) {
- IPath path = paths[i];
+ for (IPath path : paths) {
IDiff diff = tree.getDiff(path);
if (diff != null) {
IResource resource = ResourceDiffTree.getResourceFor(diff);
@@ -336,7 +370,7 @@ public class ModelSyncContentProvider extends SynchronizationContentProvider imp
if (refreshAll)
viewer.refresh(true);
else
- viewer.update(updates.toArray(new Object[updates.size()]), null);
+ viewer.update(updates.toArray(new ModelObject[updates.size()]), null);
}, viewer);
}
}

Back to the top