5e1aedad8861cafdc8c2d518e63c1de556a0e0c2
[idea/community.git] / platform / workspaceModel-ide / src / com / intellij / workspace / legacyBridge / intellij / LegacyBridgeModuleImpl.kt
1 // Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
2 package com.intellij.workspace.legacyBridge.intellij
3
4 import com.intellij.ide.plugins.IdeaPluginDescriptorImpl
5 import com.intellij.ide.plugins.PluginManagerCore
6 import com.intellij.openapi.components.impl.stores.IComponentStore
7 import com.intellij.openapi.module.impl.ModuleImpl
8 import com.intellij.openapi.project.Project
9 import com.intellij.openapi.roots.ModuleRootManager
10 import com.intellij.openapi.vfs.LocalFileSystem
11 import com.intellij.openapi.vfs.VirtualFile
12 import com.intellij.workspace.api.ModuleId
13 import com.intellij.workspace.api.TypedEntityStorageDiffBuilder
14 import com.intellij.workspace.api.TypedEntityStore
15 import java.io.File
16
17 internal class LegacyBridgeModuleImpl(
18   override var moduleEntityId: ModuleId,
19   name: String,
20   project: Project,
21   private val filePath: String,
22   override var entityStore: TypedEntityStore,
23   override var diff: TypedEntityStorageDiffBuilder?
24 ) : ModuleImpl(name, project, filePath), LegacyBridgeModule {
25
26   override fun rename(newName: String, notifyStorage: Boolean) {
27     moduleEntityId = moduleEntityId.copy(name = newName)
28     super<ModuleImpl>.rename(newName, notifyStorage)
29   }
30
31   override fun registerComponents(plugins: List<IdeaPluginDescriptorImpl>,
32                                   notifyListeners: Boolean) {
33     super.registerComponents(plugins, false)
34
35     val pluginDescriptor = PluginManagerCore.getPlugin(PluginManagerCore.CORE_ID)
36                            ?: error("Could not find plugin by id: ${PluginManagerCore.CORE_ID}")
37
38     registerComponent(ModuleRootManager::class.java, LegacyBridgeModuleRootComponent::class.java, pluginDescriptor, true)
39
40     registerService(LegacyBridgeFilePointerProvider::class.java, LegacyBridgeFilePointerProviderImpl::class.java, pluginDescriptor, false)
41     registerService(IComponentStore::class.java, LegacyBridgeModuleStoreImpl::class.java, pluginDescriptor, true)
42   }
43
44   override fun getModuleFile(): VirtualFile? = LocalFileSystem.getInstance().findFileByIoFile(File(filePath))
45
46   // TODO It should participate in rename too
47   override fun getModuleFilePath(): String = filePath
48 }