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
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
;
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
;
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())
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
);
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();
81 return super.canFinish();
88 public NewRemoteWizard(Repository repository
) {
90 myConfiguration
= repository
.getConfig();
92 selNamePage
= new SelectRemoteNamePage();
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
;
120 public boolean performFinish() {
125 config
= new RemoteConfig(myConfiguration
, selNamePage
.remoteName
127 } catch (URISyntaxException e1
) {
128 // TODO better Exception handling
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
);
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());
158 } catch (IOException e
) {
159 // TODO better Exception handling