package info.u250.c2d.tests; import info.u250.c2d.engine.Engine; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.DefaultListSelectionModel; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JList; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.ListSelectionModel; import com.badlogic.gdx.Preferences; import com.badlogic.gdx.backends.lwjgl.LwjglApplication; import com.badlogic.gdx.backends.lwjgl.LwjglApplicationConfiguration; import com.badlogic.gdx.backends.lwjgl.LwjglFiles; import com.badlogic.gdx.backends.lwjgl.LwjglPreferences; import com.badlogic.gdx.files.FileHandle; public class C2dDesktop { static class TestList extends JPanel { private static final long serialVersionUID = -6629737055788922919L; public TestList () { setLayout(new BorderLayout()); final JList list = new JList(C2dTests.getNames()); final JButton button = new JButton("Run Test"); JScrollPane pane = new JScrollPane(list); DefaultListSelectionModel m = new DefaultListSelectionModel(); m.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); m.setLeadAnchorNotificationEnabled(false); list.setSelectionModel(m); list.addMouseListener(new MouseAdapter() { public void mouseClicked (MouseEvent event) { if (event.getClickCount() == 2) button.doClick(); } }); final Preferences prefs = new LwjglPreferences(new FileHandle(new LwjglFiles().getExternalStoragePath() + ".prefs/c2d-tests")); list.setSelectedValue(prefs.getString("last", null), true); button.addActionListener(new ActionListener() { @Override public void actionPerformed (ActionEvent e) { String testName = (String)list.getSelectedValue(); Engine test = C2dTests.newTest(testName); LwjglApplicationConfiguration config = new LwjglApplicationConfiguration(); config.fullscreen = false; config.width =(int) Engine.getWidth(); config.height = (int) Engine.getHeight(); config.title = testName; config.vSyncEnabled = true; prefs.putString("last", testName); prefs.flush(); new LwjglApplication(test, config); } }); add(pane, BorderLayout.CENTER); add(button, BorderLayout.SOUTH); } } public static void main (String[] argv) { JFrame frame = new JFrame("C2d - Jogl Test Launcher"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setContentPane(new TestList()); frame.pack(); frame.setSize(400, 600); frame.setLocationRelativeTo(null); frame.setVisible(true); } }