org.symbian.tools.mtw.ui/src/org/symbian/tools/mtw/internal/deployment/targets/ExternalApplicationDeploymentType.java
author Eugene Ostroukhov <eugeneo@symbian.org>
Thu, 29 Jul 2010 15:59:01 -0700
changeset 460 c0bff5ed874c
parent 459 org.symbian.tools.mtw.ui/src/org/symbian/tools/mtw/internal/deployment/externalapp/ExternalApplicationDeploymentType.java@c278f0c8917f
permissions -rw-r--r--
Local filesystem 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
 */
460
c0bff5ed874c Local filesystem deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 459
diff changeset
    19
package org.symbian.tools.mtw.internal.deployment.targets;
458
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.IPackager;
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    34
import org.symbian.tools.mtw.ui.deployment.IDeploymentTarget;
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    35
import org.symbian.tools.mtw.ui.deployment.IDeploymentTargetType;
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    36
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    37
public class ExternalApplicationDeploymentType extends PlatformObject implements IDeploymentTargetType,
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    38
        IDeploymentTarget {
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    39
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    40
    private IMTWProject project;
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    41
459
c278f0c8917f Refactored packager and deployer interfaces
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 458
diff changeset
    42
    public IStatus deploy(IMTWProject project, IPackager packager, IProgressMonitor monitor)
458
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    43
            throws CoreException {
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    44
        Program app = getExternalApp(project);
459
c278f0c8917f Refactored packager and deployer interfaces
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 458
diff changeset
    45
        File file = packager.packageApplication(project, monitor);
458
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    46
        if (file != null) {
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    47
            app.execute(file.toString());
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    48
            return new Status(
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    49
                    IStatus.OK,
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    50
                    MTWCore.PLUGIN_ID,
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    51
                    "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
    52
        } else {
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    53
            return new Status(IStatus.ERROR, MTWCore.PLUGIN_ID, "Application packaging failed");
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    54
        }
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    55
    }
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
    public void discoverTargets(IProgressMonitor monitor) throws CoreException {
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    58
        // Do nothing
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    59
    }
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    60
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    61
    public IDeploymentTarget findTarget(IMTWProject project, String id) {
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    62
        if (getExternalApp(project) != null) {
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    63
            return this;
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    64
        } else {
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    65
            return null;
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    66
        }
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    67
    }
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
    public String getDescription() {
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    70
        return getExternalApp(project).getName();
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    71
    }
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    72
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    73
    private Program getExternalApp(IMTWProject project) {
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    74
        this.project = project;
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    75
        IPackager packager = MTWCore.getDefault().getRuntimesManager().getPackager(project);
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    76
        if (packager != null) {
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    77
            return Program.findProgram(packager.getFileType(project));
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    78
        } else {
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    79
            return null;
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    80
        }
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    81
    }
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
    public String getId() {
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    84
        return "mtw.externalapp";
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    85
    }
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    86
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    87
    public String getName() {
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    88
        return "Use external application";
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    89
    }
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    90
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    91
    public Program getProgram() {
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    92
        return getExternalApp(project);
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    93
    }
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    94
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    95
    public ISchedulingRule getSchedulingRule(IDeploymentTarget target) {
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    96
        return null;
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    97
    }
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    98
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    99
    public IDeploymentTarget[] getTargets(IMTWProject project) {
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   100
        if (getExternalApp(project) != null) {
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   101
            return new IDeploymentTarget[] { this };
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   102
        } else {
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   103
            return null;
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   104
        }
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   105
    }
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   106
460
c0bff5ed874c Local filesystem deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents: 459
diff changeset
   107
    public void init(IMTWProject project, IPackager packager, IMemento memento) {
458
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   108
        // Do nothing
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   109
    }
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   110
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   111
    public void save(IMemento memento) {
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   112
        // Do nothing
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   113
    }
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   114
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   115
    public boolean targetsDiscovered() {
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   116
        return true;
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   117
    }
5ff93668b08c Emulator deployment was added
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
   118
}