diff options
Diffstat (limited to 'java/remote-servers/impl/src/com/intellij/remoteServer/impl/module/CloudModuleBuilder.java')
-rw-r--r-- | java/remote-servers/impl/src/com/intellij/remoteServer/impl/module/CloudModuleBuilder.java | 64 |
1 files changed, 62 insertions, 2 deletions
diff --git a/java/remote-servers/impl/src/com/intellij/remoteServer/impl/module/CloudModuleBuilder.java b/java/remote-servers/impl/src/com/intellij/remoteServer/impl/module/CloudModuleBuilder.java index 4aa8d60bcea4..62e256c14c8e 100644 --- a/java/remote-servers/impl/src/com/intellij/remoteServer/impl/module/CloudModuleBuilder.java +++ b/java/remote-servers/impl/src/com/intellij/remoteServer/impl/module/CloudModuleBuilder.java @@ -16,6 +16,7 @@ package com.intellij.remoteServer.impl.module; import com.intellij.icons.AllIcons; +import com.intellij.ide.util.newProjectWizard.impl.FrameworkSupportModelBase; import com.intellij.ide.util.projectWizard.JavaModuleBuilder; import com.intellij.ide.util.projectWizard.ModuleBuilderListener; import com.intellij.ide.util.projectWizard.ModuleWizardStep; @@ -23,20 +24,42 @@ import com.intellij.ide.util.projectWizard.WizardContext; import com.intellij.openapi.Disposable; import com.intellij.openapi.module.JavaModuleType; import com.intellij.openapi.module.Module; +import com.intellij.openapi.project.Project; +import com.intellij.openapi.roots.ModifiableRootModel; import com.intellij.openapi.roots.ui.configuration.ModulesProvider; +import com.intellij.openapi.roots.ui.configuration.projectRoot.LibrariesContainer; +import com.intellij.openapi.roots.ui.configuration.projectRoot.LibrariesContainerFactory; +import com.intellij.openapi.util.text.StringUtil; +import com.intellij.remoteServer.ServerType; import com.intellij.remoteServer.configuration.RemoteServer; +import com.intellij.util.containers.hash.HashMap; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import javax.swing.*; +import java.util.Map; public class CloudModuleBuilder extends JavaModuleBuilder { private RemoteServer<?> myAccount; private CloudApplicationConfiguration myApplicationConfiguration; + private FrameworkSupportModelBase myFrameworkSupportModel; + + private Map<ServerType<?>, CloudModuleBuilderContribution> myCloudType2Contribution; + private Project myProject; public CloudModuleBuilder() { + myCloudType2Contribution = new HashMap<ServerType<?>, CloudModuleBuilderContribution>(); + + ModuleConfigurationUpdater configurationUpdater = new ModuleConfigurationUpdater() { + + public void update(@NotNull final Module module, @NotNull final ModifiableRootModel rootModel) { + preConfigureModule(module, rootModel); + } + }; + addModuleConfigurationUpdater(configurationUpdater); + addListener(new ModuleBuilderListener() { @Override @@ -93,7 +116,8 @@ public class CloudModuleBuilder extends JavaModuleBuilder { @Nullable @Override public ModuleWizardStep getCustomOptionsStep(WizardContext context, Disposable parentDisposable) { - return new CloudModuleWizardStep(this, context.getProject(), parentDisposable); + myProject = context.getProject(); + return new CloudModuleWizardStep(this, myProject, parentDisposable); } public void setAccount(RemoteServer<?> account) { @@ -108,7 +132,43 @@ public class CloudModuleBuilder extends JavaModuleBuilder { myApplicationConfiguration = applicationConfiguration; } + public CloudApplicationConfiguration getApplicationConfiguration() { + return myApplicationConfiguration; + } + + public CloudModuleBuilderContribution getContribution(ServerType<?> cloudType) { + CloudModuleBuilderContribution result = myCloudType2Contribution.get(cloudType); + if (result == null) { + result = CloudModuleBuilderContributionFactory.getInstanceByType(cloudType).createContribution(this); + myCloudType2Contribution.put(cloudType, result); + } + return result; + } + + private CloudModuleBuilderContribution getContribution() { + return getContribution(myAccount.getType()); + } + + private void preConfigureModule(Module module, ModifiableRootModel model) { + getContribution().preConfigureModule(module, model); + } + private void configureModule(final Module module) { - CloudModuleBuilderContribution.getInstanceByType(myAccount.getType()).configureModule(module, myAccount, myApplicationConfiguration); + getContribution().configureModule(module); + } + + public FrameworkSupportModelBase getFrameworkSupportModel() { + if (myFrameworkSupportModel == null) { + final LibrariesContainer librariesContainer = LibrariesContainerFactory.createContainer(myProject); + myFrameworkSupportModel = new FrameworkSupportModelBase(myProject, this, librariesContainer) { + + @NotNull + @Override + public String getBaseDirectoryForLibrariesPath() { + return StringUtil.notNullize(getContentEntryPath()); + } + }; + } + return myFrameworkSupportModel; } } |