public static void moveUpText(OutlinerCellRendererImpl textArea, JoeTree tree, OutlineLayoutManager layout) {
		Node currentNode = textArea.node;
		
		// Get Prev Node
		Node prevNode = tree.getPrevNode(currentNode);
		if (prevNode == null) {
			return;
		}

		// Record the EditingNode and CursorPosition
		tree.setEditingNode(prevNode);
		tree.setCursorPosition(OutlinerDocument.findNearestCaretPosition(textArea.getCaretPosition(), tree.getDocument().getPreferredCaretPosition(), prevNode));
			
		// Clear Text Selection
		textArea.setCaretPosition(0);
		textArea.moveCaretPosition(0);

		// Freeze Undo Editing
		UndoableEdit.freezeUndoEdit(currentNode);

		// Redraw and Set Focus
		if (prevNode.isVisible()) {
			layout.setFocus(prevNode,OutlineLayoutManager.TEXT);
		} else {
			layout.draw(prevNode,OutlineLayoutManager.TEXT);
		}
	}