package com.jsonde.gui;
import com.jsonde.gui.dialog.license.LicenseDialog;
import com.jsonde.gui.license.LicenseManager;
import com.jsonde.gui.sdedit.SdEditUIAdapter;
import javax.swing.*;
import java.awt.*;
import java.lang.reflect.InvocationTargetException;
import java.util.Calendar;
import java.util.Date;
public class Main {
private static Main instance;
public static Main getInstance() {
if (null == instance) {
instance = new Main();
}
return instance;
}
private String[] arguments;
private ApplicationUserInterface sdEditUIAdapter;
public void processException(Throwable e) {
try {
sdEditUIAdapter.processException(e);
} catch (Exception ex) {
e.printStackTrace();
ex.printStackTrace();
}
}
public Main() {
}
protected void createGui() {
sdEditUIAdapter = new SdEditUIAdapter();
final MyEventQueue myEventQueue = new MyEventQueue();
Toolkit.getDefaultToolkit().getSystemEventQueue().push(myEventQueue);
try {
EventQueue.invokeAndWait(new Runnable() {
public void run() {
Thread.currentThread().setUncaughtExceptionHandler(myEventQueue);
}
});
} catch (InterruptedException e) {
instance.processException(e);
} catch (InvocationTargetException e) {
instance.processException(e);
}
}
private static class MyEventQueue extends EventQueue implements Thread.UncaughtExceptionHandler {
public void uncaughtException(Thread t, Throwable e) {
instance.processException(e);
}
@Override
protected void dispatchEvent(AWTEvent event) {
try {
super.dispatchEvent(event);
} catch (Throwable e) {
instance.processException(e);
}
}
}
protected void checkLicense() {
LicenseManager licenseManager = new LicenseManager();
if (!licenseManager.checkLicense()) {
LicenseDialog licenseDialog = new LicenseDialog();
licenseDialog.setVisible(true);
if (licenseDialog.isEvaluate()) {
Date firstExecutionDate = licenseManager.getFirstExecutionDate();
Date currentDate = Calendar.getInstance().getTime();
long period = currentDate.getTime() - firstExecutionDate.getTime();
if (period > (1000L * 60L * 60L * 24L * 30L)) {
JOptionPane.showMessageDialog(null, "Your evaluation period has expired");
System.exit(1);
}
} else if (licenseDialog.isEnterLicenseCode() && licenseDialog.isLicenseValid()) {
String license = licenseDialog.getLicense();
licenseManager.saveLicense(license);
} else {
System.exit(1);
}
}
}
public static void main(String... arguments) {
Main main = Main.getInstance();
main.arguments = arguments;
//main.checkLicense();
main.createGui();
}
}