org.symbian.tools.mtw.ui/src/org/symbian/tools/mtw/internal/deployment/targets/LocalFileSystemPane.java
changeset 460 c0bff5ed874c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.symbian.tools.mtw.ui/src/org/symbian/tools/mtw/internal/deployment/targets/LocalFileSystemPane.java	Thu Jul 29 15:59:01 2010 -0700
@@ -0,0 +1,140 @@
+/**
+ * Copyright (c) 2010 Symbian Foundation 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:
+ * Symbian Foundation - initial contribution.
+ * Contributors:
+ * Description:
+ * Overview:
+ * Details:
+ * Platforms/Drives/Compatibility:
+ * Assumptions/Requirement/Pre-requisites:
+ * Failures and causes:
+ */
+package org.symbian.tools.mtw.internal.deployment.targets;
+
+import java.io.File;
+
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jface.layout.GridDataFactory;
+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.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.Control;
+import org.eclipse.swt.widgets.FileDialog;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+import org.symbian.tools.mtw.ui.MTWCoreUI;
+import org.symbian.tools.mtw.ui.deployment.IDeploymentTarget;
+import org.symbian.tools.mtw.ui.deployment.ITargetDetailsPane;
+
+public class LocalFileSystemPane implements ITargetDetailsPane {
+    private Composite root;
+    private Text location;
+    private FilesystemDeploymentTarget target;
+    private Context page;
+
+    public void init(Context page) {
+        this.page = page;
+    }
+
+    public void setTarget(IDeploymentTarget target) {
+        this.target = (FilesystemDeploymentTarget) target;
+        IPath path = this.target.getPath();
+        String string;
+        if (path == null) {
+            string = "";
+        } else {
+            string = path.toOSString();
+        }
+        location.setText(string);
+        page.revalidate();
+    }
+
+    public void createControl(Composite parent) {
+        root = new Composite(parent, SWT.NONE);
+        root.setLayout(new GridLayout(2, false));
+        Label label = new Label(root, SWT.NONE);
+        label.setText("File name:");
+        GridDataFactory.generate(label, 2, 1);
+        location = new Text(root, SWT.BORDER);
+        location.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+        location.addModifyListener(new ModifyListener() {
+            public void modifyText(ModifyEvent e) {
+                page.revalidate();
+            }
+        });
+        final Button button = new Button(root, SWT.NONE);
+        button.setText("Browse...");
+        button.addSelectionListener(new SelectionAdapter() {
+            @Override
+            public void widgetSelected(SelectionEvent e) {
+                browse();
+            }
+        });
+    }
+
+    protected void browse() {
+        final FileDialog dialog = new FileDialog(location.getShell(), SWT.SAVE);
+        dialog.setText("Select Application Package Location");
+        dialog.setFileName(target.getDefaultName());
+        final IPath path = target.getPath();
+        if (path != null) {
+            dialog.setFilterPath(path.removeLastSegments(1).toOSString());
+        }
+        String newPath = dialog.open();
+        if (newPath != null) {
+            location.setText(newPath);
+            page.revalidate();
+        }
+    }
+
+    public IStatus validate() {
+        target.setPath(null);
+        String path = location.getText();
+        if (path.trim().length() == 0) {
+            return new Status(IStatus.ERROR, MTWCoreUI.PLUGIN_ID, "File name must be specified");
+        } else {
+            final File file = new File(path);
+            if (!file.getParentFile().isDirectory()) {
+                return new Status(IStatus.ERROR, MTWCoreUI.PLUGIN_ID, String.format("%s is not a valid folder",
+                        file.getParent()));
+            } else {
+                IStatus status = ResourcesPlugin.getWorkspace().validateName(file.getName(), IResource.FILE);
+                if (status.getSeverity() == IStatus.ERROR) {
+                    return status;
+                } else {
+                    Path p = new Path(path.trim());
+                    target.setPath(p);
+                    if (p.toFile().exists()) {
+                        return new Status(IStatus.WARNING, MTWCoreUI.PLUGIN_ID,
+                                "Target file already exists. It will be overwritten.");
+                    } else {
+                        return status;
+                    }
+                }
+            }
+        }
+    }
+
+    public Control getControl() {
+        return root;
+    }
+
+}