public class ProductLinePropertySource extends PropertySource {
public ProductLinePropertySource(Object object,
IItemPropertySource itemPropertySource) {
super(object, itemPropertySource);
}
@Override
protected IPropertyDescriptor createPropertyDescriptor(
IItemPropertyDescriptor itemPropertyDescriptor) {
PldPackage pkg = PldPackage.eINSTANCE;
Object obj = itemPropertyDescriptor.getFeature(object);
if (pkg.getFeatureModel_InternalConstraints().equals(obj)) {
return new ConstraintPropertyDescriptor(object, itemPropertyDescriptor);
} else {
// Else, default EMF behavior
return super.createPropertyDescriptor(itemPropertyDescriptor);
}
}
public class ConstraintPropertyDescriptor extends PropertyDescriptor {
public ConstraintPropertyDescriptor(Object object,
IItemPropertyDescriptor itemPropertyDescriptor) {
super(object, itemPropertyDescriptor);
}
@Override
public CellEditor createPropertyEditor(Composite parent) {
return new ExtendedDialogCellEditor(parent, getLabelProvider()) {
@Override
protected Object openDialogBox(Control cellEditorWindow) {
Shell shell = Display.getCurrent().getActiveShell();
if (object instanceof FeatureModel) {
FeatureModel fm = (FeatureModel) object;
ConstraintDialog dialog = new ConstraintDialog(fm, shell);
dialog.open();
}
return null;
}
};
}
}
protected Control createDialogArea(final Composite parent) {
final Composite container = (Composite) super.createDialogArea(parent);
........
btnAddConstraint.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent event) {
VariantConstraint constraint = PldFactory.eINSTANCE.createVariantConstraint();
constraint.setConstraintType(ConstraintType.EXCLUDE);
EditingDomain editingDomain = org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain.getEditingDomainFor(fm);
Command cmdRequiredConstraint = AddCommand.create(editingDomain, fm, PldPackage.Literals.FEATURE_MODEL__INTERNAL_CONSTRAINTS, constraint);
editingDomain.getCommandStack().execute(cmdRequiredConstraint);
}
});
.......
btnDeleteConstraint.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent event) {
StructuredSelection constraintSelection = (StructuredSelection) lvConstraints.getSelection();
VariantConstraint constraint = (VariantConstraint) constraintSelection.getFirstElement();
EditingDomain editingDomain = org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain.getEditingDomainFor(fm);
Command cmdDeleteConstraint = RemoveCommand.create(editingDomain, constraint);
editingDomain.getCommandStack().execute(cmdDeleteConstraint);
}
});
return container;
}
]]>