package org.robovm.idea.components.setupwizard; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.net.URI; import javax.swing.*; import com.robovm.lm.LicenseManager; public class LicenseSetupDialog extends JDialog { private JPanel header; private JPanel panel; private JLabel infoText; private JButton nextButton; private JButton signUpButton; private JButton activateKeyButton; private JTextField licenseKey; private JLabel licenseInfo; private Color defaultColor; public LicenseSetupDialog() { setContentPane(panel); setModalityType(ModalityType.APPLICATION_MODAL); setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE); setTitle("RoboVM Setup"); infoText.setText("<html>If you signed up for a RoboVM Trial license, or subscribed for a commercial license, enter the key below<br><br>" + "This will enable features such as the <strong>debugger</strong> or <strong>Interface Builder integration</strong>.<br><br>" + "You can use RoboVM without a license key as well. You can enter a license key at any time via the <i>RoboVM -> License Manager</i> menu.<br><br>"); signUpButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { try { Desktop.getDesktop().browse(new URI("https://account.robovm.com/#/register")); } catch (Throwable t) { // nothing to do here } } }); licenseKey.setText(LicenseManager.getProductKey()); try { if(LicenseManager.isActivated()) { licenseInfo.setText("Your license has been activated!"); licenseInfo.setForeground(Color.green); activateKeyButton.setEnabled(false); } } catch (Throwable e) { licenseInfo.setText("Invalid license key"); licenseInfo.setForeground(Color.red); } defaultColor = licenseInfo.getForeground(); activateKeyButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if(!activate(licenseKey.getText())) { licenseInfo.setText("Invalid license key"); licenseInfo.setForeground(Color.red); } else { licenseInfo.setText("Your license has been activated!"); licenseInfo.setForeground(Color.green); } } }); nextButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { dispose(); } }); pack(); setLocationRelativeTo(null); } public static String getProductKey() { try { return LicenseManager.getProductKey(); } catch (Throwable e) { return null; } } public static boolean activate(String productKey) { try { LicenseManager.activate(productKey); return true; } catch (Throwable e) { return false; } } }