/*
 * Copyright 2016 The Bazel Authors. All rights reserved.
 *
 * 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.google.idea.blaze.java.wizard2;

import com.intellij.ide.util.projectWizard.ModuleWizardStep;
import com.intellij.ide.util.projectWizard.WizardContext;
import com.intellij.projectImport.ProjectImportProvider;

/**
 * The import provider for the Blaze plugin.
 */
class BlazeNewProjectImportProvider extends ProjectImportProvider {

  public BlazeNewProjectImportProvider(BlazeProjectImportBuilder builder) {
    super(builder);
  }

  @Override
  public ModuleWizardStep[] createSteps(WizardContext context) {
    return new ModuleWizardStep[]{
      new BlazeSelectWorkspaceImportWizardStep(context),
      new BlazeSelectBuildSystemBinaryStep(context),
      new BlazeSelectProjectViewImportWizardStep(context),
      new BlazeEditProjectViewImportWizardStep(context)
    };
  }
}
