blob: 08341d3d5fce36d32089e6984684722695416054 [file] [log] [blame]
/*******************************************************************************
* 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();
}
}