Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/sync/SyncSet.java')
-rw-r--r--bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/sync/SyncSet.java276
1 files changed, 0 insertions, 276 deletions
diff --git a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/sync/SyncSet.java b/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/sync/SyncSet.java
deleted file mode 100644
index b5c715874..000000000
--- a/bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/sync/SyncSet.java
+++ /dev/null
@@ -1,276 +0,0 @@
-package org.eclipse.team.internal.ui.sync;
-
-/*
- * (c) Copyright IBM Corp. 2000, 2002.
- * All Rights Reserved.
- */
-
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.Iterator;
-
-import org.eclipse.compare.structuremergeviewer.Differencer;
-import org.eclipse.compare.structuremergeviewer.IDiffContainer;
-import org.eclipse.compare.structuremergeviewer.IDiffElement;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.team.core.sync.IRemoteSyncElement;
-import org.eclipse.team.internal.ui.Policy;
-
-/**
- * <b>Note:</b> This class/interface is part of an interim API that is still under
- * development and expected to change significantly before reaching stability.
- * It is being made available at this early stage to solicit feedback from pioneering
- * adopters on the understanding that any code that uses this API will almost
- * certainly be broken (repeatedly) as the API evolves.
- *
- * This class contains a set of resources that are slated to be
- * synchronized. It performs various operations on the
- * set in preparation for catchup/release.
- */
-public class SyncSet {
- private HashSet set;
-
- /**
- * Creates a new sync set on the nodes in the given selection.
- */
- public SyncSet(IStructuredSelection nodeSelection) {
- this.set = new HashSet(nodeSelection.size() + 1);
- collectNodes(nodeSelection);
- }
-
- /**
- * Collects all nodes to which this action will apply. This means
- * all nodes in the selection, plus all their children.
- */
- private void collectNodes(IStructuredSelection selection) {
- Object[] nodes = selection.toArray();
- for (int i = 0; i < nodes.length; i++) {
- recursivelyAdd((ITeamNode)nodes[i]);
- }
- }
-
- /**
- * Adds all parent creations for the given node to the sync set.
- */
- private void collectParentCreations(ITeamNode node) {
- IDiffElement parent = node.getParent();
- if (parent != null && parent instanceof ITeamNode) {
- if (parent.getKind() != IRemoteSyncElement.IN_SYNC) {
- set.add(parent);
- collectParentCreations((ITeamNode)parent);
- }
- }
- }
-
- /**
- * Returns all nodes in the set that have changes
- */
- public ITeamNode[] getChangedNodes() {
- ArrayList nodeList = new ArrayList(set.size());
- for (Iterator it = set.iterator(); it.hasNext();) {
- ITeamNode node = (ITeamNode)it.next();
- int dir = node.getChangeDirection();
- // We assume changed nodes of the wrong type have been culled
- // during set creation.
- if (dir != Differencer.NO_CHANGE) {
- nodeList.add(node);
- }
- }
- ITeamNode[] nodes = new ITeamNode[nodeList.size()];
- nodeList.toArray(nodes);
- return nodes;
- }
-
- /**
- * Returns the resources from all the nodes in this set.
- */
- public IResource[] getResources() {
- ITeamNode[] changed = getChangedNodes();
- IResource[] resources = new IResource[changed.length];
- for (int i = 0; i < changed.length; i++) {
- resources[i] = changed[i].getResource();
- }
- return resources;
- }
-
- /**
- * Returns a message for the status line describing this sync set.
- */
- public String getStatusLineMessage() {
- int incoming = 0;
- int outgoing = 0;
- int conflicts = 0;
- for (Iterator it = set.iterator(); it.hasNext();) {
- ITeamNode next = (ITeamNode)it.next();
- switch (next.getChangeDirection()) {
- case IRemoteSyncElement.INCOMING:
- incoming++;
- break;
- case IRemoteSyncElement.OUTGOING:
- outgoing++;
- break;
- case IRemoteSyncElement.CONFLICTING:
- conflicts++;
- break;
- }
- }
- StringBuffer result = new StringBuffer();
-
- if (conflicts == 0) {
- result.append(Policy.bind("SyncSet.noConflicts")); //$NON-NLS-1$
- } else {
- result.append(Policy.bind("SyncSet.conflicts", new Object[] {Integer.toString(conflicts)} )); //$NON-NLS-1$
- }
- if (incoming == 0) {
- result.append(Policy.bind("SyncSet.noIncomings")); //$NON-NLS-1$
- } else {
- result.append(Policy.bind("SyncSet.incomings", new Object[] {Integer.toString(incoming)} )); //$NON-NLS-1$
- }
- if (outgoing == 0) {
- result.append(Policy.bind("SyncSet.noOutgoings")); //$NON-NLS-1$
- } else {
- result.append(Policy.bind("SyncSet.outgoings", new Object[] {Integer.toString(outgoing)} )); //$NON-NLS-1$
- }
- return result.toString();
- }
-
- /**
- * Returns true if there are any conflicting nodes in the set, and
- * false otherwise.
- */
- public boolean hasConflicts() {
- for (Iterator it = set.iterator(); it.hasNext();) {
- if (((ITeamNode)it.next()).getChangeDirection() == IRemoteSyncElement.CONFLICTING) {
- return true;
- }
- }
- return false;
- }
-
- /**
- * Returns true if this sync set has incoming changes.
- * Note that conflicts are not considered to be incoming changes.
- */
- public boolean hasIncomingChanges() {
- for (Iterator it = set.iterator(); it.hasNext();) {
- if (((ITeamNode)it.next()).getChangeDirection() == IRemoteSyncElement.INCOMING) {
- return true;
- }
- }
- return false;
- }
-
- /**
- * Returns true if this sync set has outgoing changes.
- * Note that conflicts are not considered to be outgoing changes.
- */
- public boolean hasOutgoingChanges() {
- for (Iterator it = set.iterator(); it.hasNext();) {
- if (((ITeamNode)it.next()).getChangeDirection() == IRemoteSyncElement.OUTGOING) {
- return true;
- }
- }
- return false;
- }
-
- /**
- * Returns true if this sync set has auto-mergeable conflicts.
- */
- public boolean hasAutoMergeableConflicts() {
- for (Iterator it = set.iterator(); it.hasNext();) {
- ITeamNode node = (ITeamNode)it.next();
- if ((node.getKind() & IRemoteSyncElement.AUTOMERGE_CONFLICT) != 0) {
- return true;
- }
- }
- return false;
- }
-
- /**
- * Adds the given node, plus all its children, to the given set.
- */
- private void recursivelyAdd(ITeamNode node) {
- // Add the node and recurse
- if (set.add(node)) {
- if (node instanceof IDiffContainer) {
- IDiffElement[] children = ((IDiffContainer)node).getChildren();
- for (int i = 0; i < children.length; i++) {
- if (children[i] instanceof ITeamNode) {
- recursivelyAdd((ITeamNode)children[i]);
- }
- }
- }
- // Add any created parents (can't release or load a
- // resource creation without including new parents)
- collectParentCreations(node);
- }
- }
-
- /**
- * Removes all conflicting nodes from this set.
- */
- public void removeConflictingNodes() {
- for (Iterator it = set.iterator(); it.hasNext();) {
- ITeamNode node = (ITeamNode)it.next();
- if (node.getChangeDirection() == IRemoteSyncElement.CONFLICTING) {
- it.remove();
- }
- }
- }
- /**
- * Removes all outgoing nodes from this set.
- */
- public void removeOutgoingNodes() {
- for (Iterator it = set.iterator(); it.hasNext();) {
- ITeamNode node = (ITeamNode)it.next();
- if (node.getChangeDirection() == IRemoteSyncElement.OUTGOING) {
- it.remove();
- }
- }
- }
- /**
- * Removes all incoming nodes from this set.
- */
- public void removeIncomingNodes() {
- for (Iterator it = set.iterator(); it.hasNext();) {
- ITeamNode node = (ITeamNode)it.next();
- if (node.getChangeDirection() == IRemoteSyncElement.INCOMING) {
- it.remove();
- }
- }
- }
- /**
- * Removes all conflicting nodes from this set that are not auto-mergeable
- */
- public void removeNonMergeableNodes() {
- for (Iterator it = set.iterator(); it.hasNext();) {
- ITeamNode node = (ITeamNode)it.next();
- if ((node.getKind() & IRemoteSyncElement.MANUAL_CONFLICT) != 0) {
- it.remove();
- }
- }
- }
-
- /**
- * Removes all nodes that aren't applicable for the direction.
- */
- public void removeNonApplicableNodes(int direction) {
- for (Iterator it = set.iterator(); it.hasNext();) {
- ITeamNode node = (ITeamNode)it.next();
- int nodeDirection = node.getKind() & IRemoteSyncElement.DIRECTION_MASK;
- if (nodeDirection != IRemoteSyncElement.CONFLICTING) {
- if (nodeDirection != direction) {
- it.remove();
- }
- }
- }
- }
-
- /**
- * Remove the given node from the sync set
- */
- public void remove(ITeamNode node) {
- set.remove(node);
- }
-}

Back to the top