for (int i=0; i<len; i++) {
Object key = keys[i];
- key = getComparableKey(result, key);
Object value = values[i];
result.put(key, value);
}
for (int i=0; i<len; i++) {
Object key = keys.get(i);
- key = getComparableKey(result, key);
Object value = values.get(i);
result.put(key, value);
}
for (int i=0; i<len; i++) {
Object key = keys[i];
- key = getComparableKey(result, key);
Object value = values[i];
result.put(key, value);
}
for (int i=0; i<len; i++) {
Object key = keys.get(i);
- key = getComparableKey(result, key);
Object value = values.get(i);
result.put(key, value);
}
}
return values;
}
-
- @SuppressWarnings("unchecked")
- protected Object getComparableKey(Object map, Object key) {
- // if (keyIsComparable) return key;
-
- Map<Object, Object> m = ((Map<Object, Object>)map);
- Binding kb = getKeyBinding();
- for (Object k : m.keySet())
- {
- if (kb.equals(k, key))
- return k;
- }
- return key;
- }
@SuppressWarnings("unchecked")
@Override
public void put(Object map, Object key, Object value) {
Map<Object, Object> m = ((Map<Object, Object>)map);
- Object ck = getComparableKey(m, key);
- m.remove(ck);
m.put(key, value);
}
public <K, V> void putAll(Object map, Map<K, V> src) throws BindingException {
Map<K, V> m = ((Map<K, V> )map);
for (Entry<K, V> e : (Set<Entry<K, V> >) src.entrySet()) {
- Object ck = getComparableKey(map, e.getKey());
- m.remove(ck);
m.put(e.getKey(), e.getValue());
}
}
sender, e.time & 0xffffffff, MOUSE_ID, buttonStatus,
getStateMask(e),
getControlPosition(e), getScreenPosition(e),
- MouseWheelMovedEvent.WHEEL_UNIT_SCROLL,
- 0,
+ MouseWheelMovedEvent.WHEEL_UNIT_SCROLL,
+ MouseWheelMovedEvent.SCROLL_AMOUNT_ZERO,
e.count
));
}
return EventTypes.AnyMask;
}
- /**
- *
- */
- private MouseWheelMovedEvent lastMouseWheelMovedEvent;
-
private static final String DISABLE_DUPLICATE_REMOVAL = "org.simantics.scenegraph.g2d.events.disableDuplicateMouseWheelEvent";
private static final boolean IGNORE_DUPLICATE = !Boolean.parseBoolean(System.getProperty(DISABLE_DUPLICATE_REMOVAL));
private boolean ignoreDuplicateMouseWheelMovedEvent(Event e) {
if (IGNORE_DUPLICATE && e instanceof MouseWheelMovedEvent) {
- if (e.time > 0 && (lastMouseWheelMovedEvent != null && lastMouseWheelMovedEvent.time < 0)) {
+ MouseWheelMovedEvent event = (MouseWheelMovedEvent) e;
+ // if (e.time > 0 && (lastMouseWheelMovedEvent != null && lastMouseWheelMovedEvent.time < 0)) {
+ // apparently this is a better way to distinguish between SWT & AWT events
+ // SWT based event constructs the scrollAmount to = 0
+ // See org.simantics.g2d.event.adapter.SWTMouseEventAdapter.mouseScrolled(MouseEvent) L171
+ if (event.scrollAmount != MouseWheelMovedEvent.SCROLL_AMOUNT_ZERO) {
return true;
}
- lastMouseWheelMovedEvent = (MouseWheelMovedEvent) e;
}
return false;
}
private static final long serialVersionUID = -7896477913481842708L;
+ public static final int SCROLL_AMOUNT_ZERO = 0;
+
/**
* Constant representing scrolling by "units" (like scrolling with the
* arrow keys)
public static <T> Class<T> getSingleParameterTypeExtending(Class<?> clazz) {
Type t = clazz.getGenericSuperclass();
+ while (t instanceof Class<?>) {
+ Class<?> cl = (Class) t;
+ t = cl.getGenericSuperclass();
+ if (t == null) {
+ // according to javadoc, we have reached java.lang.Object so no can do
+ break;
+ }
+ }
if(t instanceof Class<?>) {
throw new UnsupportedOperationException("Missing parameter type for input class '" + clazz.getCanonicalName() + "'");
} else if (t instanceof ParameterizedType) {