| /******************************************************************************* |
| * Copyright (c) 2009 Zoltan Ujhelyi and Daniel Varro. |
| * 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: |
| * Zoltan Ujhelyi - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.viatra2.visualisation.patterns.sources; |
| |
| import java.util.ArrayList; |
| import java.util.List; |
| |
| import org.eclipse.viatra2.gtasmmodel.vpm.editmodel.Entity; |
| import org.eclipse.viatra2.gtasmmodel.vpm.editmodel.Relation; |
| import org.eclipse.viatra2.visualisation.patterns.viewmodel.AbstractViewModelElement; |
| import org.eclipse.viatra2.visualisation.patterns.viewmodel.PatternGraphArc; |
| import org.eclipse.viatra2.visualisation.patterns.viewmodel.ViewPattern; |
| import org.eclipse.viatra2.visualisation.patterns.viewmodel.ViewPatternBody; |
| import org.eclipse.viatra2.visualisation.patterns.viewmodel.ViewPatternModelElement; |
| |
| /** |
| * A content provider for Pattern Graph visualisation. It displays relations as |
| * nodes, thus capable of displaying relations of relations as well, but the |
| * resulting graph size could be large. |
| * @author Zoltan Ujhelyi |
| */ |
| public class PatternFullProvider extends PatternContentProvider { |
| |
| /* |
| * (non-Javadoc) |
| * |
| * @see |
| * org.eclipse.viatra2.visualisation.patterns.sources.PatternContentProvider |
| * #fillPatternGraph(org.eclipse.viatra2.gtasmmodel.vpm.editmodel.Entity, |
| * org.eclipse.viatra2.visualisation.patterns.viewmodel.ViewPatternBody, |
| * java.util.List) |
| */ |
| @Override |
| void fillPatternGraph(Entity patternGraph, ViewPatternBody body, |
| List<Object> elements) { |
| for (Entity entity : patternGraph.getComponents()) { |
| ViewPatternModelElement element = new ViewPatternModelElement(); |
| element.setModelElement(entity); |
| element.setBody(body); |
| elements.add(element); |
| body.addEntity(element); |
| viewItems.put(entity.getName(), element); |
| for (Relation relation : entity.getRelationsFrom()) { |
| ViewPatternModelElement relationElement = new ViewPatternModelElement(); |
| relationElement.setModelElement(relation); |
| relationElement.setBody(body); |
| elements.add(relationElement); |
| body.addEntity(relationElement); |
| viewItems.put(relation.getName(), relationElement); |
| } |
| } |
| System.out.println(); |
| } |
| |
| public Object[] getRelationships(Object source, Object dest) { |
| ArrayList<AbstractViewModelElement> arcs = new ArrayList<AbstractViewModelElement>(); |
| if (source instanceof ViewPatternModelElement |
| && dest instanceof ViewPatternModelElement) { |
| ViewPatternModelElement src = (ViewPatternModelElement) source; |
| ViewPatternModelElement dst = (ViewPatternModelElement) dest; |
| if (src.isEntity() && dst.isRelation()) { |
| if (src.getNumberOfRelationsFrom(dst) > 0) { |
| PatternGraphArc arc = new PatternGraphArc(src, dst); |
| arcs.add(arc); |
| } |
| } else if (src.isRelation() && dst.isEntity()) { |
| if (dst.getNumberOfRelationsTo(src) > 0) { |
| PatternGraphArc arc = new PatternGraphArc(src, dst); |
| arcs.add(arc); |
| } |
| } |
| } else if (source instanceof ViewPatternModelElement |
| && dest instanceof ViewPattern) { |
| arcs.addAll(loadPatternParameters((ViewPattern) dest, |
| (ViewPatternModelElement) source)); |
| |
| } |
| return arcs.toArray(); |
| } |
| |
| } |