org.symbian.tools.mtw.ui/src/org/symbian/tools/mtw/internal/deployment/externalapp/ExternalApplicationDeploymentType.java
author Eugene Ostroukhov <eugeneo@symbian.org>
Thu, 29 Jul 2010 10:00:34 -0700
changeset 458 5ff93668b08c
child 459 c278f0c8917f
permissions -rw-r--r--
Emulator deployment was added
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
458
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
     1
/**
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
     2
 * Copyright (c) 2010 Symbian Foundation and/or its subsidiary(-ies).
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
     3
 * All rights reserved.
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
     4
 * This component and the accompanying materials are made available
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
     5
 * under the terms of the License "Eclipse Public License v1.0"
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
     6
 * which accompanies this distribution, and is available
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
     7
 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
     8
 *
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
     9
 * Initial Contributors:
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    10
 * Symbian Foundation - initial contribution.
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    11
 * Contributors:
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    12
 * Description:
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    13
 * Overview:
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    14
 * Details:
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    15
 * Platforms/Drives/Compatibility:
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    16
 * Assumptions/Requirement/Pre-requisites:
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    17
 * Failures and causes:
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    18
 */
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    19
package org.symbian.tools.mtw.internal.deployment.externalapp;
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    20
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    21
import java.io.File;
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    22
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    23
import org.eclipse.core.runtime.CoreException;
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    24
import org.eclipse.core.runtime.IProgressMonitor;
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    25
import org.eclipse.core.runtime.IStatus;
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    26
import org.eclipse.core.runtime.PlatformObject;
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    27
import org.eclipse.core.runtime.Status;
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    28
import org.eclipse.core.runtime.jobs.ISchedulingRule;
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    29
import org.eclipse.swt.program.Program;
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    30
import org.eclipse.ui.IMemento;
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    31
import org.symbian.tools.mtw.core.MTWCore;
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    32
import org.symbian.tools.mtw.core.projects.IMTWProject;
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    33
import org.symbian.tools.mtw.core.runtimes.IMobileWebRuntime;
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    34
import org.symbian.tools.mtw.core.runtimes.IPackager;
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    35
import org.symbian.tools.mtw.ui.deployment.IDeploymentTarget;
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    36
import org.symbian.tools.mtw.ui.deployment.IDeploymentTargetType;
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    37
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    38
public class ExternalApplicationDeploymentType extends PlatformObject implements IDeploymentTargetType,
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    39
        IDeploymentTarget {
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    40
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    41
    private IMTWProject project;
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    42
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    43
    public IStatus deploy(IMTWProject project, IMobileWebRuntime runtime, IProgressMonitor monitor)
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    44
            throws CoreException {
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    45
        Program app = getExternalApp(project);
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    46
        IPackager packager = MTWCore.getDefault().getRuntimesManager().getPackager(project, runtime);
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    47
        File file = packager.packageApplication(project, runtime, monitor);
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    48
        if (file != null) {
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    49
            app.execute(file.toString());
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    50
            return new Status(
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    51
                    IStatus.OK,
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    52
                    MTWCore.PLUGIN_ID,
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    53
                    "Mobile web application was passed as an argument to external application. Please follow its prompts to complete deployment.");
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    54
        } else {
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    55
            return new Status(IStatus.ERROR, MTWCore.PLUGIN_ID, "Application packaging failed");
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    56
        }
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    57
    }
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    58
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    59
    public void discoverTargets(IProgressMonitor monitor) throws CoreException {
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    60
        // Do nothing
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    61
    }
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    62
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    63
    public IDeploymentTarget findTarget(IMTWProject project, String id) {
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    64
        if (getExternalApp(project) != null) {
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    65
            return this;
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    66
        } else {
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    67
            return null;
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    68
        }
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    69
    }
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    70
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    71
    public String getDescription() {
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    72
        return getExternalApp(project).getName();
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    73
    }
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    74
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    75
    private Program getExternalApp(IMTWProject project) {
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    76
        this.project = project;
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    77
        IPackager packager = MTWCore.getDefault().getRuntimesManager().getPackager(project);
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    78
        if (packager != null) {
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    79
            return Program.findProgram(packager.getFileType(project));
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    80
        } else {
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    81
            return null;
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    82
        }
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    83
    }
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    84
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    85
    public String getId() {
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    86
        return "mtw.externalapp";
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    87
    }
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    88
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    89
    public String getName() {
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    90
        return "Use external application";
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    91
    }
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    92
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    93
    public Program getProgram() {
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    94
        return getExternalApp(project);
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    95
    }
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    96
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    97
    public ISchedulingRule getSchedulingRule(IDeploymentTarget target) {
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    98
        return null;
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    99
    }
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   100
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   101
    public IDeploymentTarget[] getTargets(IMTWProject project) {
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   102
        if (getExternalApp(project) != null) {
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   103
            return new IDeploymentTarget[] { this };
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   104
        } else {
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   105
            return null;
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   106
        }
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   107
    }
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   108
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   109
    public void load(IMemento memento) {
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   110
        // Do nothing
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   111
    }
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   112
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   113
    public void save(IMemento memento) {
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   114
        // Do nothing
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   115
    }
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   116
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   117
    public boolean targetsDiscovered() {
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   118
        return true;
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   119
    }
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   120
}