Package com.salesforce.ide.ui.internal.startup

Source Code of com.salesforce.ide.ui.internal.startup.ForceStartup

/*******************************************************************************
* Copyright (c) 2014 Salesforce.com, inc..
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
*     Salesforce.com, inc. - initial API and implementation
******************************************************************************/
package com.salesforce.ide.ui.internal.startup;

import java.util.HashMap;
import java.util.Map;

import org.apache.log4j.Logger;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.Platform;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.IPerspectiveDescriptor;
import org.eclipse.ui.IStartup;
import org.eclipse.ui.PlatformUI;
import org.osgi.framework.Bundle;

import com.salesforce.ide.api.metadata.types.Package;
import com.salesforce.ide.core.internal.utils.Constants;
import com.salesforce.ide.core.internal.utils.MessageDialogRunnable;
import com.salesforce.ide.core.internal.utils.Utils;
import com.salesforce.ide.ui.internal.utils.UIMessages;

/**
* Forces initialization of ForceIdeUIPlugin so that component wizards are dynamically created.
*
* Manages manifest listening - refresh project when certain package.xml edits occurr.
*
* @author cwall
*
*/
public class ForceStartup implements IStartup {

    private static Logger logger = Logger.getLogger(ForceStartup.class);

    private static Map<IResource, Package> manifestCache = new HashMap<IResource, Package>();
    public static boolean PACKAGE_MANIFEST_LISTENER_FLAG = Utils.isManifestListenerEnabled();

    public void earlyStartup() {
        if (!Utils.isSkipCompatibilityCheck()) {
            Bundle bundle = Platform.getBundle(Constants.PREV_IDE_BUNDLE_NAME);
            if (bundle != null) {
                int state = bundle.getState();
                if (logger.isDebugEnabled()) {
                    StringBuilder debugInfo = new StringBuilder("Current state of older version bundle '");
                    debugInfo.append(Constants.PREV_IDE_BUNDLE_NAME + "' is '" + state + "'");
                    debugInfo.append("Ref: UNINSTALLED=" + Bundle.UNINSTALLED + ", INSTALLED=" + Bundle.INSTALLED
                            + ", RESOLVED=" + Bundle.RESOLVED + ", STARTING=" + Bundle.STARTING + ", STOPPING="
                            + Bundle.STOPPING + ", ACTIVE=" + Bundle.ACTIVE + ")");
                    logger.debug(debugInfo);
                }

                if (state != Bundle.STOPPING || state != Bundle.UNINSTALLED) {
                    String title = UIMessages.getString("Force.Startup.Compatibility.Warning.title");

                    String bundleName = (String) bundle.getHeaders().get(Constants.BUNDLE_ATTRIBUTE_NAME);
                    String bundleVersion = (String) bundle.getHeaders().get(Constants.BUNDLE_ATTRIBUTE_VERSION);
                    String dialogMsg =
                            UIMessages.getString("Force.Startup.Compatibility.Warning.message", new String[] {
                                    bundleName, bundleVersion });

                    MessageDialogRunnable messageDialogRunnable =
                            new MessageDialogRunnable(title, null, dialogMsg, MessageDialog.WARNING,
                                    new String[] { IDialogConstants.OK_LABEL }, 0);
                    Display.getDefault().asyncExec(messageDialogRunnable);

                }
            }
        }

        Display.getDefault().asyncExec(new Runnable() {
            public void run() {
                IPerspectiveDescriptor[] perspectives =
                        PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().getOpenPerspectives();
                if (Utils.isNotEmpty(perspectives)) {

                    for (IPerspectiveDescriptor perspectiveDescriptor : perspectives) {
                        if (perspectiveDescriptor.getId().startsWith(Constants.SFDC_PREFIX)) {
                            logger.debug("Found " + perspectiveDescriptor.getId() + " perspective"); //$NON-NLS-1$ //$NON-NLS-2$
                        }
                    }
                }
            }
        });

        addPackageManifestChangeListener();
    }

    /*    private static void cacheManifests() {
            IProject[] projects = workspace.getRoot().getProjects();
            if (Utils.isEmpty(projects)) {
                return;
            }

            for (IProject project : projects) {
                cacheManifest(project);
            }
        }*/

    public static Map<IResource, Package> getManifestCache() {
        return manifestCache;
    }

    public static void addPackageManifestChangeListener() {
    //        if (PACKAGE_MANIFEST_LISTENER_FLAG) {
    //            cacheManifests();
    //            workspace.addResourceChangeListener(pmcl);
    //            if (logger.isDebugEnabled()) {
    //                logger.debug("Added PackageManifestChangeListener as workspace resource listener");
    //            }
    //        } else {
    //            if (logger.isDebugEnabled()) {
    //                logger.debug("PackageManifestChangeListener is disabled");
    //            }
    //        }
    }

    public static void removePackageManifestChangeListener() {
    //        if (PACKAGE_MANIFEST_LISTENER_FLAG) {
    //            workspace.removeResourceChangeListener(pmcl);
    //            if (logger.isDebugEnabled()) {
    //                logger.debug("Removed PackageManifestChangeListener as workspace resource listener");
    //            }
    //        } else {
    //            if (logger.isDebugEnabled()) {
    //                logger.debug("PackageManifestChangeListener is disabled");
    //            }
    //        }
    }

    public static void cacheManifest(IProject project) {
    //        try {
    //            if (project.isOpen() && project.hasNature(DefaultNature.NATURE_ID)) {
    //                IFile file = pmf.getPackageManifestFile(project);
    //                manifestCache.put(file, pmf.getPackageManifestFromFile(file));
    //
    //                if (logger.isDebugEnabled()) {
    //                    logger.debug("Cached project '" + project.getName() + "' manifest");
    //                }
    //            }
    //        } catch (Exception e) {
    //            logger.warn("Unable to cache package.xml for " + project.getName() + ": " + e.getMessage()); //$NON-NLS-1$
    //        }
    }
}
TOP

Related Classes of com.salesforce.ide.ui.internal.startup.ForceStartup

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.