org.eclipse.che.ide.factory.FactoryExtension.java Source code

Java tutorial

Introduction

Here is the source code for org.eclipse.che.ide.factory.FactoryExtension.java

Source

/*******************************************************************************
 * Copyright (c) 2012-2017 Codenvy, S.A.
 * 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:
 *   Codenvy, S.A. - initial API and implementation
 *******************************************************************************/
package org.eclipse.che.ide.factory;

import com.google.gwt.core.client.Callback;
import com.google.gwt.core.client.ScriptInjector;
import com.google.inject.Inject;
import com.google.inject.Singleton;

import org.eclipse.che.ide.api.action.ActionManager;
import org.eclipse.che.ide.api.action.DefaultActionGroup;
import org.eclipse.che.ide.api.extension.Extension;
import org.eclipse.che.ide.factory.accept.AcceptFactoryHandler;
import org.eclipse.che.ide.factory.action.CreateFactoryAction;
import org.eclipse.che.ide.factory.json.ImportFromConfigAction;
import org.eclipse.che.ide.factory.welcome.OpenWelcomePageAction;

import static com.google.gwt.core.client.ScriptInjector.TOP_WINDOW;
import static org.eclipse.che.ide.api.action.IdeActions.GROUP_PROJECT;
import static org.eclipse.che.ide.api.action.IdeActions.GROUP_WORKSPACE;

/**
 * @author Vladyslav Zhukovskii
 */
@Singleton
@Extension(title = "Factory", version = "3.0.0")
public class FactoryExtension {

    @Inject
    public FactoryExtension(AcceptFactoryHandler acceptFactoryHandler, ActionManager actionManager,
            FactoryResources resources, CreateFactoryAction configureFactoryAction,
            ImportFromConfigAction importFromConfigAction, OpenWelcomePageAction openWelcomePageAction) {
        acceptFactoryHandler.process();

        /*
         * Inject resources and js
         */
        ScriptInjector.fromUrl("https://apis.google.com/js/client:plusone.js?parsetags=explicit")
                .setWindow(TOP_WINDOW).inject();

        ScriptInjector.fromUrl("https://connect.facebook.net/en_US/sdk.js").setWindow(TOP_WINDOW)
                .setCallback(new Callback<Void, Exception>() {
                    @Override
                    public void onSuccess(Void result) {
                        init();
                    }

                    @Override
                    public void onFailure(Exception reason) {
                    }

                    private native void init() /*-{
                                               $wnd.FB.init({
                                               appId: "318167898391385",
                                               xfbml: true,
                                               version: "v2.1"
                                               });
                                               }-*/;
                }).inject();

        resources.factoryCSS().ensureInjected();

        DefaultActionGroup projectGroup = (DefaultActionGroup) actionManager.getAction(GROUP_PROJECT);
        DefaultActionGroup workspaceGroup = (DefaultActionGroup) actionManager.getAction(GROUP_WORKSPACE);

        actionManager.registerAction("openWelcomePage", openWelcomePageAction);
        actionManager.registerAction("importProjectFromCodenvyConfigAction", importFromConfigAction);
        actionManager.registerAction("configureFactoryAction", configureFactoryAction);

        projectGroup.add(importFromConfigAction);
        workspaceGroup.add(configureFactoryAction);
    }
}