Index: trunk/src/org/expeditee/gio/gesture/ExpediteeKBMGestureTranslator.java
===================================================================
--- trunk/src/org/expeditee/gio/gesture/ExpediteeKBMGestureTranslator.java	(revision 1501)
+++ trunk/src/org/expeditee/gio/gesture/ExpediteeKBMGestureTranslator.java	(revision 1502)
@@ -1268,4 +1268,9 @@
 				}
 				
+				// CTRL + SHIFT + R is the reparse frame body event
+				if (kbmTranslator.isKeyDown(Key.SHIFT)) {
+					return null;
+				}
+				
 				// Must be pressing R to justify
 				if (kbmEvent.getKeyDown() != KBMInputEvent.Key.R) {
@@ -1275,4 +1280,35 @@
 				// Return the gesture
 				return Gesture.single(StandardGestureActions.getInstance().gestureType(StandardGestureType.JUSTIFY), new JustifyGestureData(true));
+			}
+		});
+		
+		// Add the CTRL + SHIFT + R -> REPARSE FRAME BODY gesture recogniser
+		addTranslator(new InputEventToGestureTranslator(InputType.KBM)
+		{
+			@Override
+			public String details() { return "CTRL + SHIFT + R -> REPARSE FRAME BODY"; }
+
+			@Override
+			public List<Gesture> onInputEvent(InputEvent event) {
+				// Cast to keyboard/mouse event
+				KBMInputEvent kbmEvent = (KBMInputEvent) event;
+				
+				// Check that ctrl is down
+				if (!kbmTranslator.isKeyDown(Key.CTRL)) {
+					return null;
+				}
+				
+				// CTRL + SHIFT + R is the reparse frame body event
+				if (!kbmTranslator.isKeyDown(Key.SHIFT)) {
+					return null;
+				}
+				
+				// Must be pressing R to justify
+				if (kbmEvent.getKeyDown() != KBMInputEvent.Key.R) {
+					return null;
+				}
+				
+				// Return the gesture
+				return Gesture.single(StandardGestureActions.getInstance().gestureType(StandardGestureType.REPARSE), null);
 			}
 		});
Index: trunk/src/org/expeditee/gio/gesture/StandardGestureActions.java
===================================================================
--- trunk/src/org/expeditee/gio/gesture/StandardGestureActions.java	(revision 1501)
+++ trunk/src/org/expeditee/gio/gesture/StandardGestureActions.java	(revision 1502)
@@ -1,5 +1,4 @@
 package org.expeditee.gio.gesture;
 
-import java.io.File;
 import java.io.IOException;
 import java.nio.file.Files;
@@ -59,6 +58,6 @@
 import org.expeditee.gui.FrameUtils;
 import org.expeditee.gui.FreeItems;
+import org.expeditee.gui.ItemsList;
 import org.expeditee.gui.MessageBay;
-import org.expeditee.gui.ItemsList;
 import org.expeditee.gui.Vector;
 import org.expeditee.io.ExpClipReader;
@@ -133,5 +132,6 @@
 		UNDO, 
 		ZOOM, 
-		ACTIVATE_BUTTON // Enter while over Item with _acceptsKeyboardEnter set to true
+		ACTIVATE_BUTTON, // Enter while over Item with _acceptsKeyboardEnter set to true
+		REPARSE // Ctrl + Shift + R
 	}
 	//@formatter:on
@@ -467,4 +467,23 @@
 				}
 			}
+		});
+		
+		// Set the REPARSE FRAME BODY action
+		setGestureAction(gestureType(StandardGestureType.REPARSE), new GestureAction() {
+			@Override
+			public void exec(Gesture gesture) {
+				Frame currentFrame = DisplayController.getCurrentFrame();
+				ItemsList body = currentFrame.getBody(false);
+				ItemsList primaryBody = currentFrame.getPrimaryBody();
+				ItemsList surrogateBody = currentFrame.getSurrogateBody();
+				MessageBay.displayMessage("Body:" + body.toString());
+				MessageBay.displayMessage("Primaries:" + primaryBody.toString());
+				MessageBay.displayMessage("Surrogates:" + surrogateBody.toString());
+				currentFrame.parse();
+				MessageBay.displayMessage("Body:" + body.toString());
+				MessageBay.displayMessage("Primaries:" + primaryBody.toString());
+				MessageBay.displayMessage("Surrogates:" + surrogateBody.toString());
+			} 
+			
 		});
 
Index: trunk/src/org/expeditee/gui/Frame.java
===================================================================
--- trunk/src/org/expeditee/gui/Frame.java	(revision 1501)
+++ trunk/src/org/expeditee/gui/Frame.java	(revision 1502)
@@ -3133,5 +3133,5 @@
 		return _primaryItemsBody;
 	}
-	protected ItemsList getSurrogateBody() {
+	public ItemsList getSurrogateBody() {
 		return _surrogateItemsBody;
 	}
Index: trunk/src/org/expeditee/gui/ItemsList.java
===================================================================
--- trunk/src/org/expeditee/gui/ItemsList.java	(revision 1501)
+++ trunk/src/org/expeditee/gui/ItemsList.java	(revision 1502)
@@ -99,3 +99,19 @@
 		items.clear();
 	}
+	
+	@Override
+	public String toString() {
+		StringBuilder sb = new StringBuilder("{");
+		
+		if (!items.isEmpty()) {
+			for (Item i : items) {
+				sb.append(i + ", ");
+			}
+			sb.deleteCharAt(sb.length() - 1);
+			sb.deleteCharAt(sb.length() - 1);
+		}
+		
+		sb.append("}");
+		return sb.toString();
+	}
 }
