package de.psi.alloy4smt.ui; import java.awt.EventQueue; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.JTextArea; import de.psi.alloy4smt.ast.HyTranslator; import de.psi.alloy4smt.hysat.HysatSolver; import edu.mit.csail.sdg.alloy4.Err; public class MainWindow extends JFrame { private static final long serialVersionUID = 1L; private static final String sampleSpec = "open util/intref\n" + "one sig A { x: Int }\n" + "fact { A.x > 4 and A.x < 9 }\n" + "pred show {}\n" + "run show\n"; private JTextArea document; public MainWindow() { super("Alloy - HySAT Minifrontend"); setLayout(new FlowLayout()); document = new JTextArea(10, 40); document.setText(sampleSpec); JButton trbtn = new JButton("Translate"); trbtn.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { try { HysatSolver solver = new HysatSolver(); HyTranslator.execute(document.getText(), solver); JOptionPane.showMessageDialog(null, "Translation successful. File is in " + solver.getHysatFile(), "Success", JOptionPane.INFORMATION_MESSAGE); } catch (Err ex) { JOptionPane.showMessageDialog(null, "Translation failed :(\n" + ex.msg, "Translation failed", JOptionPane.ERROR_MESSAGE); } } }); add(document); add(trbtn); pack(); setDefaultCloseOperation(DISPOSE_ON_CLOSE); } public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { @Override public void run() { MainWindow wnd = new MainWindow(); wnd.setVisible(true); } }); } }