Index: trunk/src_apollo/org/apollo/ApolloSystem.java
===================================================================
--- trunk/src_apollo/org/apollo/ApolloSystem.java	(revision 375)
+++ trunk/src_apollo/org/apollo/ApolloSystem.java	(revision 489)
@@ -259,5 +259,5 @@
 	 * Releases all resources currently used by the SampledAudioManager.
 	 */
-	private static void shutdown() {
+	public static void shutdown() {
 		
 		ApolloSystemLog.println("Saving banks...");
Index: trunk/src_apollo/org/apollo/ApolloSystemApplet.java
===================================================================
--- trunk/src_apollo/org/apollo/ApolloSystemApplet.java	(revision 489)
+++ trunk/src_apollo/org/apollo/ApolloSystemApplet.java	(revision 489)
@@ -0,0 +1,97 @@
+package org.apollo;
+
+import java.io.File;
+
+import java.awt.*;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import javax.swing.*;
+
+import org.expeditee.gui.Browser;
+
+public class ApolloSystemApplet extends JApplet implements ActionListener
+{
+
+    // point of entry for applet
+    public void init()
+    {
+	
+	// Check if the user has agreed to the requested security settings
+	try {
+	    // Work-around to reduce number of 
+	    // 'Could not lock user prefs' error messages.
+	    // Thanks to Walter Schatz from the java forums.
+	    System.setProperty("java.util.prefs.syncInterval","2000000");
+	}
+	catch (Exception exception) {
+	    getContentPane().add(new JLabel("Expeditee Applet deactivated", JLabel.CENTER));
+	    return;
+	}
+	
+	// Ensure platform specific LAF
+	try {
+	    UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
+	}
+	catch (Exception exception) {
+	    exception.printStackTrace();
+	}
+
+	// If there is username parameter passed in, use that
+
+	String expeditee_home = this.getParameter("expeditee.home"); 
+
+	if (expeditee_home == null) {
+	    expeditee_home = System.getProperty("user.home") + File.separator + "expeditee";
+	}
+
+	System.setProperty("expeditee.home",expeditee_home);
+
+	// Create a button for the user to press to open the main Expeditee frame
+	JButton launch_button = new JButton("Launch Musical Expeditee ...");
+	launch_button.addActionListener(this);
+	getContentPane().add(launch_button);
+    }
+
+
+    public void start() 
+    {
+	System.err.println("Applet start() called");
+    }
+
+
+    public void stop()
+    {
+	System.err.println("Applet stop() called");
+    }
+
+
+    public void destroy()
+    {
+	System.err.println("Applet destroy() called");
+
+	ApolloSystem.shutdown();
+
+	Browser._theBrowser.exit();
+	Browser._theBrowser = null;
+	System.err.println("Expeditee exited.");
+    }
+
+
+    public void actionPerformed(ActionEvent e)
+    {
+	if (Browser._theBrowser==null) {
+	    ApolloSystem.main(null);
+	}
+	else {
+	    // call set visible??
+	}
+    }
+
+    /*
+    public static void main(String[] args) {
+	
+    }
+    */
+
+
+}
Index: trunk/src_apollo/org/apollo/AudioFrameKeyboardActions.java
===================================================================
--- trunk/src_apollo/org/apollo/AudioFrameKeyboardActions.java	(revision 375)
+++ trunk/src_apollo/org/apollo/AudioFrameKeyboardActions.java	(revision 489)
@@ -21,4 +21,5 @@
 import org.expeditee.gui.FrameUtils;
 import org.expeditee.gui.FreeItems;
+import org.expeditee.items.UserAppliedPermission;
 import org.expeditee.items.Dot;
 import org.expeditee.items.Item;
@@ -145,5 +146,5 @@
 							if (ip.getParent() != current) continue;
 							
-							if (ip.hasPermission(Permission.full)) {
+							if (ip.hasPermission(UserAppliedPermission.full)) {
 								// Only include lines if one of their enpoints are also  being removed
 								if (ip instanceof Line) {
Index: trunk/src_apollo/org/apollo/gui/FrameLayoutDaemon.java
===================================================================
--- trunk/src_apollo/org/apollo/gui/FrameLayoutDaemon.java	(revision 375)
+++ trunk/src_apollo/org/apollo/gui/FrameLayoutDaemon.java	(revision 489)
@@ -69,8 +69,16 @@
 	private int leftMargin = DEFAULT_LAYOUT_LEFT_MARGIN;
 	private int rightMargin = DEFAULT_LAYOUT_RIGHT_MARGIN;
-	
+
+    /*	
 	public static final int DEFAULT_LAYOUT_RIGHT_MARGIN = 30;
 	public static final int DEFAULT_LAYOUT_LEFT_MARGIN = 30;
 	public static final int MAX_TIMELINE_MARGIN_AREA = 400;
+    */
+
+	public static final int DEFAULT_LAYOUT_RIGHT_MARGIN = 300;
+	public static final int DEFAULT_LAYOUT_LEFT_MARGIN = 100;
+	public static final int MAX_TIMELINE_MARGIN_AREA = 500;
+
+
 	public static final int LAYOUT_MAX_INITIATION_PIXEL = 100;
 	public static final int MIN_TRACK_WIDGET_WIDTH = 20;
Index: trunk/src_apollo/org/apollo/io/AudioPathManager.java
===================================================================
--- trunk/src_apollo/org/apollo/io/AudioPathManager.java	(revision 375)
+++ trunk/src_apollo/org/apollo/io/AudioPathManager.java	(revision 489)
@@ -26,7 +26,5 @@
 
 	/** Suffixed with the native file separator */
-	public static final String AUDIO_HOME_DIRECTORY = "audio" + File.separatorChar;
-	//	TODO: TMP FOR WORKING IN LINUX LABS: Avoids using my quota
-	//public static final String AUDIO_HOME_DIRECTORY = "/research/bjn8/apollosaudio/";
+	public static String AUDIO_HOME_DIRECTORY = "audio" + File.separatorChar;
 	
 	/** Stores all virtual names created by this repository. */
@@ -44,4 +42,10 @@
 	 */
 	static {
+
+		String expeditee_home = System.getProperty("expeditee.home");
+
+		if (expeditee_home != null) {
+		    AUDIO_HOME_DIRECTORY = expeditee_home + File.separator + AUDIO_HOME_DIRECTORY;		    
+		}
 
 		// Ensure audio directory exists
Index: trunk/src_apollo/org/apollo/io/IconRepository.java
===================================================================
--- trunk/src_apollo/org/apollo/io/IconRepository.java	(revision 375)
+++ trunk/src_apollo/org/apollo/io/IconRepository.java	(revision 489)
@@ -59,7 +59,14 @@
 		if (icon == null) {
 			try {
-				
-				URL url = ClassLoader.getSystemResource("org/apollo/icons/" + name);
-				
+			        URL url;
+				ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
+				if (classLoader!=null) {
+				    // Applet friendly
+				    url = classLoader.getResource("org/apollo/icons/" + name);
+				}
+				else {
+				    url = ClassLoader.getSystemResource("org/apollo/icons/" + name);
+				}
+
 				if (url != null) {
 					icon = new ImageIcon(url);
Index: trunk/src_apollo/org/apollo/items/EmulatedTextItem.java
===================================================================
--- trunk/src_apollo/org/apollo/items/EmulatedTextItem.java	(revision 375)
+++ trunk/src_apollo/org/apollo/items/EmulatedTextItem.java	(revision 489)
@@ -247,5 +247,5 @@
 				Point2D.Float newMouse = emulatedSource.moveCursor(
 						(e.getKeyCode() == KeyEvent.VK_LEFT) ? Text.LEFT : Text.RIGHT, 
-						(float)p.getX(), (float)p.getY(), false);
+						(float)p.getX(), (float)p.getY(), false, false);
 				
 				if (newMouse != null) {
Index: trunk/src_apollo/org/apollo/items/FramePlaybackLauncher.java
===================================================================
--- trunk/src_apollo/org/apollo/items/FramePlaybackLauncher.java	(revision 375)
+++ trunk/src_apollo/org/apollo/items/FramePlaybackLauncher.java	(revision 489)
@@ -112,5 +112,5 @@
 
 	@Override
-	public int getWidth() {
+	public Integer getWidth() {
 		return WIDTH;
 	}
Index: trunk/src_apollo/org/apollo/items/RecordOverdubLauncher.java
===================================================================
--- trunk/src_apollo/org/apollo/items/RecordOverdubLauncher.java	(revision 375)
+++ trunk/src_apollo/org/apollo/items/RecordOverdubLauncher.java	(revision 489)
@@ -87,5 +87,5 @@
 
 		@Override
-		public int getWidth() {
+		public Integer getWidth() {
 			return WIDTH;
 		}
