X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.utils.datastructures%2Fsrc%2Forg%2Fsimantics%2Futils%2Fdatastructures%2Fhints%2FIHintContext.java;h=d4c28e6a2835c58d5993c87c726bd6f34838d92c;hp=8391c55d53a482f45153ced6aa782d61ec3545b3;hb=0ae2b770234dfc3cbb18bd38f324125cf0faca07;hpb=24e2b34260f219f0d1644ca7a138894980e25b14 diff --git a/bundles/org.simantics.utils.datastructures/src/org/simantics/utils/datastructures/hints/IHintContext.java b/bundles/org.simantics.utils.datastructures/src/org/simantics/utils/datastructures/hints/IHintContext.java index 8391c55d5..d4c28e6a2 100644 --- a/bundles/org.simantics.utils.datastructures/src/org/simantics/utils/datastructures/hints/IHintContext.java +++ b/bundles/org.simantics.utils.datastructures/src/org/simantics/utils/datastructures/hints/IHintContext.java @@ -1,201 +1,201 @@ -/******************************************************************************* - * Copyright (c) 2007, 2010 Association for Decentralized Information Management - * in Industry THTH ry. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * VTT Technical Research Centre of Finland - initial API and implementation - *******************************************************************************/ -/* - * - * @author Toni Kalajainen - */ -package org.simantics.utils.datastructures.hints; - -import java.util.Map; - -/** - * Hint context interface - * - * @see Key - * @see HintContext - * @see HintStack - * @see IHintObservable - */ -public interface IHintContext extends IHintObservable { - - /** - * Set a value for a hint. - * @param key key - * @param value the value, null is not accepted - */ - void setHint(Key key, Object value); - - /** - * Set a set of hints - * @param hints - */ - void setHints(Map hints); - - /** - * Remove a hint. In stack hint implementation lower priority hint will - * become effective. - - * @param type of the object bound to the specified key - * @param key key to use for the hint - * @return the typed object currently bound to the specified key - */ - E removeHint(Key key); - - /** - * Clears the context of all current hints without notifying any listeners. - */ - void clearWithoutNotification(); - - /** - * Hint key - */ - public static abstract class Key { - /** - * Test if value is accepted - * @param value the value - * @return true if value is accepted, false if not - */ - public abstract boolean isValueAccepted(Object value); - } - - /** - * Mouse id specific key. With this key there is unique value for each mouse id. - */ - public static abstract class MouseSpecificKey extends Key { - private final int mouseId; - public MouseSpecificKey(int mouseId) - { - this.mouseId = mouseId; - } - public int getMouseId() - { - return mouseId; - } - @Override - public int hashCode() { - return super.hashCode() ^ mouseId; - } - @Override - public boolean equals(Object obj) { - if (!(obj instanceof MouseSpecificKey)) return false; - if (((MouseSpecificKey)obj).mouseId != mouseId) return false; - if (!obj.getClass().equals(getClass())) return false; - return true; - } - } - - /** - * Key whose value is of a specific given class. - */ - public static class KeyOf extends Key { - final Class clazz; - final String keyName; - public KeyOf(Class clazz) - { - this.clazz = clazz; - this.keyName = null; - } - public KeyOf(Class clazz, String keyName) - { - this.clazz = clazz; - this.keyName = keyName; - } - @Override - public boolean isValueAccepted(Object value) { - return clazz.isInstance(value); - } - @Override - public String toString() { - if (keyName == null) - return "Key Of "+clazz.getName(); - return keyName + "(" + clazz.getSimpleName() + ")"; - } - } - - /** - * String based key - */ - public static abstract class StringKey extends Key { - protected final String str; - protected int hash; - public StringKey(String str) - { - this.str = str; - hash = getClass().hashCode() ^str.hashCode(); - } - public String getString() - { - return str; - } - @Override - public int hashCode() { - return hash; - } - @Override - public boolean equals(Object obj) { - if (!(obj instanceof StringKey)) return false; - if (!((StringKey)obj).str.equals(str)) return false; - if (obj.getClass()!=getClass()) return false; - return true; - } - } - - /** - * String based key whose value is of a specific class. - */ - public static class StringKeyOf extends StringKey { - final Class clazz; - public StringKeyOf(String str, Class clazz) - { - super(str); - this.clazz = clazz; - } - @Override - public boolean isValueAccepted(Object value) { - return clazz.isInstance(value); - } - @Override - public String toString() { - return "Key Of ("+clazz.getName()+", "+str+")"; - } - } - - - public static class MouseSpecificKeyOf extends MouseSpecificKey { - public final Class clazz; - public final int mouseId; - final int hash; - public MouseSpecificKeyOf(int mouseId, Class clazz) - { - super(mouseId); - this.clazz = clazz; - this.mouseId = mouseId; - hash = getClass().hashCode() ^ mouseId ^ 24392439; - } - @Override - public boolean isValueAccepted(Object value) { - return clazz.isInstance(value); - } - @Override - public int hashCode() { - return hash; - } - @Override - public boolean equals(Object obj) { - if (obj.getClass()!=this.getClass()) return false; - MouseSpecificKeyOf other = (MouseSpecificKeyOf) obj; - return other.mouseId == mouseId; - } - } - - -} +/******************************************************************************* + * Copyright (c) 2007, 2010 Association for Decentralized Information Management + * in Industry THTH ry. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * VTT Technical Research Centre of Finland - initial API and implementation + *******************************************************************************/ +/* + * + * @author Toni Kalajainen + */ +package org.simantics.utils.datastructures.hints; + +import java.util.Map; + +/** + * Hint context interface + * + * @see Key + * @see HintContext + * @see HintStack + * @see IHintObservable + */ +public interface IHintContext extends IHintObservable { + + /** + * Set a value for a hint. + * @param key key + * @param value the value, null is not accepted + */ + void setHint(Key key, Object value); + + /** + * Set a set of hints + * @param hints + */ + void setHints(Map hints); + + /** + * Remove a hint. In stack hint implementation lower priority hint will + * become effective. + + * @param type of the object bound to the specified key + * @param key key to use for the hint + * @return the typed object currently bound to the specified key + */ + E removeHint(Key key); + + /** + * Clears the context of all current hints without notifying any listeners. + */ + void clearWithoutNotification(); + + /** + * Hint key + */ + public static abstract class Key { + /** + * Test if value is accepted + * @param value the value + * @return true if value is accepted, false if not + */ + public abstract boolean isValueAccepted(Object value); + } + + /** + * Mouse id specific key. With this key there is unique value for each mouse id. + */ + public static abstract class MouseSpecificKey extends Key { + private final int mouseId; + public MouseSpecificKey(int mouseId) + { + this.mouseId = mouseId; + } + public int getMouseId() + { + return mouseId; + } + @Override + public int hashCode() { + return super.hashCode() ^ mouseId; + } + @Override + public boolean equals(Object obj) { + if (!(obj instanceof MouseSpecificKey)) return false; + if (((MouseSpecificKey)obj).mouseId != mouseId) return false; + if (!obj.getClass().equals(getClass())) return false; + return true; + } + } + + /** + * Key whose value is of a specific given class. + */ + public static class KeyOf extends Key { + final Class clazz; + final String keyName; + public KeyOf(Class clazz) + { + this.clazz = clazz; + this.keyName = null; + } + public KeyOf(Class clazz, String keyName) + { + this.clazz = clazz; + this.keyName = keyName; + } + @Override + public boolean isValueAccepted(Object value) { + return clazz.isInstance(value); + } + @Override + public String toString() { + if (keyName == null) + return "Key Of "+clazz.getName(); + return keyName + "(" + clazz.getSimpleName() + ")"; + } + } + + /** + * String based key + */ + public static abstract class StringKey extends Key { + protected final String str; + protected int hash; + public StringKey(String str) + { + this.str = str; + hash = getClass().hashCode() ^str.hashCode(); + } + public String getString() + { + return str; + } + @Override + public int hashCode() { + return hash; + } + @Override + public boolean equals(Object obj) { + if (!(obj instanceof StringKey)) return false; + if (!((StringKey)obj).str.equals(str)) return false; + if (obj.getClass()!=getClass()) return false; + return true; + } + } + + /** + * String based key whose value is of a specific class. + */ + public static class StringKeyOf extends StringKey { + final Class clazz; + public StringKeyOf(String str, Class clazz) + { + super(str); + this.clazz = clazz; + } + @Override + public boolean isValueAccepted(Object value) { + return clazz.isInstance(value); + } + @Override + public String toString() { + return "Key Of ("+clazz.getName()+", "+str+")"; + } + } + + + public static class MouseSpecificKeyOf extends MouseSpecificKey { + public final Class clazz; + public final int mouseId; + final int hash; + public MouseSpecificKeyOf(int mouseId, Class clazz) + { + super(mouseId); + this.clazz = clazz; + this.mouseId = mouseId; + hash = getClass().hashCode() ^ mouseId ^ 24392439; + } + @Override + public boolean isValueAccepted(Object value) { + return clazz.isInstance(value); + } + @Override + public int hashCode() { + return hash; + } + @Override + public boolean equals(Object obj) { + if (obj.getClass()!=this.getClass()) return false; + MouseSpecificKeyOf other = (MouseSpecificKeyOf) obj; + return other.mouseId == mouseId; + } + } + + +}