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
.clone
;
14 import java
.util
.ArrayList
;
15 import java
.util
.List
;
17 import org
.eclipse
.egit
.ui
.UIText
;
18 import org
.eclipse
.egit
.ui
.internal
.repository
.RepositoriesViewContentProvider
;
19 import org
.eclipse
.egit
.ui
.internal
.repository
.RepositoriesViewLabelProvider
;
20 import org
.eclipse
.egit
.ui
.internal
.repository
.tree
.RepositoryTreeNode
;
21 import org
.eclipse
.egit
.ui
.internal
.repository
.tree
.RepositoryTreeNodeType
;
22 import org
.eclipse
.egit
.ui
.internal
.repository
.tree
.WorkingDirNode
;
23 import org
.eclipse
.jface
.layout
.GridDataFactory
;
24 import org
.eclipse
.jface
.viewers
.ISelectionChangedListener
;
25 import org
.eclipse
.jface
.viewers
.IStructuredSelection
;
26 import org
.eclipse
.jface
.viewers
.SelectionChangedEvent
;
27 import org
.eclipse
.jface
.viewers
.StructuredSelection
;
28 import org
.eclipse
.jface
.viewers
.TreeViewer
;
29 import org
.eclipse
.jgit
.lib
.Repository
;
30 import org
.eclipse
.swt
.SWT
;
31 import org
.eclipse
.swt
.events
.SelectionAdapter
;
32 import org
.eclipse
.swt
.events
.SelectionEvent
;
33 import org
.eclipse
.swt
.events
.SelectionListener
;
34 import org
.eclipse
.swt
.widgets
.Composite
;
37 * Select a wizard and a directory from a Git Working Directory
39 public class GitImportWithDirectoriesPage
extends GitSelectWizardPage
{
41 private TreeViewer tv
;
46 public GitImportWithDirectoriesPage() {
48 setTitle(UIText
.GitImportWithDirectoriesPage_PageTitle
);
49 setMessage(UIText
.GitImportWithDirectoriesPage_PageMessage
);
55 public void setRepository(Repository repo
) {
56 List
<WorkingDirNode
> input
= new ArrayList
<WorkingDirNode
>();
58 input
.add(new WorkingDirNode(null, repo
));
60 // select the working directory as default
61 tv
.setSelection(new StructuredSelection(input
.get(0)));
64 public void createControl(Composite parent
) {
65 super.createControl(parent
);
67 Composite main
= (Composite
) getControl();
69 tv
= new TreeViewer(main
, SWT
.SINGLE
| SWT
.H_SCROLL
| SWT
.V_SCROLL
71 tv
.setContentProvider(new RepositoriesViewContentProvider());
72 GridDataFactory
.fillDefaults().grab(true, true).applyTo(tv
.getTree());
73 new RepositoriesViewLabelProvider(tv
);
75 SelectionListener sl
= new SelectionAdapter() {
78 public void widgetSelected(SelectionEvent e
) {
79 tv
.getTree().setEnabled(!newProjectWizard
.getSelection());
84 generalWizard
.addSelectionListener(sl
);
85 importExisting
.addSelectionListener(sl
);
86 newProjectWizard
.addSelectionListener(sl
);
88 tv
.addSelectionChangedListener(new ISelectionChangedListener() {
90 public void selectionChanged(SelectionChangedEvent event
) {
95 tv
.getTree().setEnabled(!newProjectWizard
.getSelection());
101 * @return the selected path
103 public String
getPath() {
104 IStructuredSelection sel
= (IStructuredSelection
) tv
.getSelection();
105 RepositoryTreeNode node
= (RepositoryTreeNode
) sel
.getFirstElement();
106 if (node
!= null && node
.getType() == RepositoryTreeNodeType
.FOLDER
)
107 return ((File
) node
.getObject()).getPath();
108 if (node
!= null && node
.getType() == RepositoryTreeNodeType
.WORKINGDIR
)
109 return node
.getRepository().getWorkDir().getPath();
113 protected void checkPage() {
115 if (getErrorMessage() != null)
118 if (newProjectWizard
.getSelection())
121 IStructuredSelection sel
= (IStructuredSelection
) tv
.getSelection();
124 setErrorMessage(UIText
.GitImportWithDirectoriesPage_SelectFolderMessage
);
127 RepositoryTreeNode node
= (RepositoryTreeNode
) sel
129 if (node
.getType() != RepositoryTreeNodeType
.FOLDER
130 && node
.getType() != RepositoryTreeNodeType
.WORKINGDIR
) {
131 setErrorMessage(UIText
.GitImportWithDirectoriesPage_SelectFolderMessage
);
135 setPageComplete(getErrorMessage() == null);