Bug 563039 - [regression] POM editor ignores "Open XML page..." pref

Change-Id: If0cc4eef520b0c811a00d47a44d1b189b37f41ee
Signed-off-by: Mickael Istria <mistria@redhat.com>
diff --git a/org.eclipse.m2e.editor.lemminx.tests/META-INF/MANIFEST.MF b/org.eclipse.m2e.editor.lemminx.tests/META-INF/MANIFEST.MF
index 6b7566a..9425b21 100644
--- a/org.eclipse.m2e.editor.lemminx.tests/META-INF/MANIFEST.MF
+++ b/org.eclipse.m2e.editor.lemminx.tests/META-INF/MANIFEST.MF
@@ -15,4 +15,9 @@
  org.eclipse.core.runtime;bundle-version="3.16.0",
  org.eclipse.ui.tests.harness,
  org.eclipse.jface.text;bundle-version="3.16.0",
- org.eclipse.m2e.editor.lemminx;bundle-version="1.15.0"
+ org.eclipse.m2e.editor.lemminx;bundle-version="1.15.0",
+ org.eclipse.m2e.core.ui;bundle-version="1.16.0",
+ org.eclipse.m2e.core;bundle-version="1.16.0",
+ org.eclipse.m2e.editor;bundle-version="1.16.0",
+ org.eclipse.ui.forms;bundle-version="3.0",
+ org.eclipse.search;bundle-version="3.11.0"
diff --git a/org.eclipse.m2e.editor.lemminx.tests/src/org/eclipse/m2e/editor/lemminx/tests/EditorTest.java b/org.eclipse.m2e.editor.lemminx.tests/src/org/eclipse/m2e/editor/lemminx/tests/EditorTest.java
index 75e4310..8236564 100644
--- a/org.eclipse.m2e.editor.lemminx.tests/src/org/eclipse/m2e/editor/lemminx/tests/EditorTest.java
+++ b/org.eclipse.m2e.editor.lemminx.tests/src/org/eclipse/m2e/editor/lemminx/tests/EditorTest.java
@@ -22,7 +22,11 @@
 import org.eclipse.core.resources.IResource;
 import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.CoreException;
+import org.eclipse.jface.preference.IPreferenceStore;
 import org.eclipse.jface.text.TextSelection;
+import org.eclipse.m2e.core.internal.preferences.MavenPreferenceConstants;
+import org.eclipse.m2e.core.ui.internal.M2EUIPluginActivator;
+import org.eclipse.m2e.editor.pom.MavenPomEditor;
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.Shell;
 import org.eclipse.swt.widgets.Table;
@@ -30,10 +34,12 @@
 import org.eclipse.ui.IWorkbenchPage;
 import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.ide.IDE;
+import org.eclipse.ui.part.FileEditorInput;
 import org.eclipse.ui.tests.harness.util.DisplayHelper;
 import org.eclipse.ui.texteditor.ITextEditor;
 import org.eclipse.ui.texteditor.ITextEditorActionConstants;
 import org.junit.After;
+import org.junit.Assert;
 import org.junit.Test;
 
 public class EditorTest {
@@ -84,6 +90,20 @@
 				.map(table -> Boolean.valueOf(Arrays.stream(table.getItems()).map(TableItem::getText).anyMatch("compile"::equals)))
 				.orElse(Boolean.FALSE).booleanValue();
 		}));
-		
+	}
+
+	@Test
+	public void testEditorOpenOnSourcePage() throws CoreException {
+		IPreferenceStore preferenceStore = M2EUIPluginActivator.getDefault().getPreferenceStore();
+		preferenceStore.setValue(MavenPreferenceConstants.P_DEFAULT_POM_EDITOR_PAGE, true);
+		page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
+		project = ResourcesPlugin.getWorkspace().getRoot().getProject("test" + System.currentTimeMillis());
+		project.create(null);
+		project.open(null);
+		IFile pomFile = project.getFile("pom.xml");
+		pomFile.create(getClass().getResourceAsStream("pom.xml"), true, null);
+		MavenPomEditor editor = (MavenPomEditor)page.openEditor(new FileEditorInput(pomFile), MavenPomEditor.EDITOR_ID);
+		Assert.assertNotNull(editor.getSourcePage());
+		Assert.assertEquals(editor.getSourcePage(), editor.getActiveEditor());
 	}
 }
diff --git a/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/pom/MavenPomEditor.java b/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/pom/MavenPomEditor.java
index cd3ee41..cf6135b 100644
--- a/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/pom/MavenPomEditor.java
+++ b/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/pom/MavenPomEditor.java
@@ -372,7 +372,7 @@
     boolean showXML = M2EUIPluginActivator.getDefault().getPreferenceStore()
         .getBoolean(MavenPreferenceConstants.P_DEFAULT_POM_EDITOR_PAGE);
     if(showXML) {
-      setActivePage(null);
+      setActivePage(sourcePageIndex);
     }
   }
 
@@ -1018,6 +1018,7 @@
    */
   public void setSourcePage(ITextEditor sourcePage) {
     this.sourcePage = sourcePage;
+    this.sourcePageIndex = pages.indexOf(sourcePage);
   }
 
   /**