package _VisualDVM.GlobalData.Module.UI; import Common.Visual.UI_; import _VisualDVM.Current; import Common.Visual.Controls.StyledTextComboBox; import Common.Visual.Windows.Dialog.DialogFields; import _VisualDVM.Global; 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 Common.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 = Global.mainModule.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 UI_.Info("Компилятор не выбран"); }); BPickOptions.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { Pass pass = Pass.passes.get(PassCode.PickCompilerOptions); if (pass.Do(compiler)) { UI_.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 ? (Global.mainModule.HasProject() ? Global.mainModule.getProject().languageName : LanguageName.n) : ((Module) target).language; cbCompilers.addActionListener(e -> { if (cbCompilers.getSelectedItem() instanceof Compiler) { Compiler compiler = ((Compiler) cbCompilers.getSelectedItem()); UI_.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(); } }