diff --git a/plugins/contracts/org.polarsys.chess.contracts.chessextension/src/org/polarsys/chess/contracts/chessextension/propertytab/BlockEditPartSection.java b/plugins/contracts/org.polarsys.chess.contracts.chessextension/src/org/polarsys/chess/contracts/chessextension/propertytab/BlockEditPartSection.java
index fa1fa3c7ac34981c7c8abc7c2b72b8581a46b4d6..c44be5e97fcaad70a70ff405d59ff46a313527c7 100644
--- a/plugins/contracts/org.polarsys.chess.contracts.chessextension/src/org/polarsys/chess/contracts/chessextension/propertytab/BlockEditPartSection.java
+++ b/plugins/contracts/org.polarsys.chess.contracts.chessextension/src/org/polarsys/chess/contracts/chessextension/propertytab/BlockEditPartSection.java
@@ -1,437 +1,404 @@
-/*******************************************************************************
- *
- * Copyright (c) 2013, 2015 Intecs SpA 
- * 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:
- * Nicholas Pacini nicholas.pacini@intecs.it 
- * Stefano Puri stefano.puri@intecs.it
- * Laura Baracchi  laura.baracchi@intecs.it  
- * Initial API and implementation and/or initial documentation
- *******************************************************************************/
-package org.polarsys.chess.contracts.chessextension.propertytab;
-
-import java.util.Iterator;
-import java.util.List;
-import java.util.Vector;
-
-import org.eclipse.emf.cdo.eresource.CDOResourceFolder;
-import org.eclipse.emf.cdo.eresource.impl.CDOResourceImpl;
-import org.eclipse.emf.cdo.util.CDOUtil;
-import org.eclipse.emf.common.util.EList;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.transaction.RecordingCommand;
-import org.eclipse.emf.transaction.TransactionalEditingDomain;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.util.LocalSelectionTransfer;
-import org.eclipse.jface.viewers.ColumnLabelProvider;
-import org.eclipse.jface.viewers.DoubleClickEvent;
-import org.eclipse.jface.viewers.IDoubleClickListener;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.jface.viewers.TableViewerColumn;
-import org.eclipse.jface.viewers.TreePath;
-import org.eclipse.jface.viewers.TreeSelection;
-import org.eclipse.opencert.evm.evidspec.evidence.Artefact;
-import org.eclipse.opencert.sam.arg.arg.Claim;
-import org.eclipse.opencert.sam.arg.arg.impl.ClaimImpl;
-import org.eclipse.papyrus.editor.PapyrusMultiDiagramEditor;
-import org.eclipse.papyrus.infra.emf.utils.EMFHelper;
-import org.eclipse.papyrus.sysml.diagram.common.edit.part.BlockEditPart;
-import org.eclipse.papyrus.sysml.diagram.common.edit.part.ConstraintBlockEditPart;
-import org.eclipse.papyrus.uml.diagram.clazz.edit.parts.ClassEditPart;
-import org.eclipse.papyrus.uml.diagram.clazz.edit.parts.ComponentEditPart;
-import org.eclipse.papyrus.uml.tools.utils.UMLUtil;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.CCombo;
-import org.eclipse.swt.dnd.DND;
-import org.eclipse.swt.dnd.Transfer;
-import org.eclipse.swt.events.FocusEvent;
-import org.eclipse.swt.events.FocusListener;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.swt.widgets.Tree;
-import org.eclipse.swt.widgets.TreeItem;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IPageLayout;
-import org.eclipse.ui.IViewPart;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchWindow;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.navigator.resources.ProjectExplorer;
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-import org.eclipse.ui.views.properties.tabbed.AbstractPropertySection;
-import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;
-import org.eclipse.uml2.uml.Class;
-import org.eclipse.uml2.uml.Constraint;
-import org.eclipse.uml2.uml.LiteralString;
-import org.eclipse.uml2.uml.Property;
-import org.eclipse.uml2.uml.Stereotype;
-import org.polarsys.chess.contracts.chessextension.popup.actions.SetContractRefinement;
-import org.polarsys.chess.contracts.profile.chesscontract.Contract;
-import org.polarsys.chess.contracts.profile.chesscontract.FormalProperty;
-import org.polarsys.chess.service.utils.CHESSEditorUtils;
-
-
-public class BlockEditPartSection extends AbstractPropertySection{
-	
-	public static final String CONTRACT = "CHESSContract::Contract";
-	public static final String CONTRACT_PROP = "CHESSContract::ContractProperty";
-
-	private Text contractText;
-	private Text assumeText;
-	private Text guaranteeText;
-
-	private Class contract;
-	private Class selectedClass; 
-	
-	private FocusListener assumeFocusListener;
-	private FocusListener guaranteeFocusListener;
-	private SelectionListener contractListListener;
-	
-	private Label contractLabel;
-	private CCombo contractList;
-	private Label contractListLabel;
-	
-	public BlockEditPartSection(){
-		
-		contractListListener = new SelectionListener() {
-			
-			@Override
-			public void widgetSelected(SelectionEvent e) {
-				String selection = contractList.getItem(contractList.getSelectionIndex());
-				contract = getContract(selectedClass, selection);
-				if(contract != null){
-					setContractPropertyTab(contract);
-				}
-				contractLabel.setText("Selected Class");
-				contractText.setText(selectedClass.getQualifiedName());
-				
-			}
-			
-			@Override
-			public void widgetDefaultSelected(SelectionEvent e) {
-				// nothing to do here	
-			}
-		};
-		
-		assumeFocusListener = new FocusListener() {
-			
-			private String oldAssume;
-
-			@Override
-			public void focusLost(FocusEvent e) {
-
-				if(assumeText.getText().equals(oldAssume)){
-					return;
-				}
-
-				PapyrusMultiDiagramEditor editor = CHESSEditorUtils.getCHESSEditor();
-				if (editor != null){ 
-						TransactionalEditingDomain editingDomain = (TransactionalEditingDomain) editor.getEditingDomain();
-						editingDomain.getCommandStack().execute(new RecordingCommand(editingDomain) {
-
-							@Override
-							protected void doExecute() {
-								//Stereotype stereo = contract.getAppliedStereotype(CONTRACT);
-								Stereotype stereo = UMLUtil.getAppliedStereotype(contract, CONTRACT,false) ;
-								FormalProperty assumefp = (FormalProperty) contract.getValue(stereo, "Assume");
-								Constraint assumeConstr = assumefp.getBase_Constraint();
-								LiteralString assumeSpec = (LiteralString) assumeConstr.getSpecification();
-								assumeSpec.setValue(assumeText.getText());
-								assumeConstr.setSpecification(assumeSpec);
-
-							}
-							
-						});
-				}
-				
-			}
-			
-			@Override
-			public void focusGained(FocusEvent e) {
-				// this is to see if the text has been modified or not
-				oldAssume = assumeText.getText();
-			}
-		};
-		
-		guaranteeFocusListener = new FocusListener() {
-			
-			private String oldGuarantee;
-
-			@Override
-			public void focusLost(FocusEvent e) {
-				if(assumeText.getText().equals(oldGuarantee)){
-					return;
-				}
-				PapyrusMultiDiagramEditor editor = CHESSEditorUtils.getCHESSEditor();
-				if (editor != null){ 
-
-						TransactionalEditingDomain editingDomain = (TransactionalEditingDomain) editor.getEditingDomain();
-						editingDomain.getCommandStack().execute(new RecordingCommand(editingDomain) {
-
-							@Override
-							protected void doExecute() {
-								//Stereotype stereo = contract.getAppliedStereotype(CONTRACT);
-								Stereotype stereo = UMLUtil.getAppliedStereotype(contract, CONTRACT,false) ;
-								
-								FormalProperty guaranteefp = (FormalProperty) contract.getValue(stereo, "Guarantee");
-								Constraint guaranteeConstr = guaranteefp.getBase_Constraint();
-								LiteralString guaranteeSpec = (LiteralString) guaranteeConstr.getSpecification();
-								guaranteeSpec.setValue(guaranteeText.getText());
-								guaranteeConstr.setSpecification(guaranteeSpec);
-
-							}
-							
-						});
-					//}
-				}
-			}
-			
-			@Override
-			public void focusGained(FocusEvent e) {
-				// this is to see if the text has been modified or not
-				oldGuarantee = guaranteeText.getText();
-			}
-		};
-			
-	}
-	
-	private Class getContract(Class selectedClass, String selection) {
-		String[] splitted = selection.split(":");
-		String propName = splitted[0].trim();
-		EList<Property> attributes = selectedClass.getAttributes();
-		Iterator<Property> it = attributes.iterator();
-		Property property = null;
-		boolean found = false;
-		while (it.hasNext() && !found) {
-			Property attr = (Property) it.next();
-			if(attr.getName().equals(propName) && attr.getAppliedStereotype(CONTRACT_PROP) != null){
-				found = true;
-				property = attr;
-			}		
-		}
-		if(property == null){
-			return null;
-		}
-		Class contract = (Class)property.getType();
-		
-		return contract;
-	}
-
-	@Override
-	public void createControls(Composite parent, TabbedPropertySheetPage aTabbedPropertySheetPage) {
-		
-		super.createControls(parent, aTabbedPropertySheetPage);		
-		
-		Composite composite = getWidgetFactory().createComposite(parent, SWT.NONE);
-		composite.setLayout(new GridLayout(4, false));
-				
-		GridData gd = new GridData(SWT.FILL, SWT.FILL, true, false);
-		gd.horizontalSpan = 3;
-		contractText = getWidgetFactory().createText(composite, "no Contract selected");
-		contractText.setEditable(false);
-		contractText.setLayoutData(gd);
-		
-		gd = new GridData(SWT.FILL, SWT.FILL, false, false);	
-		contractLabel = getWidgetFactory().createLabel(composite, "Selected Contract", SWT.NONE);
-		contractLabel.setLayoutData(gd);
-		
-		gd = new GridData(SWT.FILL, SWT.FILL, false, false);
-		contractList = getWidgetFactory().createCCombo(composite, SWT.READ_ONLY | SWT.BORDER);
-		contractList.setVisible(false);
-		gd.horizontalSpan = 3;
-		contractList.addSelectionListener(contractListListener);
-		contractList.setLayoutData(gd);
-		
-		gd = new GridData(SWT.FILL, SWT.FILL, false, false);	
-		contractListLabel = getWidgetFactory().createLabel(composite, "Contract List", SWT.NONE);
-		contractListLabel.setVisible(false);
-		contractListLabel.setLayoutData(gd);
-		
-		gd = new GridData(SWT.FILL, SWT.FILL, false, false);
-		gd.horizontalSpan = 2;
-		Label assumeLabel = getWidgetFactory().createLabel(composite, "Assume", SWT.NONE);
-		assumeLabel.setLayoutData(gd);
-		
-		gd = new GridData(SWT.FILL, SWT.FILL, false, false);
-		gd.horizontalSpan = 2;
-		Label guaranteeLabel = getWidgetFactory().createLabel(composite, "Guarantee", SWT.NONE);
-		guaranteeLabel.setLayoutData(gd);
-		
-		gd = new GridData(SWT.FILL, SWT.FILL, true, true);
-		assumeText = getWidgetFactory().createText(composite, "", SWT.MULTI | SWT.H_SCROLL |SWT.V_SCROLL);
-		gd.horizontalSpan = 2;
-		gd.verticalSpan = 25;
-		assumeText.addFocusListener(assumeFocusListener);
-		assumeText.setLayoutData(gd);
-		
-		gd = new GridData(SWT.FILL, SWT.FILL, true, true);
-		guaranteeText = getWidgetFactory().createText(composite, "", SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
-		gd.horizontalSpan = 2;
-		gd.verticalSpan = 25;
-		guaranteeText.addFocusListener(guaranteeFocusListener);
-		guaranteeText.setLayoutData(gd);
-		
-				
-	}
-
-	@SuppressWarnings({ "rawtypes" })
-	@Override
-	public void setInput(IWorkbenchPart part, ISelection selection) {
-		super.setInput(part, selection);
-		if (!(selection instanceof IStructuredSelection)){	
-			 cleanPropertyTab();
-			 return;
-		}
-		List<?> selectionList = ((IStructuredSelection) selection).toList();
-		if (selectionList.size() == 1) {
-			Object selected = selectionList.get(0);
-			
-			EObject selectedEObject = EMFHelper.getEObject(selected);
-			if (selectedEObject != null){
-			    //do something
-			}
-			if(selected instanceof ConstraintBlockEditPart){
-				Class clazz = (Class) (((ConstraintBlockEditPart)selected).resolveSemanticElement());
-				//check if it's a contract
-				//if(clazz.getAppliedStereotype(CONTRACT) != null){
-					if(UMLUtil.getAppliedStereotype(clazz, CONTRACT,false)!=null){
-					
-					cleanPropertyTab();
-					setContractPropertyTab(clazz);
-				}
-			}else if(selected instanceof BlockEditPart){;
-				Class clazz = (Class) (((BlockEditPart)selected).resolveSemanticElement());
-				initContractList(clazz);
-			}
-			else if(selected instanceof ClassEditPart){
-				Class clazz = (Class) (((ClassEditPart)selected).resolveSemanticElement());
-				//check if it's a contract
-				//if(clazz.getAppliedStereotype(CONTRACT) != null){
-				if(UMLUtil.getAppliedStereotype(clazz, CONTRACT,false)!=null){
-					cleanPropertyTab();
-					setContractPropertyTab(clazz);
-				}else{
-					initContractList(clazz);
-				}
-			}
-			else if(selected instanceof ComponentEditPart){
-				Class clazz = (Class) (((ComponentEditPart)selected).resolveSemanticElement());
-				initContractList(clazz);
-			}
-			else if(selectedEObject instanceof Class){
-				
-					Class clazz = (Class) selectedEObject;
-					//if(clazz.getAppliedStereotype(CONTRACT) != null){
-					if(UMLUtil.getAppliedStereotype(clazz, CONTRACT,false)!=null){	
-						cleanPropertyTab();
-						setContractPropertyTab(clazz);
-					}else{
-						initContractList(clazz);
-					}
-				
-			}
-			else{
-				cleanPropertyTab();
-			}
-		}else{
-			cleanPropertyTab();
-		}
-		
-		
-		//fill claims list
-		if(contract != null){
-			
-			//Stereotype stereo = contract.getAppliedStereotype(BlockEditPartSection.CONTRACT);
-			Stereotype stereo = UMLUtil.getAppliedStereotype(contract, BlockEditPartSection.CONTRACT,false);
-			Contract contractStereo = (Contract) contract.getStereotypeApplication(stereo);
-			
-		}
-		
-		//fill supportedBy artifact list
-		if(contract != null){
-			
-			//Stereotype stereo = contract.getAppliedStereotype(BlockEditPartSection.CONTRACT);
-			Stereotype stereo = UMLUtil.getAppliedStereotype(contract, BlockEditPartSection.CONTRACT,false);
-			Contract contractStereo = (Contract) contract.getStereotypeApplication(stereo);
-			
-		}
-	}
-	
-	private void initContractList(Class clazz) {
-		cleanPropertyTab();
-		selectedClass = clazz;
-		contractText.setText(selectedClass.getQualifiedName());
-		contractLabel.setText("Selected Class");
-		contractList.setVisible(true);
-		contractListLabel.setVisible(true);
-		for (Property prop : selectedClass.getAttributes()) {
-			if(prop.getAppliedStereotype(SetContractRefinement.CONTRACT_PROPERTY) != null){
-				if(prop.getType() == null){
-					contractList.add(prop.getName() + " : <TYPE NOT DEFINED>");
-				}else{
-					contractList.add(prop.getName() + " : " + prop.getType().getName());
-				}
-			}
-		}
-	}
-
-	private void setContractPropertyTab(Class clazz) {
-		contract = clazz;
-		contractLabel.setText("Selected Contract");
-		contractText.setText(clazz.getQualifiedName());
-		//Stereotype contrStereo = clazz.getAppliedStereotype(CONTRACT);
-		Stereotype contrStereo = UMLUtil.getAppliedStereotype(clazz, CONTRACT,false);
-		FormalProperty assumefp = (FormalProperty) clazz.getValue(contrStereo, "Assume");
-		FormalProperty guaranteefp = (FormalProperty) clazz.getValue(contrStereo, "Guarantee");
-		String assume = "";
-		if (assumefp!= null)
-			assume= assumefp.getBase_Constraint().getSpecification().stringValue();
-		String guarantee = "";
-		if (guaranteefp != null)
-			guarantee= guaranteefp.getBase_Constraint().getSpecification().stringValue();
-		if(assume != null){
-			assumeText.setText(assume);	
-		}
-		if(guarantee != null){
-			guaranteeText.setText(guarantee);
-		}
-		
-		Contract contractStereo = (Contract) contract.getStereotypeApplication(contrStereo);
-		
-	}
-
-	private void cleanPropertyTab() {
-		contractLabel.setText("Selected Contract");
-		contractText.setText("no Contract selected");
-		assumeText.setText("");
-		guaranteeText.setText("");
-		contract = null;
-		contractList.removeAll();
-		contractList.setVisible(false);
-		contractListLabel.setVisible(false);
-		
-	}
-
-
-   
-    
-
-    
-}
+/*******************************************************************************
+ *
+ * Copyright (c) 2013, 2017 Intecs SpA 
+ * 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:
+ * Nicholas Pacini nicholas.pacini@intecs.it 
+ * Stefano Puri stefano.puri@intecs.it
+ * Laura Baracchi  laura.baracchi@intecs.it  
+ * Initial API and implementation and/or initial documentation
+ *******************************************************************************/
+package org.polarsys.chess.contracts.chessextension.propertytab;
+
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.transaction.RecordingCommand;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.papyrus.editor.PapyrusMultiDiagramEditor;
+import org.eclipse.papyrus.infra.emf.utils.EMFHelper;
+import org.eclipse.papyrus.sysml.diagram.common.edit.part.BlockEditPart;
+import org.eclipse.papyrus.sysml.diagram.common.edit.part.ConstraintBlockEditPart;
+import org.eclipse.papyrus.uml.diagram.clazz.edit.parts.ClassEditPart;
+import org.eclipse.papyrus.uml.diagram.clazz.edit.parts.ComponentEditPart;
+import org.eclipse.papyrus.uml.tools.utils.UMLUtil;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CCombo;
+import org.eclipse.swt.events.FocusEvent;
+import org.eclipse.swt.events.FocusListener;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.views.properties.tabbed.AbstractPropertySection;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Constraint;
+import org.eclipse.uml2.uml.LiteralString;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.Stereotype;
+import org.polarsys.chess.contracts.chessextension.popup.actions.SetContractRefinement;
+import org.polarsys.chess.contracts.profile.chesscontract.Contract;
+import org.polarsys.chess.contracts.profile.chesscontract.FormalProperty;
+import org.polarsys.chess.service.utils.CHESSEditorUtils;
+
+
+public class BlockEditPartSection extends AbstractPropertySection{
+	
+	public static final String CONTRACT = "CHESSContract::Contract";
+	public static final String CONTRACT_PROP = "CHESSContract::ContractProperty";
+
+	private Text contractText;
+	private Text assumeText;
+	private Text guaranteeText;
+
+	private Class contract;
+	private Class selectedClass; 
+	
+	private FocusListener assumeFocusListener;
+	private FocusListener guaranteeFocusListener;
+	private SelectionListener contractListListener;
+	
+	private Label contractLabel;
+	private CCombo contractList;
+	private Label contractListLabel;
+	
+	public BlockEditPartSection(){
+		
+		contractListListener = new SelectionListener() {
+			
+			@Override
+			public void widgetSelected(SelectionEvent e) {
+				String selection = contractList.getItem(contractList.getSelectionIndex());
+				contract = getContract(selectedClass, selection);
+				if(contract != null){
+					setContractPropertyTab(contract);
+				}
+				contractLabel.setText("Selected Class");
+				contractText.setText(selectedClass.getQualifiedName());
+				
+			}
+			
+			@Override
+			public void widgetDefaultSelected(SelectionEvent e) {
+				// nothing to do here	
+			}
+		};
+		
+		assumeFocusListener = new FocusListener() {
+			
+			private String oldAssume;
+
+			@Override
+			public void focusLost(FocusEvent e) {
+
+				if(assumeText.getText().equals(oldAssume)){
+					return;
+				}
+
+				PapyrusMultiDiagramEditor editor = CHESSEditorUtils.getCHESSEditor();
+				if (editor != null){ 
+						TransactionalEditingDomain editingDomain = (TransactionalEditingDomain) editor.getEditingDomain();
+						editingDomain.getCommandStack().execute(new RecordingCommand(editingDomain) {
+
+							@Override
+							protected void doExecute() {
+								//Stereotype stereo = contract.getAppliedStereotype(CONTRACT);
+								Stereotype stereo = UMLUtil.getAppliedStereotype(contract, CONTRACT,false) ;
+								FormalProperty assumefp = (FormalProperty) contract.getValue(stereo, "Assume");
+								Constraint assumeConstr = assumefp.getBase_Constraint();
+								LiteralString assumeSpec = (LiteralString) assumeConstr.getSpecification();
+								assumeSpec.setValue(assumeText.getText());
+								assumeConstr.setSpecification(assumeSpec);
+
+							}
+							
+						});
+				}
+				
+			}
+			
+			@Override
+			public void focusGained(FocusEvent e) {
+				// this is to see if the text has been modified or not
+				oldAssume = assumeText.getText();
+			}
+		};
+		
+		guaranteeFocusListener = new FocusListener() {
+			
+			private String oldGuarantee;
+
+			@Override
+			public void focusLost(FocusEvent e) {
+				if(assumeText.getText().equals(oldGuarantee)){
+					return;
+				}
+				PapyrusMultiDiagramEditor editor = CHESSEditorUtils.getCHESSEditor();
+				if (editor != null){ 
+
+						TransactionalEditingDomain editingDomain = (TransactionalEditingDomain) editor.getEditingDomain();
+						editingDomain.getCommandStack().execute(new RecordingCommand(editingDomain) {
+
+							@Override
+							protected void doExecute() {
+								//Stereotype stereo = contract.getAppliedStereotype(CONTRACT);
+								Stereotype stereo = UMLUtil.getAppliedStereotype(contract, CONTRACT,false) ;
+								
+								FormalProperty guaranteefp = (FormalProperty) contract.getValue(stereo, "Guarantee");
+								Constraint guaranteeConstr = guaranteefp.getBase_Constraint();
+								LiteralString guaranteeSpec = (LiteralString) guaranteeConstr.getSpecification();
+								guaranteeSpec.setValue(guaranteeText.getText());
+								guaranteeConstr.setSpecification(guaranteeSpec);
+
+							}
+							
+						});
+					//}
+				}
+			}
+			
+			@Override
+			public void focusGained(FocusEvent e) {
+				// this is to see if the text has been modified or not
+				oldGuarantee = guaranteeText.getText();
+			}
+		};
+			
+	}
+	
+	private Class getContract(Class selectedClass, String selection) {
+		String[] splitted = selection.split(":");
+		String propName = splitted[0].trim();
+		EList<Property> attributes = selectedClass.getAttributes();
+		Iterator<Property> it = attributes.iterator();
+		Property property = null;
+		boolean found = false;
+		while (it.hasNext() && !found) {
+			Property attr = (Property) it.next();
+			if(attr.getName().equals(propName) && attr.getAppliedStereotype(CONTRACT_PROP) != null){
+				found = true;
+				property = attr;
+			}		
+		}
+		if(property == null){
+			return null;
+		}
+		Class contract = (Class)property.getType();
+		
+		return contract;
+	}
+
+	@Override
+	public void createControls(Composite parent, TabbedPropertySheetPage aTabbedPropertySheetPage) {
+		
+		super.createControls(parent, aTabbedPropertySheetPage);		
+		
+		Composite composite = getWidgetFactory().createComposite(parent, SWT.NONE);
+		composite.setLayout(new GridLayout(4, false));
+				
+		GridData gd = new GridData(SWT.FILL, SWT.FILL, true, false);
+		gd.horizontalSpan = 3;
+		contractText = getWidgetFactory().createText(composite, "no Contract selected");
+		contractText.setEditable(false);
+		contractText.setLayoutData(gd);
+		
+		gd = new GridData(SWT.FILL, SWT.FILL, false, false);	
+		contractLabel = getWidgetFactory().createLabel(composite, "Selected Contract", SWT.NONE);
+		contractLabel.setLayoutData(gd);
+		
+		gd = new GridData(SWT.FILL, SWT.FILL, false, false);
+		contractList = getWidgetFactory().createCCombo(composite, SWT.READ_ONLY | SWT.BORDER);
+		contractList.setVisible(false);
+		gd.horizontalSpan = 3;
+		contractList.addSelectionListener(contractListListener);
+		contractList.setLayoutData(gd);
+		
+		gd = new GridData(SWT.FILL, SWT.FILL, false, false);	
+		contractListLabel = getWidgetFactory().createLabel(composite, "Contract List", SWT.NONE);
+		contractListLabel.setVisible(false);
+		contractListLabel.setLayoutData(gd);
+		
+		gd = new GridData(SWT.FILL, SWT.FILL, false, false);
+		gd.horizontalSpan = 2;
+		Label assumeLabel = getWidgetFactory().createLabel(composite, "Assume", SWT.NONE);
+		assumeLabel.setLayoutData(gd);
+		
+		gd = new GridData(SWT.FILL, SWT.FILL, false, false);
+		gd.horizontalSpan = 2;
+		Label guaranteeLabel = getWidgetFactory().createLabel(composite, "Guarantee", SWT.NONE);
+		guaranteeLabel.setLayoutData(gd);
+		
+		gd = new GridData(SWT.FILL, SWT.FILL, true, true);
+		assumeText = getWidgetFactory().createText(composite, "", SWT.MULTI | SWT.H_SCROLL |SWT.V_SCROLL);
+		gd.horizontalSpan = 2;
+		gd.verticalSpan = 25;
+		assumeText.addFocusListener(assumeFocusListener);
+		assumeText.setLayoutData(gd);
+		
+		gd = new GridData(SWT.FILL, SWT.FILL, true, true);
+		guaranteeText = getWidgetFactory().createText(composite, "", SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
+		gd.horizontalSpan = 2;
+		gd.verticalSpan = 25;
+		guaranteeText.addFocusListener(guaranteeFocusListener);
+		guaranteeText.setLayoutData(gd);
+		
+				
+	}
+
+	@SuppressWarnings({ "rawtypes" })
+	@Override
+	public void setInput(IWorkbenchPart part, ISelection selection) {
+		super.setInput(part, selection);
+		if (!(selection instanceof IStructuredSelection)){	
+			 cleanPropertyTab();
+			 return;
+		}
+		List<?> selectionList = ((IStructuredSelection) selection).toList();
+		if (selectionList.size() == 1) {
+			Object selected = selectionList.get(0);
+			
+			EObject selectedEObject = EMFHelper.getEObject(selected);
+			if (selectedEObject != null){
+			    //do something
+			}
+			if(selected instanceof ConstraintBlockEditPart){
+				Class clazz = (Class) (((ConstraintBlockEditPart)selected).resolveSemanticElement());
+				//check if it's a contract
+				//if(clazz.getAppliedStereotype(CONTRACT) != null){
+					if(UMLUtil.getAppliedStereotype(clazz, CONTRACT,false)!=null){
+					
+					cleanPropertyTab();
+					setContractPropertyTab(clazz);
+				}
+			}else if(selected instanceof BlockEditPart){;
+				Class clazz = (Class) (((BlockEditPart)selected).resolveSemanticElement());
+				initContractList(clazz);
+			}
+			else if(selected instanceof ClassEditPart){
+				Class clazz = (Class) (((ClassEditPart)selected).resolveSemanticElement());
+				//check if it's a contract
+				//if(clazz.getAppliedStereotype(CONTRACT) != null){
+				if(UMLUtil.getAppliedStereotype(clazz, CONTRACT,false)!=null){
+					cleanPropertyTab();
+					setContractPropertyTab(clazz);
+				}else{
+					initContractList(clazz);
+				}
+			}
+			else if(selected instanceof ComponentEditPart){
+				Class clazz = (Class) (((ComponentEditPart)selected).resolveSemanticElement());
+				initContractList(clazz);
+			}
+			else if(selectedEObject instanceof Class){
+				
+					Class clazz = (Class) selectedEObject;
+					//if(clazz.getAppliedStereotype(CONTRACT) != null){
+					if(UMLUtil.getAppliedStereotype(clazz, CONTRACT,false)!=null){	
+						cleanPropertyTab();
+						setContractPropertyTab(clazz);
+					}else{
+						initContractList(clazz);
+					}
+				
+			}
+			else{
+				cleanPropertyTab();
+			}
+		}else{
+			cleanPropertyTab();
+		}
+		
+		
+		//fill claims list
+		if(contract != null){
+			
+			//Stereotype stereo = contract.getAppliedStereotype(BlockEditPartSection.CONTRACT);
+			Stereotype stereo = UMLUtil.getAppliedStereotype(contract, BlockEditPartSection.CONTRACT,false);
+			Contract contractStereo = (Contract) contract.getStereotypeApplication(stereo);
+			
+		}
+		
+		//fill supportedBy artifact list
+		if(contract != null){
+			
+			//Stereotype stereo = contract.getAppliedStereotype(BlockEditPartSection.CONTRACT);
+			Stereotype stereo = UMLUtil.getAppliedStereotype(contract, BlockEditPartSection.CONTRACT,false);
+			Contract contractStereo = (Contract) contract.getStereotypeApplication(stereo);
+			
+		}
+	}
+	
+	private void initContractList(Class clazz) {
+		cleanPropertyTab();
+		selectedClass = clazz;
+		contractText.setText(selectedClass.getQualifiedName());
+		contractLabel.setText("Selected Class");
+		contractList.setVisible(true);
+		contractListLabel.setVisible(true);
+		for (Property prop : selectedClass.getAttributes()) {
+			if(prop.getAppliedStereotype(SetContractRefinement.CONTRACT_PROPERTY) != null){
+				if(prop.getType() == null){
+					contractList.add(prop.getName() + " : <TYPE NOT DEFINED>");
+				}else{
+					contractList.add(prop.getName() + " : " + prop.getType().getName());
+				}
+			}
+		}
+	}
+
+	private void setContractPropertyTab(Class clazz) {
+		contract = clazz;
+		contractLabel.setText("Selected Contract");
+		contractText.setText(clazz.getQualifiedName());
+		//Stereotype contrStereo = clazz.getAppliedStereotype(CONTRACT);
+		Stereotype contrStereo = UMLUtil.getAppliedStereotype(clazz, CONTRACT,false);
+		FormalProperty assumefp = (FormalProperty) clazz.getValue(contrStereo, "Assume");
+		FormalProperty guaranteefp = (FormalProperty) clazz.getValue(contrStereo, "Guarantee");
+		String assume = "";
+		if (assumefp!= null)
+			assume= assumefp.getBase_Constraint().getSpecification().stringValue();
+		String guarantee = "";
+		if (guaranteefp != null)
+			guarantee= guaranteefp.getBase_Constraint().getSpecification().stringValue();
+		if(assume != null){
+			assumeText.setText(assume);	
+		}
+		if(guarantee != null){
+			guaranteeText.setText(guarantee);
+		}
+		
+		Contract contractStereo = (Contract) contract.getStereotypeApplication(contrStereo);
+		
+	}
+
+	private void cleanPropertyTab() {
+		contractLabel.setText("Selected Contract");
+		contractText.setText("no Contract selected");
+		assumeText.setText("");
+		guaranteeText.setText("");
+		contract = null;
+		contractList.removeAll();
+		contractList.setVisible(false);
+		contractListLabel.setVisible(false);
+		
+	}
+
+
+   
+    
+
+    
+}