package com.dgex.offspring.application.lifecycle; import it.sauronsoftware.junique.AlreadyLockedException; import it.sauronsoftware.junique.JUnique; import java.io.File; import java.net.ServerSocket; import org.apache.log4j.Logger; import org.eclipse.e4.core.services.events.IEventBroker; import org.eclipse.e4.ui.di.UISynchronize; import org.eclipse.e4.ui.workbench.lifecycle.PostContextCreate; import org.eclipse.equinox.app.IApplicationContext; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.window.Window; import org.eclipse.swt.widgets.Display; import com.dgex.offspring.application.dialogs.LoginDialog; import com.dgex.offspring.config.Config; import com.dgex.offspring.dataprovider.service.IDataProviderPool; import com.dgex.offspring.nxtCore.service.INxtService; import com.dgex.offspring.user.service.IUserService; import com.dgex.offspring.wallet.IWallet; @SuppressWarnings("restriction") public class LifeCycleManager { static int SERVER_PORT = 7891; static ServerSocket server; static Logger logger = Logger.getLogger(LifeCycleManager.class); @PostContextCreate void postContextCreate(IApplicationContext context, Display display, final IEventBroker broker, final INxtService nxt, IWallet wallet, UISynchronize sync, IUserService userService, IDataProviderPool pool) { logger.info("LifeCycleManager.postContextCreate"); String appId = "com.dgex.offspring.application.lifecycle.LifeCycleManager"; boolean alreadyRunning; try { JUnique.acquireLock(appId); alreadyRunning = false; } catch (AlreadyLockedException e) { alreadyRunning = true; } if (alreadyRunning) { File home = new File(System.getProperty("user.home") + File.separator + ".junique"); MessageDialog .openWarning( display.getActiveShell(), "Offspring Already Running", "Offspring is already running.\n\n" + "If you keep seeing this dialog close Offspring with your taskmanager.\n\n" + "Cannot find Offspring in your taskmanager?\n" + "Then delete this folder " + home.getAbsolutePath()); System.exit(0); return; } context.applicationRunning(); final LoginDialog loginDialog = new LoginDialog(Display.getCurrent() .getActiveShell(), wallet); loginDialog.setBlockOnOpen(true); if (loginDialog.open() != Window.OK) System.exit(0); /* Must re-initialize if user selected to use test net (write new config) */ if (Config.nxtIsTestNet) { Config.initialize(); } } }