[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