Class EditorClassReference

  • All Implemented Interfaces:
    IClassReferenceListener, EventListener, IGProp<java.lang.String>, java.lang.Cloneable

    public class EditorClassReference
    extends ClassReference
    implements IClassReferenceListener
    The Designer version of the Class Reference property class hold the reference to a Java class. It includes support for Java Refactoring in Eclipse as well as Reference Validation.
    Author:
    Christopher Mindus
    • 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

      • EditorClassReference

        public EditorClassReference()
        Creates a Class Reference property with no name and with a null value.
      • EditorClassReference

        public EditorClassReference​(Atom propertyAtom)
        Creates a Class Reference property with the specified name with a null value.
        Parameters:
        propertyAtom - the property atom.
      • EditorClassReference

        public EditorClassReference​(Atom propertyAtom,
                                    java.lang.String newValue)
        Creates a Class 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 EditorClassReference 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!

        Overrides:
        clone in class ClassReference
        Returns:
        A new cloned String property.
      • setRequiredInterface

        public void setRequiredInterface​(java.lang.String implementsInterface)
        Assigns a fully qualified interface name that the Java Class should implement.

        Setting the interface name doesn't cause a property change.

      • getRequiredInterface

        public java.lang.String getRequiredInterface()
        Gets the fully qualified interface name that the Java Class should implement.
        Specified by:
        getRequiredInterface in interface IClassReferenceListener
        Returns:
        Gets the required interface name, null for none.
      • setRequiredClassAnnotation

        public void setRequiredClassAnnotation​(java.lang.String requiredAnnotation)
        Assigns a fully qualified annotation name that the Java Class should be annotated with.

        Setting the annotation name doesn't cause a property change.

      • getRequiredClassAnnotation

        public java.lang.String getRequiredClassAnnotation()
        Get the fully qualified annotation name that the Java Class should be annotated with.
        Specified by:
        getRequiredClassAnnotation in interface IClassReferenceListener
        Returns:
        Gets the required annotation name, null for none.
      • isAnnotationBackReferenceRequired

        public boolean isAnnotationBackReferenceRequired()
        Checks if the ClassReference require an annotation back-reference.
        Specified by:
        isAnnotationBackReferenceRequired in interface IClassReferenceListener
        Returns:
        true if the annotation is required to have a back-reference on the "ref" member value pair to the ClassReference owner.
      • onEventSelf

        public void onEventSelf​(GEvent event)
        Event processing for Java Class Reference changed.
        Specified by:
        onEventSelf in interface IGProp<java.lang.String>
        Overrides:
        onEventSelf in class GProp<java.lang.String>
        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 call super.onReferenceEvent(ResolveReferenceEvent event).

        Overrides:
        onReferenceEvent in class GProp<java.lang.String>
        Parameters:
        event - The resolve references event.
      • getReference

        public JavaClass getReference()
        Gets the reference found.
        Returns:
        The class reference instance (in Designer it's com.iizigo.java.JavaClass), or null for none.
      • getType

        public org.eclipse.jdt.core.IType getType()
        Gets the type referenced.
        Returns:
        The type referenced, or null if not found.
      • canShowInJavaEditor

        public boolean canShowInJavaEditor()
        Checks if the type is defined and can be shown in an Eclipse Java Editor.
        Returns:
        true if it's a class in a ".java" file, false otherwise.
      • showInJavaEditor

        public boolean showInJavaEditor​(org.eclipse.swt.widgets.Shell shell)
        Goes to the type definition.
        Parameters:
        shell - The shell of the requestor.
        Returns:
        true for success, false for failure.
      • onResolve

        public void onResolve​(JavaClass reference,
                              boolean isClassFound,
                              java.lang.String errorMessage)
        Notifies the Class Reference of resolve result.
        Specified by:
        onResolve in interface IClassReferenceListener
        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.
      • 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 interface IClassReferenceListener
        Parameters:
        reference - The Class Reference.
        newName - The new fully qualified class name.
      • 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 interface IClassReferenceListener
      • 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 interface IClassReferenceListener
        Parameters:
        reference - The Class Reference.
        oldName - Old name.
        newName - New name.
        signature - Signature of method as retrieved by JavaHelper.getSimpleSignature class in Designer.