public boolean restartApplicationWithScript() { String command = null; try { if (Spark.isWindows()) { String sparkExe = getCommandPath() + File.separator + Default.getString(Default.SHORT_NAME) + ".exe"; if (!new File(sparkExe).exists()) { Log.warning("Client EXE file does not exist"); return false; } String starterExe = getCommandPath() + File.separator + "starter.exe"; if (!new File(starterExe).exists()) { Log.warning("Starter EXE file does not exist"); return false; } command = starterExe + " \"" + sparkExe + "\""; } else if (Spark.isLinux()) { command = getCommandPath() + File.separator + Default.getString(Default.SHORT_NAME); if (!new File(command).exists()) { Log.warning("Client startup script does not exist"); return false; } } else if (Spark.isMac()) { command = "open -a " + Default.getString(Default.SHORT_NAME); } Runtime.getRuntime().exec(command); System.exit(0); return true; } catch (IOException e) { Log.error("Error trying to restart application with script", e); return false; } }
/** Setup the Main Toolbar with File, Tools and Help. */ private void buildMenu() { // setup file menu final JMenuItem exitMenuItem = new JMenuItem(); // Setup ResourceUtils ResourceUtils.resButton(connectMenu, "&" + Default.getString(Default.APPLICATION_NAME)); ResourceUtils.resButton(contactsMenu, Res.getString("menuitem.contacts")); ResourceUtils.resButton(actionsMenu, Res.getString("menuitem.actions")); ResourceUtils.resButton(exitMenuItem, Res.getString("menuitem.exit")); ResourceUtils.resButton(pluginsMenu, Res.getString("menuitem.plugins")); exitMenuItem.setIcon(null); mainWindowBar.add(connectMenu); mainWindowBar.add(contactsMenu); mainWindowBar.add(actionsMenu); // mainWindowBar.add(pluginsMenu); mainWindowBar.add(helpMenu); preferenceMenuItem = new JMenuItem(SparkRes.getImageIcon(SparkRes.PREFERENCES_IMAGE)); preferenceMenuItem.setText(Res.getString("title.spark.preferences")); preferenceMenuItem.addActionListener(this); connectMenu.add(preferenceMenuItem); alwaysOnTopItem = new JCheckBoxMenuItem(); ResourceUtils.resButton(alwaysOnTopItem, Res.getString("menuitem.always.on.top")); alwaysOnTopItem.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent actionEvent) { if (alwaysOnTopItem.isSelected()) { SettingsManager.getLocalPreferences().setMainWindowAlwaysOnTop(true); MainWindow.getInstance().setAlwaysOnTop(true); } else { SettingsManager.getLocalPreferences().setMainWindowAlwaysOnTop(false); MainWindow.getInstance().setAlwaysOnTop(false); } } }); if (SettingsManager.getLocalPreferences().isMainWindowAlwaysOnTop()) { alwaysOnTopItem.setSelected(true); this.setAlwaysOnTop(true); } connectMenu.add(alwaysOnTopItem); if (!Default.getBoolean("DISABLE_EXIT")) connectMenu.addSeparator(); // EventQueue.invokeLater(new Runnable() { // public void run() { JMenuItem logoutMenuItem = new JMenuItem(); ResourceUtils.resButton(logoutMenuItem, Res.getString("menuitem.logout.no.status")); logoutMenuItem.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { logout(false); } }); JMenuItem logoutWithStatus = new JMenuItem(); ResourceUtils.resButton(logoutWithStatus, Res.getString("menuitem.logout.with.status")); logoutWithStatus.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { logout(true); } }); if ((Spark.isWindows() || Spark.isLinux() || Spark.isMac()) && !Default.getBoolean("DISABLE_EXIT")) { connectMenu.add(logoutMenuItem); connectMenu.add(logoutWithStatus); connectMenu.addSeparator(); } if (!Default.getBoolean("DISABLE_EXIT")) { connectMenu.add(exitMenuItem); } JMenuItem updateMenu = new JMenuItem("", SparkRes.getImageIcon(SparkRes.DOWNLOAD_16x16)); ResourceUtils.resButton(updateMenu, Res.getString("menuitem.check.for.updates")); updateMenu.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { checkForUpdates(true); } }); // Add Error Dialog Viewer final Action viewErrors = new AbstractAction() { private static final long serialVersionUID = -420926784631340112L; public void actionPerformed(ActionEvent e) { File logDir = new File(Spark.getLogDirectory(), "errors.log"); if (!logDir.exists()) { JOptionPane.showMessageDialog( SparkManager.getMainWindow(), "No error logs found.", "Error Log", JOptionPane.INFORMATION_MESSAGE); } else { showErrorLog(); } } }; viewErrors.putValue(Action.NAME, Res.getString("menuitem.view.logs")); final Action viewHelpGuideAction = new AbstractAction() { final String url = Default.getString(Default.HELP_USER_GUIDE); private static final long serialVersionUID = 2680369963282231348L; public void actionPerformed(ActionEvent actionEvent) { try { BrowserLauncher.openURL(url); } catch (Exception e) { Log.error("Unable to load online help.", e); } } }; if (!Default.getBoolean("HELP_USER_GUIDE_DISABLED")) { viewHelpGuideAction.putValue(Action.NAME, Res.getString("menuitem.user.guide")); viewHelpGuideAction.putValue( Action.SMALL_ICON, SparkRes.getImageIcon(SparkRes.SMALL_QUESTION)); helpMenu.add(viewHelpGuideAction); } if (!Default.getBoolean("HELP_FORUM_DISABLED")) { helpMenu.add(sparkforumItem); } // Build Help Menu if (!Default.getBoolean(Default.DISABLE_UPDATES)) { helpMenu.add(updateMenu); } helpMenu.addSeparator(); helpMenu.add(viewErrors); helpMenu.add(menuAbout); // ResourceUtils - Adds mnemonics ResourceUtils.resButton(preferenceMenuItem, Res.getString("menuitem.preferences")); ResourceUtils.resButton(helpMenu, Res.getString("menuitem.help")); ResourceUtils.resButton(menuAbout, Res.getString("menuitem.about")); if (Default.getString("HELP_FORUM_TEXT").length() > 0) { ResourceUtils.resButton(sparkforumItem, Default.getString("HELP_FORUM_TEXT")); } else { ResourceUtils.resButton(sparkforumItem, Res.getString("menuitem.online.help")); } // Register shutdown with the exit menu. exitMenuItem.addActionListener( new AbstractAction() { private static final long serialVersionUID = -2301236575241532698L; public void actionPerformed(ActionEvent e) { shutdown(); } }); sparkforumItem.addActionListener( new AbstractAction() { private static final long serialVersionUID = -1423433460333010339L; final String url = Default.getString("HELP_FORUM"); public void actionPerformed(ActionEvent e) { try { BrowserLauncher.openURL(url); } catch (Exception browserException) { Log.error("Error launching browser:", browserException); } } }); // Show About Box menuAbout.addActionListener( new AbstractAction() { private static final long serialVersionUID = -7173666373051354502L; public void actionPerformed(ActionEvent e) { showAboutBox(); } }); if (!Default.getBoolean("DISABLE_UPDATES")) { // Execute spark update checker after one minute. final TimerTask task = new SwingTimerTask() { public void doRun() { checkForUpdates(false); } }; TaskEngine.getInstance().schedule(task, 60000); } if (SettingsManager.getLocalPreferences().isDebuggerEnabled()) { JMenuItem rawPackets = new JMenuItem(SparkRes.getImageIcon(SparkRes.TRAY_IMAGE)); rawPackets.setText("Send Packets"); rawPackets.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { new RawPacketSender(); } }); connectMenu.add(rawPackets, 2); } }