*** empty log message ***
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/PDEMultiPageEditor.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/PDEMultiPageEditor.java
index 2115866..9b654cc 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/PDEMultiPageEditor.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/PDEMultiPageEditor.java
@@ -193,6 +193,10 @@
firstPageId = storedFirstPageId;
else if (EditorPreferencePage.getUseSourcePage())
firstPageId = getSourcePageId();
+ // Regardless what is the stored value,
+ // use source page if model is not valid
+ if (isModelCorrect(getModel())==false)
+ firstPageId = getSourcePageId();
if (firstPageId != null) {
IPDEEditorPage firstPage = getPage(firstPageId);
if (firstPage == null)
@@ -648,6 +652,17 @@
protected abstract boolean updateModel();
+ public boolean validateModelSemantics() {
+ IModel model = (IModel)getModel();
+ return model!=null && model.isValid();
+ }
+
+ public boolean containsError() {
+ boolean loaded = ((IModel)getModel()).isLoaded(); //updated with syncExec() by the reconciler
+ if (!loaded) return true;
+ return !validateModelSemantics();
+ }
+
void updateSynchronizedViews(IPDEEditorPage page) {
updateContentOutline(page);
updatePropertySheet(page);
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/PDESourcePage.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/PDESourcePage.java
index 0e73c50..261b028 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/PDESourcePage.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/PDESourcePage.java
@@ -18,10 +18,8 @@
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.text.*;
import org.eclipse.jface.viewers.*;
-import org.eclipse.pde.core.*;
import org.eclipse.pde.core.ISourceObject;
-import org.eclipse.pde.internal.ui.IHelpContextIds;
-import org.eclipse.pde.internal.ui.PDEPlugin;
+import org.eclipse.pde.internal.ui.*;
import org.eclipse.swt.dnd.Clipboard;
import org.eclipse.swt.widgets.*;
import org.eclipse.ui.*;
@@ -65,7 +63,7 @@
boolean cleanModel = getEditor().updateModel();
if (cleanModel)
setModelNeedsUpdating(false);
- boolean valid = validateModelSemantics();
+ boolean valid = getEditor().validateModelSemantics();
if (cleanModel == false || valid==false) {
warnErrorsInSource();
errorMode = true;
@@ -77,11 +75,6 @@
return true;
}
- protected boolean validateModelSemantics() {
- IModel model = (IModel)getEditor().getModel();
- return model!=null && model.isValid();
- }
-
public void becomesVisible(IFormPage oldPage) {
setModelNeedsUpdating(false);
if (oldPage instanceof PDEFormPage) {
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/manifest/ManifestEditor.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/manifest/ManifestEditor.java
index eabea50..cf6ee97 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/manifest/ManifestEditor.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/editor/manifest/ManifestEditor.java
@@ -438,6 +438,7 @@
model.reload(stream, false);
if (model instanceof IEditable && model.isEditable())
((IEditable)model).setDirty(false);
+ cleanModel = containsError();
} catch (CoreException e) {
cleanModel = false;
}
diff --git a/ui/org.eclipse.pde.ui/srcnew/org/eclipse/pde/internal/ui/editor/manifest/ManifestSourcePageNew.java b/ui/org.eclipse.pde.ui/srcnew/org/eclipse/pde/internal/ui/editor/manifest/ManifestSourcePageNew.java
index 032b9a6..f4d646d 100644
--- a/ui/org.eclipse.pde.ui/srcnew/org/eclipse/pde/internal/ui/editor/manifest/ManifestSourcePageNew.java
+++ b/ui/org.eclipse.pde.ui/srcnew/org/eclipse/pde/internal/ui/editor/manifest/ManifestSourcePageNew.java
@@ -77,12 +77,6 @@
//getSite().setSelectionProvider(getSelectionProvider());
}
- public boolean containsError() {
- boolean loaded = ((AbstractPluginModelBase)getEditor().getModel()).isLoaded(); //updated with syncExec() by the reconciler
- if (!loaded) return false;
- return !validateModelSemantics();
- }
-
protected void setModelNeedsUpdating(boolean modelNeedsUpdating) {
synchronized (modelNeedsUpdatingLock) {
super.setModelNeedsUpdating(modelNeedsUpdating);
@@ -187,5 +181,9 @@
setModelNeedsUpdating(true);
super.createPartControl(parent);
}
+
+ public boolean containsError() {
+ return getEditor().containsError();
+ }
}