Package org.eclipse.egit.ui.internal.synchronize.mapping

Source Code of org.eclipse.egit.ui.internal.synchronize.mapping.GitTreeMapping

/*******************************************************************************
* Copyright (C) 2010, 2013 Dariusz Luksza <dariusz@luksza.org> and others.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*******************************************************************************/
package org.eclipse.egit.ui.internal.synchronize.mapping;

import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IWorkspaceRoot;
import org.eclipse.core.resources.ResourcesPlugin;
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.IProgressMonitor;
import org.eclipse.egit.ui.internal.synchronize.model.GitModelBlob;
import org.eclipse.egit.ui.internal.synchronize.model.GitModelObject;
import org.eclipse.egit.ui.internal.synchronize.model.GitModelTree;

class GitTreeMapping extends GitObjectMapping {

  private final GitModelTree tree;

  private static final IWorkspaceRoot ROOT = ResourcesPlugin.getWorkspace()
      .getRoot();

  protected GitTreeMapping(GitModelTree object) {
    super(object);
    tree = object;
  }

  @Override
  public ResourceTraversal[] getTraversals(ResourceMappingContext context,
      IProgressMonitor monitor) throws CoreException {
    GitModelObject[] objects = tree.getChildren();
    ResourceTraversal[] result = new ResourceTraversal[objects.length];

    for (int i = 0; i < objects.length; i++) {
      if (objects[i] instanceof GitModelTree)
        result[i] = new GitTreeTraversal((GitModelTree) objects[i]);
      else {
        IResource[] resources = getResources((GitModelBlob) objects[i]);
        result[i] = new ResourceTraversal(resources,
            IResource.DEPTH_ZERO, IResource.ALLOW_MISSING_LOCAL);
      }
    }

    return result;
  }

  private IResource[] getResources(GitModelBlob modelBlob) {
    IFile file = ROOT.getFileForLocation(modelBlob.getLocation());
    if (file == null)
      file = ROOT.getFile(modelBlob.getLocation());

    return new IResource[] { file };
  }

}
TOP

Related Classes of org.eclipse.egit.ui.internal.synchronize.mapping.GitTreeMapping

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.