Apply bugzilla patch - Bug 340150 - DTE: Copied type in source not shown on UI
diff --git a/plugins/org.eclipse.wst.sse.sieditor.test/api/org/eclipse/wst/sse/sieditor/test/all/UITestsSuite.java b/plugins/org.eclipse.wst.sse.sieditor.test/api/org/eclipse/wst/sse/sieditor/test/all/UITestsSuite.java
index 40253e0..eca9f62 100644
--- a/plugins/org.eclipse.wst.sse.sieditor.test/api/org/eclipse/wst/sse/sieditor/test/all/UITestsSuite.java
+++ b/plugins/org.eclipse.wst.sse.sieditor.test/api/org/eclipse/wst/sse/sieditor/test/all/UITestsSuite.java
@@ -16,6 +16,7 @@
 

 import org.eclipse.wst.sse.sieditor.test.core.common.TestDisposableInstances;

 import org.eclipse.wst.sse.sieditor.test.model.commands.TestUndoRedoInSourceAndEMF;

+import org.eclipse.wst.sse.sieditor.test.ui.PageChangedListenersManagerTest;

 import org.eclipse.wst.sse.sieditor.test.ui.TestAbstractDetailsPage;

 import org.eclipse.wst.sse.sieditor.test.ui.TestServiceInterfaceEditor;

 import org.eclipse.wst.sse.sieditor.test.ui.preferences.TestServiceInterfaceEditorPreferencePage;

@@ -266,18 +267,17 @@
     ElementDetailsSectionRefreshFromRefToNonRefReLayoutTest.class,

     TestSIEActionEnablementForSelectionManager.class,

     TestServiceInterfaceEditor.class,

-    

     EditorTitleMessagesManagerTest.class,

     TestIsSetEditValidatorWhenCreateModel.class,

     TestDisposableInstances.class,

     TestSetSelectionInSourceWithDataTypesEditor.class,

     TestSetSelectionInSourceWithSIEditor.class,

-    

     ExtractNamespaceWizardTest.class,

     ExtractSchemaTextFieldModifyListenerTest.class,

     TestSetSelectionInDTPageFromSourcePageWithDTE.class,

     TestSetSelectionInSIPageFromSourcePageWithSIE.class,

-    TestTypePropertyEditorHyperLinkSelection.class

+    TestTypePropertyEditorHyperLinkSelection.class,

+    PageChangedListenersManagerTest.class

 })

 public class UITestsSuite {

 

diff --git a/plugins/org.eclipse.wst.sse.sieditor.test/api/org/eclipse/wst/sse/sieditor/test/ui/PageChangedListenersManagerTest.java b/plugins/org.eclipse.wst.sse.sieditor.test/api/org/eclipse/wst/sse/sieditor/test/ui/PageChangedListenersManagerTest.java
new file mode 100644
index 0000000..7900cd0
--- /dev/null
+++ b/plugins/org.eclipse.wst.sse.sieditor.test/api/org/eclipse/wst/sse/sieditor/test/ui/PageChangedListenersManagerTest.java
@@ -0,0 +1,56 @@
+package org.eclipse.wst.sse.sieditor.test.ui;
+
+import static org.easymock.EasyMock.createMock;
+import static org.easymock.EasyMock.replay;
+import static org.easymock.EasyMock.verify;
+
+import java.util.List;
+
+import org.eclipse.wst.sse.sieditor.model.api.IModelRoot;
+import org.eclipse.wst.sse.sieditor.test.util.SIEditorBaseTest;
+import org.eclipse.wst.sse.sieditor.ui.ServiceInterfaceEditor;
+import org.eclipse.wst.sse.sieditor.ui.listeners.IPageChangedListener;
+import org.eclipse.wst.sse.sieditor.ui.listeners.PageChangedListenersManager;
+import org.eclipse.wst.sse.sieditor.ui.listeners.impl.ModelReconcilerPageChangedLister;
+import org.eclipse.wst.sse.sieditor.ui.listeners.impl.SelectionUpdaterPageChangedListener;
+import org.eclipse.wst.sse.sieditor.ui.listeners.impl.TreeRefresherPageChangedListener;
+import org.eclipse.wst.sse.sieditor.ui.view.impl.SISourceEditorPart;
+import org.junit.Test;
+
+public class PageChangedListenersManagerTest extends SIEditorBaseTest {
+
+    @Test
+    public void testCreatePageChangedListeners() {
+        SISourceEditorPart sourcePage = new SISourceEditorPart();
+        PageChangedListenersManager pageChangedListenersManager = new PageChangedListenersManager(sourcePage);
+
+        List<IPageChangedListener> listeners = pageChangedListenersManager.getListeners();
+        assertEquals(ModelReconcilerPageChangedLister.class, listeners.get(0).getClass());
+        assertEquals(SelectionUpdaterPageChangedListener.class, listeners.get(1).getClass());
+        assertEquals(TreeRefresherPageChangedListener.class, listeners.get(2).getClass());
+    }
+
+    @Test
+    public void testNotifyPageChangedListeners() throws Exception {
+        final int OLD_PAGE_INDEX = 1;
+        final int NEW_PAGE_INDEX = 0;
+
+        // open the editor in order to get an instance of it in the protected
+        // "editor" variable
+        IModelRoot modelRoot = getModelRoot("pub/csns/renameMultiReferredPart.wsdl", //$NON-NLS-1$
+                "renameMultiReferredPart.wsdl", ServiceInterfaceEditor.EDITOR_ID);
+
+        editor.pageChange(OLD_PAGE_INDEX);
+
+        IPageChangedListener mockPageChangedListener = createMock(IPageChangedListener.class);
+        mockPageChangedListener.pageChanged(NEW_PAGE_INDEX, OLD_PAGE_INDEX, editor.getPages(), modelRoot);
+        replay(mockPageChangedListener);
+        
+        editor.getPageChangedListenersManager().addPageChangeListener(mockPageChangedListener);
+        
+        editor.pageChange(NEW_PAGE_INDEX);
+
+        verify(mockPageChangedListener);
+    }
+
+}
diff --git a/plugins/org.eclipse.wst.sse.sieditor.test/api/org/eclipse/wst/sse/sieditor/test/ui/v2/common/TestTypePropertyEditorHyperLinkSelection.java b/plugins/org.eclipse.wst.sse.sieditor.test/api/org/eclipse/wst/sse/sieditor/test/ui/v2/common/TestTypePropertyEditorHyperLinkSelection.java
index e7b79ac..5cc3c42 100644
--- a/plugins/org.eclipse.wst.sse.sieditor.test/api/org/eclipse/wst/sse/sieditor/test/ui/v2/common/TestTypePropertyEditorHyperLinkSelection.java
+++ b/plugins/org.eclipse.wst.sse.sieditor.test/api/org/eclipse/wst/sse/sieditor/test/ui/v2/common/TestTypePropertyEditorHyperLinkSelection.java
@@ -18,19 +18,6 @@
 

 import org.eclipse.ui.forms.editor.FormEditor;

 import org.eclipse.ui.forms.events.HyperlinkAdapter;

-import org.eclipse.wst.sse.sieditor.ui.v2.AbstractFormPageController;

-import org.eclipse.wst.sse.sieditor.ui.v2.dt.DataTypesEditorPage;

-import org.eclipse.wst.sse.sieditor.ui.v2.dt.ITypeDisplayer;

-import org.eclipse.wst.sse.sieditor.ui.v2.newtypedialog.ITypeDialogStrategy;

-import org.eclipse.wst.sse.sieditor.ui.v2.nodes.ITreeNode;

-import org.eclipse.wst.sse.sieditor.ui.v2.propertyeditor.TypePropertyEditor;

-import org.eclipse.wst.sse.sieditor.ui.v2.propertyeditor.typecommitters.ITypeCommitter;

-import org.eclipse.wst.sse.sieditor.test.util.ResourceUtils;

-import org.eclipse.wst.sse.sieditor.test.util.SIEditorBaseTest;

-import org.junit.After;

-import org.junit.Before;

-import org.junit.Test;

-

 import org.eclipse.wst.sse.sieditor.model.api.IWsdlModelRoot;

 import org.eclipse.wst.sse.sieditor.model.wsdl.api.IDescription;

 import org.eclipse.wst.sse.sieditor.model.wsdl.api.IOperation;

@@ -39,8 +26,22 @@
 import org.eclipse.wst.sse.sieditor.model.xsd.api.ISchema;

 import org.eclipse.wst.sse.sieditor.model.xsd.api.IStructureType;

 import org.eclipse.wst.sse.sieditor.model.xsd.api.IType;

+import org.eclipse.wst.sse.sieditor.test.util.ResourceUtils;

+import org.eclipse.wst.sse.sieditor.test.util.SIEditorBaseTest;

 import org.eclipse.wst.sse.sieditor.ui.AbstractEditorPage;

 import org.eclipse.wst.sse.sieditor.ui.ServiceInterfaceEditor;

+import org.eclipse.wst.sse.sieditor.ui.v2.AbstractFormPageController;

+import org.eclipse.wst.sse.sieditor.ui.v2.dt.DataTypesEditorPage;

+import org.eclipse.wst.sse.sieditor.ui.v2.dt.DataTypesFormPageController;

+import org.eclipse.wst.sse.sieditor.ui.v2.dt.ITypeDisplayer;

+import org.eclipse.wst.sse.sieditor.ui.v2.newtypedialog.ITypeDialogStrategy;

+import org.eclipse.wst.sse.sieditor.ui.v2.nodes.ITreeNode;

+import org.eclipse.wst.sse.sieditor.ui.v2.propertyeditor.TypePropertyEditor;

+import org.eclipse.wst.sse.sieditor.ui.v2.propertyeditor.typecommitters.ITypeCommitter;

+import org.eclipse.wst.sse.sieditor.ui.v2.wsdl.controller.SIFormPageController;

+import org.junit.After;

+import org.junit.Before;

+import org.junit.Test;

 

 @SuppressWarnings( { "nls", "deprecation" })

 public class TestTypePropertyEditorHyperLinkSelection extends SIEditorBaseTest {

@@ -57,8 +58,8 @@
     private TypePropertyEditorTest typePropEditor;

     private DataTypesEditorPage dtPage;

     private AbstractEditorPage serviceInterfaceEditorPage;

-    private AbstractFormPageController siController;

-    private AbstractFormPageController dtController;

+    private SIFormPageController siController;

+    private DataTypesFormPageController dtController;

 

     private class TypePropertyEditorTest extends TypePropertyEditor {

 

@@ -164,8 +165,8 @@
         typePropEditor.initTypeDisplayer(new DataTypeEditorPageTest(dtPage.getEditor()));

 

         serviceInterfaceEditorPage = (AbstractEditorPage) editor.getPages().get(0);

-        siController = serviceInterfaceEditorPage.getController();

-        dtController = ((AbstractEditorPage) editor.getPages().get(1)).getController();

+        siController = (SIFormPageController)serviceInterfaceEditorPage.getController();

+        dtController = (DataTypesFormPageController)((AbstractEditorPage) editor.getPages().get(1)).getController();

     }

 

     @Test

@@ -227,7 +228,7 @@
 

     @Test

     public void testTypeHyperLinkWithImportedMessage() throws Exception {

-        final IOperation operation = modelDescription.getInterface("ServiceInterface1").get(0) //$NON-NLS-1$

+         final IOperation operation = modelDescription.getInterface("ServiceInterface1").get(0) //$NON-NLS-1$

                 .getOperation("NewOperation1").get(0); //$NON-NLS-1$

 

         final IParameter importedWsdlType1 = operation.getInputParameter("importedWsdlType1").get(0);

@@ -240,7 +241,7 @@
 

     }

 

-    private void handleLinkActivatedWhenSelectedTypeIsNotVisible(final IParameter importedWsdlType1,

+     private void handleLinkActivatedWhenSelectedTypeIsNotVisible(final IParameter importedWsdlType1,

             final IParameter importedWsdlFromSchemaType) {

         selectedTypeExistInVisibleSchemas[0] = true;

         final ITreeNode treeNodeForInternalType1 = siController.getTreeNodeMapper().getTreeNode(importedWsdlType1);

diff --git a/plugins/org.eclipse.wst.sse.sieditor.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.wst.sse.sieditor.ui/META-INF/MANIFEST.MF
index 99a7e05..45d562b 100644
--- a/plugins/org.eclipse.wst.sse.sieditor.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.wst.sse.sieditor.ui/META-INF/MANIFEST.MF
@@ -41,7 +41,8 @@
    org.eclipse.swt.graphics,
    org.osgi.framework",
  org.eclipse.wst.sse.sieditor.ui.i18n;uses:="org.eclipse.osgi.util",
- org.eclipse.wst.sse.sieditor.ui.listeners;uses:="org.eclipse.wst.sse.sieditor.fwk.mvp.ui",
+ org.eclipse.wst.sse.sieditor.ui.listeners,
+ org.eclipse.wst.sse.sieditor.ui.listeners.impl,
  org.eclipse.wst.sse.sieditor.ui.preedit,
  org.eclipse.wst.sse.sieditor.ui.preferences,
  org.eclipse.wst.sse.sieditor.ui.providers;
diff --git a/plugins/org.eclipse.wst.sse.sieditor.ui/api/org/eclipse/wst/sse/sieditor/ui/AbstractEditorWithSourcePage.java b/plugins/org.eclipse.wst.sse.sieditor.ui/api/org/eclipse/wst/sse/sieditor/ui/AbstractEditorWithSourcePage.java
index d7296a0..7be6a24 100644
--- a/plugins/org.eclipse.wst.sse.sieditor.ui/api/org/eclipse/wst/sse/sieditor/ui/AbstractEditorWithSourcePage.java
+++ b/plugins/org.eclipse.wst.sse.sieditor.ui/api/org/eclipse/wst/sse/sieditor/ui/AbstractEditorWithSourcePage.java
@@ -59,10 +59,6 @@
 import org.eclipse.ui.texteditor.IDocumentProvider;
 import org.eclipse.wst.sse.core.StructuredModelManager;
 import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
-import org.eclipse.wst.xml.core.internal.document.XMLModelNotifier;
-import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
-import org.w3c.dom.Document;
-
 import org.eclipse.wst.sse.sieditor.command.common.SaveCommand;
 import org.eclipse.wst.sse.sieditor.core.common.IEnvironment;
 import org.eclipse.wst.sse.sieditor.core.common.Logger;
@@ -83,10 +79,9 @@
 import org.eclipse.wst.sse.sieditor.model.wsdl.api.IDescription;
 import org.eclipse.wst.sse.sieditor.model.xsd.api.ISchema;
 import org.eclipse.wst.sse.sieditor.ui.i18n.Messages;
+import org.eclipse.wst.sse.sieditor.ui.listeners.PageChangedListenersManager;
 import org.eclipse.wst.sse.sieditor.ui.preedit.EditValidator;
 import org.eclipse.wst.sse.sieditor.ui.providers.SurrogateSelectionProvider;
-import org.eclipse.wst.sse.sieditor.ui.v2.PageChangedReconcileManager;
-import org.eclipse.wst.sse.sieditor.ui.v2.PageChangedSelectionManager;
 import org.eclipse.wst.sse.sieditor.ui.v2.UIConstants;
 import org.eclipse.wst.sse.sieditor.ui.v2.common.ThreadUtils;
 import org.eclipse.wst.sse.sieditor.ui.v2.common.ValidationListener;
@@ -94,6 +89,9 @@
 import org.eclipse.wst.sse.sieditor.ui.v2.resources.ResourceChangeHandler;
 import org.eclipse.wst.sse.sieditor.ui.v2.wsdl.formpage.ServiceIntefaceEditorPage;
 import org.eclipse.wst.sse.sieditor.ui.view.impl.SISourceEditorPart;
+import org.eclipse.wst.xml.core.internal.document.XMLModelNotifier;
+import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
+import org.w3c.dom.Document;
 
 /**
  * Base class to provide common infrastructure for the Service Interface editor
@@ -141,8 +139,7 @@
 
     private IStructuredModel structuredModel;
 
-    private PageChangedSelectionManager pageChangedSelectionManager;
-    private PageChangedReconcileManager pageChangedReconcileManager;
+    private PageChangedListenersManager pageChangedListenersManager;
 
     public AbstractEditorWithSourcePage() {
         super();
@@ -366,8 +363,8 @@
 
         try {
             sourcePage = new SISourceEditorPart();
-            pageChangedSelectionManager = new PageChangedSelectionManager(sourcePage);
-            pageChangedReconcileManager = new PageChangedReconcileManager();
+
+            pageChangedListenersManager = new PageChangedListenersManager(sourcePage);
 
             addPage(sourcePage, in);
             sourcePage.initPart(in, this);
@@ -395,6 +392,7 @@
     public void reloadModel(final IStorageEditorInput newEditorInput, final boolean syncExec) {
         final Runnable reloadRunnable = new Runnable() {
 
+            @Override
             public void run() {
                 // Clear undo/redo history
                 final int oldUndoLimit = operationHistory.getLimit(undoContext);
@@ -465,6 +463,7 @@
     private void revertModelToSaved() {
 
         final Runnable executeReload = new Runnable() {
+            @Override
             public void run() {
                 // this command should not notify SIE Model
                 final AbstractEMFOperation reloadCommand = new AbstractEMFOperation(commonModel.getEnv().getEditingDomain(),
@@ -495,8 +494,8 @@
                     final IStatus status = reloadCommand.execute(null, null);
                     if (!StatusUtils.canContinue(status)) {
                         Logger.log(status);
-                        StatusUtils.showStatusDialog(Messages.AbstractEditorWithSourcePage_1, MessageFormat.format(
-                                Messages.AbstractEditorWithSourcePage_2, getPartName()), status);
+                        StatusUtils.showStatusDialog(Messages.AbstractEditorWithSourcePage_1,
+                                MessageFormat.format(Messages.AbstractEditorWithSourcePage_2, getPartName()), status);
                     }
                 } catch (final ExecutionException e) {
                     throw new RuntimeException(e);
@@ -510,6 +509,7 @@
 
     protected abstract void validate();
 
+    @Override
     public void gotoMarker(final IMarker marker) {
     }
 
@@ -521,18 +521,14 @@
     public void pageChange(final int newPageIndex) {
         final int oldPageIndex = getCurrentPage();
         super.pageChange(newPageIndex);
-        if (pageChangedSelectionManager != null) {
-            pageChangedSelectionManager.performSelection(newPageIndex, oldPageIndex, getPages(), getModelRoot());
-        }
-        if (pageChangedReconcileManager != null) {
-            pageChangedReconcileManager.performReconcile(newPageIndex, oldPageIndex, getPages(), getModelRoot());
-        }
+        getPageChangedListenersManager().notifyPageChanged(newPageIndex, oldPageIndex, getPages(), getModelRoot());
     }
 
     protected void validate(final Collection<? extends IModelObject> validatedEntitites) {
         final Set<String> locationUris = new HashSet<String>();
         final IWorkspaceRunnable vr = new IWorkspaceRunnable() {
 
+            @Override
             public void run(final IProgressMonitor monitor) throws CoreException {
                 final Set<IModelObject> validatedObjects = new HashSet<IModelObject>();
 
@@ -677,4 +673,8 @@
     public IStructuredModel getStructuredModel() {
         return structuredModel;
     }
+
+    public PageChangedListenersManager getPageChangedListenersManager() {
+        return pageChangedListenersManager;
+    }
 }
diff --git a/plugins/org.eclipse.wst.sse.sieditor.ui/api/org/eclipse/wst/sse/sieditor/ui/listeners/IPageChangedListener.java b/plugins/org.eclipse.wst.sse.sieditor.ui/api/org/eclipse/wst/sse/sieditor/ui/listeners/IPageChangedListener.java
new file mode 100644
index 0000000..0a98e32
--- /dev/null
+++ b/plugins/org.eclipse.wst.sse.sieditor.ui/api/org/eclipse/wst/sse/sieditor/ui/listeners/IPageChangedListener.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2010 SAP AG.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Stanislav Nichev - initial API and implementation.
+ *    Dimitar Tenev - refactoring.
+ *******************************************************************************/
+package org.eclipse.wst.sse.sieditor.ui.listeners;
+
+import java.util.List;
+
+import org.eclipse.wst.sse.sieditor.model.api.IModelRoot;
+
+/**
+ * 
+ * This listener is responsible for the handling of the SIE/DTE page changes
+ * events (for example page is changed from the source page to the data types
+ * page)
+ * 
+ */
+public interface IPageChangedListener {
+
+    public void pageChanged(final int newPageIndex, final int oldPageIndex, final List pages, final IModelRoot modelRoot);
+
+}
diff --git a/plugins/org.eclipse.wst.sse.sieditor.ui/api/org/eclipse/wst/sse/sieditor/ui/listeners/ISIFWizardListener.java b/plugins/org.eclipse.wst.sse.sieditor.ui/api/org/eclipse/wst/sse/sieditor/ui/listeners/ISIFWizardListener.java
deleted file mode 100644
index cf13907..0000000
--- a/plugins/org.eclipse.wst.sse.sieditor.ui/api/org/eclipse/wst/sse/sieditor/ui/listeners/ISIFWizardListener.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2010 SAP AG.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Emil Simeonov - initial API and implementation.
- *    Dimitar Donchev - initial API and implementation.
- *    Dimitar Tenev - initial API and implementation.
- *    Nevena Manova - initial API and implementation.
- *    Georgi Konstantinov - initial API and implementation.
- *******************************************************************************/
-package org.eclipse.wst.sse.sieditor.ui.listeners;
-
-public interface ISIFWizardListener {
-
-	/**
-	 * Action to be taken when Finish id pressed on the wizard
-	 * @return - Returns true if File is created successfully
-	 * 		   - Returns false if there are errors while creating the File
-	 */
-	boolean performFinish();
-}
diff --git a/plugins/org.eclipse.wst.sse.sieditor.ui/api/org/eclipse/wst/sse/sieditor/ui/listeners/ISIFWizardPageListener.java b/plugins/org.eclipse.wst.sse.sieditor.ui/api/org/eclipse/wst/sse/sieditor/ui/listeners/ISIFWizardPageListener.java
deleted file mode 100644
index ee48f7e..0000000
--- a/plugins/org.eclipse.wst.sse.sieditor.ui/api/org/eclipse/wst/sse/sieditor/ui/listeners/ISIFWizardPageListener.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2010 SAP AG.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Emil Simeonov - initial API and implementation.
- *    Dimitar Donchev - initial API and implementation.
- *    Dimitar Tenev - initial API and implementation.
- *    Nevena Manova - initial API and implementation.
- *    Georgi Konstantinov - initial API and implementation.
- *******************************************************************************/
-package org.eclipse.wst.sse.sieditor.ui.listeners;
-
-import org.eclipse.wst.sse.sieditor.fwk.mvp.ui.IViewListener;
-
-public interface ISIFWizardPageListener extends IViewListener {
-
-	/**
-	 * Used to validate the ServiceInterface name
-	 */
-	void validateInterfaceName();
-
-	/**
-	 * Used to validate the Location where the WSDL would be created
-	 */
-	void validateSavedLocation();
-
-	/**
-	 * Used to validate the namspace of the WSDL
-	 */
-	void validateWsdlNamespace();
-
-	/**
-	 * Used to validate the namespace of a Schema
-	 */
-	void validateSchemaNamespace();
-
-	/**
-	 * Used to show the dialog for all projects, to select a save location
-	 */
-	void showDiloag();
-
-	/**
-	 * 
-	 * @return - Returns true if all fields are filled and validated
-	 */
-	boolean canFinish();
-	
-	/**
-	 * Validates if the page is complete and all entries are valid
-	 */
-	void validatePage();
-}
diff --git a/plugins/org.eclipse.wst.sse.sieditor.ui/api/org/eclipse/wst/sse/sieditor/ui/listeners/PageChangedListenersManager.java b/plugins/org.eclipse.wst.sse.sieditor.ui/api/org/eclipse/wst/sse/sieditor/ui/listeners/PageChangedListenersManager.java
new file mode 100644
index 0000000..6b2282b
--- /dev/null
+++ b/plugins/org.eclipse.wst.sse.sieditor.ui/api/org/eclipse/wst/sse/sieditor/ui/listeners/PageChangedListenersManager.java
@@ -0,0 +1,61 @@
+/*******************************************************************************
+ * Copyright (c) 2010 SAP AG.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Emil Simeonov - initial API and implementation.
+ *    Dimitar Donchev - initial API and implementation.
+ *    Dimitar Tenev - initial API and implementation.
+ *    Nevena Manova - initial API and implementation.
+ *    Georgi Konstantinov - initial API and implementation.
+ *******************************************************************************/
+package org.eclipse.wst.sse.sieditor.ui.listeners;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.wst.sse.sieditor.model.api.IModelRoot;
+import org.eclipse.wst.sse.sieditor.ui.listeners.impl.ModelReconcilerPageChangedLister;
+import org.eclipse.wst.sse.sieditor.ui.listeners.impl.SelectionUpdaterPageChangedListener;
+import org.eclipse.wst.sse.sieditor.ui.listeners.impl.TreeRefresherPageChangedListener;
+import org.eclipse.wst.sse.sieditor.ui.view.impl.SISourceEditorPart;
+
+public class PageChangedListenersManager {
+
+    private List<IPageChangedListener> listeners;
+
+    private final SISourceEditorPart sourcePage;
+
+    public PageChangedListenersManager(SISourceEditorPart sourcePage) {
+        super();
+        this.sourcePage = sourcePage;
+        initializeDefaultPageChangedListeners();
+    }
+
+    private void initializeDefaultPageChangedListeners() {
+        listeners = new ArrayList<IPageChangedListener>();
+
+        listeners.add(new ModelReconcilerPageChangedLister());
+        listeners.add(new SelectionUpdaterPageChangedListener(sourcePage));
+        listeners.add(new TreeRefresherPageChangedListener());
+    }
+
+    public void notifyPageChanged(int newPageIndex, int oldPageIndex, List pages, IModelRoot modelRoot) {
+        for (IPageChangedListener listener : listeners) {
+            listener.pageChanged(newPageIndex, oldPageIndex, pages, modelRoot);
+        }
+    }
+    
+    public List<IPageChangedListener> getListeners() {
+        return Collections.unmodifiableList(listeners);
+    }
+
+    public void addPageChangeListener(IPageChangedListener pageChangedListener) {
+        listeners.add(pageChangedListener);
+    }
+
+}
diff --git a/plugins/org.eclipse.wst.sse.sieditor.ui/api/org/eclipse/wst/sse/sieditor/ui/v2/PageChangedReconcileManager.java b/plugins/org.eclipse.wst.sse.sieditor.ui/api/org/eclipse/wst/sse/sieditor/ui/listeners/impl/ModelReconcilerPageChangedLister.java
similarity index 82%
rename from plugins/org.eclipse.wst.sse.sieditor.ui/api/org/eclipse/wst/sse/sieditor/ui/v2/PageChangedReconcileManager.java
rename to plugins/org.eclipse.wst.sse.sieditor.ui/api/org/eclipse/wst/sse/sieditor/ui/listeners/impl/ModelReconcilerPageChangedLister.java
index 1917c9c..8c34c1f 100644
--- a/plugins/org.eclipse.wst.sse.sieditor.ui/api/org/eclipse/wst/sse/sieditor/ui/v2/PageChangedReconcileManager.java
+++ b/plugins/org.eclipse.wst.sse.sieditor.ui/api/org/eclipse/wst/sse/sieditor/ui/listeners/impl/ModelReconcilerPageChangedLister.java
@@ -12,7 +12,7 @@
  *    Nevena Manova - initial API and implementation.
  *    Georgi Konstantinov - initial API and implementation.
  *******************************************************************************/
-package org.eclipse.wst.sse.sieditor.ui.v2;
+package org.eclipse.wst.sse.sieditor.ui.listeners.impl;
 
 import java.util.List;
 
@@ -20,11 +20,12 @@
 import org.eclipse.wst.sse.sieditor.model.reconcile.IModelReconciler;
 import org.eclipse.wst.sse.sieditor.model.reconcile.ModelReconciler;
 import org.eclipse.wst.sse.sieditor.ui.AbstractEditorPage;
+import org.eclipse.wst.sse.sieditor.ui.listeners.IPageChangedListener;
 import org.eclipse.wst.sse.sieditor.ui.view.impl.SISourceEditorPart;
 
-public class PageChangedReconcileManager {
+public class ModelReconcilerPageChangedLister implements IPageChangedListener {
 
-    public void performReconcile(final int newPageIndex, final int oldPageIndex, final List pages, final IModelRoot modelRoot) {
+    public void pageChanged(final int newPageIndex, final int oldPageIndex, final List pages, final IModelRoot modelRoot) {
         if (oldPageIndex == -1) {
             return;
         }
diff --git a/plugins/org.eclipse.wst.sse.sieditor.ui/api/org/eclipse/wst/sse/sieditor/ui/v2/PageChangedSelectionManager.java b/plugins/org.eclipse.wst.sse.sieditor.ui/api/org/eclipse/wst/sse/sieditor/ui/listeners/impl/SelectionUpdaterPageChangedListener.java
similarity index 95%
rename from plugins/org.eclipse.wst.sse.sieditor.ui/api/org/eclipse/wst/sse/sieditor/ui/v2/PageChangedSelectionManager.java
rename to plugins/org.eclipse.wst.sse.sieditor.ui/api/org/eclipse/wst/sse/sieditor/ui/listeners/impl/SelectionUpdaterPageChangedListener.java
index 3f79a5c..ee1a0c8 100644
--- a/plugins/org.eclipse.wst.sse.sieditor.ui/api/org/eclipse/wst/sse/sieditor/ui/v2/PageChangedSelectionManager.java
+++ b/plugins/org.eclipse.wst.sse.sieditor.ui/api/org/eclipse/wst/sse/sieditor/ui/listeners/impl/SelectionUpdaterPageChangedListener.java
@@ -12,7 +12,7 @@
  *    Nevena Manova - initial API and implementation.
  *    Georgi Konstantinov - initial API and implementation.
  *******************************************************************************/
-package org.eclipse.wst.sse.sieditor.ui.v2;
+package org.eclipse.wst.sse.sieditor.ui.listeners.impl;
 
 import java.util.ArrayList;
 import java.util.Collection;
@@ -37,6 +37,7 @@
 import org.eclipse.wst.sse.sieditor.model.wsdl.impl.Description;
 import org.eclipse.wst.sse.sieditor.model.xsd.api.ISchema;
 import org.eclipse.wst.sse.sieditor.ui.AbstractEditorPage;
+import org.eclipse.wst.sse.sieditor.ui.listeners.IPageChangedListener;
 import org.eclipse.wst.sse.sieditor.ui.v2.dt.DataTypesEditorPage;
 import org.eclipse.wst.sse.sieditor.ui.v2.dt.DataTypesFormPageController;
 import org.eclipse.wst.sse.sieditor.ui.v2.nodes.ITreeNode;
@@ -44,10 +45,10 @@
 import org.eclipse.wst.sse.sieditor.ui.v2.wsdl.formpage.ServiceIntefaceEditorPage;
 import org.eclipse.wst.sse.sieditor.ui.view.impl.SISourceEditorPart;
 
-public class PageChangedSelectionManager {
+public class SelectionUpdaterPageChangedListener implements IPageChangedListener {
     private final SISourceEditorPart sourcePage;
 
-    public PageChangedSelectionManager(final SISourceEditorPart sourcePage) {
+    public SelectionUpdaterPageChangedListener(final SISourceEditorPart sourcePage) {
         this.sourcePage = sourcePage;
     }
 
@@ -55,7 +56,7 @@
         return sourcePage;
     }
 
-    public void performSelection(final int newPageIndex, final int currentPageIndex, final List pages, final IModelRoot modelRoot) {
+    public void pageChanged(final int newPageIndex, final int currentPageIndex, final List pages, final IModelRoot modelRoot) {
         if (currentPageIndex == -1) {
             // e.g. there is no selected page already
             return;
diff --git a/plugins/org.eclipse.wst.sse.sieditor.ui/api/org/eclipse/wst/sse/sieditor/ui/listeners/impl/TreeRefresherPageChangedListener.java b/plugins/org.eclipse.wst.sse.sieditor.ui/api/org/eclipse/wst/sse/sieditor/ui/listeners/impl/TreeRefresherPageChangedListener.java
new file mode 100644
index 0000000..ab1f67f
--- /dev/null
+++ b/plugins/org.eclipse.wst.sse.sieditor.ui/api/org/eclipse/wst/sse/sieditor/ui/listeners/impl/TreeRefresherPageChangedListener.java
@@ -0,0 +1,42 @@
+/*******************************************************************************
+ * Copyright (c) 2010 SAP AG.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Emil Simeonov - initial API and implementation.
+ *    Dimitar Donchev - initial API and implementation.
+ *    Dimitar Tenev - initial API and implementation.
+ *    Nevena Manova - initial API and implementation.
+ *    Georgi Konstantinov - initial API and implementation.
+ *******************************************************************************/
+package org.eclipse.wst.sse.sieditor.ui.listeners.impl;
+
+import java.util.List;
+
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.wst.sse.sieditor.model.api.IModelRoot;
+import org.eclipse.wst.sse.sieditor.ui.AbstractEditorPage;
+import org.eclipse.wst.sse.sieditor.ui.listeners.IPageChangedListener;
+
+public class TreeRefresherPageChangedListener implements IPageChangedListener  {
+
+    @Override
+    public void pageChanged(final int newPageIndex, final int oldPageIndex, final List pages, final IModelRoot modelRoot) {
+        if (oldPageIndex == -1) {
+            return;
+        }
+        final Object newPage = pages.get(newPageIndex);
+
+        if (!(newPage instanceof AbstractEditorPage)) {
+            return;
+        }
+        final TreeViewer treeViewer = ((AbstractEditorPage)newPage).getTreeViewer();
+        final Object[] expandedElements = treeViewer.getExpandedElements();
+        treeViewer.refresh(true);
+        treeViewer.setExpandedElements(expandedElements);
+    }
+
+}