sysmodelmgr/com.symbian.smt.gui/src/com/symbian/smt/gui/exportwizards/ExportSelectionPage.java
changeset 0 522a326673b6
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sysmodelmgr/com.symbian.smt.gui/src/com/symbian/smt/gui/exportwizards/ExportSelectionPage.java	Thu Mar 11 19:08:43 2010 +0200
@@ -0,0 +1,217 @@
+// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "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.symbian.smt.gui.exportwizards;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.nio.channels.FileChannel;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IWorkspace;
+import org.eclipse.core.resources.IWorkspaceRoot;
+import org.eclipse.core.resources.ProjectScope;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.preferences.IScopeContext;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.FileDialog;
+import org.eclipse.swt.widgets.List;
+import org.eclipse.swt.widgets.Text;
+
+import com.symbian.smt.gui.Activator;
+import com.symbian.smt.gui.Logger;
+import com.symbian.smt.gui.PersistentDataStore;
+import com.symbian.smt.gui.nature.Nature;
+
+public class ExportSelectionPage extends WizardPage {
+	private Text text;
+	private List list;
+
+	/**
+	 * @param pageName
+	 */
+	protected ExportSelectionPage(IStructuredSelection selection) {
+		super("wizardPage");
+		setTitle("System Model Manager Export Wizard");
+		setDescription("Select the project you wish to export the diagram from, select the location to export to and then click finish");
+		setPageComplete(false);
+	}
+
+	private void canFinish() {
+		if (text.getText().trim().length() > 0
+				&& list.getSelectionIndex() != -1) {
+			setPageComplete(true);
+		} else {
+			setPageComplete(false);
+		}
+	}
+
+	public boolean copyFile() {
+		IWorkspace workspace = ResourcesPlugin.getWorkspace();
+		IWorkspaceRoot workspaceRoot = workspace.getRoot();
+
+		IProject project = workspaceRoot.getProject(list.getItem(list
+				.getSelectionIndex()));
+
+		IScopeContext projectScope = new ProjectScope(project);
+		PersistentDataStore store = new PersistentDataStore(projectScope
+				.getNode(Activator.PLUGIN_ID));
+
+		IFile projectFile = project.getFile(store.getOutputFilename());
+
+		File toFile = new File(text.getText());
+
+		if (toFile.isDirectory()) {
+			MessageDialog.openError(getShell(), "Error", toFile.toString()
+					+ " is a directory");
+			Logger.log(toFile.toString() + " is a directory");
+			return false;
+		}
+
+		if (!projectFile.exists()) {
+			MessageDialog.openError(getShell(), "Error", "The project "
+					+ list.getItem(list.getSelectionIndex())
+					+ " does not contain a System Model Diagram");
+			return false;
+		}
+
+		if (toFile.exists()) {
+			if (!MessageDialog.openConfirm(getShell(), "Overwrite?",
+					"Do you wish to overwrite the file " + toFile.toString()
+							+ "?")) {
+				return false;
+			}
+		}
+
+		try {
+			FileChannel in = new FileInputStream(projectFile.getRawLocation()
+					.toOSString()).getChannel();
+			FileChannel out = new FileOutputStream(text.getText()).getChannel();
+
+			try {
+				in.transferTo(0, in.size(), out);
+				in.close();
+				out.close();
+			} catch (IOException e) {
+				MessageDialog.openError(getShell(), "Error", e.getMessage());
+				Logger.log(e.getMessage(), e);
+				return false;
+			}
+
+		} catch (FileNotFoundException e) {
+			MessageDialog.openError(getShell(), "Error", e.getMessage());
+			Logger.log(e.getMessage(), e);
+			return false;
+		}
+
+		return true;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets
+	 * .Composite)
+	 */
+	public void createControl(Composite parent) {
+		Composite container = new Composite(parent, SWT.NULL);
+		container.setLayout(new FillLayout(SWT.VERTICAL));
+
+		setControl(container);
+
+		final Composite composite = new Composite(container, SWT.NONE);
+		final GridLayout gridLayout = new GridLayout();
+		gridLayout.numColumns = 2;
+		composite.setLayout(gridLayout);
+
+		list = new List(composite, SWT.BORDER);
+		final GridData gd_list = new GridData(SWT.FILL, SWT.FILL, true, true,
+				2, 1);
+		list.setLayoutData(gd_list);
+		list.addSelectionListener(new SelectionListener() {
+			public void widgetDefaultSelected(SelectionEvent e) {
+			}
+
+			public void widgetSelected(SelectionEvent e) {
+				canFinish();
+			}
+		});
+
+		IWorkspace workspace = ResourcesPlugin.getWorkspace();
+		IWorkspaceRoot workspaceRoot = workspace.getRoot();
+
+		for (IProject project : workspaceRoot.getProjects()) {
+			if (project.isOpen()) {
+				try {
+					if (project.hasNature(Nature.ID)) {
+						list.add(project.getName());
+					}
+				} catch (CoreException e) {
+					Logger.log(e.getMessage(), e);
+					MessageDialog
+							.openError(getShell(), "Error", e.getMessage());
+				}
+			}
+		}
+
+		final Button browseButton = new Button(composite, SWT.NONE);
+		browseButton.setText("Browse");
+		browseButton.addSelectionListener(new SelectionAdapter() {
+			public void widgetSelected(SelectionEvent e) {
+				// Create and open a file window
+				FileDialog dialog = new FileDialog(getShell(), SWT.SAVE);
+
+				String[] filterNames = new String[1];
+
+				filterNames[0] = "*.svg";
+
+				dialog.setFilterExtensions(filterNames);
+
+				String filename = dialog.open();
+
+				if (filename != null) {
+					text.setText(filename);
+				}
+			}
+		});
+
+		text = new Text(composite, SWT.BORDER);
+		text.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
+		text.addModifyListener(new ModifyListener() {
+			public void modifyText(ModifyEvent e) {
+				canFinish();
+			}
+		});
+	}
+}
\ No newline at end of file