diff --git a/build/build.xml b/build/build.xml index 60a7d5a9..93f6fe32 100644 --- a/build/build.xml +++ b/build/build.xml @@ -23,8 +23,8 @@ - - + + diff --git a/build/installer/spark.install4j b/build/installer/spark.install4j index dee87647..d3f9296a 100644 --- a/build/installer/spark.install4j +++ b/build/installer/spark.install4j @@ -1,6 +1,6 @@ - - + + @@ -93,7 +93,9 @@ - + + + @@ -263,27 +265,6 @@ - - - - - - Software\\Microsoft\\Windows\\CurrentVersion\\Run - - - - - - ${installer:sys.installationDir}${compiler:APP_SHORT_NAME} - - - Spark - - - - - - @@ -296,6 +277,14 @@ context.getBooleanVariable("executeLauncherAction") && (!context.isUnattended()) + + + + + + + + diff --git a/src/java/org/jivesoftware/Spark.java b/src/java/org/jivesoftware/Spark.java index cd6d9fc7..4ad19c75 100644 --- a/src/java/org/jivesoftware/Spark.java +++ b/src/java/org/jivesoftware/Spark.java @@ -13,7 +13,6 @@ package org.jivesoftware; import de.javasoft.plaf.synthetica.SyntheticaBlueMoonLookAndFeel; import de.javasoft.plaf.synthetica.SyntheticaLookAndFeel; import org.jivesoftware.resource.Default; -import org.jivesoftware.smack.XMPPConnection; import org.jivesoftware.spark.util.log.Log; import org.jivesoftware.sparkimpl.settings.local.LocalPreferences; import org.jivesoftware.sparkimpl.settings.local.SettingsManager; @@ -42,7 +41,7 @@ public final class Spark { private static final String USER_SPARK_HOME = System.getProperties().getProperty("user.home") + "/" + getUserConf(); - private static String argument; + public static String ARGUMENTS; private static File RESOURCE_DIRECTORY; private static File BIN_DIRECTORY; @@ -214,18 +213,18 @@ public final class Spark { * will be returned. */ public static String getArgumentValue(String argumentName) { - if (argument == null) { + if (ARGUMENTS == null) { return null; } String arg = argumentName + "="; - int index = argument.indexOf(arg); + int index = ARGUMENTS.indexOf(arg); if (index == -1) { return null; } - String value = argument.substring(index + arg.length()); + String value = ARGUMENTS.substring(index + arg.length()); int index2 = value.indexOf("&"); if (index2 != -1) { // Must be the last argument @@ -237,7 +236,7 @@ public final class Spark { } public void setArgument(String arguments) { - argument = arguments; + ARGUMENTS = arguments; } /** diff --git a/src/java/org/jivesoftware/SparkStartupListener.java b/src/java/org/jivesoftware/SparkStartupListener.java index 4f0fa8b4..b248eab3 100644 --- a/src/java/org/jivesoftware/SparkStartupListener.java +++ b/src/java/org/jivesoftware/SparkStartupListener.java @@ -10,14 +10,8 @@ package org.jivesoftware; -import org.jivesoftware.smack.packet.Message; import org.jivesoftware.spark.ChatManager; import org.jivesoftware.spark.SparkManager; -import org.jivesoftware.spark.UserManager; -import org.jivesoftware.spark.ui.ChatRoom; -import org.jivesoftware.spark.ui.conferences.ConferenceUtils; -import org.jivesoftware.spark.util.StringUtils; -import org.jivesoftware.spark.util.log.Log; /** * Uses the Windows registry to perform URI XMPP mappings. @@ -26,98 +20,10 @@ import org.jivesoftware.spark.util.log.Log; */ public class SparkStartupListener implements com.install4j.api.launcher.StartupNotification.Listener { - public void startupPerformed(String string) { - if (string.indexOf("xmpp") == -1) { - return; - } - - if (string.indexOf("?message") != -1) { - try { - handleJID(string); - } - catch (Exception e) { - Log.error(e); - } - } - else if (string.indexOf("?join") != -1) { - try { - handleConference(string); - } - catch (Exception e) { - Log.error(e); - } - } - else if (string.indexOf("?") == -1) { - // Then use the direct jid - int index = string.indexOf(":"); - if (index != -1) { - String jid = string.substring(index + 1); - - UserManager userManager = SparkManager.getUserManager(); - String nickname = userManager.getUserNicknameFromJID(jid); - if (nickname == null) { - nickname = jid; - } - - ChatManager chatManager = SparkManager.getChatManager(); - ChatRoom chatRoom = chatManager.createChatRoom(jid, nickname, nickname); - chatManager.getChatContainer().activateChatRoom(chatRoom); - } - } - + public void startupPerformed(String arguments) { + final ChatManager chatManager = SparkManager.getChatManager(); + chatManager.handleURIMapping(arguments); } - /** - * Factory method to handle different types of URI Mappings. - * - * @param uriMapping the uri mapping string. - */ - public void handleJID(String uriMapping) { - int index = uriMapping.indexOf("xmpp:"); - int messageIndex = uriMapping.indexOf("?message"); - - int bodyIndex = uriMapping.indexOf("body="); - - String jid = uriMapping.substring(index + 5, messageIndex); - String body = null; - - // Find body - if (bodyIndex != -1) { - body = uriMapping.substring(bodyIndex + 5); - } - - body = StringUtils.unescapeFromXML(body); - body = StringUtils.replace(body, "%20", " "); - - UserManager userManager = SparkManager.getUserManager(); - String nickname = userManager.getUserNicknameFromJID(jid); - if (nickname == null) { - nickname = jid; - } - - ChatManager chatManager = SparkManager.getChatManager(); - ChatRoom chatRoom = chatManager.createChatRoom(jid, nickname, nickname); - if (body != null) { - Message message = new Message(); - message.setBody(body); - chatRoom.sendMessage(message); - } - - chatManager.getChatContainer().activateChatRoom(chatRoom); - } - - /** - * Handles the URI Mapping to join a conference room. - * - * @param uriMapping the uri mapping. - * @throws Exception thrown if the conference cannot be joined. - */ - public void handleConference(String uriMapping) { - int index = uriMapping.indexOf("xmpp:"); - int join = uriMapping.indexOf("?join"); - - String conference = uriMapping.substring(index + 5, join); - ConferenceUtils.joinConferenceOnSeperateThread(conference, conference, null); - } } diff --git a/src/java/org/jivesoftware/launcher/Installer.java b/src/java/org/jivesoftware/launcher/Installer.java index b421422e..271f1385 100644 --- a/src/java/org/jivesoftware/launcher/Installer.java +++ b/src/java/org/jivesoftware/launcher/Installer.java @@ -20,6 +20,8 @@ import com.install4j.api.windows.WinRegistry; import java.io.File; +import javax.swing.JOptionPane; + /** * The installer class is used by the Install4j Installer to setup registry entries * during the setup process. @@ -49,9 +51,7 @@ public class Installer implements InstallAction { final File sparkDirectory; String sparkPath = ""; try { - String executable = installerContext.getMediaName(); - - sparkDirectory = new File(installerContext.getInstallationDirectory(), executable); + sparkDirectory = new File(installerContext.getInstallationDirectory(), "Spark.exe"); sparkPath = sparkDirectory.getCanonicalPath(); } diff --git a/src/java/org/jivesoftware/spark/ChatManager.java b/src/java/org/jivesoftware/spark/ChatManager.java index 4573101c..7b95d5ce 100644 --- a/src/java/org/jivesoftware/spark/ChatManager.java +++ b/src/java/org/jivesoftware/spark/ChatManager.java @@ -33,6 +33,7 @@ import org.jivesoftware.spark.ui.GlobalMessageListener; import org.jivesoftware.spark.ui.MessageFilter; import org.jivesoftware.spark.ui.SparkTabHandler; import org.jivesoftware.spark.ui.TranscriptWindowInterceptor; +import org.jivesoftware.spark.ui.conferences.ConferenceUtils; import org.jivesoftware.spark.ui.conferences.RoomInvitationListener; import org.jivesoftware.spark.ui.rooms.ChatRoomImpl; import org.jivesoftware.spark.ui.rooms.GroupChatRoom; @@ -42,10 +43,6 @@ import org.jivesoftware.spark.util.log.Log; import org.jivesoftware.sparkimpl.settings.local.LocalPreferences; import org.jivesoftware.sparkimpl.settings.local.SettingsManager; -import javax.swing.Icon; -import javax.swing.SwingUtilities; -import javax.swing.UIManager; - import java.awt.Color; import java.awt.Component; import java.util.ArrayList; @@ -57,6 +54,10 @@ import java.util.List; import java.util.Set; import java.util.concurrent.CopyOnWriteArrayList; +import javax.swing.Icon; +import javax.swing.SwingUtilities; +import javax.swing.UIManager; + /** * Handles the Chat Management of each individual Workspace. The ChatManager is responsible * for creation and removal of chat rooms, transcripts, and transfers and room invitations. @@ -73,10 +74,10 @@ public class ChatManager implements MessageEventNotificationListener { public static Color ERROR_COLOR = (Color)UIManager.get("Error.foreground"); public static Color[] COLORS = {Color.red, Color.blue, Color.gray, Color.magenta, new Color(238, 153, 247), new Color(128, 128, 0), new Color(173, 205, 50), - new Color(181, 0, 0), new Color(0, 100, 0), new Color(237, 150, 122), new Color(0, 139, 139), new Color(218, 14, 0), new Color(147, 112, 219), - new Color(205, 133, 63), new Color(163, 142, 35), new Color(72, 160, 237), new Color(255, 140, 0), new Color(106, 90, 205), new Color(224, 165, 32), - new Color(255, 69, 0), new Color(255, 99, 72), new Color(109, 130, 180), new Color(233, 0, 0), new Color(139, 69, 19), new Color(255, 127, 80), - new Color(140, 105, 225)}; + new Color(181, 0, 0), new Color(0, 100, 0), new Color(237, 150, 122), new Color(0, 139, 139), new Color(218, 14, 0), new Color(147, 112, 219), + new Color(205, 133, 63), new Color(163, 142, 35), new Color(72, 160, 237), new Color(255, 140, 0), new Color(106, 90, 205), new Color(224, 165, 32), + new Color(255, 69, 0), new Color(255, 99, 72), new Color(109, 130, 180), new Color(233, 0, 0), new Color(139, 69, 19), new Color(255, 127, 80), + new Color(140, 105, 225)}; private List messageFilters = new ArrayList(); @@ -129,9 +130,9 @@ public class ChatManager implements MessageEventNotificationListener { SparkManager.getMessageEventManager().addMessageEventNotificationListener(this); // Add message event request listener MessageEventRequestListener messageEventRequestListener = - new ChatMessageEventRequestListener(); + new ChatMessageEventRequestListener(); SparkManager.getMessageEventManager(). - addMessageEventRequestListener(messageEventRequestListener); + addMessageEventRequestListener(messageEventRequestListener); // Add Default Chat Room Decorator addSparkTabHandler(new DefaultTabHandler()); @@ -793,4 +794,103 @@ public class ChatManager implements MessageEventNotificationListener { final ContactList contactList = SparkManager.getWorkspace().getContactList(); return contactList.getSelectedUsers(); } + + /** + * Handles XMPP URI Mappings. + * + * @param arguments the arguments passed into Spark. + */ + public void handleURIMapping(String arguments) { + if (arguments.indexOf("xmpp") == -1) { + return; + } + + if (arguments.indexOf("?message") != -1) { + try { + handleJID(arguments); + } + catch (Exception e) { + Log.error(e); + } + } + else if (arguments.indexOf("?join") != -1) { + try { + handleConference(arguments); + } + catch (Exception e) { + Log.error(e); + } + } + else if (arguments.indexOf("?") == -1) { + // Then use the direct jid + int index = arguments.indexOf(":"); + if (index != -1) { + String jid = arguments.substring(index + 1); + + UserManager userManager = SparkManager.getUserManager(); + String nickname = userManager.getUserNicknameFromJID(jid); + if (nickname == null) { + nickname = jid; + } + + ChatManager chatManager = SparkManager.getChatManager(); + ChatRoom chatRoom = chatManager.createChatRoom(jid, nickname, nickname); + chatManager.getChatContainer().activateChatRoom(chatRoom); + } + } + } + + /** + * Factory method to handle different types of URI Mappings. + * + * @param uriMapping the uri mapping string. + */ + private void handleJID(String uriMapping) { + int index = uriMapping.indexOf("xmpp:"); + int messageIndex = uriMapping.indexOf("?message"); + + int bodyIndex = uriMapping.indexOf("body="); + + String jid = uriMapping.substring(index + 5, messageIndex); + String body = null; + + // Find body + if (bodyIndex != -1) { + body = uriMapping.substring(bodyIndex + 5); + } + + body = org.jivesoftware.spark.util.StringUtils.unescapeFromXML(body); + body = org.jivesoftware.spark.util.StringUtils.replace(body, "%20", " "); + + UserManager userManager = SparkManager.getUserManager(); + String nickname = userManager.getUserNicknameFromJID(jid); + if (nickname == null) { + nickname = jid; + } + + ChatManager chatManager = SparkManager.getChatManager(); + ChatRoom chatRoom = chatManager.createChatRoom(jid, nickname, nickname); + if (body != null) { + Message message = new Message(); + message.setBody(body); + chatRoom.sendMessage(message); + } + + chatManager.getChatContainer().activateChatRoom(chatRoom); + } + + /** + * Handles the URI Mapping to join a conference room. + * + * @param uriMapping the uri mapping. + * @throws Exception thrown if the conference cannot be joined. + */ + private void handleConference(String uriMapping) { + int index = uriMapping.indexOf("xmpp:"); + int join = uriMapping.indexOf("?join"); + + String conference = uriMapping.substring(index + 5, join); + ConferenceUtils.joinConferenceOnSeperateThread(conference, conference, null); + } + } \ No newline at end of file diff --git a/src/java/org/jivesoftware/spark/Workspace.java b/src/java/org/jivesoftware/spark/Workspace.java index cee85658..b20027ff 100644 --- a/src/java/org/jivesoftware/spark/Workspace.java +++ b/src/java/org/jivesoftware/spark/Workspace.java @@ -12,6 +12,7 @@ package org.jivesoftware.spark; import org.jivesoftware.MainWindow; import org.jivesoftware.MainWindowListener; +import org.jivesoftware.Spark; import org.jivesoftware.smack.PacketListener; import org.jivesoftware.smack.Roster; import org.jivesoftware.smack.filter.PacketFilter; @@ -24,7 +25,6 @@ import org.jivesoftware.smackx.debugger.EnhancedDebuggerWindow; import org.jivesoftware.smackx.packet.DelayInformation; import org.jivesoftware.spark.component.tabbedPane.SparkTabbedPane; import org.jivesoftware.spark.filetransfer.SparkTransferManager; -import org.jivesoftware.spark.phone.PhoneManager; import org.jivesoftware.spark.search.SearchManager; import org.jivesoftware.spark.ui.ChatContainer; import org.jivesoftware.spark.ui.ChatRoom; @@ -277,6 +277,9 @@ public class Workspace extends JPanel implements PacketListener { }; TaskEngine.getInstance().schedule(offlineTask, 10000); + + // Check URI Mappings + SparkManager.getChatManager().handleURIMapping(Spark.ARGUMENTS); } diff --git a/src/java/org/jivesoftware/sparkimpl/settings/JiveInfo.java b/src/java/org/jivesoftware/sparkimpl/settings/JiveInfo.java index 5a746188..86365977 100644 --- a/src/java/org/jivesoftware/sparkimpl/settings/JiveInfo.java +++ b/src/java/org/jivesoftware/sparkimpl/settings/JiveInfo.java @@ -17,11 +17,11 @@ public class JiveInfo { } public static String getVersion() { - return "2.5.6"; + return "2.5.7.beta1"; } public static String getBuildNumber() { - return "2.5.6"; + return "2.5.7.beta1"; } public static String getOS() {