Git Repositories View: Simple fetch and push
[egit.git] / org.eclipse.egit.ui / src / org / eclipse / egit / ui / internal / repository / NewRemoteWizard.java
blob0f4ef41d553b53bc7ccc7dae0d99fa141bd9968a
1 /*******************************************************************************
2 * Copyright (c) 2010 SAP AG.
3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the Eclipse Public License v1.0
5 * which accompanies this distribution, and is available at
6 * http://www.eclipse.org/legal/epl-v10.html
8 * Contributors:
9 * Mathias Kinzler (SAP AG) - initial implementation
10 *******************************************************************************/
11 package org.eclipse.egit.ui.internal.repository;
13 import java.io.IOException;
14 import java.net.URISyntaxException;
16 import org.eclipse.egit.ui.UIText;
17 import org.eclipse.egit.ui.internal.components.RefSpecPage;
18 import org.eclipse.egit.ui.internal.components.RepositorySelection;
19 import org.eclipse.egit.ui.internal.components.RepositorySelectionPage;
20 import org.eclipse.jface.wizard.IWizardPage;
21 import org.eclipse.jface.wizard.Wizard;
22 import org.eclipse.jgit.lib.Repository;
23 import org.eclipse.jgit.lib.RepositoryConfig;
24 import org.eclipse.jgit.transport.RemoteConfig;
25 import org.eclipse.jgit.transport.URIish;
27 /**
28 * Used for "remote" configuration of a Repository
31 class NewRemoteWizard extends Wizard {
33 final RepositoryConfig myConfiguration;
35 private SelectRemoteNamePage selNamePage;
37 private ConfigureUriPage configureFetchUriPage;
39 private RefSpecPage configureFetchSpecPage;
41 private ConfigureUriPage configurePushUriPage;
43 private RefSpecPage configurePushSpecPage;
45 @Override
46 public IWizardPage getNextPage(IWizardPage page) {
48 if (page == selNamePage)
49 if (selNamePage.configureFetch.getSelection())
50 return configureFetchUriPage;
51 else if (selNamePage.configurePush.getSelection())
52 return configurePushUriPage;
54 if (page == configureFetchSpecPage)
55 if (!selNamePage.configurePush.getSelection())
56 return null;
58 if (page == configureFetchUriPage)
59 configureFetchSpecPage.setSelection(new RepositorySelection(
60 configureFetchUriPage.getUri(), null));
62 if (page == configurePushUriPage)
63 configurePushSpecPage.setSelection(new RepositorySelection(
64 configurePushUriPage.getUris().get(0), null));
66 return super.getNextPage(page);
69 @Override
70 public boolean canFinish() {
72 if (selNamePage.isPageComplete()) {
73 boolean complete = true;
74 if (selNamePage.configureFetch.getSelection())
75 complete = complete && configureFetchSpecPage.isPageComplete();
76 if (selNamePage.configurePush.getSelection())
77 complete = complete && configurePushSpecPage.isPageComplete();
78 return complete;
81 return super.canFinish();
84 /**
86 * @param repository
88 public NewRemoteWizard(Repository repository) {
90 myConfiguration = repository.getConfig();
92 selNamePage = new SelectRemoteNamePage();
93 addPage(selNamePage);
95 configureFetchUriPage = new ConfigureUriPage(true);
96 addPage(configureFetchUriPage);
98 configureFetchSpecPage = new RefSpecPage(repository, false);
99 addPage(configureFetchSpecPage);
101 configurePushUriPage = new ConfigureUriPage(false);
102 addPage(configurePushUriPage);
104 configurePushSpecPage = new RefSpecPage(repository, true);
105 addPage(configurePushSpecPage);
107 setWindowTitle(UIText.ConfigureRemoteWizard_WizardTitle_New);
112 * @return the configuration
115 public RepositoryConfig getConfiguration() {
116 return myConfiguration;
119 @Override
120 public boolean performFinish() {
122 RemoteConfig config;
124 try {
125 config = new RemoteConfig(myConfiguration, selNamePage.remoteName
126 .getText());
127 } catch (URISyntaxException e1) {
128 // TODO better Exception handling
129 return false;
132 if (selNamePage.configureFetch.getSelection()) {
133 config.addURI(configureFetchUriPage.getUri());
134 config.setFetchRefSpecs(configureFetchSpecPage.getRefSpecs());
135 config.setTagOpt(configureFetchSpecPage.getTagOpt());
138 if (selNamePage.configurePush.getSelection()) {
139 for (URIish uri : configurePushUriPage.getUris())
140 config.addPushURI(uri);
141 config.setPushRefSpecs(configurePushSpecPage.getRefSpecs());
144 config.update(myConfiguration);
146 try {
147 myConfiguration.save();
149 // Save the uris in the RepositorySelectionPage preferences
151 for (URIish uri : config.getURIs())
152 RepositorySelectionPage.saveUriInPrefs(uri.toPrivateString());
154 for (URIish uri : config.getPushURIs())
155 RepositorySelectionPage.saveUriInPrefs(uri.toPrivateString());
157 return true;
158 } catch (IOException e) {
159 // TODO better Exception handling
160 return false;