1 /*
2 * This file is a part of CAST project.
3 * (c) Copyright 2007, AGH University of Science & Technology
4 * https://caribou.iisg.agh.edu.pl/trac/cast
5 *
6 * Licensed under the Eclipse Public License, Version 1.0 (the "License").
7 * You may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
9 * http://www.eclipse.org/legal/epl-v10.html
10 */
11 /*
12 * File: IDiagram.java
13 * Created: 2009-04-21
14 * Author: kpietak
15 * $Id$
16 */
17
18 package pl.edu.agh.cast.model.visual;
19
20 import java.util.List;
21
22 import pl.edu.agh.cast.data.model.IDataSet;
23 import pl.edu.agh.cast.data.model.IElement;
24 import pl.edu.agh.cast.data.model.presentation.IPresentationDataSet;
25 import pl.edu.agh.cast.data.model.presentation.IPresentationElement;
26 import pl.edu.agh.cast.data.model.visual.IVisualDataSet;
27 import pl.edu.agh.cast.data.model.visual.IVisualElement;
28
29 /**
30 * <p>
31 * An interface which describes a single diagram.
32 *
33 * <p>
34 * {@link IDiagram} contains model and view which are displayed in editor as a diagram. Each editor can extend this
35 * interface to define specific behavior and properties.
36 *
37 * @see IPresentationDataSet
38 * @see IVisualDataSet
39 *
40 * @param <M>
41 * type of presentation data set which can be hold by this diagram
42 * @param <V>
43 * type of visual data set which can be hold by this diagram
44 *
45 * @author AGH CAST Team
46 */
47 public interface IDiagram<M extends IPresentationDataSet<? extends IPresentationElement<? extends IElement>>, V extends IVisualDataSet<? extends IVisualElement<? extends IPresentationElement<? extends IElement>>, M>> {
48
49 /**
50 * Gets model which is base for this diagram.
51 *
52 * @return presentation model data set
53 */
54 public M getModel();
55
56 /**
57 * Gets list containing presentation and visual data sets in such order.
58 *
59 * @return list of presentation and visual data sets
60 */
61 public List<IDataSet<? extends IElement>> getDataSets();
62
63 /**
64 * Returns diagram name. It is alias to <code>getModel().getName()</code> method.
65 *
66 * @return diagram name
67 */
68 public String getName();
69
70 /**
71 * Returns legend model for this diagram.
72 *
73 * @return legend model
74 */
75 public Legend getLegend();
76
77 }