com.hp.alm.ali.idea.genesis.GenesisAction.java Source code

Java tutorial

Introduction

Here is the source code for com.hp.alm.ali.idea.genesis.GenesisAction.java

Source

/*
 * Copyright 2013 Hewlett-Packard Development Company, L.P
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.hp.alm.ali.idea.genesis;

import com.hp.alm.ali.idea.cfg.AliProjectConfiguration;
import com.hp.alm.ali.idea.genesis.checkout.Checkout;
import com.intellij.ide.actions.ImportModuleAction;
import com.intellij.ide.impl.NewProjectUtil;
import com.intellij.ide.util.newProjectWizard.AddModuleWizard;
import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.project.ProjectManager;
import com.intellij.openapi.project.ProjectManagerAdapter;
import com.intellij.openapi.ui.Messages;
import com.intellij.openapi.vcs.CheckoutProvider;
import com.intellij.openapi.vcs.VcsConfiguration;
import com.intellij.openapi.vcs.VcsKey;
import com.intellij.openapi.vfs.LocalFileSystem;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.projectImport.ProjectImportProvider;

import java.io.File;

public class GenesisAction extends AnAction {

    public void actionPerformed(AnActionEvent anActionEvent) {
        final GenesisDialog genesis = new GenesisDialog();
        genesis.show();
        if (genesis.isOK()) {
            Checkout checkout = genesis.getCheckout();
            if (checkout != null) {
                VcsConfiguration configuration = VcsConfiguration
                        .getInstance(ProjectManager.getInstance().getDefaultProject());
                configuration.PERFORM_CHECKOUT_IN_BACKGROUND = false;
                Project p = ProjectManager.getInstance().getDefaultProject();
                checkout.setTarget(genesis.getTarget());
                checkout.doCheckout(p, new CheckoutProvider.Listener() {
                    // 11.0.1
                    public void directoryCheckedOut(File file, VcsKey vcsKey) {
                    }

                    // 10.5.4
                    public void directoryCheckedOut(File file) {
                    }

                    public void checkoutCompleted() {
                        ProjectManagerAdapter adapter = new ProjectManagerAdapter() {
                            public void projectOpened(Project project) {
                                AliProjectConfiguration conf = project.getComponent(AliProjectConfiguration.class);
                                conf.ALM_LOCATION = genesis.getAlmLocation();
                                conf.ALM_PROJECT = genesis.getProject();
                                conf.ALM_DOMAIN = genesis.getDomain();
                                conf.ALM_USERNAME = genesis.getUsername();
                                conf.ALM_PASSWORD = genesis.getPassword();
                            }
                        };

                        ProjectManager.getInstance().addProjectManagerListener(adapter);
                        try {
                            VirtualFile file = LocalFileSystem.getInstance()
                                    .findFileByIoFile(new File(genesis.getTarget()));
                            AddModuleWizard wizard = ImportModuleAction.createImportWizard(null, null, file,
                                    ProjectImportProvider.PROJECT_IMPORT_PROVIDER.getExtensions());
                            NewProjectUtil.createNewProject(null, wizard);
                        } catch (Exception e) {
                            Messages.showErrorDialog(
                                    "Failed to complete the operation. Please invoke the project wizard manually.\nSources were "
                                            + "checked out to the following location:\n\n " + genesis.getTarget(),
                                    "Operation Failed");
                        }
                        ProjectManager.getInstance().removeProjectManagerListener(adapter);
                    }
                });
            }
        }
    }
}