[373094] Caret position not restored after restart in XML editor
diff --git a/bundles/org.eclipse.wst.xml.ui/src-multipage/org/eclipse/wst/xml/ui/internal/tabletree/XMLMultiPageEditorPart.java b/bundles/org.eclipse.wst.xml.ui/src-multipage/org/eclipse/wst/xml/ui/internal/tabletree/XMLMultiPageEditorPart.java
index 36db374..014eb75 100644
--- a/bundles/org.eclipse.wst.xml.ui/src-multipage/org/eclipse/wst/xml/ui/internal/tabletree/XMLMultiPageEditorPart.java
+++ b/bundles/org.eclipse.wst.xml.ui/src-multipage/org/eclipse/wst/xml/ui/internal/tabletree/XMLMultiPageEditorPart.java
@@ -53,10 +53,12 @@
 import org.eclipse.ui.IEditorInput;
 import org.eclipse.ui.IEditorPart;
 import org.eclipse.ui.IEditorSite;
+import org.eclipse.ui.IMemento;
 import org.eclipse.ui.INavigationLocation;
 import org.eclipse.ui.INavigationLocationProvider;
 import org.eclipse.ui.IPartListener;
 import org.eclipse.ui.IPartService;
+import org.eclipse.ui.IPersistableEditor;
 import org.eclipse.ui.IPropertyListener;
 import org.eclipse.ui.IWindowListener;
 import org.eclipse.ui.IWorkbenchActionConstants;
@@ -92,7 +94,7 @@
 import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
 
-public class XMLMultiPageEditorPart extends MultiPageEditorPart implements INavigationLocationProvider {
+public class XMLMultiPageEditorPart extends MultiPageEditorPart implements INavigationLocationProvider, IPersistableEditor {
 
 	/**
 	 * Internal part activation listener, copied from AbstractTextEditor
@@ -826,9 +828,6 @@
 	 * Creates the source page of the multi-page editor.
 	 */
 	protected void createSourcePage() throws PartInitException {
-		fTextEditor = createTextEditor();
-		fTextEditor.setEditorPart(this);
-
 		/*
 		 * https://bugs.eclipse.org/bugs/show_bug.cgi?id=134301 - XML editor
 		 * does not remember font settings
@@ -1006,6 +1005,8 @@
 	public void init(IEditorSite site, IEditorInput input) throws PartInitException {
 		try {
 			super.init(site, input);
+			fTextEditor = createTextEditor();
+			fTextEditor.setEditorPart(this);
 			// we want to listen for our own activation
 			fActivationListener = new ActivationListener(site.getWorkbenchWindow().getPartService());
 		}
@@ -1161,4 +1162,16 @@
 			}
 		};
 	}
+
+	public void saveState(IMemento memento) {
+		if (fTextEditor != null) {
+			fTextEditor.saveState(memento);
+		}
+	}
+
+	public void restoreState(IMemento memento) {
+		if (fTextEditor != null) {
+			fTextEditor.restoreState(memento);
+		}
+	}
 }
\ No newline at end of file