javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt/UninstallConfirmationView.java
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Thu, 15 Jul 2010 18:31:06 +0300
branchRCL_3
changeset 23 e5618cc85d74
parent 14 04becd199f91
permissions -rw-r--r--
Revision: v2.1.32 Kit: 2010127

/*
* Copyright (c) 2008-2010 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.nokia.mj.impl.installer.ui.eswt;

import com.nokia.mj.impl.installer.ui.ApplicationInfo;
import com.nokia.mj.impl.installer.ui.UninstallInfo;

import java.io.InputStream;

import org.eclipse.swt.SWT;
import org.eclipse.swt.SWTException;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;

/**
 * UninstallConfirmationView asks uninstallation confirmation
 * from the user.
 */
public class UninstallConfirmationView extends ConfirmationViewBase
{
    private UninstallInfo iUninstallInfo = null;

    /** Constructor */
    protected UninstallConfirmationView()
    {
        super();
    }

    /** Constructor */
    protected UninstallConfirmationView(InstallerUiEswt aInstaller, Composite aParent)
    {
        super(aInstaller, aParent, 8);
        setTitle(InstallerUiTexts.get(InstallerUiTexts.UNINSTALL));
        setCommands(InstallerUiTexts.get(InstallerUiTexts.OK),
                    InstallerUiTexts.get(InstallerUiTexts.CANCEL));
    }

    /**
     * Synchoronous method for asking user confirmation.
     */
    public boolean confirm(UninstallInfo aUninstallInfo)
    {
        iUninstallInfo = aUninstallInfo;
        boolean result = confirm();
        if (result)
        {
            log("uninstallConfirmationView confirmed");
        }
        else
        {
            log("uninstallConfirmationView cancelled");
        }
        return result;
    }

    /**
     * This method is called once before view is opened.
     * Inheriting class must implement this method.
     */
    protected void createView()
    {
        GridData gridData = null;
        int horizontalSpan = getColumns() - 1;
        int labelStyle = SWT.WRAP;

        InputStream iconInputStream = iUninstallInfo.getIconInputStream();
        if (iconInputStream != null)
        {
            Image image = InstallerUiEswt.loadImage
                          (getComposite().getDisplay(), iconInputStream,
                           iUninstallInfo.getIconPath());
            if (image != null)
            {
                Label iconLabel = createLabel(image, 2, SWT.NONE);
                horizontalSpan = getColumns() - 3;
            }
            else
            {
                horizontalSpan = getColumns() - 1;
            }
        }

        // Add title.
        Label titleLabel = createLabel
                           (InstallerUiTexts.get
                            (InstallerUiTexts.UNINSTALL_QUERY,
                             new String[] { iUninstallInfo.getName() }),
                            horizontalSpan, labelStyle);
        titleLabel.setFont(iInstallerUi.getBoldFont());

        // Add security icon.
        boolean identified = (iUninstallInfo.getCertificates() != null);
        Label securityIconLabel = createSecurityLabel(identified);

        horizontalSpan = getColumns();

        Label nameLabel = createLabel
                          (InstallerUiTexts.get
                           (InstallerUiTexts.NAME,
                            new String[] { iUninstallInfo.getName() }),
                           horizontalSpan, labelStyle);

        Label vendorLabel = createLabel
            (InstallerUiTexts.get
             (InstallerUiTexts.VENDOR,
              new String[] { iUninstallInfo.getVendor() }),
             horizontalSpan, labelStyle);

        Label versionLabel = createLabel
                             (InstallerUiTexts.get
                              (InstallerUiTexts.VERSION,
                               new String[] { iUninstallInfo.getVersion() }),
                              horizontalSpan, labelStyle);

        ApplicationInfo[] apps = iUninstallInfo.getApplications();
        if (apps != null && apps.length > 0)
        {
            if (apps.length > 1 ||
                    !iUninstallInfo.getName().equals(apps[0].getName()))
            {
                Label appsLabel = createLabel
                                  (InstallerUiTexts.get
                                   (InstallerUiTexts.APPLICATIONS),
                                   horizontalSpan, labelStyle);

                for (int i = 0; i < apps.length; i++)
                {
                    Label appLabel = createLabel
                                     (InstallerUiTexts.get
                                      (InstallerUiTexts.APP_NAME,
                                       new String[] { apps[i].getName() }),
                                      horizontalSpan, labelStyle);
                }
            }
        }

        String deleteConfirm = iUninstallInfo.getDeleteConfirm();
        if (deleteConfirm != null)
        {
            Label deleteConfirmLabel = createLabel
                                       (deleteConfirm, horizontalSpan, labelStyle);
        }
    }

    /**
     * This method is called after user has answered
     * to confirmation.
     * Inheriting class must implement this method.
     */
    protected void getDataFromView()
    {
        // No data to get from uninstallation confirmation.
    }

    /**
     * Returns SWT style for this view.
     */
    protected int getStyle()
    {
        return SWT.V_SCROLL;
    }
}