Search in sources :

Example 1 with Config

use of com.github.mob41.osumer.Config in project osumer by mob41.

the class UIFrame method addQuietBtQueue.

public boolean addQuietBtQueue(String url) {
    if (config.getCheckUpdateFreq() == Config.CHECK_UPDATE_FREQ_EVERY_ACT) {
        checkUpdate();
    }
    String user = config.getUser();
    String pass = config.getPass();
    if (user == null || user.isEmpty() || pass == null || pass.isEmpty()) {
        LoginPanel loginPanel = new LoginPanel();
        int option = JOptionPane.showOptionDialog(UIFrame.this, loginPanel, "Login to osu!", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE, null, null, JOptionPane.CANCEL_OPTION);
        if (option == JOptionPane.OK_OPTION) {
            if (loginPanel.getUsername().isEmpty() || loginPanel.getPassword().isEmpty()) {
                JOptionPane.showMessageDialog(UIFrame.this, "Username or password cannot be empty.", "Error", JOptionPane.ERROR_MESSAGE);
                return false;
            }
            user = loginPanel.getUsername();
            pass = loginPanel.getPassword();
        } else {
            return false;
        }
    }
    try {
        osu.login(user, pass);
    } catch (DebuggableException e) {
        e.printStackTrace();
        JOptionPane.showMessageDialog(UIFrame.this, "Error logging in:\n" + e.getDump().getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
        return false;
    }
    try {
        map = osu.getBeatmapInfo(url);
    } catch (DebuggableException e) {
        e.printStackTrace();
        JOptionPane.showMessageDialog(UIFrame.this, "Error getting beatmap info:\n" + e.getDump().getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
        return false;
    }
    String modUrl = map.getThumbUrl();
    URL thumbUrl = null;
    try {
        thumbUrl = new URL("http:" + modUrl);
    } catch (MalformedURLException e) {
        e.printStackTrace();
        return false;
    }
    URLConnection conn = null;
    try {
        conn = thumbUrl.openConnection();
    } catch (IOException e) {
        e.printStackTrace();
        return false;
    }
    conn.setConnectTimeout(5000);
    conn.setReadTimeout(5000);
    try {
        thumb = ImageIO.read(conn.getInputStream());
    } catch (IOException e) {
        e.printStackTrace();
        thumb = null;
    }
    URL downloadUrl = null;
    try {
        downloadUrl = new URL("http://osu.ppy.sh" + map.getDwnUrl());
    } catch (MalformedURLException e1) {
        e1.printStackTrace();
        JOptionPane.showMessageDialog(UIFrame.this, "Error validating download URL:\n" + e1, "Error", JOptionPane.ERROR_MESSAGE);
        return false;
    }
    String tmpdir = System.getProperty("java.io.tmpdir");
    final String mapName = map.getName();
    OsuDownloader dwn = new OsuDownloader(tmpdir, map.getDwnUrl().substring(3, map.getDwnUrl().length()) + " " + map.getName(), osu, downloadUrl);
    QueueAction importAction;
    if (rdbtnUseDefaultSettings.isSelected()) {
        importAction = new BeatmapImportAction(config);
    } else {
        int action = -1;
        String targetFileOrFolder = null;
        if (rdbtnDownloadAndImport.isSelected()) {
            action = 0;
        } else if (rdbtnDownloadToOsu.isSelected()) {
            action = 1;
        } else if (rdbtnDownloadToFile.isSelected()) {
            action = 2;
            targetFileOrFolder = targetFile;
        } else if (rdbtnDownloadToFolder.isSelected()) {
            action = 3;
            targetFileOrFolder = targetFolder;
        }
        importAction = new CustomImportAction(action, targetFileOrFolder);
    }
    QueueAction[] beforeActions = new QueueAction[] { new BeforeSoundAction(config) };
    QueueAction[] afterActions = new QueueAction[] { new AfterSoundAction(config), new QueueAction() {

        @Override
        public void run(Queue queue) {
            icon.displayMessage("Download completed for \"" + mapName + "\"", "This osumer queue has completed downloading.", TrayIcon.MessageType.INFO);
        }
    }, importAction };
    boolean added = mgr.addQueue(new Queue(map.getName(), dwn, thumb, beforeActions, afterActions));
    if (added) {
        icon.displayMessage("Downloading \"" + mapName + "\"", "osumerExpress is downloading the requested beatmap!", TrayIcon.MessageType.INFO);
    } else {
        icon.displayMessage("Could not add \"" + mapName + "\" to queue", "It has already in queue/downloading or completed.", TrayIcon.MessageType.INFO);
    }
    tableModel.fireTableDataChanged();
    return true;
}
Also used : BeforeSoundAction(com.github.mob41.osumer.io.queue.actions.BeforeSoundAction) DebuggableException(com.github.mob41.organdebug.exceptions.DebuggableException) MalformedURLException(java.net.MalformedURLException) AfterSoundAction(com.github.mob41.osumer.io.queue.actions.AfterSoundAction) QueueAction(com.github.mob41.osumer.io.queue.QueueAction) IOException(java.io.IOException) URL(java.net.URL) URLConnection(java.net.URLConnection) CustomImportAction(com.github.mob41.osumer.io.queue.actions.CustomImportAction) OsuDownloader(com.github.mob41.osums.io.beatmap.OsuDownloader) BeatmapImportAction(com.github.mob41.osumer.io.queue.actions.BeatmapImportAction) Queue(com.github.mob41.osumer.io.queue.Queue) EventQueue(java.awt.EventQueue)

Example 2 with Config

use of com.github.mob41.osumer.Config in project osumer by mob41.

the class Main method runUi.

private static void runUi(Config config, String[] args, ArgParser ap) {
    if (!SockThread.testPortFree(SockThread.PORT)) {
        // osumer to work
        try {
            Socket socket = new Socket(InetAddress.getLoopbackAddress().getHostName(), SockThread.PORT);
            socket.setSoTimeout(5000);
            PrintWriter writer = new PrintWriter(socket.getOutputStream());
            writer.println("RUN " + buildArgStr(args));
            writer.flush();
            BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            String line = reader.readLine();
            if (line == null || !line.equals("OK")) {
                reader.close();
                socket.close();
                System.out.println("Not OK: " + line);
                DebugDump dump = new DebugDump(null, null, "Asking BG osumer to run with args: \"" + buildArgStr(args) + "\"", null, false, "Could not start up BG osumer sucessfully. Destination did not response \"OK\": " + line);
                DumpManager.getInstance().addDump(dump);
                ErrorDumpDialog dialog = new ErrorDumpDialog(dump);
                dialog.setModal(true);
                dialog.setVisible(true);
                return;
            }
            reader.close();
            socket.close();
            System.exit(0);
            return;
        } catch (IOException e) {
            e.printStackTrace();
            DebugDump dump = new DebugDump(null, null, "Opening connection to BG osumer socket", null, "Could not open socket at 46725 for BG call. Not osumer running at that port?", false, e);
            DumpManager.getInstance().addDump(dump);
            ErrorDumpDialog dialog = new ErrorDumpDialog(dump);
            dialog.setModal(true);
            dialog.setVisible(true);
            System.exit(-1);
            return;
        }
    } else {
        String urlStr = null;
        for (int i = 0; i < args.length; i++) {
            if (Osums.isVaildBeatMapUrl(args[i])) {
                urlStr = args[i];
                break;
            }
        }
        boolean runUi = true;
        if (args.length > 0 && urlStr == null && !ap.isDaemonFlag()) {
            if (config.isSwitchToBrowserIfWithoutUiArg()) {
                System.out.println("Configuration specified that switch to browser if an \"-ui\" arugment wasn't specified.");
                if (runUi = ap.isUiFlag() && !ap.isNoUiFlag()) {
                    System.out.println("An \"-ui\" argument was specified. Launching UI.");
                } else {
                    System.out.println("An \"-ui\" argument wasn't specified. Opening the default browser instead.");
                    runBrowser(config, args);
                    return;
                }
            } else {
                System.out.println("Non-beatmap URL detected.");
                if (!config.isAutoSwitchBrowser()) {
                    System.out.println("Auto switch to default browser is off. Nothing to do with such URL.");
                    return;
                } else {
                    System.out.println("Switching to default browser with the URL.");
                    runBrowser(config, args);
                }
            }
        }
        // Initialize JFX toolkit
        new JFXPanel();
        TrayIcon icon = new TrayIcon(Toolkit.getDefaultToolkit().getImage(UIFrame.class.getResource("/com/github/mob41/osumer/ui/osumerIcon_16px.png")));
        UIFrame frame = new UIFrame(config, new QueueManager(config), icon);
        if (ap.isDaemonFlag()) {
            if (!SystemTray.isSupported()) {
                JOptionPane.showMessageDialog(null, "Your operating system does not support System Tray.\nAs a result, you are not able to start osumer from the tray.", "Warning", JOptionPane.WARNING_MESSAGE);
                return;
            }
            frame.setDaemonMode(true);
            SystemTray tray = SystemTray.getSystemTray();
            icon.addActionListener(new ActionListener() {

                @Override
                public void actionPerformed(ActionEvent arg0) {
                    frame.setVisible(!frame.isVisible());
                    if (!frame.isVisible()) {
                        icon.displayMessage("osumer2", "osumer2 is now running in background.", TrayIcon.MessageType.INFO);
                    }
                }
            });
            icon.setToolTip("osumer2");
            try {
                tray.add(icon);
                icon.displayMessage("osumer2", "osumer2 is now running in background.", TrayIcon.MessageType.INFO);
            } catch (AWTException e) {
                e.printStackTrace();
                JOptionPane.showMessageDialog(null, "Error when adding tray icon: " + e + "\nAs a result, you are not able to start osumer from the tray.", "Warning", JOptionPane.WARNING_MESSAGE);
                return;
            }
        } else {
            frame.setVisible(true);
            new Thread() {

                public void run() {
                    JOptionPane.showMessageDialog(frame, "The osumer2 daemon (background process) is not running.\nThis might slow down further osumerExpress downloads.\nNow this process is listening for more queues till it is stopped.\n\nPlease check \"Help\" for more details.", "Warning", JOptionPane.WARNING_MESSAGE);
                }
            }.start();
        }
        if (urlStr != null) {
            frame.addBtQueue(urlStr, false);
        }
    }
}
Also used : JFXPanel(javafx.embed.swing.JFXPanel) InputStreamReader(java.io.InputStreamReader) ErrorDumpDialog(com.github.mob41.osumer.ui.ErrorDumpDialog) SystemTray(java.awt.SystemTray) ActionEvent(java.awt.event.ActionEvent) UIFrame(com.github.mob41.osumer.ui.UIFrame) IOException(java.io.IOException) QueueManager(com.github.mob41.osumer.io.queue.QueueManager) SockThread(com.github.mob41.osumer.sock.SockThread) ActionListener(java.awt.event.ActionListener) TrayIcon(java.awt.TrayIcon) BufferedReader(java.io.BufferedReader) DebugDump(com.github.mob41.organdebug.DebugDump) Socket(java.net.Socket) PrintWriter(java.io.PrintWriter) AWTException(java.awt.AWTException)

Example 3 with Config

use of com.github.mob41.osumer.Config in project osumer by mob41.

the class Main method main.

public static void main(String[] args) {
    ArgParser ap = new ArgParser(args);
    if (ap.isVersionFlag()) {
        System.out.println(Osumer.OSUMER_VERSION + "-" + Osumer.OSUMER_BRANCH + "-" + Osumer.OSUMER_BUILD_NUM);
        return;
    }
    if (!GraphicsEnvironment.isHeadless()) {
        try {
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    // These are called by Windows when setting Default Programs
    if (ap.isHideIconsFlag() || ap.isShowIconsFlag() || ap.isReinstallFlag() || ap.isInstallFlag() || ap.isUninstallFlag()) {
        Installer installer = new Installer();
        if (ap.isHideIconsFlag()) {
            installer.hideIcons();
        } else if (ap.isShowIconsFlag()) {
            installer.showIcons();
        } else if (ap.isReinstallFlag()) {
            installer.reinstall();
        } else if (ap.isInstallFlag()) {
            if (!ap.isQuietFlag() && !ap.isForceFlag()) {
                int option = JOptionPane.showOptionDialog(null, "You are installing osumer " + Osumer.OSUMER_VERSION + "-" + Osumer.OSUMER_BRANCH + "-" + Osumer.OSUMER_BUILD_NUM + ".\n" + "Are you sure?", "Installing osumer", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, null, JOptionPane.NO_OPTION);
                if (option != JOptionPane.YES_OPTION) {
                    return;
                }
            }
            try {
                long startTime = System.currentTimeMillis();
                installer.install();
                if (!(ap.isQuietFlag() && ap.isForceFlag())) {
                    System.out.println("Info@U$\nInstallation success within " + (System.currentTimeMillis() - startTime) + " ms\nInfo@D$");
                }
            } catch (DebuggableException e) {
                if (!ap.isNoUiFlag() && !GraphicsEnvironment.isHeadless()) {
                    ErrorDumpDialog dialog = new ErrorDumpDialog(e.getDump());
                    dialog.setModal(true);
                    dialog.setVisible(true);
                }
                if (!(ap.isQuietFlag() && ap.isForceFlag())) {
                    System.out.println("Error@U$\n" + e.getDump().toString() + "Error@D$");
                }
            }
        } else if (ap.isUninstallFlag()) {
            if (!ap.isQuietFlag() && !ap.isForceFlag()) {
                int option = JOptionPane.showOptionDialog(null, "You are uninstalling osumer " + Osumer.OSUMER_VERSION + "-" + Osumer.OSUMER_BRANCH + "-" + Osumer.OSUMER_BUILD_NUM + ".\n" + "Are you sure?", "Uninstalling osumer", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, null, JOptionPane.NO_OPTION);
                if (option != JOptionPane.YES_OPTION) {
                    return;
                }
            }
            try {
                long startTime = System.currentTimeMillis();
                installer.uninstall();
                if (!(ap.isQuietFlag() && ap.isForceFlag())) {
                    System.out.println("Info@U$\nUninstallation success within " + (System.currentTimeMillis() - startTime) + " ms\nInfo@D$");
                }
            } catch (DebuggableException e) {
                if (!ap.isNoUiFlag() && !GraphicsEnvironment.isHeadless()) {
                    ErrorDumpDialog dialog = new ErrorDumpDialog(e.getDump());
                    dialog.setModal(true);
                    dialog.setVisible(true);
                }
                if (!(ap.isQuietFlag() && ap.isForceFlag())) {
                    System.out.println("Error@U$\n" + e.getDump().toString() + "Error@D$");
                }
            }
        }
        System.exit(0);
        return;
    }
    String configPath = Osumer.isWindows() ? System.getenv("localappdata") + "\\osumerExpress" : "";
    Config config = new Config(configPath, Config.DEFAULT_DATA_FILE_NAME);
    try {
        config.load();
    } catch (IOException e1) {
        System.err.println("Unable to load configuration");
        e1.printStackTrace();
        if (!GraphicsEnvironment.isHeadless()) {
            JOptionPane.showMessageDialog(null, "Could not load configuration: " + e1, "Configuration Error", JOptionPane.ERROR_MESSAGE);
        }
        System.exit(-1);
        return;
    }
    if (args != null && args.length > 0) {
        if (!config.isOEEnabled()) {
            System.out.println("osumerExpress is disabled.");
            runBrowser(config, args);
            System.exit(0);
            return;
        }
        runUi(config, args, ap);
    } else {
        if (GraphicsEnvironment.isHeadless()) {
            System.out.println("Error: Arguments are required to use this application. Otherwise, a graphics environment is required to show the downloader UI.");
            System.exit(0);
            return;
        }
        if (config.isSwitchToBrowserIfWithoutUiArg()) {
            runBrowser(config, args);
        } else {
            runUi(config, args, ap);
        }
    }
}
Also used : DebuggableException(com.github.mob41.organdebug.exceptions.DebuggableException) ErrorDumpDialog(com.github.mob41.osumer.ui.ErrorDumpDialog) Installer(com.github.mob41.osumer.io.Installer) IOException(java.io.IOException) DebuggableException(com.github.mob41.organdebug.exceptions.DebuggableException) MalformedURLException(java.net.MalformedURLException) IOException(java.io.IOException) AWTException(java.awt.AWTException)

Example 4 with Config

use of com.github.mob41.osumer.Config in project osumer by mob41.

the class ConnThread method run.

@Override
public void run() {
    try {
        socket.setSoTimeout(5000);
        BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        PrintWriter writer = new PrintWriter(socket.getOutputStream(), true);
        String line = reader.readLine();
        if (line != null) {
            if (line.equals("RUN ")) {
                sockThread.getFrame().checkUpdate();
                sockThread.getFrame().setVisible(true);
                sockThread.getFrame().setLocationRelativeTo(null);
                sockThread.getFrame().setAlwaysOnTop(true);
                sockThread.getFrame().requestFocus();
                sockThread.getFrame().setAlwaysOnTop(false);
                writer.println("OK");
            } else if (line.startsWith("RUN")) {
                System.gc();
                sockThread.getFrame().checkUpdate();
                String[] args = line.substring(4).split(" ");
                // ArgParser ap = new ArgParser(args);
                String urlStrDy = null;
                for (int i = 0; i < args.length; i++) {
                    if (Osums.isVaildBeatMapUrl(args[i])) {
                        urlStrDy = args[i];
                        break;
                    }
                }
                final String urlStr = urlStrDy;
                if (urlStr != null) {
                    new Thread() {

                        public void run() {
                            sockThread.getFrame().addQuietBtQueue(urlStr);
                        // sockThread.getFrame().addBtQueue(urlStr, false, false, true, null, null);
                        }
                    }.start();
                } else {
                    String argstr = buildArgStr(args);
                    Config config = sockThread.getFrame().getConfig();
                    // Run the default browser application
                    System.out.println(config.getDefaultBrowser());
                    if (config.getDefaultBrowser() == null || config.getDefaultBrowser().isEmpty()) {
                        System.out.println(config.getDefaultBrowser());
                        JOptionPane.showInputDialog(null, "No default browser path is specified. Please maunally launch the browser the following arguments:", "osumer - Automatic browser switching", JOptionPane.INFORMATION_MESSAGE, null, null, argstr);
                        return;
                    }
                    String browserPath = Installer.getBrowserExePath(config.getDefaultBrowser());
                    System.out.println(browserPath);
                    if (browserPath == null) {
                        JOptionPane.showMessageDialog(null, "Cannot read browser executable path in registry.\nCannot start default browser application for:\n" + argstr, "Configuration Error", JOptionPane.ERROR_MESSAGE);
                        return;
                    }
                    File file = new File(browserPath.replaceAll("\"", ""));
                    if (!file.exists()) {
                        JOptionPane.showMessageDialog(null, "The specified browser application does not exist.\nCannot start default browser application for:\n" + argstr, "Configuration Error", JOptionPane.ERROR_MESSAGE);
                        return;
                    }
                    try {
                        Runtime.getRuntime().exec(browserPath + " " + argstr);
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                writer.println("OK");
            } else if (line.equals("STOP")) {
                System.exit(0);
                return;
            }
        }
        writer.flush();
        writer.close();
        reader.close();
        socket.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}
Also used : InputStreamReader(java.io.InputStreamReader) Config(com.github.mob41.osumer.Config) BufferedReader(java.io.BufferedReader) IOException(java.io.IOException) File(java.io.File) PrintWriter(java.io.PrintWriter)

Example 5 with Config

use of com.github.mob41.osumer.Config in project osumer by mob41.

the class Daemon method addQueue.

@Override
public MethodResult<Integer> addQueue(String url, int downloadAction, String targetFileOrFolder) throws RemoteException {
    DumpManager.reportEvent("event", "queueAdd");
    String user = config.getUser();
    String pass = config.getPass();
    if (user == null || user.isEmpty() || pass == null || pass.isEmpty()) {
        return new MethodResult<Integer>(ErrorCode.RESULT_NO_CREDENTIALS);
    }
    try {
        osums.login(user, pass);
    } catch (WithDumpException e) {
        e.printStackTrace();
        return new MethodResult<Integer>(ErrorCode.RESULT_LOGIN_FAILED, e.getDump());
    }
    OsuSong map;
    try {
        if (url.contains("b/")) {
            map = osums.getBeatmapInfo(url);
        } else {
            map = osums.getSongInfo(url);
        }
    } catch (WithDumpException e) {
        e.printStackTrace();
        return new MethodResult<Integer>(ErrorCode.RESULT_GET_BEATMAP_INFO_FAILED, e.getDump());
    }
    String thumbUrl = "http:" + map.getThumbUrl();
    String dwnUrlStr = map.getDwnUrl();
    if (dwnUrlStr.length() <= 3) {
        return new MethodResult<Integer>(ErrorCode.RESULT_DOWNLOAD_URL_TOO_SHORT);
    }
    URL downloadUrl = null;
    try {
        downloadUrl = new URL("https://osu.ppy.sh" + dwnUrlStr);
    } catch (MalformedURLException e) {
        e.printStackTrace();
        return new MethodResult<Integer>(ErrorCode.RESULT_VALIDATE_DOWNLOAD_URL_FAILED);
    }
    String tmpdir = System.getProperty("java.io.tmpdir");
    final String mapName = map.getName();
    String fileName = dwnUrlStr.substring(3, map.getDwnUrl().length()) + " " + mapName;
    fileName = fileName.replaceAll("[\\/:*?\"<>|]", " ");
    OsuDownloader dwn = new OsuDownloader(tmpdir, fileName, osums, downloadUrl);
    QueueAction importAction;
    if (downloadAction == -1) {
        importAction = new BeatmapImportAction(config);
    } else {
        importAction = new CustomImportAction(downloadAction, targetFileOrFolder);
    }
    QueueAction[] beforeActions = new QueueAction[] { new BeforeSoundAction(config) };
    QueueAction[] afterActions = new QueueAction[] { new AfterSoundAction(config), new QueueAction() {

        @Override
        public void run(Queue queue) {
            trayIcon.displayMessage("Download completed for \"" + mapName + "\"", "This osumer queue has completed downloading.", TrayIcon.MessageType.INFO);
        }
    }, importAction };
    boolean added = queueManager.addQueue(new Queue(map.getName(), dwn, thumbUrl, beforeActions, afterActions));
    if (added) {
        trayIcon.displayMessage("Downloading \"" + mapName + "\"", "osumerExpress is downloading the requested beatmap!", TrayIcon.MessageType.INFO);
        dwn.addObserver(new Observer() {

            @Override
            public void update(Observable o, Object arg) {
                requestAllUiUpdateQueues();
            }
        });
        DumpManager.reportEvent("event", "queueAdded");
        if (!url.endsWith("/")) {
            String beatmapNum = url.replaceAll("\\D+", "");
            ;
            DumpManager.reportEvent("beatmap", "queueFrequency", beatmapNum);
        }
    } else {
        trayIcon.displayMessage("Could not add \"" + mapName + "\" to queue", "It has already in queue/downloading or completed.", TrayIcon.MessageType.INFO);
    }
    requestAllUiUpdateQueues();
    return new MethodResult<Integer>(ErrorCode.RESULT_OK);
}
Also used : BeforeSoundAction(com.github.mob41.osumer.queue.actions.BeforeSoundAction) MalformedURLException(java.net.MalformedURLException) AfterSoundAction(com.github.mob41.osumer.queue.actions.AfterSoundAction) WithDumpException(com.github.mob41.osumer.debug.WithDumpException) OsuSong(com.github.mob41.osums.beatmap.OsuSong) QueueAction(com.github.mob41.osumer.queue.QueueAction) URL(java.net.URL) Observable(java.util.Observable) CustomImportAction(com.github.mob41.osumer.queue.actions.CustomImportAction) Observer(java.util.Observer) OsuDownloader(com.github.mob41.osumer.io.OsuDownloader) UnicastRemoteObject(java.rmi.server.UnicastRemoteObject) BeatmapImportAction(com.github.mob41.osumer.queue.actions.BeatmapImportAction) Queue(com.github.mob41.osumer.queue.Queue) MethodResult(com.github.mob41.osumer.method.MethodResult)

Aggregations

IOException (java.io.IOException)14 DebugDump (com.github.mob41.osumer.debug.DebugDump)5 MalformedURLException (java.net.MalformedURLException)5 RemoteException (java.rmi.RemoteException)5 DebuggableException (com.github.mob41.organdebug.exceptions.DebuggableException)4 Configuration (com.github.mob41.osumer.Configuration)4 File (java.io.File)4 URL (java.net.URL)4 Alert (javafx.scene.control.Alert)4 WithDumpException (com.github.mob41.osumer.debug.WithDumpException)3 FXMLLoader (javafx.fxml.FXMLLoader)3 Config (com.github.mob41.osumer.Config)2 Installer (com.github.mob41.osumer.installer.Installer)2 Queue (com.github.mob41.osumer.io.queue.Queue)2 QueueAction (com.github.mob41.osumer.io.queue.QueueAction)2 AfterSoundAction (com.github.mob41.osumer.io.queue.actions.AfterSoundAction)2 BeatmapImportAction (com.github.mob41.osumer.io.queue.actions.BeatmapImportAction)2 BeforeSoundAction (com.github.mob41.osumer.io.queue.actions.BeforeSoundAction)2 CustomImportAction (com.github.mob41.osumer.io.queue.actions.CustomImportAction)2 IDaemon (com.github.mob41.osumer.rmi.IDaemon)2