Merge branch 'change/7154/2'

diff --git a/org.eclipse.opencert.apm.assurproj.reuse/src/org/eclipse/opencert/apm/assurproj/reuse/views/ReuseAssistanceView.java b/org.eclipse.opencert.apm.assurproj.reuse/src/org/eclipse/opencert/apm/assurproj/reuse/views/ReuseAssistanceView.java
index c86c626..28a7096 100644
--- a/org.eclipse.opencert.apm.assurproj.reuse/src/org/eclipse/opencert/apm/assurproj/reuse/views/ReuseAssistanceView.java
+++ b/org.eclipse.opencert.apm.assurproj.reuse/src/org/eclipse/opencert/apm/assurproj/reuse/views/ReuseAssistanceView.java
Binary files differ
diff --git a/org.eclipse.opencert.apm.assurproj.wizards/src/org/eclipse/opencert/apm/assurproj/wizards/ui/wizards/AssurProjRefFrameworkSelectionWizardPage.java b/org.eclipse.opencert.apm.assurproj.wizards/src/org/eclipse/opencert/apm/assurproj/wizards/ui/wizards/AssurProjRefFrameworkSelectionWizardPage.java
index 4d56974..f72b153 100644
--- a/org.eclipse.opencert.apm.assurproj.wizards/src/org/eclipse/opencert/apm/assurproj/wizards/ui/wizards/AssurProjRefFrameworkSelectionWizardPage.java
+++ b/org.eclipse.opencert.apm.assurproj.wizards/src/org/eclipse/opencert/apm/assurproj/wizards/ui/wizards/AssurProjRefFrameworkSelectionWizardPage.java
@@ -543,36 +543,46 @@
 		while (actIterator.hasNext()){

 			RefActivity act=actIterator.next();

 			EList<RefActivity> subActivities = act.getSubActivity();

+			

+			EList<RefRequirement> requirements = act.getOwnedRequirement();

+			EList<RefApplicability> applicabilities = act.getApplicability();

+			UpdateCriticality(criticalityViewer,aplicabilityViewer, tviewer,applicabilities,act,null);

+			UpdateReqCriticality(criticalityViewer,aplicabilityViewer, tviewer,requirements,act);

+			

 			if(subActivities.size()>0){

 				UpdateActCriticality(criticalityViewer,aplicabilityViewer, tviewer,subActivities);

 			}

-			EList<RefRequirement> requirements = act.getOwnedRequirement();

-			EList<RefApplicability> applicabilities = act.getApplicability();

-			UpdateCriticality(criticalityViewer,aplicabilityViewer, tviewer,applicabilities);

-			UpdateReqCriticality(criticalityViewer,aplicabilityViewer, tviewer,requirements);

-			

 		}

 	}

 	

 	public void UpdateReqCriticality(CheckboxTreeViewerExt criticalityViewer, 

 			CheckboxTreeViewerExt aplicabilityViewer,

 			CheckboxTreeViewerExt tviewer,

-			EList<RefRequirement> requirements){

+			EList<RefRequirement> requirements,

+			RefActivity act){

 		Iterator<RefRequirement> reqIterator = requirements.iterator();

 		while(reqIterator.hasNext()){

 			RefRequirement req = reqIterator.next();

 			EList<RefRequirement> subReq = req.getSubRequirement();

-			if(subReq.size()>0){

-				UpdateReqCriticality(criticalityViewer,aplicabilityViewer, tviewer,subReq);

-			}

+			

 			EList<RefApplicability> reqApplicabilities = req.getApplicability();

-			UpdateCriticality(criticalityViewer, aplicabilityViewer, tviewer,reqApplicabilities);

+			UpdateCriticality(criticalityViewer, aplicabilityViewer, tviewer,reqApplicabilities,act,req);

+			

+			if(subReq.size()>0){

+				UpdateReqCriticality(criticalityViewer,aplicabilityViewer, tviewer,subReq,act);

+			}

 		}

 		

 	

 	}

-	public void UpdateCriticality(CheckboxTreeViewerExt criticalityViewer, CheckboxTreeViewerExt aplicabilityViewer,CheckboxTreeViewerExt tviewer,EList<RefApplicability> applicabilities){

+	public void UpdateCriticality(CheckboxTreeViewerExt criticalityViewer, CheckboxTreeViewerExt aplicabilityViewer,CheckboxTreeViewerExt tviewer,EList<RefApplicability> applicabilities, RefActivity act, RefRequirement req){

 		

+		//Is there is not applicabilities  related to the element,it will be checked if it's parent refActivity is checked

+		if(applicabilities.size()==0){		

+			if(req!=null){

+				tviewer.setChecked(req, tviewer.getChecked(act));

+			}

+		}

 		

 		Iterator<RefApplicability> applIterator = applicabilities.iterator();		

 		while(applIterator.hasNext()){

@@ -580,7 +590,7 @@
 			RefAssurableElement target = appli.getApplicTarget();

 			if (target!=null) {			

 				tviewer.setChecked(target, false);

-				tviewer.setChildrenStatus(target,false);

+				//tviewer.setChildrenStatus(target,false);

 				EList<RefCriticalityApplicability> critAppli = appli.getApplicCritic();

 				Iterator<RefCriticalityApplicability> critAppliIterator = critAppli.iterator();

 				while(critAppliIterator.hasNext()){

@@ -591,7 +601,7 @@
 					boolean statusApp =  aplicabilityViewer.getChecked(applicabilityLevel);

 					if(statusCrit && statusApp ){

 						tviewer.setChecked(target, true);

-						tviewer.setChildrenStatus(target,true);

+						//tviewer.setChildrenStatus(target,true);

 					}

 					

 					//ALC

@@ -607,6 +617,35 @@
 				}

 					

 			}	

+			else if (act!=null){

+				EList<RefCriticalityApplicability> critAppli = appli.getApplicCritic();

+				Iterator<RefCriticalityApplicability> critAppliIterator = critAppli.iterator();

+				while(critAppliIterator.hasNext()){

+					RefCriticalityApplicability critApp = critAppliIterator.next();

+					RefCriticalityLevel criticalityLevel = critApp.getCriticLevel();

+					RefApplicabilityLevel applicabilityLevel = critApp.getApplicLevel();

+					boolean statusCrit = criticalityViewer.getChecked(criticalityLevel);

+					boolean statusApp =  aplicabilityViewer.getChecked(applicabilityLevel);

+					if(statusCrit && statusApp ){						

+						tviewer.setChecked(act, true);						

+						//tviewer.setChildrenStatus(act,true);

+						if(req!=null){

+							tviewer.setChecked(req, true);						

+							//tviewer.setChildrenStatus(req,true);

+						}

+						

+					}

+					else{

+						tviewer.setChecked(act, false);

+						//tviewer.setChildrenStatus(act,false);

+						

+						if(req!=null){

+							tviewer.setChecked(req, false);						

+						//	tviewer.setChildrenStatus(req,false);

+						}

+					}

+				}

+			}

 		}

 

 	}