125 lines
4.5 KiB
Groovy
125 lines
4.5 KiB
Groovy
|
|
import griffon.core.GriffonApplication
|
|
import griffon.core.env.Metadata
|
|
import groovy.util.logging.Log
|
|
import net.i2p.util.SystemVersion
|
|
|
|
import org.codehaus.griffon.runtime.core.AbstractLifecycleHandler
|
|
|
|
import com.muwire.core.Constants
|
|
import com.muwire.core.Core
|
|
import com.muwire.core.MuWireSettings
|
|
import com.muwire.core.UILoadedEvent
|
|
import com.muwire.core.files.FileSharedEvent
|
|
import com.muwire.core.util.DataUtil
|
|
import com.muwire.gui.wizard.WizardDefaults
|
|
|
|
import javax.annotation.Nonnull
|
|
import javax.inject.Inject
|
|
import javax.swing.JFileChooser
|
|
import javax.swing.JOptionPane
|
|
|
|
import static griffon.util.GriffonApplicationUtils.isMacOSX
|
|
import static groovy.swing.SwingBuilder.lookAndFeel
|
|
|
|
import java.beans.PropertyChangeEvent
|
|
import java.util.logging.Level
|
|
|
|
@Log
|
|
class Ready extends AbstractLifecycleHandler {
|
|
|
|
@Inject Metadata metadata
|
|
|
|
@Inject
|
|
Ready(@Nonnull GriffonApplication application) {
|
|
super(application)
|
|
}
|
|
|
|
@Override
|
|
void execute() {
|
|
log.info "starting core services"
|
|
|
|
def home = new File(application.getContext().getAsString("muwire-home"))
|
|
def props = new Properties()
|
|
def propsFile = new File(home, "MuWire.properties")
|
|
if (propsFile.exists()) {
|
|
log.info("loading existing props file")
|
|
propsFile.withReader("UTF-8", {
|
|
props.load(it)
|
|
})
|
|
props = new MuWireSettings(props)
|
|
if (props.incompleteLocation == null)
|
|
props.incompleteLocation = new File(home, "incompletes")
|
|
|
|
if (System.getProperties().containsKey("disableUpdates"))
|
|
props.disableUpdates = Boolean.valueOf(System.getProperty("disableUpdates"))
|
|
} else {
|
|
log.info("creating new properties")
|
|
props = new MuWireSettings()
|
|
boolean embeddedRouterAvailable = Boolean.parseBoolean(System.getProperties().getProperty("embeddedRouter"))
|
|
|
|
def defaults
|
|
if (System.getProperties().containsKey("wizard.defaults")) {
|
|
File defaultsFile = new File(System.getProperty("wizard.defaults"))
|
|
Properties defaultsProps = new Properties()
|
|
defaultsFile.withInputStream { defaultsProps.load(it) }
|
|
defaults = new WizardDefaults(defaultsProps)
|
|
} else
|
|
defaults = new WizardDefaults()
|
|
|
|
def parent = application.windowManager.findWindow("event-list")
|
|
Properties i2pProps = new Properties()
|
|
|
|
def params = [:]
|
|
params['parent'] = parent
|
|
params['defaults'] = defaults
|
|
params['embeddedRouterAvailable'] = embeddedRouterAvailable
|
|
params['muSettings'] = props
|
|
params['i2pProps'] = i2pProps
|
|
def finished = [:]
|
|
params['finished'] = finished
|
|
|
|
application.mvcGroupManager.createMVCGroup("wizard", params)
|
|
|
|
if (!finished['applied']) {
|
|
JOptionPane.showMessageDialog(parent, "MuWire will now exit")
|
|
System.exit(0)
|
|
}
|
|
|
|
File i2pPropsFile = new File(home, "i2p.properties")
|
|
i2pPropsFile.withPrintWriter { i2pProps.store(it, "") }
|
|
|
|
props.embeddedRouter = embeddedRouterAvailable
|
|
props.updateType = System.getProperty("updateType","jar")
|
|
props.disableUpdates = Boolean.parseBoolean(System.getProperty("disableUpdates", "false"))
|
|
|
|
|
|
propsFile.withPrintWriter("UTF-8", {
|
|
props.write(it)
|
|
})
|
|
}
|
|
|
|
Core core
|
|
try {
|
|
core = new Core(props, home, metadata["application.version"])
|
|
Runtime.getRuntime().addShutdownHook({
|
|
core.shutdown()
|
|
})
|
|
core.startServices()
|
|
application.context.put("muwire-settings", props)
|
|
application.context.put("core",core)
|
|
application.getPropertyChangeListeners("core").each {
|
|
it.propertyChange(new PropertyChangeEvent(this, "core", null, core))
|
|
}
|
|
|
|
core.eventBus.publish(new UILoadedEvent())
|
|
} catch (Exception bad) {
|
|
log.log(Level.SEVERE,"couldn't initialize core",bad)
|
|
JOptionPane.showMessageDialog(null, "Couldn't connect to I2P router. Make sure I2P is running and restart MuWire",
|
|
"Can't connect to I2P router", JOptionPane.WARNING_MESSAGE)
|
|
System.exit(0)
|
|
}
|
|
}
|
|
}
|
|
|