Bug 514634 General improvement

[Add] Listener for Configuration Property change

Change-Id: I2a33d734b0399e5f92f07f4391937bf562b30863
Signed-off-by: Arnault Lapitre <arnault.lapitre@cea.fr>
diff --git a/execution/org.eclipse.efm.execution.configuration.common.ui/src/org/eclipse/efm/execution/configuration/common/ui/api/AbstractConfigurationPage.java b/execution/org.eclipse.efm.execution.configuration.common.ui/src/org/eclipse/efm/execution/configuration/common/ui/api/AbstractConfigurationPage.java
index 33a912d..88273f5 100644
--- a/execution/org.eclipse.efm.execution.configuration.common.ui/src/org/eclipse/efm/execution/configuration/common/ui/api/AbstractConfigurationPage.java
+++ b/execution/org.eclipse.efm.execution.configuration.common.ui/src/org/eclipse/efm/execution/configuration/common/ui/api/AbstractConfigurationPage.java
@@ -26,11 +26,13 @@
 import org.eclipse.efm.execution.core.IWorkflowPreferenceConstants;

 import org.eclipse.efm.execution.core.SymbexPreferenceUtil;

 import org.eclipse.jface.action.Action;

+import org.eclipse.jface.util.IPropertyChangeListener;

+import org.eclipse.jface.util.PropertyChangeEvent;

 import org.eclipse.swt.layout.GridData;

 import org.eclipse.swt.widgets.Composite;

 

-public abstract class AbstractConfigurationPage

-		implements IWorkflowConfigurationConstants, IWorkflowPreferenceConstants {

+public abstract class AbstractConfigurationPage implements IPropertyChangeListener,

+		IWorkflowConfigurationConstants, IWorkflowPreferenceConstants {

 

 	private ILaunchConfigurationGUIelement masterGUIelement;

 

@@ -114,10 +116,22 @@
 

 	

 	///////////////////////////////////////////////////////////////////////////

-	// Model Analysis Profile changed

+	// Property Change as Model Analysis Profile changed

 	//

-	public void handleModelAnalysisProfileSelectionChanged(String analysisProfile) {

-		//!! Nothing 

+	@Override

+	public void propertyChange(PropertyChangeEvent event) {

+//		System.out.print( "PropertyChangeEvent : " );

+//		System.out.print( event.getProperty() );

+//		System.out.print( " <-- " );

+//		System.out.println( event.getNewValue().toString() );

+

+		for( AbstractConfigurationPage confPage : getConfigurationPages() ) {

+			confPage.handleConfigurationPropertyChange(event);

+		}

+	}

+

+	protected void handleConfigurationPropertyChange(PropertyChangeEvent event) {

+		//!! Default 

 	}

 

 	

@@ -130,6 +144,7 @@
 	//                              Fields Validation

 	// ======================================================================================

 

+

 	public final class FieldValidationReturn {

 	    private final boolean fieldValidation;

 	    private final String reasonString;

diff --git a/execution/org.eclipse.efm.execution.configuration.common.ui/src/org/eclipse/efm/execution/configuration/common/ui/api/AbstractSectionPart.java b/execution/org.eclipse.efm.execution.configuration.common.ui/src/org/eclipse/efm/execution/configuration/common/ui/api/AbstractSectionPart.java
index f0eab22..0e65e86 100644
--- a/execution/org.eclipse.efm.execution.configuration.common.ui/src/org/eclipse/efm/execution/configuration/common/ui/api/AbstractSectionPart.java
+++ b/execution/org.eclipse.efm.execution.configuration.common.ui/src/org/eclipse/efm/execution/configuration/common/ui/api/AbstractSectionPart.java
@@ -19,6 +19,7 @@
 import org.eclipse.debug.core.ILaunchConfiguration;
 import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
 import org.eclipse.efm.execution.configuration.common.ui.editors.FieldEditor;
+import org.eclipse.jface.util.PropertyChangeEvent;
 import org.eclipse.swt.widgets.Composite;
 
 public abstract class AbstractSectionPart {
@@ -153,5 +154,11 @@
 	}
 
 
-	
+	///////////////////////////////////////////////////////////////////////////
+	// Property Change
+	//
+	public void handleConfigurationPropertyChange(PropertyChangeEvent event) {
+		//!! Default 
+	}
+
 }
diff --git a/execution/org.eclipse.efm.execution.configuration.common.ui/src/org/eclipse/efm/execution/configuration/common/ui/editors/BooleanFieldEditor.java b/execution/org.eclipse.efm.execution.configuration.common.ui/src/org/eclipse/efm/execution/configuration/common/ui/editors/BooleanFieldEditor.java
index 91c6f47..7be7931 100644
--- a/execution/org.eclipse.efm.execution.configuration.common.ui/src/org/eclipse/efm/execution/configuration/common/ui/editors/BooleanFieldEditor.java
+++ b/execution/org.eclipse.efm.execution.configuration.common.ui/src/org/eclipse/efm/execution/configuration/common/ui/editors/BooleanFieldEditor.java
@@ -60,12 +60,6 @@
 	private Button checkBox = null;

 

 	/**

-	 * Creates a new boolean field editor

-	 */

-	public BooleanFieldEditor() {

-	}

-

-	/**

 	 * Creates a boolean field editor in the given style.

 	 *

 	 * @param name

diff --git a/execution/org.eclipse.efm.execution.configuration.common.ui/src/org/eclipse/efm/execution/configuration/common/ui/editors/FieldEditor.java b/execution/org.eclipse.efm.execution.configuration.common.ui/src/org/eclipse/efm/execution/configuration/common/ui/editors/FieldEditor.java
index b27e40a..aa4ebfe 100644
--- a/execution/org.eclipse.efm.execution.configuration.common.ui/src/org/eclipse/efm/execution/configuration/common/ui/editors/FieldEditor.java
+++ b/execution/org.eclipse.efm.execution.configuration.common.ui/src/org/eclipse/efm/execution/configuration/common/ui/editors/FieldEditor.java
@@ -421,6 +421,9 @@
 

         Assert.isNotNull(labelText);

         this.labelText = labelText;

+        

+        // @NOT SYSTEMATIC, used with parsimony

+//      setPropertyChangeListener( configurationPage );

     }

 

     /**

diff --git a/execution/org.eclipse.efm.execution.configuration.common.ui/src/org/eclipse/efm/execution/configuration/common/ui/editors/StringFieldEditor.java b/execution/org.eclipse.efm.execution.configuration.common.ui/src/org/eclipse/efm/execution/configuration/common/ui/editors/StringFieldEditor.java
index 56192fd..8019b12 100644
--- a/execution/org.eclipse.efm.execution.configuration.common.ui/src/org/eclipse/efm/execution/configuration/common/ui/editors/StringFieldEditor.java
+++ b/execution/org.eclipse.efm.execution.configuration.common.ui/src/org/eclipse/efm/execution/configuration/common/ui/editors/StringFieldEditor.java
@@ -143,13 +143,6 @@
      */

     private int validateStrategy = VALIDATE_ON_KEY_STROKE;

 

-

-    /**

-     * Creates a new string field editor

-     */

-    protected StringFieldEditor() {

-    }

-

     /**

      * Creates a new string field editor

      */

diff --git a/execution/org.eclipse.efm.execution.configuration.common.ui/src/org/eclipse/efm/execution/configuration/common/ui/page/expert/ExpertConfigurationPage.java b/execution/org.eclipse.efm.execution.configuration.common.ui/src/org/eclipse/efm/execution/configuration/common/ui/page/expert/ExpertConfigurationPage.java
index 8954242..fc2c6cb 100644
--- a/execution/org.eclipse.efm.execution.configuration.common.ui/src/org/eclipse/efm/execution/configuration/common/ui/page/expert/ExpertConfigurationPage.java
+++ b/execution/org.eclipse.efm.execution.configuration.common.ui/src/org/eclipse/efm/execution/configuration/common/ui/page/expert/ExpertConfigurationPage.java
@@ -20,6 +20,7 @@
 import org.eclipse.efm.execution.configuration.common.ui.api.AbstractConfigurationProfile;

 import org.eclipse.efm.execution.configuration.common.ui.api.ILaunchConfigurationGUIelement;

 import org.eclipse.efm.execution.configuration.common.ui.api.IWidgetToolkit;

+import org.eclipse.jface.util.PropertyChangeEvent;

 import org.eclipse.swt.SWT;

 import org.eclipse.swt.custom.StackLayout;

 import org.eclipse.swt.layout.GridData;

@@ -180,12 +181,23 @@
 

 	

 	///////////////////////////////////////////////////////////////////////////

-	// Model Analysis Profile changed

+	// Property Change

 	//

 	@Override

-	public void handleModelAnalysisProfileSelectionChanged(String analysisProfile) {

-		setVisibleProfilePage(analysisProfile);

+	protected void handleConfigurationPropertyChange(PropertyChangeEvent event) {

+		switch( event.getProperty() ) {

+		case ATTR_SPECIFICATION_MODEL_ANALYSIS_PROFILE: {

+			setVisibleProfilePage( event.getNewValue().toString() );

+

+			break;

+		}

+		default:

+			break;

+		}

+		

+		fBehaviorSelectionPage.handleConfigurationPropertyChange(event); 

+		

+		fTransitionCoveragePage.handleConfigurationPropertyChange(event); 

 	}

-

-

+	

 }

diff --git a/execution/org.eclipse.efm.execution.configuration.common.ui/src/org/eclipse/efm/execution/configuration/common/ui/page/expert/ExpertTransitionCoverageConfigurationProfile.java b/execution/org.eclipse.efm.execution.configuration.common.ui/src/org/eclipse/efm/execution/configuration/common/ui/page/expert/ExpertTransitionCoverageConfigurationProfile.java
index 92a9700..1f6e18d 100644
--- a/execution/org.eclipse.efm.execution.configuration.common.ui/src/org/eclipse/efm/execution/configuration/common/ui/page/expert/ExpertTransitionCoverageConfigurationProfile.java
+++ b/execution/org.eclipse.efm.execution.configuration.common.ui/src/org/eclipse/efm/execution/configuration/common/ui/page/expert/ExpertTransitionCoverageConfigurationProfile.java
@@ -20,6 +20,7 @@
 import org.eclipse.efm.execution.configuration.common.ui.api.IWidgetToolkit;

 import org.eclipse.efm.execution.configuration.common.ui.editors.BooleanFieldEditor;

 import org.eclipse.efm.execution.configuration.common.ui.editors.IntegerFieldEditor;

+import org.eclipse.jface.util.PropertyChangeEvent;

 import org.eclipse.swt.SWT;

 import org.eclipse.swt.events.ModifyEvent;

 import org.eclipse.swt.events.ModifyListener;

@@ -635,4 +636,27 @@
 		return true;

 	}

 

+	

+	///////////////////////////////////////////////////////////////////////////

+	// Property Change

+	//

+	@Override

+	public void handleConfigurationPropertyChange(PropertyChangeEvent event) {

+		switch( event.getProperty() ) {

+		case ATTR_ENABLED_TRANSITION_COVERAGE_DETAILS_SELECTION: {

+			if( event.getNewValue() instanceof Boolean ) {

+				if( (Boolean)(event.getNewValue()) ) {

+					fTCScopeCombo.select(2); // SCOPE_COMBO_ITEM_DETAILS:

+				}

+				else {

+					fTCScopeCombo.select(0); // SCOPE_COMBO_ITEM_MODEL:

+				}

+			}

+			break;

+		}

+		default:

+			break;

+		}

+	}

+

 }

diff --git a/execution/org.eclipse.efm.execution.configuration.common.ui/src/org/eclipse/efm/execution/configuration/common/ui/page/overview/OverviewAnalysisProfileSection.java b/execution/org.eclipse.efm.execution.configuration.common.ui/src/org/eclipse/efm/execution/configuration/common/ui/page/overview/OverviewAnalysisProfileSection.java
index 4636e4c..dcd38f4 100644
--- a/execution/org.eclipse.efm.execution.configuration.common.ui/src/org/eclipse/efm/execution/configuration/common/ui/page/overview/OverviewAnalysisProfileSection.java
+++ b/execution/org.eclipse.efm.execution.configuration.common.ui/src/org/eclipse/efm/execution/configuration/common/ui/page/overview/OverviewAnalysisProfileSection.java
@@ -19,6 +19,7 @@
 import org.eclipse.efm.execution.configuration.common.ui.api.AbstractConfigurationSection;

 import org.eclipse.efm.execution.configuration.common.ui.api.IWidgetToolkit;

 import org.eclipse.efm.ui.utils.ImageResources;

+import org.eclipse.jface.util.PropertyChangeEvent;

 import org.eclipse.swt.SWT;

 import org.eclipse.swt.custom.CTabFolder;

 import org.eclipse.swt.custom.CTabItem;

@@ -120,7 +121,12 @@
 		fTabFolder.addSelectionListener(new SelectionAdapter() {

 			@Override

 			public void widgetSelected(SelectionEvent e) {

-				handleModelAnalysisProfileSelectionChange( true );

+				handleModelAnalysisProfileSelectionChange();

+				

+		        fConfigurationPage.propertyChange(

+		        		new PropertyChangeEvent(this,

+		        				ATTR_SPECIFICATION_MODEL_ANALYSIS_PROFILE,

+		        				fModelAnalysisProfile, fModelAnalysisProfile) );

 

 				fConfigurationPage.propagateUpdateJobScheduling();

 			}

@@ -230,22 +236,13 @@
 			break;

 		}

 		

-		handleModelAnalysisProfileSelectionChange( false );

+		handleModelAnalysisProfileSelectionChange();

 	}

 

 	// ======================================================================================

 	//                              Miscellaneous handling

 	// ======================================================================================

-	public void handleModelFileChange() {

-		if( fModelAnalysisProfile.equals(ANALYSIS_PROFILE_MODEL_COVERAGE_TRANSITION) )

-		{

-			fTransitionCoveragePage.handleModelFilePathChanged(

-					((OverviewConfigurationPage) fConfigurationPage).getModelPathText());

-		}

-	}

-

-	

-	private void handleModelAnalysisProfileSelectionChange(boolean notifyAll) {

+	private void handleModelAnalysisProfileSelectionChange() {

 		if( fModelAnalysisProfileSelectionTabItem != null ) {

 			fModelAnalysisProfileSelectionTabItem.setImage(null);

 		}

@@ -257,15 +254,6 @@
 		fModelAnalysisProfileSelectionTabItem.setImage(

 				ImageResources.getImageDescriptor(

 						ImageResources.IMAGE__VALIDATE_ICON).createImage());

-

-		

-		if( notifyAll ) {

-			for( AbstractConfigurationPage confPage : getConfigurationPages() ) {

-				confPage.handleModelAnalysisProfileSelectionChanged(fModelAnalysisProfile);

-			}

-			

-//			getConfigurationPage().propagateGUIupdate();

-		}

 	}

 

 

@@ -354,7 +342,7 @@
 	protected boolean isValidImpl(ILaunchConfiguration launchConfig) {

 		switch( fModelAnalysisProfile ) {

 		case ANALYSIS_PROFILE_MODEL_EXPLORATION: {

-			// TRANSITION COVERAGE ANALYSIS

+			// MODEL EXPLORATION ANALYSIS

 			if( ! fExplorationPage.isValid(launchConfig) )

 			{

 				return false;

@@ -400,5 +388,20 @@
 

 		return true;

 	}

+	

+

+	///////////////////////////////////////////////////////////////////////////

+	// Property Change

+	//

+	@Override

+	public void handleConfigurationPropertyChange(PropertyChangeEvent event) {

+		fExplorationPage.handleConfigurationPropertyChange(event); 

+		

+		fTransitionCoveragePage.handleConfigurationPropertyChange(event); 

+		

+		fBehaviorSelectionPage.handleConfigurationPropertyChange(event); 

+		

+		fTestOfflinePage.handleConfigurationPropertyChange(event); 

+	}

 

 }

diff --git a/execution/org.eclipse.efm.execution.configuration.common.ui/src/org/eclipse/efm/execution/configuration/common/ui/page/overview/OverviewBehaviorSelectionConfigurationProfile.java b/execution/org.eclipse.efm.execution.configuration.common.ui/src/org/eclipse/efm/execution/configuration/common/ui/page/overview/OverviewBehaviorSelectionConfigurationProfile.java
index 8a3a525..01e3535 100644
--- a/execution/org.eclipse.efm.execution.configuration.common.ui/src/org/eclipse/efm/execution/configuration/common/ui/page/overview/OverviewBehaviorSelectionConfigurationProfile.java
+++ b/execution/org.eclipse.efm.execution.configuration.common.ui/src/org/eclipse/efm/execution/configuration/common/ui/page/overview/OverviewBehaviorSelectionConfigurationProfile.java
@@ -14,9 +14,9 @@
 

 import org.eclipse.debug.core.ILaunchConfiguration;

 import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;

+import org.eclipse.efm.execution.configuration.common.ui.api.AbstractConfigurationPage;

 import org.eclipse.efm.execution.configuration.common.ui.api.AbstractConfigurationProfile;

 import org.eclipse.efm.execution.configuration.common.ui.api.IWidgetToolkit;

-import org.eclipse.efm.execution.configuration.common.ui.api.AbstractConfigurationPage;

 import org.eclipse.efm.execution.configuration.common.ui.editors.StringFieldEditor;

 import org.eclipse.swt.SWT;

 import org.eclipse.swt.widgets.Composite;

diff --git a/execution/org.eclipse.efm.execution.configuration.common.ui/src/org/eclipse/efm/execution/configuration/common/ui/page/overview/OverviewConfigurationPage.java b/execution/org.eclipse.efm.execution.configuration.common.ui/src/org/eclipse/efm/execution/configuration/common/ui/page/overview/OverviewConfigurationPage.java
index 30a399b..cb698a4 100644
--- a/execution/org.eclipse.efm.execution.configuration.common.ui/src/org/eclipse/efm/execution/configuration/common/ui/page/overview/OverviewConfigurationPage.java
+++ b/execution/org.eclipse.efm.execution.configuration.common.ui/src/org/eclipse/efm/execution/configuration/common/ui/page/overview/OverviewConfigurationPage.java
@@ -25,6 +25,7 @@
 import org.eclipse.efm.execution.configuration.common.ui.util.GenericCompositeCreator;

 import org.eclipse.jface.action.Action;

 import org.eclipse.jface.action.ToolBarManager;

+import org.eclipse.jface.util.PropertyChangeEvent;

 import org.eclipse.jface.window.Window;

 import org.eclipse.swt.SWT;

 import org.eclipse.swt.accessibility.AccessibleAdapter;

@@ -75,11 +76,6 @@
 	}

 

 

-	public String getModelPathText() {

-		return fModelPathText.getText();

-	}

-

-

 	/**

 	 * Modify listener that simply updates the owning launch configuration dialog.

 	 */

@@ -88,7 +84,9 @@
 		public void modifyText(ModifyEvent evt) {

 			propagateUpdateJobScheduling();

 

-			fAnalysisProfileSection.handleModelFileChange();

+	        propertyChange( new PropertyChangeEvent(this,

+	        		ATTR_SPECIFICATION_MODEL_FILE_LOCATION,

+	        		fModelPathText.getText(), fModelPathText.getText()) );

 		}

 	};

 

@@ -285,5 +283,15 @@
 		return new FieldValidationReturn(isValid, messageToSend);

 	}

 

+	

+	///////////////////////////////////////////////////////////////////////////

+	// Property Change

+	//

+	@Override

+	protected void handleConfigurationPropertyChange(PropertyChangeEvent event) {

+		fOverviewWorkspaceDataSection.handleConfigurationPropertyChange(event); 

+		

+		fAnalysisProfileSection.handleConfigurationPropertyChange(event); 

+	}

 

 }

diff --git a/execution/org.eclipse.efm.execution.configuration.common.ui/src/org/eclipse/efm/execution/configuration/common/ui/page/overview/OverviewExplorationConfigurationProfile.java b/execution/org.eclipse.efm.execution.configuration.common.ui/src/org/eclipse/efm/execution/configuration/common/ui/page/overview/OverviewExplorationConfigurationProfile.java
index ec75a9f..6cc2119 100644
--- a/execution/org.eclipse.efm.execution.configuration.common.ui/src/org/eclipse/efm/execution/configuration/common/ui/page/overview/OverviewExplorationConfigurationProfile.java
+++ b/execution/org.eclipse.efm.execution.configuration.common.ui/src/org/eclipse/efm/execution/configuration/common/ui/page/overview/OverviewExplorationConfigurationProfile.java
@@ -22,6 +22,7 @@
 //import org.eclipse.efm.execution.configuration.common.ui.page.supervisor.SupervisorEvaluationLimitsSection;

 //import org.eclipse.efm.execution.configuration.common.ui.page.supervisor.SupervisorGraphSizeLimitsSection;

 import org.eclipse.efm.execution.core.workflow.common.GraphExplorationStrategyKind;

+import org.eclipse.jface.util.PropertyChangeEvent;

 import org.eclipse.swt.events.SelectionAdapter;

 import org.eclipse.swt.events.SelectionEvent;

 import org.eclipse.swt.layout.GridData;

@@ -216,18 +217,19 @@
 	{

 		// Case Analyze Strategy

 		//

+		GraphExplorationStrategyKind oldAnalyzeStrategy = fAnalyzeStrategy;

+		

 		try {

 			fAnalyzeStrategy = GraphExplorationStrategyKind.get(

-					configuration.getAttribute(

-							ATTR_SPECIFICATION_ANALYZE_STRATEGY,

-							GraphExplorationStrategyKind.

-									BREADTH_FIRST_SEARCH.getLiteral()) );

+					configuration.getAttribute(ATTR_SPECIFICATION_ANALYZE_STRATEGY,

+							GraphExplorationStrategyKind.BREADTH_FIRST_SEARCH.getLiteral()) );

 		} catch (CoreException e) {

 			e.printStackTrace();

 		}

 		finally {

 			if( fAnalyzeStrategy == null ) {

-				fAnalyzeStrategy = GraphExplorationStrategyKind.BREADTH_FIRST_SEARCH;

+				fAnalyzeStrategy = (oldAnalyzeStrategy != null) ? oldAnalyzeStrategy :

+						GraphExplorationStrategyKind.BREADTH_FIRST_SEARCH;

 			}

 		}

 

@@ -284,4 +286,37 @@
 		return true;

 	}

 

+	

+	///////////////////////////////////////////////////////////////////////////

+	// Property Change

+	//

+	@Override

+	public void handleConfigurationPropertyChange(PropertyChangeEvent event) {

+		switch( event.getProperty() ) {

+		case ATTR_SPECIFICATION_MODEL_ANALYSIS_PROFILE:

+

+			switch( event.getNewValue().toString() ) {

+			case ANALYSIS_PROFILE_MODEL_COVERAGE_BEHAVIOR:

+			case ANALYSIS_PROFILE_MODEL_COVERAGE_TRANSITION:

+			case ANALYSIS_PROFILE_MODEL_TEST_OFFLINE: {

+				fDFSButton.setSelection(false);

+				fRFSButton.setSelection(false);

+

+				fBFSButton.setSelection(true); // BREADTH_FIRST_SEARCH

+				break;

+			}

+

+			case ANALYSIS_PROFILE_MODEL_EXPLORATION:

+			default:

+				break;

+			}

+

+			break;

+

+		default:

+			break;

+		}

+	}

+

+

 }

diff --git a/execution/org.eclipse.efm.execution.configuration.common.ui/src/org/eclipse/efm/execution/configuration/common/ui/page/overview/OverviewTestOfflineConfigurationProfile.java b/execution/org.eclipse.efm.execution.configuration.common.ui/src/org/eclipse/efm/execution/configuration/common/ui/page/overview/OverviewTestOfflineConfigurationProfile.java
index 9d1e127..3d40a5a 100644
--- a/execution/org.eclipse.efm.execution.configuration.common.ui/src/org/eclipse/efm/execution/configuration/common/ui/page/overview/OverviewTestOfflineConfigurationProfile.java
+++ b/execution/org.eclipse.efm.execution.configuration.common.ui/src/org/eclipse/efm/execution/configuration/common/ui/page/overview/OverviewTestOfflineConfigurationProfile.java
@@ -23,7 +23,6 @@
 import org.eclipse.efm.execution.configuration.common.ui.editors.BooleanFieldEditor;

 import org.eclipse.efm.execution.configuration.common.ui.editors.StringFieldEditor;

 import org.eclipse.efm.execution.core.Activator;

-import org.eclipse.efm.execution.core.workflow.common.GraphExplorationStrategyKind;

 import org.eclipse.jface.dialogs.Dialog;

 import org.eclipse.jface.dialogs.IDialogSettings;

 import org.eclipse.jface.window.Window;

@@ -322,9 +321,6 @@
 		configuration.setAttribute(

 				ATTR_TEST_OFFLINE_PURPOSE_FILE_LOCATION,

 				fTestPurposePathText.getText());

-		

-		configuration.setAttribute(ATTR_SPECIFICATION_ANALYZE_STRATEGY,

-				GraphExplorationStrategyKind.BREADTH_FIRST_SEARCH.getLiteral());

 	}

 

 

diff --git a/execution/org.eclipse.efm.execution.configuration.common.ui/src/org/eclipse/efm/execution/configuration/common/ui/page/overview/OverviewTransitionCoverageConfigurationProfile.java b/execution/org.eclipse.efm.execution.configuration.common.ui/src/org/eclipse/efm/execution/configuration/common/ui/page/overview/OverviewTransitionCoverageConfigurationProfile.java
index fa80273..ddc7836 100644
--- a/execution/org.eclipse.efm.execution.configuration.common.ui/src/org/eclipse/efm/execution/configuration/common/ui/page/overview/OverviewTransitionCoverageConfigurationProfile.java
+++ b/execution/org.eclipse.efm.execution.configuration.common.ui/src/org/eclipse/efm/execution/configuration/common/ui/page/overview/OverviewTransitionCoverageConfigurationProfile.java
@@ -27,7 +27,7 @@
 import org.eclipse.efm.execution.configuration.common.ui.api.AbstractConfigurationProfile;

 import org.eclipse.efm.execution.configuration.common.ui.api.IWidgetToolkit;

 import org.eclipse.efm.execution.configuration.common.ui.editors.BooleanFieldEditor;

-import org.eclipse.efm.execution.configuration.common.ui.page.expert.ExpertTransitionCoverageConfigurationProfile;

+import org.eclipse.jface.util.PropertyChangeEvent;

 import org.eclipse.swt.SWT;

 import org.eclipse.swt.events.MouseEvent;

 import org.eclipse.swt.events.MouseListener;

@@ -89,6 +89,9 @@
 						ATTR_ENABLED_TRANSITION_COVERAGE_DETAILS_SELECTION,

 						"&Enable Transitions Selection", parent, false);

 		addField(fEnabledDetailedSelectionBooleanField);

+		

+		fEnabledDetailedSelectionBooleanField.

+				setPropertyChangeListener(fConfigurationPage);

 

 		fEnabledDetailedSelectionBooleanField.addSelectionListener(

 			new SelectionAdapter() {

@@ -429,12 +432,6 @@
 		configuration.setAttribute(

 				ATTR_TRANSITION_COVERAGE_SELECTION, fSelectedTransitionsList);

 		

-		if( fEnabledDetailedSelectionBooleanField.getBooleanValue() ) {

-			configuration.setAttribute(

-					ATTR_TRANSITION_COVERAGE_SCOPE,

-					ExpertTransitionCoverageConfigurationProfile.SCOPE_COMBO_ITEM_DETAILS);

-		}

-		

 		configuration.setAttribute(ATTR_SPECIFICATION_ANALYZE_STRATEGY, "WEIGHT_BFS");

 	}

 

@@ -451,4 +448,21 @@
 		return true;

 	}

 

+	

+	///////////////////////////////////////////////////////////////////////////

+	// Property Change

+	//

+	@Override

+	public void handleConfigurationPropertyChange(PropertyChangeEvent event) {

+		switch( event.getProperty() ) {

+		case ATTR_SPECIFICATION_MODEL_FILE_LOCATION: {

+			handleModelFilePathChanged( event.getNewValue().toString() );

+			

+			break;

+		}

+		default:

+			break;

+		}

+	}

+

 }

diff --git a/execution/org.eclipse.efm.execution.configuration.common.ui/src/org/eclipse/efm/execution/configuration/common/ui/page/testgen/TestGenerationConfigurationPage.java b/execution/org.eclipse.efm.execution.configuration.common.ui/src/org/eclipse/efm/execution/configuration/common/ui/page/testgen/TestGenerationConfigurationPage.java
index 57ebe09..22e730a 100644
--- a/execution/org.eclipse.efm.execution.configuration.common.ui/src/org/eclipse/efm/execution/configuration/common/ui/page/testgen/TestGenerationConfigurationPage.java
+++ b/execution/org.eclipse.efm.execution.configuration.common.ui/src/org/eclipse/efm/execution/configuration/common/ui/page/testgen/TestGenerationConfigurationPage.java
@@ -21,6 +21,7 @@
 import org.eclipse.efm.execution.configuration.common.ui.editors.BooleanFieldEditor;

 import org.eclipse.efm.execution.configuration.common.ui.editors.IntegerFieldEditor;

 import org.eclipse.efm.execution.configuration.common.ui.editors.StringFieldEditor;

+import org.eclipse.jface.util.PropertyChangeEvent;

 import org.eclipse.swt.SWT;

 import org.eclipse.swt.events.SelectionAdapter;

 import org.eclipse.swt.events.SelectionEvent;

@@ -218,37 +219,44 @@
 

 	

 	///////////////////////////////////////////////////////////////////////////

-	// Model Analysis Profile changed

+	// Property Change

 	//

 	@Override

-	public void handleModelAnalysisProfileSelectionChanged(String analysisProfile) {

-		switch ( analysisProfile ) {

-		case ANALYSIS_PROFILE_MODEL_TEST_OFFLINE:

-			groupTraceExtension.setEnabled(false);

-			

-			propagateVisibility(groupExtensionObjective, false);

-			

-			setVisibleAndEnabled(fBasicTracePage.getSection(), false);

-			setVisibleAndEnabled(fTTCNTracePage.getSection() , false);

+	protected void handleConfigurationPropertyChange(PropertyChangeEvent event) {

+		switch( event.getProperty() ) {

+		case ATTR_SPECIFICATION_MODEL_ANALYSIS_PROFILE:

+			switch ( event.getNewValue().toString() ) {

+			case ANALYSIS_PROFILE_MODEL_TEST_OFFLINE:

+				groupTraceExtension.setEnabled(false);

+				

+				propagateVisibility(groupExtensionObjective, false);

+				

+				setVisibleAndEnabled(fBasicTracePage.getSection(), false);

+				setVisibleAndEnabled(fTTCNTracePage.getSection() , false);

+				

+				break;

+				

+			case ANALYSIS_PROFILE_MODEL_COVERAGE_TRANSITION:

+			case ANALYSIS_PROFILE_MODEL_COVERAGE_BEHAVIOR:

+			case ANALYSIS_PROFILE_MODEL_EXPLORATION:

+			default:

+				groupTraceExtension.setEnabled(true);

+				

+				propagateVisibility(groupExtensionObjective, true);

+				

+				setVisibleAndEnabled(fBasicTracePage.getSection(), true);

+				setVisibleAndEnabled(fTTCNTracePage.getSection() , true);

+

+				

+				handleEnablingTraceExtension();;

+				break;

+			}

 			

 			break;

-			

-		case ANALYSIS_PROFILE_MODEL_COVERAGE_TRANSITION:

-		case ANALYSIS_PROFILE_MODEL_COVERAGE_BEHAVIOR:

-		case ANALYSIS_PROFILE_MODEL_EXPLORATION:

-		default:

-			groupTraceExtension.setEnabled(true);

-			

-			propagateVisibility(groupExtensionObjective, true);

-			

-			setVisibleAndEnabled(fBasicTracePage.getSection(), true);

-			setVisibleAndEnabled(fTTCNTracePage.getSection() , true);

 

-			

-			handleEnablingTraceExtension();;

+		default:

 			break;

 		}

 	}

-

-

+	

 }

diff --git a/execution/org.eclipse.efm.execution.ui.views/src/org/eclipse/efm/execution/ui/views/symbexlauncher/SymbexWorkflowView.java b/execution/org.eclipse.efm.execution.ui.views/src/org/eclipse/efm/execution/ui/views/symbexlauncher/SymbexWorkflowView.java
index 1143d9c..d8a20eb 100644
--- a/execution/org.eclipse.efm.execution.ui.views/src/org/eclipse/efm/execution/ui/views/symbexlauncher/SymbexWorkflowView.java
+++ b/execution/org.eclipse.efm.execution.ui.views/src/org/eclipse/efm/execution/ui/views/symbexlauncher/SymbexWorkflowView.java
@@ -86,11 +86,13 @@
 		// Actions
 		makeActions();
 		setupTopLevelActionBars(new Action[] {
+				action_apply_changes,
+
 				action_launch_runconf,
 				action_launch_debugconf,
+				
 				action_opend_runconf,
-				action_opend_debugconf,
-				action_apply_changes
+				action_opend_debugconf
 			});
 
 		// Frame
@@ -450,6 +452,10 @@
 				acm.applyUpdatesOnFieldValuesFrom(rwConfiguration);
 			}
 			rwConfiguration.doSave();
+			
+			if( action_apply_changes != null ) {
+				action_apply_changes.setEnabled(false);
+			}
 		} catch (CoreException e) {
 			e.printStackTrace();
 		}
@@ -471,6 +477,22 @@
 	private Action action_apply_changes;
 
 	private void makeActions() {
+		action_apply_changes = new Action() {
+			public void run() {
+				if( launchConfigurationManager.hasSelection() ) {
+					saveLaunchConfiguration( launchConfigurationManager.getSelection() );
+				}
+			}
+		};
+		action_apply_changes.setText("Apply changes on Launch Configuration");
+		action_apply_changes.setToolTipText("Apply changes on Launch Configuration");
+		action_apply_changes.setImageDescriptor(
+				ImageResources.getImageDescriptor(
+//						ImageResources.IMAGE__PUSH_ICON));
+						ImageResources.IMAGE__SAVE_ICON));
+		
+		action_apply_changes.setEnabled(false);
+
 		action_launch_runconf = new Action() {
 			public void run() {
 				if( launchConfigurationManager.hasSelection() ) {
@@ -545,17 +567,6 @@
 		action_opend_help.setToolTipText("Open the Diversity Help");
 		action_opend_help.setImageDescriptor(
 				ImageResources.getImageDescriptor(ImageResources.IMAGE__HELP_ICON));
-
-		action_apply_changes = new Action() {
-			public void run() {
-				if( launchConfigurationManager.hasSelection() ) {
-					saveLaunchConfiguration( launchConfigurationManager.getSelection() );
-				}
-			}
-		};
-		action_apply_changes.setText("Apply changes on Launch Configuration");
-		action_apply_changes.setToolTipText("Apply changes on Launch Configuration");
-		action_apply_changes.setImageDescriptor(ImageResources.getImageDescriptor(ImageResources.IMAGE__PUSH_ICON));
 	}
 
 	// ======================================================================================
@@ -577,6 +588,10 @@
 		if( launchConfigurationManager.hasSelection() ) {
 			ILaunchConfiguration selectedLC = launchConfigurationManager.getSelection();
 			updateEnableTab(true);
+			
+			if( action_apply_changes != null ) {
+				action_apply_changes.setEnabled(true);
+			}
 
 			try {
 				ILaunchConfigurationWorkingCopy newcopy = selectedLC.getWorkingCopy();
diff --git a/gui/org.eclipse.efm.modeling.ui.views.property.tab.xlia/src/org/eclipse/efm/papyrus/view/property/concretesyntax/sheet/EditingPropertySectionFilter.java b/gui/org.eclipse.efm.modeling.ui.views.property.tab.xlia/src/org/eclipse/efm/papyrus/view/property/concretesyntax/sheet/EditingPropertySectionFilter.java
index 6a410c5..f6a31de 100644
--- a/gui/org.eclipse.efm.modeling.ui.views.property.tab.xlia/src/org/eclipse/efm/papyrus/view/property/concretesyntax/sheet/EditingPropertySectionFilter.java
+++ b/gui/org.eclipse.efm.modeling.ui.views.property.tab.xlia/src/org/eclipse/efm/papyrus/view/property/concretesyntax/sheet/EditingPropertySectionFilter.java
@@ -85,7 +85,7 @@
 			return( true );

 		}

 		else if( (element instanceof Model   ) ||

-				(element instanceof Class ) ||

+				(element instanceof Class    ) ||

 				(element instanceof Property ) ||

 				(element instanceof Parameter) ||

 				(element instanceof Operation) ||

diff --git a/gui/org.eclipse.efm.ui/resources/icons/save.gif b/gui/org.eclipse.efm.ui/resources/icons/save.gif
new file mode 100644
index 0000000..499dd0c
--- /dev/null
+++ b/gui/org.eclipse.efm.ui/resources/icons/save.gif
Binary files differ
diff --git a/gui/org.eclipse.efm.ui/resources/icons/save_as.gif b/gui/org.eclipse.efm.ui/resources/icons/save_as.gif
new file mode 100644
index 0000000..466bfb1
--- /dev/null
+++ b/gui/org.eclipse.efm.ui/resources/icons/save_as.gif
Binary files differ
diff --git a/gui/org.eclipse.efm.ui/src/org/eclipse/efm/ui/utils/ImageResources.java b/gui/org.eclipse.efm.ui/src/org/eclipse/efm/ui/utils/ImageResources.java
index 4034a6f..a3df349 100644
--- a/gui/org.eclipse.efm.ui/src/org/eclipse/efm/ui/utils/ImageResources.java
+++ b/gui/org.eclipse.efm.ui/src/org/eclipse/efm/ui/utils/ImageResources.java
@@ -39,16 +39,22 @@
 	

 	public static final String IMAGE__PUSH_ICON = ICONS_PLUGIN_PATH + "push.png";

 	

+	

+	public static final String IMAGE__SAVE_ICON = ICONS_PLUGIN_PATH + "save.gif";

+

+	public static final String IMAGE__SAVE_AS_ICON = ICONS_PLUGIN_PATH + "save_as.gis";

+

+	

 	public static final String IMAGE__LAUNCHDEBUG_ICON = ICONS_PLUGIN_PATH + "debug_exc.png";

 	

 	public static final String IMAGE__LAUNCHRUN_ICON = ICONS_PLUGIN_PATH + "run_exc.png";

 	

 	

-	

 	public static final String IMAGE__DIALDEBUG_ICON = ICONS_PLUGIN_PATH + "debug_dial.png";

 	

 	public static final String IMAGE__DIALRUN_ICON = ICONS_PLUGIN_PATH + "run_dial.png";

 	

+	

 	public static final String IMAGE__WARNING_ICON = ICONS_PLUGIN_PATH + "warning_st_obj.png";

 	public static final String IMAGE__ERROR_ICON = ICONS_PLUGIN_PATH + "error_st_obj.gif";