diff -r 000000000000 -r fb279309251b connectivity/com.nokia.carbide.remoteConnections/src/com/nokia/carbide/remoteconnections/wizard/ImportPage.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/connectivity/com.nokia.carbide.remoteConnections/src/com/nokia/carbide/remoteconnections/wizard/ImportPage.java Fri Apr 03 23:33:03 2009 +0100 @@ -0,0 +1,129 @@ +/* +* Copyright (c) 2008 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.remoteconnections.wizard; + + +import com.nokia.carbide.remoteconnections.Messages; +import com.nokia.carbide.remoteconnections.RemoteConnectionsActivator; +import com.nokia.carbide.remoteconnections.internal.registry.Reader; + +import org.eclipse.core.runtime.IPath; +import org.eclipse.core.runtime.Path; +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.*; + +import java.io.*; + +/** + * Page in import wizard + */ +public class ImportPage extends AbstractImportExportPage { + + // 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 = { + Messages.getString("ImportPage.XMLFilesLabel"), //$NON-NLS-1$ + Messages.getString("ImportPage.AllFilesLabel") //$NON-NLS-1$ + }; + + + protected ImportPage() { + super("ImportPage"); //$NON-NLS-1$ + setTitle(Messages.getString("ImportPage.Title")); //$NON-NLS-1$ + setDescription(Messages.getString("ImportPage.Description")); //$NON-NLS-1$ + } + + public void createControl(Composite parent) { + super.createControl(parent); + Composite composite = (Composite) getControl(); + + createBrowseGroup(composite, Messages.getString("ImportPage.BrowseGroupLabel")); //$NON-NLS-1$ + browseButton.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + FileDialog fileDialog = new FileDialog(getShell(), SWT.OPEN); + fileDialog.setText(Messages.getString("ImportPage.FileDialogTitle")); //$NON-NLS-1$ + fileDialog.setFilterExtensions(FILTER_EXTS); + fileDialog.setFilterNames(FILTER_EXT_NAMES); + String pathstr = fileDialog.open(); + if (pathstr != null) { + pathText.setText(pathstr); + } + } + }); + createViewerGroup(composite, Messages.getString("ImportPage.ViewerGroupLabel")); //$NON-NLS-1$ + viewer.addCheckStateListener(new ICheckStateListener() { + public void checkStateChanged(CheckStateChangedEvent event) { + setPageComplete(validatePage(false)); + } + }); + + setPageComplete(validatePage(true)); + RemoteConnectionsActivator.setHelp(composite, ".import_wizard"); //$NON-NLS-1$ + } + + protected boolean validatePage(boolean validateFile) { + setErrorMessage(null); + boolean valid = !validateFile; + if (validateFile) { + connections = null; + viewer.setInput(connections); + IPath path = new Path(pathText.getText()); + File file = path.toFile(); + if (file.exists()) { + try { + InputStream is = new FileInputStream(file); + connections = Reader.readFromXML(RemoteConnectionsActivator.getConnectionTypeProvider(), is); + viewer.setInput(connections); + TableColumn[] columns = viewer.getTable().getColumns(); + for (TableColumn tableColumn : columns) { + tableColumn.pack(); + } + viewer.setAllChecked(true); + valid = true; + } + catch (Throwable t) { + // if we get an exception, it just means this was not a valid file + } + } + } + + if (!valid) { + setErrorMessage(Messages.getString("ImportPage.NoValidFileSelectedError")); //$NON-NLS-1$ + } + else if (connections.isEmpty()) { + setErrorMessage(Messages.getString("ImportPage.NoConnectionsInFileError")); //$NON-NLS-1$ + valid = false; + } + else if (viewer.getCheckedElements().length == 0) { + setErrorMessage(Messages.getString("ImportPage.NoConnectionsSelectedError")); //$NON-NLS-1$ + valid = false; + } + + return valid; + } + +}