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