]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.modeling/src/org/simantics/modeling/typicals/rules/PageSettingsTypicalRule.java
Fixed typical synchronization to work without template diagram desc
[simantics/platform.git] / bundles / org.simantics.modeling / src / org / simantics / modeling / typicals / rules / PageSettingsTypicalRule.java
1 package org.simantics.modeling.typicals.rules;
2
3 import org.simantics.db.Resource;
4 import org.simantics.db.WriteGraph;
5 import org.simantics.db.exception.DatabaseException;
6 import org.simantics.diagram.query.DiagramRequests;
7 import org.simantics.diagram.synchronization.graph.DiagramGraphUtil;
8 import org.simantics.g2d.page.DiagramDesc;
9 import org.simantics.modeling.typicals.ITypicalSynchronizationRule;
10 import org.simantics.modeling.typicals.TypicalInfo;
11
12 /**
13  * @author Tuukka Lehtonen
14  * @since 1.22.2, 1.25.0
15  */
16 public enum PageSettingsTypicalRule implements ITypicalSynchronizationRule {
17
18         INSTANCE;
19
20         public static PageSettingsTypicalRule get() {
21                 return INSTANCE;
22         }
23
24         @Override
25         public boolean synchronize(WriteGraph graph, Resource template, Resource instance, TypicalInfo info) throws DatabaseException {
26                 // Diagrams should always have some sort of diagram description.
27                 // If the template doesn't have one, the existing description
28                 // from the instance shall not be removed.
29                 DiagramDesc mdesc = graph.syncRequest(DiagramRequests.getDiagramDesc(template));
30                 if (mdesc == null) {
31                         info.messageLog.add("\t\ttemplate doesn't have any diagram page settings, doing nothing");
32                         return false;
33                 }
34                 DiagramDesc idesc = graph.syncRequest(DiagramRequests.getDiagramDesc(instance));
35                 if (mdesc.equals(idesc))
36                         return false;
37
38                 DiagramGraphUtil.setDiagramDesc(graph, instance, mdesc);
39                 info.messageLog.add("\t\tset diagram page settings:"
40                                 + "\n\t\t\tshow page borders: " + mdesc.isPageBordersVisible()
41                                 + "\n\t\t\tshow margins:      " + mdesc.isMarginsVisible()
42                                 + "\n\t\t\tgrid size:         " + mdesc.getGridSize()
43                                 + "\n\t\t\tpage settings:     " + mdesc.getPageDesc()
44                                 + "\n");
45                 return true;
46         }
47
48 }