Files
VisualSapfor/src/_VisualDVM/GlobalData/Module/UI/ModuleAnchestorFields.java

76 lines
3.0 KiB
Java

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<Compiler> cbCompilers;
public JComboBox<String> cbCommands;
public JComboBox<String> cbFlags;
private JButton bHelp;
private JButton BPickOptions;
private Compiler compiler;
//считаем что машина есть.
public ModuleAnchestorFields() {
//-
LinkedHashMap<Integer, Compiler> 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<String> 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();
}
}