From: daeryong.park Date: Mon, 27 Mar 2017 07:32:25 +0000 (+0900) Subject: RTSDK : new project from git wizard's UX modified X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ab4548f2f39bb542d56968c601c81298f24a99ab;p=sdk%2Fide%2Frt-ide-product.git RTSDK : new project from git wizard's UX modified - Change UI with dynamic radio button instead of filtered tree on RepositoryLocationPage Change-Id: I49bdabdeef0b973b406cb4dbb265ce50c3237894 Signed-off-by: daeryong.park --- diff --git a/rt-ide/tizen.rt.product.plugin/src/org/eclipse/egit/ui/internal/clone/AbstractRtGitCloneWizard.java b/rt-ide/tizen.rt.product.plugin/src/org/eclipse/egit/ui/internal/clone/AbstractRtGitCloneWizard.java index 874f1bb..6734066 100644 --- a/rt-ide/tizen.rt.product.plugin/src/org/eclipse/egit/ui/internal/clone/AbstractRtGitCloneWizard.java +++ b/rt-ide/tizen.rt.product.plugin/src/org/eclipse/egit/ui/internal/clone/AbstractRtGitCloneWizard.java @@ -183,7 +183,9 @@ public abstract class AbstractRtGitCloneWizard extends Wizard { Activator.logError(e.getLocalizedMessage(), e); } else - addPage(new RepositoryLocationPage(cloneSourceProviders)); + /* Tizen */ + addPage(new RtRepositoryLocationPage(cloneSourceProviders)); + /* ===== */ } private boolean hasSingleCloneSourceProviderWithFixedLocation( diff --git a/rt-ide/tizen.rt.product.plugin/src/org/eclipse/egit/ui/internal/clone/RtRepositoryLocationPage.java b/rt-ide/tizen.rt.product.plugin/src/org/eclipse/egit/ui/internal/clone/RtRepositoryLocationPage.java new file mode 100644 index 0000000..c7e9b1c --- /dev/null +++ b/rt-ide/tizen.rt.product.plugin/src/org/eclipse/egit/ui/internal/clone/RtRepositoryLocationPage.java @@ -0,0 +1,242 @@ +/******************************************************************************* + * 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 + *

+ * Original source : {@link RepositoryLocationPage} + *

+ */ +public class RtRepositoryLocationPage extends WizardPage { + + private final List repositoryImports; + + // local cache for contributed WizardPages + private Map resolvedWizardPages; + + /* Tizen */ + // private TreeViewer tv; + private Button selectedRadioButton; + /* ===== */ + + /** + * @param cloneSourceProvider all contributed CloneSourceProviders + */ + public RtRepositoryLocationPage(List cloneSourceProvider) { + super(RtRepositoryLocationPage.class.getName()); + this.repositoryImports = cloneSourceProvider; + resolvedWizardPages = new HashMap(); + 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; + } +}