76 lines
3.0 KiB
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();
|
|
}
|
|
}
|