/******************************************************************************* * Copyright (c) 2011, 2012 Red Hat, Inc. * All rights reserved. * This program is 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: * Red Hat, Inc. - initial API and implementation *******************************************************************************/ package org.eclipse.bpmn2.modeler.core.merrimac.clad; import org.eclipse.bpmn2.modeler.core.merrimac.providers.ColumnTableProvider; import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EStructuralFeature; public class ListCompositeColumnProvider extends ColumnTableProvider { protected final AbstractListComposite listComposite; protected boolean canModify = true; public ListCompositeColumnProvider(AbstractListComposite list) { this(list,true); } public ListCompositeColumnProvider(AbstractListComposite list, boolean canModify) { super(); this.canModify = canModify; this.listComposite = list; } /** * Implement this to select which columns are editable * @param object - the list object * @param feature - the feature of the item contained in the list * @param item - the selected item in the list * @return true to allow editing */ public boolean canModify(EObject object, EStructuralFeature feature, EObject item) { return canModify; } public void setCanModify(boolean f) { canModify = f; } public TableColumn add(EObject object, EStructuralFeature feature) { return add(object, (EClass)feature.eContainer(), feature); } public TableColumn add(EObject object, EClass eclass, EStructuralFeature feature) { for (Column c : columns) { if (((TableColumn)c).feature==feature) return (TableColumn)c; } TableColumn tc = null; listComposite.getModelEnablements(); if (listComposite.isModelObjectEnabled(eclass,feature)) { tc = new TableColumn(object, feature); tc.setOwner(listComposite); super.add(tc); } return tc; } public TableColumn add(TableColumn tc) { EStructuralFeature feature = tc.feature; EObject object = tc.object; if (object!=null) { if (listComposite.isModelObjectEnabled(object.eClass(),feature)) { tc.setOwner(listComposite); super.add(tc); return tc; } } if (feature!=null) { EClass eclass = (EClass)feature.eContainer(); if (listComposite.isModelObjectEnabled(eclass,feature)) { tc.setOwner(listComposite); super.add(tc); return tc; } } return tc; } public TableColumn addRaw(EObject object, EStructuralFeature feature) { return addRaw(new TableColumn(object, feature)); } public TableColumn addRaw(TableColumn tc) { tc.setOwner(listComposite); super.add(tc); return tc; } }