]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.diagram/src/org/simantics/diagram/adapter/NodeClassRequest.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.diagram / src / org / simantics / diagram / adapter / NodeClassRequest.java
1 /*******************************************************************************\r
2  * Copyright (c) 2007, 2010 Association for Decentralized Information Management\r
3  * in Industry THTH ry.\r
4  * All rights reserved. This program and the accompanying materials\r
5  * are made available under the terms of the Eclipse Public License v1.0\r
6  * which accompanies this distribution, and is available at\r
7  * http://www.eclipse.org/legal/epl-v10.html\r
8  *\r
9  * Contributors:\r
10  *     VTT Technical Research Centre of Finland - initial API and implementation\r
11  *******************************************************************************/\r
12 package org.simantics.diagram.adapter;\r
13 \r
14 import org.simantics.db.AsyncReadGraph;\r
15 import org.simantics.db.Resource;\r
16 import org.simantics.db.procedure.AsyncProcedure;\r
17 import org.simantics.g2d.canvas.ICanvasContext;\r
18 import org.simantics.g2d.diagram.IDiagram;\r
19 import org.simantics.g2d.element.ElementClass;\r
20 \r
21 public class NodeClassRequest extends BaseRequest2<Resource, ElementClass> {\r
22 \r
23     private final IDiagram diagram;\r
24     private final boolean exceptionOnAdaptionFailure;\r
25 \r
26     public NodeClassRequest(ICanvasContext canvas, IDiagram diagram, Resource resource) {\r
27         this(canvas, diagram, resource, false);\r
28     }\r
29 \r
30     public NodeClassRequest(ICanvasContext canvas, IDiagram diagram, Resource resource, boolean exceptionOnAdaptionFailure) {\r
31         super(canvas, resource);\r
32         this.diagram = diagram;\r
33         this.exceptionOnAdaptionFailure = exceptionOnAdaptionFailure;\r
34     }\r
35 \r
36     @Override\r
37     public void perform(AsyncReadGraph graph, final AsyncProcedure<ElementClass> procedure) {\r
38 \r
39 //        System.out.println("NodeClassRequest " + data.getResourceId());\r
40 //        graph.asyncRequest(new SafeName(data), new Procedure<String>() {\r
41 //            @Override\r
42 //            public void exception(Throwable t) {\r
43 //            }\r
44 //            @Override\r
45 //            public void execute(String result) {\r
46 //                System.out.println("NodeClassRequest "  + result);\r
47 //                debug = result;\r
48 //            }\r
49 //        });\r
50 \r
51         graph.forAdapted(data, ElementFactory.class, new AsyncProcedure<ElementFactory>() {\r
52 \r
53             @Override\r
54             public void exception(AsyncReadGraph graph, Throwable throwable) {\r
55                 if (exceptionOnAdaptionFailure)\r
56                     procedure.exception(graph, throwable);\r
57                 else\r
58                     procedure.execute(graph, null);\r
59             }\r
60 \r
61             @Override\r
62             public void execute(AsyncReadGraph graph, final ElementFactory factory) {\r
63 \r
64 //                System.out.println("NodeClassRequest factory " + data.getResourceId() + " = " + factory.getClass().getName());\r
65 //                graph.asyncRequest(new SafeName(data), new Procedure<String>() {\r
66 //                    @Override\r
67 //                    public void exception(Throwable t) {\r
68 //                    }\r
69 //                    @Override\r
70 //                    public void execute(String result) {\r
71 //                        System.out.println("NodeClassRequest "  + result + " " + factory.getClass().getName());\r
72 //                        debug = result;\r
73 //                    }\r
74 //                });\r
75 \r
76                 if (factory == null) {\r
77                     // Should never happen since we are using forAdapted\r
78                     System.out.println("No factory in NodeClassRequest! " + this);\r
79                     procedure.execute(graph, null);\r
80                     return;\r
81                 }\r
82 \r
83                 factory.create(graph, canvas, diagram, data, new AsyncProcedure<ElementClass>() {\r
84 \r
85                     @Override\r
86                     public void exception(AsyncReadGraph graph, Throwable throwable) {\r
87                         procedure.exception(graph, throwable);\r
88                     }\r
89 \r
90                     @Override\r
91                     public void execute(AsyncReadGraph graph, ElementClass ec) {\r
92 //                        System.out.println("Produced element class " + ec);\r
93                         procedure.execute(graph, ec);\r
94                     }\r
95 \r
96                 });\r
97 \r
98             }\r
99 \r
100         });\r
101 \r
102     }\r
103 \r
104 }\r