Package org.eclipse.egit.ui.internal.clone

Source Code of org.eclipse.egit.ui.internal.clone.GitCloneWizard

/*******************************************************************************
* Copyright (C) 2008, Roger C. Soares <rogersoares@intelinet.com.br>
* Copyright (C) 2008, Shawn O. Pearce <spearce@spearce.org>
* Copyright (C) 2008, Marek Zawirski <marek.zawirski@gmail.com>
* Copyright (C) 2008, Robin Rosenberg <robin.rosenberg@dewire.com>
* Copyright (C) 2010, Mathias Kinzler <mathias.kinzler@sap.com>
* Copyright (C) 2010, Benjamin Muskalla <bmuskalla@eclipsesource.com>
*
* All rights reserved. This program and the acco  mpanying 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.clone;

import java.io.File;
import java.io.IOException;
import java.net.URISyntaxException;

import org.eclipse.egit.ui.Activator;
import org.eclipse.egit.ui.internal.UIIcons;
import org.eclipse.egit.ui.internal.UIText;
import org.eclipse.egit.ui.internal.components.RepositorySelectionPage;
import org.eclipse.egit.ui.internal.provisional.wizards.IRepositorySearchResult;
import org.eclipse.egit.ui.internal.provisional.wizards.NoRepositoryInfoException;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jgit.util.FileUtils;

/**
* Import Git Repository Wizard. A front end to a git clone operation.
*/
public class GitCloneWizard extends AbstractGitCloneWizard {

  private static final String HELP_CONTEXT = "org.eclipse.egit.ui.GitCloneWizard"; //$NON-NLS-1$

  /**
   * Construct the clone wizard with a repository location page that allows
   * the repository info to be provided by different search providers.
   */
  public GitCloneWizard() {
    initialize();
  }

  /**
   * Construct the clone wizard with a preset URI. The wizard skips the
   * repository location page in this case. Instead, it starts with the Custom
   * URI repository selection page.
   *
   * @param presetUri
   *            the clone URI to prepopulate the URI field of the clone wizard
   *            with.
   */
  public GitCloneWizard(String presetUri) {
    super(new RepositorySelectionPage(true, presetUri));
    initialize();
  }

  /**
   * Construct the clone wizard based on given repository search result. The
   * wizard skips the repository location page in this case.
   *
   * @param searchResult
   *            the search result to initialize the clone wizard with.
   */
  public GitCloneWizard(IRepositorySearchResult searchResult) {
    super(searchResult);
    initialize();
  }

  private void initialize() {
    setWindowTitle(UIText.GitCloneWizard_title);
    setDefaultPageImageDescriptor(UIIcons.WIZBAN_IMPORT_REPO);
    setNeedsProgressMonitor(true);
    validSource.setHelpContext(HELP_CONTEXT);
    cloneDestination.setHelpContext(HELP_CONTEXT);
  }

  /**
   * Set whether to show project import options on the destination page
   *
   * @param show
   * @return this wizard
   */
  public AbstractGitCloneWizard setShowProjectImport(boolean show) {
    cloneDestination.setShowProjectImport(show);
    return this;
  }

  @Override
  public boolean performCancel() {
    if (alreadyClonedInto != null) {
      File test = new File(alreadyClonedInto);
      if (test.exists()
          && MessageDialog.openQuestion(getShell(),
              UIText.GitCloneWizard_abortingCloneTitle,
              UIText.GitCloneWizard_abortingCloneMsg)) {
        try {
          FileUtils.delete(test, FileUtils.RECURSIVE | FileUtils.RETRY);
        } catch (IOException e) {
          throw new RuntimeException(e);
        }
      }
    }
    return true;
  }

  @Override
  protected void addPreClonePages() {
    // no pages to add
  }

  @Override
  protected void addPostClonePages() {
    // no pages to add
  }

  @Override
  public boolean canFinish() {
    return cloneDestination.isPageComplete();
  }

  @Override
  public boolean performFinish() {
    try {
      return performClone(currentSearchResult.getGitRepositoryInfo());
    } catch (URISyntaxException e) {
      Activator.error(UIText.GitImportWizard_errorParsingURI, e);
    } catch (NoRepositoryInfoException e) {
      Activator.error(UIText.GitImportWizard_noRepositoryInfo, e);
    } catch (Exception e) {
      Activator.error(e.getMessage(), e);
    } finally {
      setWindowTitle(UIText.GitCloneWizard_title);
    }
    return false;
  }
}
TOP

Related Classes of org.eclipse.egit.ui.internal.clone.GitCloneWizard

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.