org.eclipse.emf.mwe.core.debug.processing
Interface ElementAdapter

All Known Implementing Classes:
WorkflowElementAdapter

public interface ElementAdapter

An adapter to the DebugMonitor that handle all element type specific activities on the runtime side.
That is process specific decisions and syntax element and variable normalisation.


Method Summary
 boolean canHandle(java.lang.Object element)
          returns true, if the implementation handles the element type
 boolean checkVariableHasMembers(java.lang.Object element)
          check if the variable representation of this element shall show members
 SyntaxElement createElement(java.lang.Object element)
          computes a SyntaxElement for a specific element type
the containerName should be the name of the underlying file name
the element name should be the name of the surrounding element (e.g.
 SyntaxElement createEndElementTO(java.lang.Object element)
          computes a SyntaxElement for a surrounding element representing the end position to be highlighted before returning
the containerName should be the name of the file that holds the element
the element name should be a description of the end element
start, end and line should point to the end text to be highlighted
 java.lang.Object findElement(SyntaxElement se, java.lang.Object actual, int flag)
          find the element that corresponds to the given syntax element information
 java.lang.String getAdapterType()
          a unique type must be provided for each implementation
 java.lang.Object getContext()
           
 java.lang.String getVariableDetailRep(java.lang.Object element)
          compute the string representation of the element ready to display in the variables detail view.
 java.util.List<NameValuePair> getVariables(java.lang.Object element)
          collect all available variables for a given element.
 java.lang.String getVariableSimpleRep(java.lang.Object element)
          compute a shorter string representation of the element ready to display in the variables view.
 boolean isSurroundingElement(java.lang.Object element)
          returns whether the element has a body and debugger shall stop again at the end of the execution of that element
 void setContext(java.lang.Object context)
          set the current execution context
the context should be cached and can be used to collect information about elements
 boolean shallHandle(java.lang.Object element)
          this method is called from the DebugMonitor prior to all other suspension activities (e.g.
 boolean shallSuspend(java.lang.Object element, int flag)
          this method is called from the DebugMonitor after all other suspension activities (e.g.
 

Method Detail

canHandle

boolean canHandle(java.lang.Object element)
returns true, if the implementation handles the element type

Parameters:
element - the element that is going to be debugged
Returns:
true, if this class handles the element type

shallHandle

boolean shallHandle(java.lang.Object element)
this method is called from the DebugMonitor prior to all other suspension activities (e.g. breakpoint check, subroutine level check)
this provides the opportunity to handle specific elements individually
Normal return value should be true

Parameters:
element - the element that is going to be debugged
Returns:
whether or not to suspend the debugger process for the element

shallSuspend

boolean shallSuspend(java.lang.Object element,
                     int flag)
this method is called from the DebugMonitor after all other suspension activities (e.g. breakpoint check, subroutine level check)
this provides the opportunity for a last call by the adapter.
Implementations can *avoid* suspension, although it would suspend otherwise, if the return value is set to false here

Parameters:
lastState - the consolidated decisions previously asked
element - the element that is going to be debugged
flag - one of the values IProcessHandler.PUSH or IProcessHandler.POP
Returns:
whether or not to suspend the debugger process for the element

createElement

SyntaxElement createElement(java.lang.Object element)
computes a SyntaxElement for a specific element type
the containerName should be the name of the underlying file name
the element name should be the name of the surrounding element (e.g. in Java we highlight the line to be debugged, but show the surrounding method name in the Launch view)
start, end and line should point to the text that shall be highlighted for the element

Parameters:
element - the element that is going to be debugged
Returns:
a SyntaxElement that contains the information to be shown in the debugger views in a common neutral way

isSurroundingElement

boolean isSurroundingElement(java.lang.Object element)
returns whether the element has a body and debugger shall stop again at the end of the execution of that element

Parameters:
element - the element that is debugged currently
Returns:
whether the element has a body

createEndElementTO

SyntaxElement createEndElementTO(java.lang.Object element)
computes a SyntaxElement for a surrounding element representing the end position to be highlighted before returning
the containerName should be the name of the file that holds the element
the element name should be a description of the end element
start, end and line should point to the end text to be highlighted

Parameters:
element - the element that is going to be debugged
Returns:
a SyntaxElement that contains the information to be shown in the debugger views in a common neutral way

findElement

java.lang.Object findElement(SyntaxElement se,
                             java.lang.Object actual,
                             int flag)
find the element that corresponds to the given syntax element information

Parameters:
se - the syntax element transfer object
flag -
actual -
Returns:
the corresponding element

getVariables

java.util.List<NameValuePair> getVariables(java.lang.Object element)
collect all available variables for a given element. With this method only the variables themselfs are collected, not their members.
Implementations must consider that elementcan be both a syntax element or an arbitrary java element to collect the member variables from!!

Parameters:
element - the current element
Returns:
a name/value list that contains the variables

getVariableDetailRep

java.lang.String getVariableDetailRep(java.lang.Object element)
compute the string representation of the element ready to display in the variables detail view.

Parameters:
element - the element to be considered
Returns:
the String representation of this element

getVariableSimpleRep

java.lang.String getVariableSimpleRep(java.lang.Object element)
compute a shorter string representation of the element ready to display in the variables view.

Parameters:
element - the element to be considered
Returns:
a string representation of this element

checkVariableHasMembers

boolean checkVariableHasMembers(java.lang.Object element)
check if the variable representation of this element shall show members

Parameters:
element - the element to be considered
Returns:
the decision

setContext

void setContext(java.lang.Object context)
set the current execution context
the context should be cached and can be used to collect information about elements

Parameters:
context - the context

getContext

java.lang.Object getContext()

getAdapterType

java.lang.String getAdapterType()
a unique type must be provided for each implementation

Returns:
the adapterType