package _VisualDVM.GlobalData.Module.UI; import Common.Visual.CommonUI; import _VisualDVM.Current; import Common.Visual.Controls.StyledTextComboBox; import Common.Visual.Windows.Dialog.DialogFields; import _VisualDVM.GlobalData.Compiler.Compiler; import _VisualDVM.GlobalData.Makefile.Makefile; import _VisualDVM.GlobalData.Module.Module; import _VisualDVM.GlobalData.Module.ModuleAnchestor; import _VisualDVM.ProjectData.LanguageName; import Visual_DVM_2021.Passes.PassCode; import Visual_DVM_2021.Passes.Pass; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.LinkedHashMap; public class ModuleAnchestorFields implements DialogFields { public JPanel content; public JComboBox cbCompilers; public JComboBox cbCommands; public JComboBox cbFlags; private JButton bHelp; private JButton BPickOptions; private Compiler compiler; //считаем что машина есть. public ModuleAnchestorFields() { //- LinkedHashMap compilers = Current.getMachine().getCompilers(); compilers.values().forEach(compiler -> cbCompilers.addItem(compiler)); bHelp.addActionListener(e -> { if (cbCompilers.getSelectedItem() != null) { Pass.passes.get(PassCode.ShowCompilerHelp).Do(compiler, true); } else CommonUI.Info("Компилятор не выбран"); }); BPickOptions.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { Pass pass = Pass.passes.get(PassCode.PickCompilerOptions); if (pass.Do(compiler)) { CommonUI.TrySelect(cbFlags, pass.target); } } }); cbCompilers.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { compiler = (Compiler) cbCompilers.getSelectedItem(); } }); } public void setListeners(ModuleAnchestor target) { boolean linker = (target instanceof Makefile); LanguageName languageName = linker ? (Current.HasProject() ? Current.getProject().languageName : LanguageName.n) : ((Module) target).language; cbCompilers.addActionListener(e -> { if (cbCompilers.getSelectedItem() instanceof Compiler) { Compiler compiler = ((Compiler) cbCompilers.getSelectedItem()); CommonUI.TrySelect(cbCommands, linker ? compiler.getSpecialLinkCommand(languageName) : compiler.getSpecialCompilationCommand(languageName)); } }); } @Override public Component getContent() { return content; } private void createUIComponents() { // TODO: place custom component creation code here cbFlags = new StyledTextComboBox(); } }