diff --git a/csharp-base-impl/src/main/java/consulo/csharp/base/module/extension/CSharpConfigurationPanel.java b/csharp-base-impl/src/main/java/consulo/csharp/base/module/extension/CSharpConfigurationPanel.java index d68242784..30de4c6d8 100644 --- a/csharp-base-impl/src/main/java/consulo/csharp/base/module/extension/CSharpConfigurationPanel.java +++ b/csharp-base-impl/src/main/java/consulo/csharp/base/module/extension/CSharpConfigurationPanel.java @@ -13,10 +13,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package consulo.csharp.base.module.extension; -import consulo.application.AllIcons; import consulo.content.bundle.Sdk; import consulo.content.bundle.SdkModel; import consulo.content.bundle.SdkType; @@ -30,10 +28,12 @@ import consulo.ide.setting.ProjectStructureSettingsUtil; import consulo.ide.setting.ShowSettingsUtil; import consulo.language.util.ModuleUtilCore; +import consulo.localize.LocalizeValue; import consulo.module.Module; import consulo.module.ModuleManager; import consulo.module.extension.MutableModuleInheritableNamedPointer; import consulo.module.ui.awt.SdkComboBox; +import consulo.platform.base.icon.PlatformIconGroup; import consulo.ui.annotation.RequiredUIAccess; import consulo.ui.ex.SimpleTextAttributes; import consulo.ui.ex.awt.*; @@ -51,257 +51,224 @@ /** * @author VISTALL - * @since 31.07.14 + * @since 2014-07-31 */ -public class CSharpConfigurationPanel extends JPanel -{ - private static final String[] ourCompileLevels = new String[]{ - "ISO-1", - "ISO-2", - "3", - "4", - "5", - "6", - "7", - "7.1", - "7.2", - "7.3", - "8", - "preview", - "latest", - "latestmajor", - "default" - }; +public class CSharpConfigurationPanel extends JPanel { + private static final String[] COMPILE_LEVELS = new String[]{ + "ISO-1", + "ISO-2", + "3", + "4", + "5", + "6", + "7", + "7.1", + "7.2", + "7.3", + "8", + "preview", + "latest", + "latestmajor", + "default" + }; - @RequiredUIAccess - public CSharpConfigurationPanel(final CSharpMutableModuleExtension ext) - { - super(new VerticalFlowLayout()); - final ComboBox levelComboBox = new ComboBox<>(); - levelComboBox.setRenderer(new ColoredListCellRenderer<>() - { - @Override - protected void customizeCellRenderer(JList list, Object value, int i, boolean b, boolean b1) - { - if(value instanceof CSharpLanguageVersion) - { - final CSharpLanguageVersion languageLevel = (CSharpLanguageVersion) value; - append(languageLevel.getPresentableName(), SimpleTextAttributes.REGULAR_ATTRIBUTES); - append(" "); - append(languageLevel.getDescriptionValue().getValue(), SimpleTextAttributes.GRAY_ATTRIBUTES); - } - else if(value instanceof Module) - { - setIcon(AllIcons.Nodes.Module); - append(((Module) value).getName(), SimpleTextAttributes.REGULAR_BOLD_ATTRIBUTES); + @RequiredUIAccess + public CSharpConfigurationPanel(final CSharpMutableModuleExtension ext) { + super(new VerticalFlowLayout()); + final ComboBox levelComboBox = new ComboBox<>(); + levelComboBox.setRenderer(new ColoredListCellRenderer<>() { + @Override + protected void customizeCellRenderer(JList list, Object value, int i, boolean b, boolean b1) { + if (value instanceof CSharpLanguageVersion languageLevel) { + append(languageLevel.getPresentableName(), SimpleTextAttributes.REGULAR_ATTRIBUTES); + append(" "); + append(languageLevel.getDescriptionValue().getValue(), SimpleTextAttributes.GRAY_ATTRIBUTES); + } + else if (value instanceof Module module) { + setIcon(PlatformIconGroup.nodesModule()); + append(module.getName(), SimpleTextAttributes.REGULAR_BOLD_ATTRIBUTES); - final CSharpModuleExtension extension = ModuleUtilCore.getExtension((Module) value, CSharpModuleExtension.class); - if(extension != null) - { - final CSharpLanguageVersion languageLevel = extension.getLanguageVersion(); - append("(" + languageLevel.getPresentableName() + ")", SimpleTextAttributes.GRAY_ATTRIBUTES); - } - } - else if(value instanceof String) - { - setIcon(AllIcons.Nodes.Module); - append((String) value, SimpleTextAttributes.ERROR_BOLD_ATTRIBUTES); - } - } - }); + CSharpModuleExtension extension = ModuleUtilCore.getExtension(module, CSharpModuleExtension.class); + if (extension != null) { + CSharpLanguageVersion languageLevel = extension.getLanguageVersion(); + append("(" + languageLevel.getPresentableName() + ")", SimpleTextAttributes.GRAY_ATTRIBUTES); + } + } + else if (value instanceof String stringValue) { + setIcon(PlatformIconGroup.nodesModule()); + append(stringValue, SimpleTextAttributes.ERROR_BOLD_ATTRIBUTES); + } + } + }); - for(CSharpLanguageVersion languageLevel : CSharpLanguageVersion.values()) - { - levelComboBox.addItem(languageLevel); - } + for (CSharpLanguageVersion languageLevel : CSharpLanguageVersion.values()) { + levelComboBox.addItem(languageLevel); + } - for(Module module : ModuleManager.getInstance(ext.getProject()).getModules()) - { - // dont add self module - if(module == ext.getModule()) - { - continue; - } + for (Module module : ModuleManager.getInstance(ext.getProject()).getModules()) { + // don't add self module + if (module == ext.getModule()) { + continue; + } - final CSharpModuleExtension extension = (CSharpModuleExtension) ModuleUtilCore.getExtension(module, ext.getId()); - if(extension != null) - { - levelComboBox.addItem(module); - } - } + CSharpModuleExtension extension = (CSharpModuleExtension) ModuleUtilCore.getExtension(module, ext.getId()); + if (extension != null) { + levelComboBox.addItem(module); + } + } - final MutableModuleInheritableNamedPointer languageVersionPointer = ext.getLanguageVersionPointer(); - final String moduleName = languageVersionPointer.getModuleName(); - if(moduleName != null) - { - final Module module = languageVersionPointer.getModule(); - if(module != null) - { - levelComboBox.setSelectedItem(module); - } - else - { - levelComboBox.addItem(moduleName); - } - } - else - { - levelComboBox.setSelectedItem(languageVersionPointer.get()); - } + final MutableModuleInheritableNamedPointer languageVersionPointer = ext.getLanguageVersionPointer(); + String moduleName = languageVersionPointer.getModuleName(); + if (moduleName != null) { + Module module = languageVersionPointer.getModule(); + if (module != null) { + levelComboBox.setSelectedItem(module); + } + else { + levelComboBox.addItem(moduleName); + } + } + else { + levelComboBox.setSelectedItem(languageVersionPointer.get()); + } - levelComboBox.addItemListener(new ItemListener() - { - @Override - @RequiredUIAccess - public void itemStateChanged(ItemEvent e) - { - final Object selectedItem = levelComboBox.getSelectedItem(); - if(selectedItem instanceof Module) - { - languageVersionPointer.set(((Module) selectedItem).getName(), null); - } - else if(selectedItem instanceof CSharpLanguageVersion) - { - languageVersionPointer.set(null, ((CSharpLanguageVersion) selectedItem).getName()); - } - else - { - languageVersionPointer.set(selectedItem.toString(), null); - } - } - }); + levelComboBox.addItemListener(new ItemListener() { + @Override + @RequiredUIAccess + public void itemStateChanged(ItemEvent e) { + Object selectedItem = levelComboBox.getSelectedItem(); + if (selectedItem instanceof Module module) { + languageVersionPointer.set(module.getName(), null); + } + else if (selectedItem instanceof CSharpLanguageVersion languageLevel) { + languageVersionPointer.set(null, languageLevel.getName()); + } + else { + languageVersionPointer.set(selectedItem.toString(), null); + } + } + }); - add(LabeledComponent.create(levelComboBox, "Language Version: ")); + add(LabeledComponent.create(levelComboBox, "Language Version: ")); - final TextFieldWithHistory compileLevelField = new TextFieldWithHistory(); - compileLevelField.setHistory(Arrays.asList(ourCompileLevels)); - compileLevelField.setHistorySize(-1); - String compilerTarget = ext.getCompilerTarget(); - if(compilerTarget != null) - { - compileLevelField.setText(compilerTarget); - } - compileLevelField.addDocumentListener(new DocumentAdapter() - { - @Override - protected void textChanged(DocumentEvent e) - { - ext.setCompilerTarget(StringUtil.nullize(compileLevelField.getText(), true)); - } - }); + final TextFieldWithHistory compileLevelField = new TextFieldWithHistory(); + compileLevelField.setHistory(Arrays.asList(COMPILE_LEVELS)); + compileLevelField.setHistorySize(-1); + String compilerTarget = ext.getCompilerTarget(); + if (compilerTarget != null) { + compileLevelField.setText(compilerTarget); + } + compileLevelField.addDocumentListener(new DocumentAdapter() { + @Override + protected void textChanged(DocumentEvent e) { + ext.setCompilerTarget(StringUtil.nullize(compileLevelField.getText(), true)); + } + }); - add(new TitledSeparator("Compiler Options")); + add(new TitledSeparator("Compiler Options")); - List extensions = CSharpCompilerProvider.EP_NAME.getExtensionList(); - DotNetSimpleModuleExtension netExtension = ext.getModuleRootLayer().getExtension(DotNetSimpleModuleExtension.class); - final Set compilerBundleTypes = new LinkedHashSet<>(); - if(netExtension != null) - { - for(CSharpCompilerProvider typeProvider : extensions) - { - SdkType bundleType = typeProvider.getBundleType(netExtension); - if(bundleType != null) - { - compilerBundleTypes.add(bundleType); - } - } - } + List extensions = CSharpCompilerProvider.EP_NAME.getExtensionList(); + DotNetSimpleModuleExtension netExtension = ext.getModuleRootLayer().getExtension(DotNetSimpleModuleExtension.class); + Set compilerBundleTypes = new LinkedHashSet<>(); + if (netExtension != null) { + for (CSharpCompilerProvider typeProvider : extensions) { + SdkType bundleType = typeProvider.getBundleType(netExtension); + if (bundleType != null) { + compilerBundleTypes.add(bundleType); + } + } + } - ProjectStructureSettingsUtil settingsUtil = (ProjectStructureSettingsUtil) ShowSettingsUtil.getInstance(); - SdkModel model = settingsUtil.getSdksModel(); - SdkComboBox compilerComboBox = new SdkComboBox(model, compilerBundleTypes::contains, null, "Auto Select", AllIcons.Actions.FindPlain); + ProjectStructureSettingsUtil settingsUtil = ShowSettingsUtil.getInstance(); + SdkModel model = settingsUtil.getSdksModel(); + SdkComboBox compilerComboBox = new SdkComboBox( + model, + compilerBundleTypes::contains, + null, + LocalizeValue.localizeTODO("Auto Select"), + PlatformIconGroup.actionsFind() + ); - for(CSharpCompilerProvider provider : extensions) - { - provider.insertCustomSdkItems(netExtension, compilerComboBox); - } + for (CSharpCompilerProvider provider : extensions) { + provider.insertCustomSdkItems(netExtension, compilerComboBox); + } - final MutableModuleInheritableNamedPointer customCompilerSdkPointer = ext.getCustomCompilerSdkPointer(); - if(customCompilerSdkPointer.isNull()) - { - compilerComboBox.setSelectedNoneSdk(); - } - else - { - compilerComboBox.setSelectedSdk(customCompilerSdkPointer.getName()); - } + MutableModuleInheritableNamedPointer customCompilerSdkPointer = ext.getCustomCompilerSdkPointer(); + if (customCompilerSdkPointer.isNull()) { + compilerComboBox.setSelectedNoneSdk(); + } + else { + compilerComboBox.setSelectedSdk(customCompilerSdkPointer.getName()); + } - compilerComboBox.addItemListener(e -> { - if(e.getStateChange() == ItemEvent.SELECTED) - { - customCompilerSdkPointer.set(compilerComboBox.getSelectedModuleName(), compilerComboBox.getSelectedSdkName()); - } - }); + compilerComboBox.addItemListener(e -> { + if (e.getStateChange() == ItemEvent.SELECTED) { + customCompilerSdkPointer.set(compilerComboBox.getSelectedModuleName(), compilerComboBox.getSelectedSdkName()); + } + }); - add(LabeledComponent.create(compilerComboBox, "Compiler")); - add(LabeledComponent.create(compileLevelField, "Compiler Target (/langversion):")); + add(LabeledComponent.create(compilerComboBox, "Compiler")); + add(LabeledComponent.create(compileLevelField, "Compiler Target (/langversion):")); - final ComboBox platformComboBox = new ComboBox<>(CSharpPlatform.values()); - platformComboBox.setSelectedItem(ext.getPlatform()); - platformComboBox.setRenderer(new ColoredListCellRenderer() - { - @Override - protected void customizeCellRenderer(JList jList, CSharpPlatform platform, int i, boolean b, boolean b1) - { - switch(platform) - { - case ANY_CPU: - append("Any CPU"); - break; - case ANY_CPU_32BIT_PREFERRED: - append("Any CPU"); - append(" (32 bit preferred)", SimpleTextAttributes.GRAY_ATTRIBUTES); - break; - case ARM: - append("ARM"); - break; - case X86: - append("x86"); - break; - case X64: - append("x64"); - break; - case ITANIUM: - append("Itanium"); - break; - } - } - }); + ComboBox platformComboBox = new ComboBox<>(CSharpPlatform.values()); + platformComboBox.setSelectedItem(ext.getPlatform()); + platformComboBox.setRenderer(new ColoredListCellRenderer<>() { + @Override + protected void customizeCellRenderer(JList jList, CSharpPlatform platform, int i, boolean b, boolean b1) { + switch (platform) { + case ANY_CPU: + append("Any CPU"); + break; + case ANY_CPU_32BIT_PREFERRED: + append("Any CPU"); + append(" (32 bit preferred)", SimpleTextAttributes.GRAY_ATTRIBUTES); + break; + case ARM: + append("ARM"); + break; + case X86: + append("x86"); + break; + case X64: + append("x64"); + break; + case ITANIUM: + append("Itanium"); + break; + } + } + }); - platformComboBox.addItemListener(e -> { - if(e.getStateChange() == ItemEvent.SELECTED) - { - ext.setPlatform((CSharpPlatform) platformComboBox.getSelectedItem()); - } - }); + platformComboBox.addItemListener(e -> { + if (e.getStateChange() == ItemEvent.SELECTED) { + ext.setPlatform((CSharpPlatform) platformComboBox.getSelectedItem()); + } + }); - add(LabeledComponent.create(platformComboBox, "Platform (/platform): ")); + add(LabeledComponent.create(platformComboBox, "Platform (/platform): ")); - final JBCheckBox allowUnsafeCode = new JBCheckBox("Allow unsafe code (/unsafe)", ext.isAllowUnsafeCode()); - allowUnsafeCode.addActionListener(e -> ext.setAllowUnsafeCode(allowUnsafeCode.isSelected())); + JBCheckBox allowUnsafeCode = new JBCheckBox("Allow unsafe code (/unsafe)", ext.isAllowUnsafeCode()); + allowUnsafeCode.addActionListener(e -> ext.setAllowUnsafeCode(allowUnsafeCode.isSelected())); - add(allowUnsafeCode); + add(allowUnsafeCode); - final JBCheckBox optimizeCode = new JBCheckBox("Optimize Code (/optimize+)", ext.isOptimizeCode()); - optimizeCode.addActionListener(e -> ext.setOptimizeCode(optimizeCode.isSelected())); - add(optimizeCode); + JBCheckBox optimizeCode = new JBCheckBox("Optimize Code (/optimize+)", ext.isOptimizeCode()); + optimizeCode.addActionListener(e -> ext.setOptimizeCode(optimizeCode.isSelected())); + add(optimizeCode); - ComboBox nullableBox = new ComboBox<>(CSharpNullableOption.values()); - nullableBox.setRenderer(new ColoredListCellRenderer() - { - @Override - protected void customizeCellRenderer(JList jList, CSharpNullableOption option, int i, boolean b, boolean b1) - { - append(option.getDescription().getValue()); - } - }); - nullableBox.addItemListener(e -> { - if(e.getStateChange() == ItemEvent.SELECTED) - { - ext.setNullableOption((CSharpNullableOption) nullableBox.getSelectedItem()); - } - }); - nullableBox.setSelectedItem(ext.getNullableOption()); - add(LabeledComponent.create(nullableBox, "Nullable C# 8+ (/nullable)")); - } + ComboBox nullableBox = new ComboBox<>(CSharpNullableOption.values()); + nullableBox.setRenderer(new ColoredListCellRenderer<>() { + @Override + protected void customizeCellRenderer(JList jList, CSharpNullableOption option, int i, boolean b, boolean b1) { + append(option.getDescription().getValue()); + } + }); + nullableBox.addItemListener(e -> { + if (e.getStateChange() == ItemEvent.SELECTED) { + ext.setNullableOption((CSharpNullableOption) nullableBox.getSelectedItem()); + } + }); + nullableBox.setSelectedItem(ext.getNullableOption()); + add(LabeledComponent.create(nullableBox, "Nullable C# 8+ (/nullable)")); + } }