/** * Copyright (c) 2012-2016 Marsha Chechik, Alessio Di Sandro, Michalis Famelis, * Rick Salay. * 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: * Alessio Di Sandro - Implementation. */ package edu.toronto.cs.se.mmint.mid.relationship.diagram.part; import org.eclipse.emf.common.notify.AdapterFactory; import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider; import edu.toronto.cs.se.mmint.mid.MIDLevel; public class RelationshipDiagramOutlineContentProvider extends AdapterFactoryContentProvider { private MIDLevel level; public RelationshipDiagramOutlineContentProvider(AdapterFactory adapterFactory, MIDLevel level) { super(adapterFactory); this.level = level; } @Override public boolean hasChildren(Object object) { boolean hasChildren; if (level == MIDLevel.INSTANCES && object instanceof EObject) { RelationshipDiagramOutlineItemProvider alternativeProvider = new RelationshipDiagramOutlineItemProvider(adapterFactory); hasChildren = alternativeProvider.hasChildren(object); } else if (level == MIDLevel.TYPES && object instanceof EClass) { RelationshipDiagramOutlineEClassItemProvider alternativeProvider = new RelationshipDiagramOutlineEClassItemProvider(adapterFactory); hasChildren = alternativeProvider.hasChildren(object); } else { hasChildren = super.hasChildren(object); } return hasChildren; } @Override public Object[] getChildren(Object object) { Object[] children; if (level == MIDLevel.INSTANCES && object instanceof EObject) { RelationshipDiagramOutlineItemProvider alternativeProvider = new RelationshipDiagramOutlineItemProvider(adapterFactory); children = alternativeProvider.getChildren(object).toArray(); } else if (level == MIDLevel.TYPES && object instanceof EClass) { RelationshipDiagramOutlineEClassItemProvider alternativeProvider = new RelationshipDiagramOutlineEClassItemProvider(adapterFactory); children = alternativeProvider.getChildren(object).toArray(); } else { children = super.getChildren(object); } return children; } }