Package de.abg.reichert.joerg.eclipsetools.workingsets.internal

Source Code of de.abg.reichert.joerg.eclipsetools.workingsets.internal.WorkingSetImportHelper

package de.abg.reichert.joerg.eclipsetools.workingsets.internal;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.MultiStatus;
import org.eclipse.core.runtime.OperationCanceledException;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.osgi.util.NLS;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.team.core.IProjectSetSerializer;
import org.eclipse.team.core.ProjectSetCapability;
import org.eclipse.team.core.RepositoryProviderType;
import org.eclipse.team.core.TeamException;
import org.eclipse.team.internal.ui.TeamUIMessages;
import org.eclipse.team.internal.ui.TeamUIPlugin;
import org.eclipse.team.internal.ui.UIProjectSetSerializationContext;
import org.eclipse.ui.IMemento;
import org.eclipse.ui.IWorkingSet;
import org.eclipse.ui.IWorkingSetManager;
import org.eclipse.ui.XMLMemento;

public class WorkingSetImportHelper {
  private WorkingSetHelper wsHelper;
  private RepositoryHelper repositoryHelper;
  private Shell shell;

  public WorkingSetImportHelper(Shell shell) {
    this.shell = shell;
  }

  protected WorkingSetHelper getWorkingSetHelper() {
    if (wsHelper == null) {
      wsHelper = new WorkingSetHelper();
    }
    return wsHelper;
  }

  protected RepositoryHelper getRepositoryHelper(Shell shell) {
    if (repositoryHelper == null) {
      repositoryHelper = new RepositoryHelper(shell);
    }
    return repositoryHelper;
  }

  public void addToWorkspace(String filename, Shell shell,
      IProgressMonitor monitor, List newProjects,
      IProjectSetSerializer serializer) throws TeamException {
    IProject[] projects = serializer.addToWorkspace(new String[0],
        filename, shell, monitor);
    calculateNewProjects(newProjects, projects);
  }

  private void calculateNewProjects(List newProjects, IProject[] projects) {
    if (projects != null)
      newProjects.addAll(Arrays.asList(projects));
  }

  public List<String> handleWorkingSets(XMLMemento xmlMemento, Shell shell) {
    List<String> workingSetNames = new ArrayList<String>();
    // try working sets
    IMemento[] sets = xmlMemento.getChildren("workingSets"); //$NON-NLS-1$
    IWorkingSetManager wsManager = TeamUIPlugin.getPlugin().getWorkbench()
        .getWorkingSetManager();
   
    WorkingSetStatus status = new WorkingSetStatus();

    for (int i = 0; i < sets.length; i++) {
      IWorkingSet newWs = wsManager.createWorkingSet(sets[i]);
      if (newWs != null) {
        workingSetNames.add(newWs.getName());
        IWorkingSet oldWs = wsManager.getWorkingSet(newWs.getName());
        if (oldWs == null) {
          wsManager.addWorkingSet(newWs);
        } else if (status.isReplaceAll()) {
          getWorkingSetHelper().replaceWorkingSet(wsManager, newWs,
              oldWs);
        } else if (status.isMergeAll()) {
          getWorkingSetHelper().mergeWorkingSets(newWs, oldWs);
        } else if (!status.isSkipAll()) {
          getWorkingSetHelper().handleExistingWorkingSet(wsManager, oldWs, newWs, status, shell);
        }
      }
    }
    return workingSetNames;
  }

  public void handleErrors(List errors) throws TeamException {
    if (!errors.isEmpty()) {
      if (errors.size() == 1) {
        throw (TeamException) errors.get(0);
      } else {
        TeamException[] exceptions = (TeamException[]) errors
            .toArray(new TeamException[errors.size()]);
        IStatus[] status = new IStatus[exceptions.length];
        for (int i = 0; i < exceptions.length; i++) {
          status[i] = exceptions[i].getStatus();
        }
        throw new TeamException(new MultiStatus(TeamUIPlugin.ID, 0,
            status, TeamUIMessages.ProjectSetImportWizard_1, null));
      }
    }
  }

  public void handleRepository(IProgressMonitor monitor, List newProjects,
      UIProjectSetSerializationContext context, List errors,
      ArrayList referenceStrings, IMemento[] providers, int i) {
    try {
      RepositoryProviderType providerType = getRepositoryHelper(getShell())
          .getProviderType(providers, i);
      ProjectSetCapability serializer = getRepositoryHelper(getShell())
          .getSerializer(providerType);
      if (serializer != null) {
        IProject[] allProjects = getRepositoryHelper(getShell()).addToWorkspace(
            monitor, context, referenceStrings, serializer);
        calculateNewProjects(newProjects, allProjects);
      }
      referenceStrings.clear();
    } catch (TeamException e) {
      errors.add(e);
    }
  }

  protected Shell getShell() {
    return shell;
  }
}
TOP

Related Classes of de.abg.reichert.joerg.eclipsetools.workingsets.internal.WorkingSetImportHelper

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.