diff -r 7c3b884eb33b -r 2ccd3660a736 core/com.nokia.carbide.discovery.ui/src/com/nokia/carbide/internal/discovery/ui/wizard/ImportPage.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/com.nokia.carbide.discovery.ui/src/com/nokia/carbide/internal/discovery/ui/wizard/ImportPage.java Wed Aug 11 15:25:32 2010 -0500 @@ -0,0 +1,136 @@ +/* +* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ +package com.nokia.carbide.internal.discovery.ui.wizard; + + +import java.io.File; + +import org.eclipse.core.runtime.IPath; +import org.eclipse.core.runtime.Path; +import org.eclipse.jface.layout.GridDataFactory; +import org.eclipse.jface.layout.GridLayoutFactory; +import org.eclipse.jface.viewers.CheckStateChangedEvent; +import org.eclipse.jface.viewers.ICheckStateListener; +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.SelectionAdapter; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.FileDialog; + +import com.nokia.cpp.internal.api.utils.ui.BrowseDialogUtils; + +/** + * Page in import wizard + */ +class ImportPage extends AbstractImportExportPage { + + private boolean importOriginalVersion; + + // the following two arrays need to correspond + static final String[] FILTER_EXTS = { + "*.xml", //$NON-NLS-1$ + "*.*" //$NON-NLS-1$ + }; + static final String[] FILTER_EXT_NAMES = { + "XML Files", + "All Files" + }; + + + protected ImportPage() { + super("ImportPage"); //$NON-NLS-1$ + setTitle("Import Feature Configuration and Install"); + setDescription("Import a feature configurations from a file and install the features"); + } + + public void createControl(Composite parent) { + super.createControl(parent); + Composite composite = (Composite) getControl(); + + createBrowseGroup(composite, "Feature configuration file:"); + browseButton.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + FileDialog fileDialog = new FileDialog(getShell(), SWT.OPEN); + fileDialog.setText("Select an Exported Feature Configuration File"); + fileDialog.setFilterExtensions(FILTER_EXTS); + fileDialog.setFilterNames(FILTER_EXT_NAMES); + BrowseDialogUtils.initializeFrom(fileDialog, pathText); + String pathstr = fileDialog.open(); + if (pathstr != null) { + pathText.setText(pathstr); + } + } + }); + createViewerGroup(composite, "Import Features:"); + viewer.addCheckStateListener(new ICheckStateListener() { + public void checkStateChanged(CheckStateChangedEvent event) { + setPageComplete(validatePage()); + } + }); + + setPageComplete(validatePage()); + } + + protected void createVersionRadioGroup(Composite parent) { + Composite composite = new Composite(parent, SWT.NONE); + GridLayoutFactory.fillDefaults().applyTo(composite); + GridDataFactory.fillDefaults().align(SWT.FILL, SWT.BEGINNING).grab(true, false).applyTo(composite); + + final Button originalVersionCheck = new Button(composite, SWT.CHECK); + originalVersionCheck.setText("Attempt import original feature versions"); + originalVersionCheck.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + importOriginalVersion = originalVersionCheck.getSelection(); + } + }); + } + + protected boolean validatePage() { + setErrorMessage(null); + IPath path = new Path(pathText.getText()); + File file = path.toFile(); + if (file.exists()) { + FeatureInfo[] featureInfos = getFeaturesFromFile(file); + if (featureInfos.length == 0) { + setErrorMessage("The file has no valid features"); + return false; + } + viewer.setInput(featureInfos); + updateViewer(); + } + else { + setErrorMessage("A valid exported feature configuration file must be selected"); + return false; + } + + if (viewer.getCheckedElements().length == 0) { + setErrorMessage("At least one feature must be selected for import"); + return false; + } + + return true; + } + + private FeatureInfo[] getFeaturesFromFile(File file) { + // TODO + return new FeatureInfo[0]; + } + +}