| /******************************************************************************* |
| * Copyright (c) 2018 Agence spatiale canadienne / Canadian Space Agency |
| * 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: |
| * Pierre Allard, |
| * Regent L'Archeveque - initial API and implementation |
| * |
| * SPDX-License-Identifier: EPL-1.0 |
| *******************************************************************************/ |
| package org.eclipse.apogy.core.environment.earth.surface.ui.wizards; |
| |
| import org.eclipse.apogy.core.environment.WorksitesList; |
| import org.eclipse.apogy.core.environment.earth.surface.EarthSurfaceWorksite; |
| import org.eclipse.apogy.core.environment.earth.surface.ui.composites.EarthSurfaceWorksiteDetailsComposite; |
| import org.eclipse.apogy.core.environment.earth.surface.ui.composites.EarthSurfaceWorksiteImportFromFileComposite; |
| import org.eclipse.apogy.core.environment.earth.surface.ui.composites.EarthSurfaceWorksiteOriginComposite; |
| import org.eclipse.apogy.core.environment.earth.surface.ui.composites.EarthSurfaceWorksitesRegistryComposite; |
| import org.eclipse.jface.wizard.WizardPage; |
| import org.eclipse.swt.SWT; |
| import org.eclipse.swt.events.SelectionAdapter; |
| import org.eclipse.swt.layout.GridData; |
| import org.eclipse.swt.layout.GridLayout; |
| import org.eclipse.swt.widgets.Composite; |
| import org.eclipse.swt.widgets.Group; |
| import org.eclipse.swt.widgets.TabFolder; |
| import org.eclipse.swt.widgets.TabItem; |
| |
| public class ImportEarthSurfaceWorksiteWizardPage extends WizardPage { |
| private final static String WIZARD_PAGE_ID = "org.eclipse.apogy.core.environment.earth.surface.ui.wizards.ImportEarthSurfaceWorksiteWizardPage"; |
| |
| private TabFolder tabFolder; |
| private TabItem tabItemFromRegistry; |
| private TabItem tabItemFromFile; |
| |
| private EarthSurfaceWorksite selectedEarthSurfaceWorksite; |
| private EarthSurfaceWorksitesRegistryComposite earthSurfaceWorksitesRegistryComposite; |
| private EarthSurfaceWorksiteImportFromFileComposite earthSurfaceWorksiteImportFromFileComposite; |
| |
| private EarthSurfaceWorksiteDetailsComposite earthSurfaceWorksiteDetailsComposite; |
| private EarthSurfaceWorksiteOriginComposite earthSurfaceWorksiteOriginComposite; |
| |
| public ImportEarthSurfaceWorksiteWizardPage(WorksitesList worksitesList) { |
| super(WIZARD_PAGE_ID); |
| |
| setTitle("Import Earth Surface Worksite"); |
| setDescription("Select the Earth Surface Worksite to import."); |
| } |
| |
| private void setSelectedEarthSurfaceWorksite(EarthSurfaceWorksite selectedEarthSurfaceWorksite) { |
| this.selectedEarthSurfaceWorksite = selectedEarthSurfaceWorksite; |
| |
| this.earthSurfaceWorksiteDetailsComposite.setEarthSurfaceWorksite(selectedEarthSurfaceWorksite); |
| this.earthSurfaceWorksiteOriginComposite.setEarthSurfaceWorksite(selectedEarthSurfaceWorksite); |
| |
| newSelectedEarthSurfaceWorksite(selectedEarthSurfaceWorksite); |
| } |
| |
| public EarthSurfaceWorksite getSelectedEarthSurfaceWorksite() { |
| return this.selectedEarthSurfaceWorksite; |
| } |
| |
| protected void newSelectedEarthSurfaceWorksite(EarthSurfaceWorksite selectedEarthSurfaceWorksite) { |
| } |
| |
| @Override |
| public void createControl(Composite parent) { |
| Composite container = new Composite(parent, SWT.None); |
| container.setLayout(new GridLayout(2, false)); |
| |
| // Tab on left end side |
| this.tabFolder = new TabFolder(container, SWT.BORDER); |
| this.tabFolder.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 1, 1)); |
| this.tabFolder.addSelectionListener(new SelectionAdapter() { |
| @Override |
| public void widgetSelected(org.eclipse.swt.events.SelectionEvent event) { |
| TabItem tabItem = ImportEarthSurfaceWorksiteWizardPage.this.tabFolder.getSelection()[0]; |
| |
| if (tabItem == ImportEarthSurfaceWorksiteWizardPage.this.tabItemFromRegistry) { |
| setSelectedEarthSurfaceWorksite( |
| ImportEarthSurfaceWorksiteWizardPage.this.earthSurfaceWorksitesRegistryComposite |
| .getSelectedEarthSurfaceWorksite()); |
| } else if (tabItem == ImportEarthSurfaceWorksiteWizardPage.this.tabItemFromFile) { |
| setSelectedEarthSurfaceWorksite( |
| ImportEarthSurfaceWorksiteWizardPage.this.earthSurfaceWorksiteImportFromFileComposite |
| .getSelectedEarthSurfaceWorksite()); |
| } |
| } |
| }); |
| this.tabFolder.pack(); |
| |
| this.tabItemFromRegistry = new TabItem(this.tabFolder, SWT.NONE); |
| populateTabItemFromRegistry(this.tabFolder, this.tabItemFromRegistry); |
| |
| this.tabItemFromFile = new TabItem(this.tabFolder, SWT.NONE); |
| populateTabItemFromFile(this.tabFolder, this.tabItemFromFile); |
| |
| // Selected Worksite Overview on the right. |
| Group overviewGroup = new Group(container, SWT.BORDER); |
| overviewGroup.setText("Selected Worksite"); |
| overviewGroup.setLayout(new GridLayout(1, false)); |
| GridData gd_overviewGroup = new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1); |
| overviewGroup.setLayoutData(gd_overviewGroup); |
| |
| Group worksiteOriginGroup = new Group(overviewGroup, SWT.BORDER); |
| worksiteOriginGroup.setText("Worksite Origin"); |
| worksiteOriginGroup.setLayout(new GridLayout(1, false)); |
| GridData gd_worksiteOriginGroup = new GridData(SWT.FILL, SWT.FILL, true, true, 1, 2); |
| worksiteOriginGroup.setLayoutData(gd_worksiteOriginGroup); |
| |
| this.earthSurfaceWorksiteOriginComposite = new EarthSurfaceWorksiteOriginComposite(worksiteOriginGroup, |
| SWT.NONE); |
| GridData gd_earthSurfaceWorksiteOriginComposite = new GridData(SWT.FILL, SWT.FILL, true, true); |
| this.earthSurfaceWorksiteOriginComposite.setLayoutData(gd_earthSurfaceWorksiteOriginComposite); |
| |
| Group worksiteDetailsGroup = new Group(overviewGroup, SWT.BORDER); |
| worksiteDetailsGroup.setText("Worksite Details"); |
| worksiteDetailsGroup.setLayout(new GridLayout(1, false)); |
| GridData gd_worksiteDetailsGroup = new GridData(SWT.FILL, SWT.FILL, true, true, 1, 2); |
| worksiteDetailsGroup.setLayoutData(gd_worksiteDetailsGroup); |
| |
| this.earthSurfaceWorksiteDetailsComposite = new EarthSurfaceWorksiteDetailsComposite(worksiteDetailsGroup, |
| SWT.NONE); |
| GridData gd_earthSurfaceWorksiteDetailsComposite = new GridData(SWT.FILL, SWT.FILL, true, true); |
| this.earthSurfaceWorksiteDetailsComposite.setLayoutData(gd_earthSurfaceWorksiteDetailsComposite); |
| |
| setControl(container); |
| |
| setPageComplete(false); |
| } |
| |
| private void populateTabItemFromRegistry(final TabFolder tabFolder, final TabItem tabItem) { |
| tabItem.setText("From Registry"); |
| |
| Composite top = new Composite(tabFolder, SWT.NONE); |
| top.setLayout(new GridLayout(1, false)); |
| |
| this.earthSurfaceWorksitesRegistryComposite = new EarthSurfaceWorksitesRegistryComposite(top, SWT.NONE) { |
| @Override |
| protected void newEarthSurfaceWorksiteSelected(EarthSurfaceWorksite earthSurfaceWorksite) { |
| ImportEarthSurfaceWorksiteWizardPage.this.selectedEarthSurfaceWorksite = earthSurfaceWorksite; |
| setPageComplete(ImportEarthSurfaceWorksiteWizardPage.this.selectedEarthSurfaceWorksite != null); |
| |
| setSelectedEarthSurfaceWorksite(ImportEarthSurfaceWorksiteWizardPage.this.selectedEarthSurfaceWorksite); |
| } |
| }; |
| |
| GridData gd_earthSurfaceWorksitesRegistryComposite = new GridData(SWT.FILL, SWT.FILL, true, true); |
| this.earthSurfaceWorksitesRegistryComposite.setLayoutData(gd_earthSurfaceWorksitesRegistryComposite); |
| |
| tabItem.setControl(top); |
| } |
| |
| private void populateTabItemFromFile(final TabFolder tabFolder, final TabItem tabItem) { |
| tabItem.setText("From File"); |
| |
| Composite top = new Composite(tabFolder, SWT.NONE); |
| top.setLayout(new GridLayout(1, false)); |
| |
| this.earthSurfaceWorksiteImportFromFileComposite = new EarthSurfaceWorksiteImportFromFileComposite(top, |
| SWT.NONE) { |
| @Override |
| protected void newEarthSurfaceWorksiteSelected(EarthSurfaceWorksite earthSurfaceWorksite) { |
| ImportEarthSurfaceWorksiteWizardPage.this.selectedEarthSurfaceWorksite = earthSurfaceWorksite; |
| setPageComplete(ImportEarthSurfaceWorksiteWizardPage.this.selectedEarthSurfaceWorksite != null); |
| |
| setSelectedEarthSurfaceWorksite(ImportEarthSurfaceWorksiteWizardPage.this.selectedEarthSurfaceWorksite); |
| } |
| }; |
| GridData gd_earthSurfaceWorksiteImportFromFileComposite = new GridData(SWT.FILL, SWT.FILL, true, true); |
| this.earthSurfaceWorksiteImportFromFileComposite.setLayoutData(gd_earthSurfaceWorksiteImportFromFileComposite); |
| |
| tabItem.setControl(top); |
| } |
| } |