package com.siberika.idea.pascal.module; import com.intellij.openapi.module.Module; import com.intellij.openapi.module.ModuleType; import com.intellij.openapi.module.ModuleTypeManager; import com.intellij.openapi.projectRoots.Sdk; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.vfs.VirtualFileManager; import com.siberika.idea.pascal.PascalIcons; import com.siberika.idea.pascal.jps.model.JpsPascalModuleType; import com.siberika.idea.pascal.sdk.BasePascalSdkType; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import javax.swing.*; /** * Author: George Bakhtadze * Date: 08/01/2013 */ public class PascalModuleType extends ModuleType<PascalModuleBuilder> { public PascalModuleType() { super(JpsPascalModuleType.MODULE_TYPE_ID); } public static PascalModuleType getInstance() { return (PascalModuleType) ModuleTypeManager.getInstance().findByID(JpsPascalModuleType.MODULE_TYPE_ID); } public static boolean isPascalModule(Module module) { return module != null && JpsPascalModuleType.MODULE_TYPE_ID.equals(ModuleType.get(module).getId()); } @NotNull @Override public PascalModuleBuilder createModuleBuilder() { return new PascalModuleBuilder(); } @NotNull @Override public String getName() { return "Pascal Module"; } @NotNull @Override public String getDescription() { return getName(); } @Override public Icon getBigIcon() { return PascalIcons.GENERAL; } @Override public Icon getNodeIcon(@Deprecated boolean isOpened) { return PascalIcons.MODULE; } @Override public boolean isValidSdk(@NotNull Module module, @Nullable Sdk projectSdk) { return (projectSdk != null) && (projectSdk.getSdkType() instanceof BasePascalSdkType); } @Nullable public static VirtualFile getMainFile(Module module) { //Object obj = module.getUserData(USERDATA_KEY_MAIN_FILE); String fileUrl = module.getOptionValue(JpsPascalModuleType.USERDATA_KEY_MAIN_FILE.toString()); Object obj = fileUrl != null ? VirtualFileManager.getInstance().findFileByUrl(VirtualFileManager.constructUrl("file", fileUrl)) : null; return obj != null ? (VirtualFile) obj : null; } public static void setMainFile(Module module, VirtualFile file) { //module.putUserData(USERDATA_KEY_MAIN_FILE, file); if (file != null) { module.setOption(JpsPascalModuleType.USERDATA_KEY_MAIN_FILE.toString(), file.getPath()); } } @Nullable public static String getExeOutputPath(Module module) { return module.getOptionValue(JpsPascalModuleType.USERDATA_KEY_EXE_OUTPUT_PATH.toString()); } public static void setExeOutputPath(Module module, String path) { module.setOption(JpsPascalModuleType.USERDATA_KEY_EXE_OUTPUT_PATH.toString(), path); } }