Package com.iizigo.java.prop
Class EditorMethodReference2
- java.lang.Object
- com.iizix.prop.GProp<GProp<?>[]>
- com.iizix.prop.PropCnr
- com.iizix.prop.MethodReference2
- com.iizigo.java.prop.EditorMethodReference2
- All Implemented Interfaces:
IClassReferenceListener
,EventListener
,IGProp<GProp<?>[]>
,IPropCnr
,java.lang.Cloneable
- Direct Known Subclasses:
EditorFieldActor
public abstract class EditorMethodReference2 extends MethodReference2 implements IClassReferenceListener
The Designer version the Method Reference "2" property class hold the reference to a Method that is in a Java class.Two variants are supported:
- As for classic MethodReference:
a Java class reference "ClassReference" is held by a parent container in the tree, and this method reference is a simple name without '.' and is the method in the class. - a static method reference in a class, where this name is the fully qualified class name with the method name last.
- Author:
- Christopher Mindus
Field Summary
Fields Modifier and Type Field Description static java.lang.String
ERROR_ID
The ID of the property error.Fields inherited from class com.iizix.prop.MethodReference2
requiredAnnotations, runtimeMethod
Fields inherited from class com.iizix.prop.PropCnr
EMPTY, EMPTY_CLASSES, EMPTY_CNRS, EXTENDS_FRAMEWORK_ERROR_ID
Fields inherited from class com.iizix.prop.GProp
GPDEBUG, PROP_ATTR_STRING_EDITOR_PROP, PROP_ATTR_STRING_ERRORED_NAME, PROP_ATTR_STRING_EXTENDS, PROP_ATTR_STRING_EXTENDS_FINAL, PROP_ATTR_STRING_EXTENDS_PRIVATE, PROP_ATTR_STRING_NULLABLE, PROP_ATTR_STRING_PRIVATE, PROP_ATTR_STRING_PRIVATE_CHANGE_EVENT, PROP_ATTR_STRING_READ_ONLY, PROP_USER_1, PROP_USER_2
Fields inherited from interface com.iizix.prop.IGProp
EQC_ERROR_IGNORE_ALL, EQC_ERROR_IGNORE_REFERENCES, EQC_IGNORE_ARRAY, EQC_IGNORE_VOLATILE_OR_EDITOR, EQC_PRIVATE, EQC_SAVE_FILE, EXT_CONTAINER_EXTENDS, EXT_CONTAINER_EXTENDS_VALID, EXT_EXTENDED, EXT_FINAL, EXT_OVERRIDES, EXT_OVERRIDES_FINAL_ERR, EXT_PRIVATE
Constructor Summary
Constructors Constructor Description EditorMethodReference2()
Creates a Method Reference property with no name and with a null value.EditorMethodReference2(Atom propertyAtom)
Creates a Method Reference property with the specified name with a null value.EditorMethodReference2(Atom propertyAtom, java.lang.String newValue)
Creates a Method Reference property with the specified name and value.
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description EditorMethodReference2
clone()
Creates a clone out of this property.java.lang.String
getAnnotationBackReference()
Gets the back-reference string.PropCnr
getBackReferenceProperty()
Gets the back-reference property.java.lang.String
getDescription()
Gets the description of the reference from the annotation.org.eclipse.jdt.core.IJavaElement
getJavaElement()
Gets the Java element in resolve, could be a IType or IMethod (even the wrong IMethod due to missing annotation or compile error).java.lang.String
getRequiredClassAnnotation()
Get the fully qualified annotation name that the Java Class should be annotated with.java.lang.String
getRequiredInterface()
Gets the fully qualified interface name that the Java Class should implement.abstract java.lang.String
getRequiredNonStaticAnnotation()
Get the fully qualified annotation name that the Java Class should be annotated with when non-static.abstract java.lang.String
getRequiredStaticAnnotation()
Get the fully qualified annotation name that the Java Class should be annotated with when static.boolean
isAnnotationBackReferenceRequired()
Checks if the Class Reference require an annotation back-reference.boolean
isAnnotationMissing()
Checks for missing annotation.MethodLookup
lookup(GProp<?> propInProject)
Checks the reference validity from the Designer.void
onEventSelf(GEvent event)
Event processing for Java Class Reference changed.void
onJavaChangedSWT(JavaClass reference)
Called when the source has changed and is recompiled on disk or in-memory reconcile.void
onMethodRenamed(JavaClass reference, java.lang.String oldName, java.lang.String newName, java.lang.String signature)
Called when a method has been renamed in the class.protected void
onPropDispose()
Called when a property is disposed of.protected void
onReferenceEvent(ResolveReferencesEvent event)
Called to perform reference resolving.void
onRename(JavaClass reference, java.lang.String newName)
Informs the listener that the fully qualified class name has been changed.void
onResolve(JavaClass reference, boolean isClassFound, java.lang.String errorMessage)
Notifies the Class Reference of resolve result.MethodLookup
resolve()
Resolves the reference.Methods inherited from class com.iizix.prop.MethodReference2
equalsErrors, getMethodName, getRuntimeMethod, initializeElement, initializeProp, isStatic, lookupMethod, onPrepare, setMethodName, setMethodName
Methods inherited from class com.iizix.prop.PropCnr
__transferChildProps, addPredefinedProps, addProp, addProp, addProp2, addProp2, appendPropValue, canRequestFocus, completeVirtualize, containsProp, containsProp, convertLoadedProp, couldRequestFocusIfVirtualized, createCopyOfAtom, createUniqueAtom, createUniqueAtom, createUniqueAtom, createVSReference, doPropEqualsArrayValues, doVirtualizePropCnr, enablePropCommunication, enablePropHashMap, equalsTree, equalsTree, getAllProps, getAllProps, getAllProps, getAllProps, getAllProps, getAllProps, getAllProps, getAllProps, getBool, getBool, getBool, getBool, getChildPropError, getChildPropError, getChildPropErrorSeverity, getChildPropErrorSeverity, getErrorsProp, getExtendsContainer, getExtendsError, getExtendsName, getExtendsOverride, getExtendsPossibleClasses, getFirstProp, getFirstProp, getFocusEngine, getInt, getInt, getInt, getInt, getLong, getLong, getLong, getLong, getNumber, getNumber, getNumber, getNumber, getPossibleChildren, getPredefinedProps, getProp, getProp, getProp, getProp, getProp, getProp, getProp, getProp, getProp, getProp, getProp, getPropBaseReference, getPropCnr, getPropCount, getPropCount, getPropIndex, getPropIndex, getPropIndexes, getProps, getProps, getPropValue, getPropValue, getPropValue, getPropValue, getPropValue, getPropValue, getPropValue, getPropValue0, getReferences, getRetargetedVerifyContainer, getString, getString, getString, getString, getValueClasses, getVSReference, hasFocus, hasSendData, initializeExtendsFramework, initializeValue, initPropCnr, insertProp, insertProp2, isChild, isExtendsOverriden, isExtendsPropertyValid, isExtendsRoot, isPropAddRemoveAllowed, isPropCommunicating, isPropExtended, isSibling, list, list, logPropNotFound, maybeAddProp, onInsertProp, onPropRemoved, onPropTreeInitialized, paramString, prepare, removeAllProps, removeAllProps2, removeProp, removeProp, removeProp, removeProp, removeProp, removeProp, removeProp, removeProp2, removeProp2, removeProp2, removeProp2, removeProp2, removeProp2, removeProp2, reorderProps, replaceProps, requestFocus, requestFocus, requestFocusEx, requestFocusEx, resolveReferences, resolveRuntimeReferences, setBool, setBool, setBool, setBool, setCreateRequiredProp, setExtendsName, setExtendsOverride, setInt, setInt, setInt, setLong, setLong, setLong, setLong, setNumber, setNumber, setNumber, setNumber, setProp, setProp, setProp, setProp2, setProp2, setPropValue, setPropValue, setPropValue, setPropValue, setPropValue, setPropValue, setString, setString, setString, setString, shouldCreateProps, shouldSerializeToXML, toElementString, toNativeValue0, usePropHashMap, usesPropIndex, validateChildPropInValue, validateClassInstances, validatePropType, validatePropValue, verify, verifyInternalUseOnly, verifyTree, virtualize
Methods inherited from class com.iizix.prop.GProp
addPropError, addPropListener, convertPropError, dispose, equals, equals, equalsObj, equalsPropValue, equalValues, extendsClone, finalize, fine, fine, finer, finer, finest, finest, fromElementString, getAliasName, getAppSessionGyro, getAppWorker, getAtomPath, getAttribute, getChildReferencePropName, getClientSessionGyro, getClientWorker, getConstraints, getEnvironment, getErroredPropItems, getErroredProps, getErrorsProp, getExtendsRootContainer, getFullPropName, getFullPropName, getFullPropNameDebug, getFullPropNameDebug, getListeners, getModuleFolder, getModuleFolder, getParent, getParent, getProjectName, getPropAtom, getPropError, getPropError, getPropErroredName, getPropErrorSeverity, getPropExtendsFlags, getPropFromPath, getPropFromPath, getPropFromReference, getPropFromReference, getPropIndex, getPropName, getPropPath, getPropPath, getPropReferenceTarget, getPropRootPropMgr, getPropTreeErrorSeverity, getPropValue, getPropValue, getPropValueObject, getReferencePropName, getRelativePropName, getRootFromName, getRootName, getRootParent, getRootParent, getTreeLock, hasChanged, hasPrivateChangeEventProp, hasPropError, hasPropTreeError, info, info, initializeGElement, initializeGProp, isDisposed, isPropChildOf, isPropClientCreated, isPropCreateRequired, isPropExtended, isPropExtendsFinal, isPropExtendsPrivate, isPropExtendsPrivateInRoot, isPropExtendsPrivateInRoot, isPropFile, isPropFolder, isPropForEditor, isPropNullable, isPropPrivate, isPropPrivateAtCreation, isPropReadOnly, isPropReferenceTreeValid, isPropRoot, isPropUSER, isPropValueTreeLockNeeded, isPropVirtualized, isPropVirtualizing, isPropVolatile, isPropVolatileOrEditorOnly, isProxied, list, list, list, mapAliasToReference, mapAliasToReference, mapReferenceToAlias, mapReferenceToAlias, mapReferenceToProjectRelative, modifyPropValue, moveProp, moveProp, moveProp, onEvent, onPropInvalidateCache, onPropParentChanged, onPropValueSet, onRemoteEvent, onVirtualizationCompleted, onVirtualized, paramValue, post, post, removePropError, removePropListener, removePropUSER, renameProp, renameProp2, resetChangedTree, setChanged, setConstraints, setConstraints, setParent, setPrivateChangeEventProp, setPrivateCreateRequiredProp, setPropError, setPropErroredName, setPropExtended, setPropExtendsFinal, setPropExtendsPrivate, setPropForEditor, setPropNullable, setPropPrivate, setPropReadOnly, setPropUSER, setPropValue, setPropValue, setPropValue, setPropValueIncognito, setPropVolatile, severe, severe, severe, shouldSerializeToXML, throwIfReadOnly, toNativeValue, toString, toString, triggerRemoteEvent, triggerRemoteEvent, validateProp, verifyHasPropertyItem, warning, warning, warning
Methods inherited from class java.lang.Object
getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface com.iizix.prop.IGProp
addPropError, addPropListener, dispose, equals, fine, fine, finer, finer, finest, finest, fromElementString, getAppSessionGyro, getAtomPath, getClientSessionGyro, getConstraints, getEnvironment, getErroredPropItems, getErroredProps, getErrorsProp, getExtendsRootContainer, getFullPropName, getFullPropNameDebug, getModuleFolder, getModuleFolder, getParent, getParent, getPropAtom, getPropError, getPropError, getPropErrorSeverity, getPropExtendsFlags, getPropFromPath, getPropFromReference, getPropIndex, getPropName, getPropPath, getPropPath, getPropRootPropMgr, getPropTreeErrorSeverity, getPropValue, getPropValue, getReferencePropName, getRelativePropName, getRootParent, getTreeLock, hasChanged, hasPrivateChangeEventProp, hasPropError, hasPropTreeError, info, info, initializeGElement, initializeGProp, isDisposed, isPropChildOf, isPropClientCreated, isPropCreateRequired, isPropExtended, isPropExtendsFinal, isPropExtendsPrivate, isPropExtendsPrivateInRoot, isPropExtendsPrivateInRoot, isPropFile, isPropFolder, isPropNullable, isPropPrivate, isPropReadOnly, isPropReferenceTreeValid, isPropRoot, isPropVirtualized, list, list, list, mapAliasToReference, mapReferenceToAlias, mapReferenceToProjectRelative, moveProp, moveProp, moveProp, onEvent, onRemoteEvent, removePropError, removePropListener, renameProp, setChanged, setConstraints, setConstraints, setParent, setPrivateChangeEventProp, setPropError, setPropExtendsFinal, setPropExtendsPrivate, setPropNullable, setPropPrivate, setPropReadOnly, setPropValue, setPropValue, severe, severe, severe, toNativeValue, triggerRemoteEvent, triggerRemoteEvent, validateProp, verifyHasPropertyItem, warning, warning, warning
Methods inherited from interface com.iizix.prop.IPropCnr
canRequestFocus, canRequestFocus, couldRequestFocusIfVirtualized, couldRequestFocusIfVirtualized
Field Detail
ERROR_ID
public static final java.lang.String ERROR_ID
The ID of the property error.- See Also:
- Constant Field Values
Constructor Detail
EditorMethodReference2
public EditorMethodReference2()
Creates a Method Reference property with no name and with a null value.
EditorMethodReference2
public EditorMethodReference2(Atom propertyAtom)
Creates a Method Reference property with the specified name with a null value.- Parameters:
propertyAtom
- the property atom.
EditorMethodReference2
public EditorMethodReference2(Atom propertyAtom, java.lang.String newValue)
Creates a Method Reference property with the specified name and value.- Parameters:
propertyAtom
- the property atom.newValue
- the new string value for the property.
Method Detail
clone
public EditorMethodReference2 clone()
Creates a clone out of this property. The cloning is overridden by the super classes in order to handle cloning of its class variables appropriately.Cloning is used for "virtualization" of a property tree in the server. Client property classes will therefore throw
CloneNotSupportedException
.Once a tree has been cloned, the change-flag is reset, and the create-flag is set. All listeners are also removed! The new cloned property is an orphan, i.e. has no parent set.
Note that the cloning process is done WITHOUT thread synchronization for performance reasons, thus no modifications should be done to the tree!
getRequiredNonStaticAnnotation
public abstract java.lang.String getRequiredNonStaticAnnotation()
Get the fully qualified annotation name that the Java Class should be annotated with when non-static.- Returns:
- Gets the required annotation name, null for none.
getRequiredStaticAnnotation
public abstract java.lang.String getRequiredStaticAnnotation()
Get the fully qualified annotation name that the Java Class should be annotated with when static.- Returns:
- Gets the required annotation name, null for none.
getRequiredInterface
public java.lang.String getRequiredInterface()
Gets the fully qualified interface name that the Java Class should implement.- Specified by:
getRequiredInterface
in interfaceIClassReferenceListener
- Returns:
- Gets the required interface name, null for none.
getRequiredClassAnnotation
public java.lang.String getRequiredClassAnnotation()
Get the fully qualified annotation name that the Java Class should be annotated with.- Specified by:
getRequiredClassAnnotation
in interfaceIClassReferenceListener
- Returns:
- Gets the required annotation name, null for none.
isAnnotationBackReferenceRequired
public boolean isAnnotationBackReferenceRequired()
Checks if the Class Reference require an annotation back-reference.- Specified by:
isAnnotationBackReferenceRequired
in interfaceIClassReferenceListener
- Returns:
- true if the annotation is required to have a back-reference on the "ref" member value pair to the Class Reference owner.
getAnnotationBackReference
public java.lang.String getAnnotationBackReference()
Gets the back-reference string.- Specified by:
getAnnotationBackReference
in interfaceIClassReferenceListener
getBackReferenceProperty
public PropCnr getBackReferenceProperty()
Gets the back-reference property.- Specified by:
getBackReferenceProperty
in interfaceIClassReferenceListener
onEventSelf
public void onEventSelf(GEvent event)
Event processing for Java Class Reference changed.- Specified by:
onEventSelf
in interfaceIGProp<GProp<?>[]>
- Overrides:
onEventSelf
in classGProp<GProp<?>[]>
- Parameters:
event
- The property event.
onReferenceEvent
protected void onReferenceEvent(ResolveReferencesEvent event)
Called to perform reference resolving. A property should override this method if it needs to perform reference resolving and validation.Subclasses override this method and only subclasses extending
PropCnr
needs to callsuper.onReferenceEvent(ResolveReferenceEvent event)
.- Overrides:
onReferenceEvent
in classPropCnr
- Parameters:
event
- The resolve references event.
lookup
public MethodLookup lookup(GProp<?> propInProject)
Checks the reference validity from the Designer.
onPropDispose
protected void onPropDispose()
Called when a property is disposed of.- Overrides:
onPropDispose
in classPropCnr
onResolve
public void onResolve(JavaClass reference, boolean isClassFound, java.lang.String errorMessage)
Notifies the Class Reference of resolve result.- Specified by:
onResolve
in interfaceIClassReferenceListener
- Parameters:
reference
- The Class Reference.isClassFound
- Flag indicating class is found, but interface is not implemented (when true) or annotation is missing.errorMessage
- The error message, or null to clear the error.
resolve
public MethodLookup resolve()
Resolves the reference.- Returns:
- The method Object (IMethod for Designer), or class/type instance (IType for Designer) if class is present but not the method, or a String for the error (can also be null e.g. for no method name). Do not use the return code in other places than the Designer.
getJavaElement
public org.eclipse.jdt.core.IJavaElement getJavaElement()
Gets the Java element in resolve, could be a IType or IMethod (even the wrong IMethod due to missing annotation or compile error). This should only be used e.g. in the Show in Java Editor function.
isAnnotationMissing
public boolean isAnnotationMissing()
Checks for missing annotation. This call should only be used in the Designer.- Returns:
- null For not missing or can't do anything, otherwise the JavaClass instance.
getDescription
public java.lang.String getDescription()
Gets the description of the reference from the annotation.- Returns:
- The description from the annotation, or an error message if not resolved.
onJavaChangedSWT
public void onJavaChangedSWT(JavaClass reference)
Called when the source has changed and is recompiled on disk or in-memory reconcile. This method is called in the SWT thread only (in the Designer).- Specified by:
onJavaChangedSWT
in interfaceIClassReferenceListener
onRename
public void onRename(JavaClass reference, java.lang.String newName)
Informs the listener that the fully qualified class name has been changed. This includes the class package as well as the name.- Specified by:
onRename
in interfaceIClassReferenceListener
- Parameters:
reference
- The Class Reference.newName
- The new fully qualified class name.
onMethodRenamed
public void onMethodRenamed(JavaClass reference, java.lang.String oldName, java.lang.String newName, java.lang.String signature)
Called when a method has been renamed in the class.- Specified by:
onMethodRenamed
in interfaceIClassReferenceListener
- Parameters:
reference
- The Class Reference.oldName
- Old name.newName
- New name.signature
- Signature of method as retrieved by JavaHelper.getSimpleSignature class in Designer.