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.Core import com.muwire.core.MuWireSettings import com.muwire.core.UILoadedEvent import com.muwire.core.files.FileSharedEvent 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 portableHome = System.getProperty("portable.home") def home = portableHome == null ? selectHome() : portableHome home = new File(home) if (!home.exists()) { log.info("creating home dir $home") home.mkdirs() } def props = new Properties() def propsFile = new File(home, "MuWire.properties") if (propsFile.exists()) { log.info("loading existing props file") propsFile.withInputStream { props.load(it) } props = new MuWireSettings(props) } else { log.info("creating new properties") props = new MuWireSettings() def nickname while (true) { nickname = JOptionPane.showInputDialog(null, "Your nickname is displayed when you send search results so other MuWire users can choose to trust you", "Please choose a nickname", JOptionPane.PLAIN_MESSAGE) if (nickname == null || nickname.trim().length() == 0) { JOptionPane.showMessageDialog(null, "Nickname cannot be empty", "Select another nickname", JOptionPane.WARNING_MESSAGE) continue } if (nickname.contains("@")) { JOptionPane.showMessageDialog(null, "Nickname cannot contain @, choose another", "Select another nickname", JOptionPane.WARNING_MESSAGE) continue } nickname = nickname.trim() break } props.setNickname(nickname) def portableDownloads = System.getProperty("portable.downloads") if (portableDownloads != null) { props.downloadLocation = new File(portableDownloads) } else { def chooser = new JFileChooser() chooser.setDialogTitle("Select a directory where downloads will be saved") chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY) int rv = chooser.showOpenDialog(null) if (rv != JFileChooser.APPROVE_OPTION) { JOptionPane.showMessageDialog(null, "MuWire will now exit") System.exit(0) } props.downloadLocation = chooser.getSelectedFile() } propsFile.withOutputStream { props.write(it) } } Core core try { HTTP/1.1 200 OK Content-Disposition: inline; filename="Ready.groovy"; filename*=UTF-8''Ready.groovy Content-Length: 5382 Connection: close Access-Control-Expose-Headers: Content-Disposition Content-Type: text/plain; charset=utf-8 Last-Modified: Sun, 09 Jun 2019 14:44:06 GMT X-Frame-Options: SAMEORIGIN X-Content-Type-Options: nosniff Date: Wed, 23 Jul 2025 06:26:32 GMT Etag: "e90c8ab260c93cdbc3254c9d3e88c83ce375bb15" Cache-Control: public, max-age=21600, no-transform X-Cache-Status: HIT X-Cache-Age: 0 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.Core import com.muwire.core.MuWireSettings import com.muwire.core.UILoadedEvent import com.muwire.core.files.FileSharedEvent 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 portableHome = System.getProperty("portable.home") def home = portableHome == null ? selectHome() : portableHome home = new File(home) if (!home.exists()) { log.info("creating home dir $home") home.mkdirs() }