/* * Copyright 2013-2016 consulo.io * * 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 consulo.unity3d.projectImport; import java.util.Arrays; import java.util.List; import javax.swing.Icon; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import com.intellij.ide.util.projectWizard.ModuleWizardStep; import com.intellij.ide.util.projectWizard.WizardContext; import com.intellij.openapi.application.WriteAction; import com.intellij.openapi.module.ModifiableModuleModel; import com.intellij.openapi.module.Module; import com.intellij.openapi.module.ModuleManager; import com.intellij.openapi.project.Project; import com.intellij.openapi.projectRoots.Sdk; import com.intellij.openapi.roots.ui.configuration.ModulesProvider; import com.intellij.openapi.startup.StartupManager; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.packaging.artifacts.ModifiableArtifactModel; import consulo.moduleImport.ModuleImportProvider; import consulo.unity3d.Unity3dIcons; import consulo.unity3d.jsonApi.UnityOpenFilePostHandlerRequest; import consulo.unity3d.projectImport.ui.Unity3dWizardStep; /** * @author VISTALL * @since 29.12.14 */ public class Unity3dModuleImportProvider implements ModuleImportProvider<UnityModuleImportContext> { @NotNull @Override public UnityModuleImportContext createContext() { return new UnityModuleImportContext(); } @NotNull @Override public String getName() { return "Unity3D"; } @Nullable @Override public Icon getIcon() { return Unity3dIcons.Unity3d; } @Override public boolean canImport(@NotNull VirtualFile fileOrDirectory) { return fileOrDirectory.isDirectory() && fileOrDirectory.findFileByRelativePath("ProjectSettings/ProjectSettings.asset") != null; } @NotNull @Override public List<Module> commit(@NotNull UnityModuleImportContext context, @NotNull Project project, @Nullable ModifiableModuleModel originalModel, @NotNull ModulesProvider modulesProvider, @Nullable ModifiableArtifactModel artifactModel) { Sdk unitySdk = context.getSdk(); UnityOpenFilePostHandlerRequest requestor = context.getRequestor(); boolean fromProjectStructure = originalModel != null; final ModifiableModuleModel newModel = fromProjectStructure ? originalModel : ModuleManager.getInstance(project).getModifiableModel(); Module rootModule = newModel.newModule(project.getName(), project.getBasePath()); if(!fromProjectStructure) { WriteAction.run(newModel::commit); } StartupManager.getInstance(project).registerPostStartupActivity(() -> Unity3dProjectUtil.syncProjectStep1(project, unitySdk, requestor, false)); return Arrays.asList(rootModule); } @NotNull @Override public String getFileSample() { return "<b>Unity3D</b> project"; } @Override public ModuleWizardStep[] createSteps(@NotNull WizardContext context, @NotNull UnityModuleImportContext moduleImportContext) { return new ModuleWizardStep[]{ new Unity3dWizardStep(moduleImportContext, context) }; } }