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
10 * VTT Technical Research Centre of Finland - initial API and implementation
\r
11 *******************************************************************************/
\r
12 package org.simantics.diagram.elements;
\r
14 import java.util.Map;
\r
16 import org.eclipse.core.runtime.IAdaptable;
\r
17 import org.simantics.g2d.diagram.IDiagram;
\r
18 import org.simantics.g2d.element.ElementClass;
\r
19 import org.simantics.g2d.element.ElementHints;
\r
20 import org.simantics.g2d.element.ElementUtils;
\r
21 import org.simantics.g2d.element.IElement;
\r
22 import org.simantics.utils.datastructures.hints.IHintListener;
\r
23 import org.simantics.utils.threads.IThreadWorkQueue;
\r
25 public class AdaptableImmutableProxyElement implements IAdaptable, IElement {
\r
27 private final IElement element;
\r
29 public AdaptableImmutableProxyElement(IElement element) {
\r
30 this.element = element;
\r
33 @SuppressWarnings({ "rawtypes", "unchecked" })
\r
35 public Object getAdapter(Class adapter) {
\r
36 Object object = element.getHint(ElementHints.KEY_OBJECT);
\r
37 if (object != null) {
\r
38 if (adapter.isAssignableFrom(object.getClass()))
\r
40 if (object instanceof IAdaptable) {
\r
41 IAdaptable a = (IAdaptable) object;
\r
42 return a.getAdapter(adapter);
\r
49 public void addedToDiagram(IDiagram diagram) {
\r
50 throw new UnsupportedOperationException();
\r
54 public void destroy() {
\r
55 throw new UnsupportedOperationException();
\r
59 public void dispose() {
\r
60 throw new UnsupportedOperationException();
\r
64 public IDiagram getDiagram() {
\r
65 return ElementUtils.getDiagram(element);
\r
69 public IDiagram peekDiagram() {
\r
70 return ElementUtils.peekDiagram(element);
\r
74 public ElementClass getElementClass() {
\r
75 return element.getElementClass();
\r
79 public void clearWithoutNotification() {
\r
80 throw new UnsupportedOperationException();
\r
84 public <E> E removeHint(Key key) {
\r
85 throw new UnsupportedOperationException();
\r
89 public void setHint(Key key, Object value) {
\r
90 throw new UnsupportedOperationException();
\r
94 public void setHints(Map<Key, Object> hints) {
\r
95 throw new UnsupportedOperationException();
\r
99 public void addHintListener(IHintListener listener) {
\r
100 throw new UnsupportedOperationException();
\r
104 public void addHintListener(IThreadWorkQueue threadAccess, IHintListener listener) {
\r
105 throw new UnsupportedOperationException();
\r
109 public void addKeyHintListener(Key key, IHintListener listener) {
\r
110 throw new UnsupportedOperationException();
\r
114 public void addKeyHintListener(IThreadWorkQueue threadAccess, Key key, IHintListener listener) {
\r
115 throw new UnsupportedOperationException();
\r
119 public boolean containsHint(Key key) {
\r
120 return element.containsHint(key);
\r
124 public <E> E getHint(Key key) {
\r
125 return element.getHint(key);
\r
129 public Map<Key, Object> getHints() {
\r
130 return element.getHints();
\r
134 public Map<Key, Object> getHintsUnsafe() {
\r
135 return element.getHintsUnsafe();
\r
139 public <E extends Key> Map<E, Object> getHintsOfClass(Class<E> clazz) {
\r
140 return element.getHintsOfClass(clazz);
\r
144 public void removeHintListener(IHintListener listener) {
\r
145 throw new UnsupportedOperationException();
\r
149 public void removeHintListener(IThreadWorkQueue threadAccess, IHintListener listener) {
\r
150 throw new UnsupportedOperationException();
\r
154 public void removeKeyHintListener(Key key, IHintListener listener) {
\r
155 throw new UnsupportedOperationException();
\r
159 public void removeKeyHintListener(IThreadWorkQueue threadAccess, Key key, IHintListener listener) {
\r
160 throw new UnsupportedOperationException();
\r