--- /dev/null
+/*******************************************************************************
+ * Copyright (c) 2012 SAP AG.
+ * All rights reserved. This program and the accompanying 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
+ *
+ * Contributors:
+ * Stefan Lay (SAP AG) - initial implementation
+ *******************************************************************************/
+package org.eclipse.egit.ui.internal.clone;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.egit.ui.Activator;
+import org.eclipse.egit.ui.internal.UIText;
+import org.eclipse.egit.ui.internal.clone.GitCloneSourceProviderExtension.CloneSourceProvider;
+import org.eclipse.jface.wizard.IWizardPage;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.RowLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+
+/**
+ * Displays the possible locations of git repositories
+ * <p>
+ * Original source : {@link RepositoryLocationPage}
+ * </p>
+ */
+public class RtRepositoryLocationPage extends WizardPage {
+
+ private final List<CloneSourceProvider> repositoryImports;
+
+ // local cache for contributed WizardPages
+ private Map<CloneSourceProvider, WizardPage> resolvedWizardPages;
+
+ /* Tizen */
+ // private TreeViewer tv;
+ private Button selectedRadioButton;
+ /* ===== */
+
+ /**
+ * @param cloneSourceProvider all contributed CloneSourceProviders
+ */
+ public RtRepositoryLocationPage(List<CloneSourceProvider> cloneSourceProvider) {
+ super(RtRepositoryLocationPage.class.getName());
+ this.repositoryImports = cloneSourceProvider;
+ resolvedWizardPages = new HashMap<CloneSourceProvider, WizardPage>();
+ setTitle(UIText.RepositoryLocationPage_title);
+ setMessage(UIText.RepositoryLocationPage_info);
+ }
+
+ @Override
+ public void createControl(Composite parent) {
+ Composite main = new Composite(parent, SWT.NONE);
+
+ /* Tizen - Remove FilteredTree */
+ RowLayout layout = new RowLayout(SWT.VERTICAL);
+ layout.marginHeight = 5;
+ layout.marginWidth = 10;
+ layout.fill = true;
+ main.setLayout(layout);
+
+ // GridLayoutFactory.fillDefaults().numColumns(2).margins(0, 0)
+ // .applyTo(main);
+ // GridDataFactory.fillDefaults().grab(true, true).applyTo(main);
+ // // use a filtered tree
+ // FilteredTree tree = new FilteredTree(main, SWT.SINGLE | SWT.BORDER
+ // | SWT.H_SCROLL | SWT.V_SCROLL, new PatternFilter(), true);
+ //
+ // tv = tree.getViewer();
+ // GridDataFactory.fillDefaults().grab(true, true).applyTo(tree);
+ //
+ // tv.setContentProvider(new RtRepositoryLocationContentProvider());
+ //
+ // tv.setLabelProvider(new RtRepositoryLocationLabelProvider());
+ //
+ // tv.addSelectionChangedListener(new ISelectionChangedListener() {
+ //
+ // @Override
+ // public void selectionChanged(SelectionChangedEvent event) {
+ // checkPage();
+ // }
+ // });
+ //
+ // tv.addDoubleClickListener(new IDoubleClickListener() {
+ //
+ // @Override
+ // public void doubleClick(DoubleClickEvent event) {
+ // checkPage();
+ // if (isPageComplete())
+ // getContainer().showPage(getNextPage());
+ // }
+ // });
+ //
+ // tv.setInput(repositoryImports);
+
+ createRadioButtonsArea(main);
+
+ /* ===== */
+
+ setControl(main);
+ }
+
+ /* Tizen - Add methods */
+ private void createRadioButtonsArea(Composite parent) {
+ if (repositoryImports != null && repositoryImports.size() > 0) {
+ for (int i = 0; i < repositoryImports.size(); i++) {
+ CloneSourceProvider provider = repositoryImports.get(i);
+ Button btn = createRadioButton(parent, provider);
+ // first radio selection
+ if (i == 0) {
+ btn.setSelection(true);
+ selectedRadioButton = btn;
+ checkPage();
+ }
+ }
+ }
+ }
+
+ private Button createRadioButton(Composite parent, CloneSourceProvider provider) {
+ final Button btn = new Button(parent, SWT.RADIO);
+ btn.setText(provider.getLabel());
+ btn.setImage(provider.getImage().createImage());
+ btn.setBackground(parent.getBackground());
+ btn.setData(provider);
+ btn.addSelectionListener(new SelectionListener() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ selectedRadioButton = btn;
+ checkPage();
+ }
+
+ @Override
+ public void widgetDefaultSelected(SelectionEvent e) {
+ // Do nothing
+ }
+ });
+ return btn;
+ }
+ /* ===== */
+
+ private void checkPage() {
+ setErrorMessage(null);
+ boolean complete = false;
+ /* Tizen - modified */
+ // IStructuredSelection selection = (IStructuredSelection) tv
+ // .getSelection();
+ // if (selection.size() == 1) {
+ // Object element = selection.getFirstElement();
+ // if (element instanceof CloneSourceProvider) {
+ // CloneSourceProvider repositoryImport = (CloneSourceProvider) element;
+ // if (repositoryImport.equals(CloneSourceProvider.LOCAL)
+ // || repositoryImport.hasFixLocation())
+ // complete = true;
+ // } else if (element instanceof RepositoryServerInfo) {
+ // complete = true;
+ // }
+ // }
+ if (selectedRadioButton != null) {
+ Object element = selectedRadioButton.getData();
+ if (element instanceof CloneSourceProvider) {
+ CloneSourceProvider repositoryImport = (CloneSourceProvider) element;
+ if (repositoryImport.equals(CloneSourceProvider.LOCAL)
+ || repositoryImport.hasFixLocation())
+ complete = true;
+ }
+ // Not occurred
+ // else if (element instanceof RepositoryServerInfo) {
+ // complete = true;
+ // }
+ }
+ /* ===== */
+
+ setPageComplete(complete);
+ }
+
+ @Override
+ public IWizardPage getNextPage() {
+ /* Tizen - modified */
+ // IStructuredSelection selection = (IStructuredSelection) tv
+ // .getSelection();
+ //
+ // if (selection.size() == 1) {
+ // Object element = selection.getFirstElement();
+ // if (element instanceof CloneSourceProvider) {
+ // return getNextPage((CloneSourceProvider) element);
+ // } else if (element instanceof RepositoryServerInfo) {
+ // Object parent = ((ITreeContentProvider) tv.getContentProvider())
+ // .getParent(element);
+ // if (parent instanceof CloneSourceProvider)
+ // return getNextPage((CloneSourceProvider) parent);
+ // }
+ // }
+
+ if (selectedRadioButton != null) {
+ Object element = selectedRadioButton.getData();
+ if (element instanceof CloneSourceProvider) {
+ return getNextPage((CloneSourceProvider) element);
+ }
+ // Not occurred
+ // else if (element instanceof RepositoryServerInfo) {
+ // Object parent = ((ITreeContentProvider) tv.getContentProvider())
+ // .getParent(element);
+ // if (parent instanceof CloneSourceProvider)
+ // return getNextPage((CloneSourceProvider) parent);
+ // }
+ }
+ /* ===== */
+ return null;
+ }
+
+ private IWizardPage getNextPage(CloneSourceProvider repositoryImport) {
+ if (repositoryImport.equals(CloneSourceProvider.LOCAL))
+ return getWizard().getNextPage(this);
+ else
+ return getWizardPage(repositoryImport);
+ }
+
+ private WizardPage getWizardPage(CloneSourceProvider repositoryImport) {
+ WizardPage nextPage;
+ nextPage = resolvedWizardPages.get(repositoryImport);
+ if (nextPage == null) {
+ try {
+ nextPage = repositoryImport.getRepositorySearchPage();
+ } catch (CoreException e) {
+ Activator.error(e.getLocalizedMessage(), e);
+ }
+ if (nextPage != null) {
+ nextPage.setWizard(getWizard());
+ resolvedWizardPages.put(repositoryImport, nextPage);
+ }
+ }
+ return nextPage;
+ }
+}