]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.diagram/src/org/simantics/diagram/elements/AdaptableImmutableProxyElement.java
Fixed multiple issues causing dangling references to discarded queries
[simantics/platform.git] / bundles / org.simantics.diagram / src / org / simantics / diagram / elements / AdaptableImmutableProxyElement.java
1 /*******************************************************************************
2  * Copyright (c) 2007, 2010 Association for Decentralized Information Management
3  * in Industry THTH ry.
4  * All rights reserved. This program and the accompanying materials
5  * are made available under the terms of the Eclipse Public License v1.0
6  * which accompanies this distribution, and is available at
7  * http://www.eclipse.org/legal/epl-v10.html
8  *
9  * Contributors:
10  *     VTT Technical Research Centre of Finland - initial API and implementation
11  *******************************************************************************/
12 package org.simantics.diagram.elements;
13
14 import java.util.Map;
15
16 import org.eclipse.core.runtime.IAdaptable;
17 import org.simantics.g2d.diagram.IDiagram;
18 import org.simantics.g2d.element.ElementClass;
19 import org.simantics.g2d.element.ElementHints;
20 import org.simantics.g2d.element.ElementUtils;
21 import org.simantics.g2d.element.IElement;
22 import org.simantics.utils.datastructures.hints.IHintListener;
23 import org.simantics.utils.threads.IThreadWorkQueue;
24
25 public class AdaptableImmutableProxyElement implements IAdaptable, IElement {
26
27     private final IElement element;
28
29     public AdaptableImmutableProxyElement(IElement element) {
30         this.element = element;
31     }
32
33     @SuppressWarnings({ "rawtypes", "unchecked" })
34     @Override
35     public Object getAdapter(Class adapter) {
36         Object object = element.getHint(ElementHints.KEY_OBJECT);
37         if (object != null) {
38             if (adapter.isAssignableFrom(object.getClass()))
39                 return object;
40             if (object instanceof IAdaptable) {
41                 IAdaptable a = (IAdaptable) object;
42                 return a.getAdapter(adapter);
43             }
44         }
45         return null;
46     }
47
48     @Override
49     public void addedToDiagram(IDiagram diagram) {
50         throw new UnsupportedOperationException();
51     }
52
53     @Override
54     public void destroy() {
55         throw new UnsupportedOperationException();
56     }
57
58     @Override
59     public void dispose() {
60         throw new UnsupportedOperationException();
61     }
62
63     @Override
64     public IDiagram getDiagram() {
65         return ElementUtils.getDiagram(element);
66     }
67
68     @Override
69     public IDiagram peekDiagram() {
70         return ElementUtils.peekDiagram(element);
71     }
72
73     @Override
74     public ElementClass getElementClass() {
75         return element.getElementClass();
76     }
77
78     @Override
79     public void clearWithoutNotification() {
80         throw new UnsupportedOperationException();
81     }
82
83     @Override
84     public <E> E removeHint(Key key) {
85         throw new UnsupportedOperationException();
86     }
87
88     @Override
89     public void setHint(Key key, Object value) {
90         throw new UnsupportedOperationException();
91     }
92
93     @Override
94     public void setHints(Map<Key, Object> hints) {
95         throw new UnsupportedOperationException();
96     }
97
98     @Override
99     public void addHintListener(IHintListener listener) {
100         throw new UnsupportedOperationException();
101     }
102
103     @Override
104     public void addHintListener(IThreadWorkQueue threadAccess, IHintListener listener) {
105         throw new UnsupportedOperationException();
106     }
107
108     @Override
109     public void addKeyHintListener(Key key, IHintListener listener) {
110         throw new UnsupportedOperationException();
111     }
112
113     @Override
114     public void addKeyHintListener(IThreadWorkQueue threadAccess, Key key, IHintListener listener) {
115         throw new UnsupportedOperationException();
116     }
117
118     @Override
119     public boolean containsHint(Key key) {
120         return element.containsHint(key);
121     }
122
123     @Override
124     public <E> E getHint(Key key) {
125         return element.getHint(key);
126     }
127
128     @Override
129     public Map<Key, Object> getHints() {
130         return element.getHints();
131     }
132
133     @Override
134     public Map<Key, Object> getHintsUnsafe() {
135         return element.getHintsUnsafe();
136     }
137
138     @Override
139     public <E extends Key> Map<E, Object> getHintsOfClass(Class<E> clazz) {
140         return element.getHintsOfClass(clazz);
141     }
142
143     @Override
144     public void removeHintListener(IHintListener listener) {
145         throw new UnsupportedOperationException();
146     }
147
148     @Override
149     public void removeHintListener(IThreadWorkQueue threadAccess, IHintListener listener) {
150         throw new UnsupportedOperationException();
151     }
152
153     @Override
154     public void removeKeyHintListener(Key key, IHintListener listener) {
155         throw new UnsupportedOperationException();
156     }
157
158     @Override
159     public void removeKeyHintListener(IThreadWorkQueue threadAccess, Key key, IHintListener listener) {
160         throw new UnsupportedOperationException();
161     }
162
163 }