// ============================================================================ // // Copyright (C) 2006-2012 Talend Inc. - www.talend.com // // This source code is available under agreement available at // %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt // // You should have received a copy of the agreement // along with this program; if not, write to Talend SA // 9 rue Pages 92150 Suresnes, France // // ============================================================================ package org.talend.repository.ui.actions.importproject; import java.io.IOException; import java.net.URL; import java.util.List; import org.eclipse.core.runtime.FileLocator; import org.eclipse.core.runtime.Path; import org.eclipse.core.runtime.Platform; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.swt.SWT; import org.eclipse.swt.browser.Browser; import org.eclipse.swt.custom.SashForm; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.TableItem; import org.eclipse.swt.widgets.Text; import org.eclipse.ui.internal.wizards.datatransfer.WizardFileSystemResourceExportPage1; import org.osgi.framework.Bundle; import org.talend.commons.ui.runtime.exception.ExceptionHandler; import org.talend.core.CorePlugin; import org.talend.core.language.ECodeLanguage; import org.talend.repository.RepositoryPlugin; import org.talend.repository.i18n.Messages; /** * This class is used for creating a page for importing demo project.<br/> * * @author ftang * */ public class ImportDemoProjectPage extends WizardFileSystemResourceExportPage1 implements ISelectionChangedListener { private TableViewer wizardSelectionViewer; private Browser descriptionBrowser; private Text descriptionText; private boolean useBrowser = true; private List<DemoProjectBean> demoProjectList; private int selectedDemoProjectIndex = Integer.MAX_VALUE; /** * ImportDemoProjectPage constructor. * * @param selection */ public ImportDemoProjectPage(IStructuredSelection selection) { super(selection); this.setMessage(Messages.getString("ImportDemoProjectPage.message1")); //$NON-NLS-1$ this.setTitle(Messages.getString("ImportDemoProjectPage.title")); //$NON-NLS-1$ } /* * (non-Javadoc) * * @see * org.eclipse.ui.internal.wizards.datatransfer.WizardFileSystemResourceExportPage1#createControl(org.eclipse.swt * .widgets.Composite) */ public void createControl(Composite parent) { Composite container = new Composite(parent, SWT.NONE); GridLayout layout = new GridLayout(); layout.verticalSpacing = 10; container.setLayout(layout); container.setLayoutData(new GridData(GridData.FILL_BOTH)); Label label = new Label(container, SWT.NONE); label.setText(Messages.getString("ImportDemoProjectPage.availableProjectsPrompt")); //$NON-NLS-1$ GridData gd = new GridData(); label.setLayoutData(gd); SashForm sashForm = new SashForm(container, SWT.HORIZONTAL); gd = new GridData(GridData.FILL_BOTH); gd.widthHint = 300; sashForm.setLayoutData(gd); wizardSelectionViewer = new TableViewer(sashForm, SWT.BORDER); createDescriptionIn(sashForm); initializeViewer(); wizardSelectionViewer.addSelectionChangedListener(this); Dialog.applyDialogFont(container); setControl(container); } /** * DOC Administrator Comment method "createDescriptionIn". * * @param composite */ public void createDescriptionIn(Composite composite) { if ("yes".equalsIgnoreCase(System.getProperty("USE_BROWSER"))) { descriptionBrowser = new Browser(composite, SWT.BORDER); descriptionBrowser.setText(""); //$NON-NLS-1$ GridData gd = new GridData(GridData.FILL_BOTH); gd.widthHint = 200; descriptionBrowser.setLayoutData(gd); } else { descriptionText = new Text(composite, SWT.BORDER | SWT.WRAP); descriptionText.setText(""); //$NON-NLS-1$ GridData gd = new GridData(GridData.FILL_BOTH); gd.widthHint = 200; descriptionText.setLayoutData(gd); useBrowser = false; } } /** * initializeViewer. */ private void initializeViewer() { for (int i = 0; i < this.demoProjectList.size(); i++) { DemoProjectBean demoProject = this.demoProjectList.get(i); TableItem tableItem = new TableItem(wizardSelectionViewer.getTable(), i); tableItem.setText(demoProject.getProjectName()); tableItem.setImage(getImageForDemoProject(demoProject.getLanguage())); } } /** * Gets images. * * @param language * @return */ private Image[] getImageForDemoProject(ECodeLanguage language) { String languageName = language.getName(); Image[] image = getFullImagePath(languageName); return image; } /** * getFullImagePath. * * @param languageName * @return */ private Image[] getFullImagePath(String languageName) { String relatedImagePath = null; if (languageName.equalsIgnoreCase(ECodeLanguage.getCodeLanguage("java").getName())) { //$NON-NLS-1$ relatedImagePath = "icons/java.png"; //$NON-NLS-1$ } else if (languageName.equalsIgnoreCase(ECodeLanguage.getCodeLanguage("perl").getName())) { //$NON-NLS-1$ relatedImagePath = "icons/perl.gif"; //$NON-NLS-1$ } else { relatedImagePath = "icons/perl.gif"; //$NON-NLS-1$ } Bundle bundle = Platform.getBundle(RepositoryPlugin.PLUGIN_ID); URL url = null; String pluginPath = null; try { // url = FileLocator.resolve(bundle.getEntry(relatedImagePath)); url = FileLocator.toFileURL(FileLocator.find(bundle, new Path(relatedImagePath), null)); pluginPath = new Path(url.getFile()).toOSString(); } catch (IOException e1) { ExceptionHandler.process(e1); } return new Image[] { new Image(null, pluginPath) }; } /* * (non-Javadoc) * * @see * org.eclipse.jface.viewers.ISelectionChangedListener#selectionChanged(org.eclipse.jface.viewers.SelectionChangedEvent * ) */ public void selectionChanged(SelectionChangedEvent event) { selectedDemoProjectIndex = ((TableViewer) event.getSource()).getTable().getSelectionIndex(); // try { // Bundle bundle = Platform.getBundle(ResourcesPlugin.PLUGIN_ID); // URL url; // url = FileLocator.toFileURL(FileLocator.find(bundle, new // Path(this.demoProjectList.get(selectedDemoProjectIndex) // .getDescriptionFilePath()), null)); // // String descriptionFilePath = new Path(url.getFile()).toOSString(); // descriptionBrowser.setUrl(descriptionFilePath); // MOD gdbu 2011-5-10 bug : 21138 DemoProjectBean demoProjectBean = this.demoProjectList.get(selectedDemoProjectIndex); ECodeLanguage demoLanguage = demoProjectBean.getLanguage(); String demoDescription = CorePlugin.getDefault().getResourceService() .getDemoDescription(demoLanguage, demoProjectBean.getProjectName()); // ~21138 if (useBrowser) { descriptionBrowser.setText(demoDescription); } else { descriptionText.setText(demoDescription); } // } catch (IOException e) { // ExceptionHandler.process(e); // } } /** * Sets import demo project list. * * @param demoProjectList */ public void setImportDemoProjectList(List<DemoProjectBean> demoProjectList) { this.demoProjectList = demoProjectList; if (demoProjectList != null && demoProjectList.size() > 1) { this.setMessage(Messages.getString("ImportDemoProjectPage.message")); //$NON-NLS-1$ } } /** * Gets the index of selected demo project. * * @return */ public int getSelectedDemoProjectIndex() { return selectedDemoProjectIndex; } }