This view can be used to apply queries on various EMF instance models. The Query Explorer can interact with EMF-based editors such as the generated tree editor, and even with GMF and Graphiti editors. Advanced querying use cases, like pattern match set filtering and detail observation is also available with the Query Explorer.
Query Explorer has the following components:
- Context menu items for resources
- "Magic Green Button"
- Pattern registry
- Result viewer
- View menu
Clicking on "Register patterns in Query Explorer" you can register your patterns to the "Pattern Registry".
Here, you can add your .eiq file to the pattern registry.
"Magic Green Button" (depends on context)
After you have opened your instance model with „Sample Reflective Ecore Model Editor”, you can load it with the "Magic Green Button".
- Load ResourceSet: You can load the whole ResourceSet which is being edited by the editor (this is the default when pressing the green button)
- Load Resource: You can load the Resource of the selected element within the editor which can be done with the appropriate element from the view menu of the green button.
- Load pattern(s): Opening a .eiq file, the magic green button functionality changes. Here we can register our .eiq file.
- Load as model: Or we can load our .eiq file as an instance model, so that queries can be executed on pattern models ("reflection"). This is a special usecase, mostly intended for EMF-IncQuery developers.
The Pattern Registry on the left shows the loaded patterns according to the package hierarchy. It distinguishes them by their source, either coming from a generated EMF-IncQuery project from the host workspace or manually loaded ones from the host Eclipse. You can select and deselect single patterns or groups of patterns inside the Pattern Registry which will result the loading and unloading of queries for every instance model loaded into the Query Explorer. You can also change the way of package presentation (flat or hierarchical) in the view menu of the Query Explorer.
- Showing plugin and runtime patterndefinitions
- Unregister pattern: remove a pattern from the Registry (if you don't need it anymore)
- This has an immediate effect on the result viewer.
- Note that plugin patterns can not be unloaded.
- Show location: useful for workspace patterns, you can immediate jump to the definition of a pattern (inside the query editor).
- Checkbox filtering: useful for temporarily disabling certain patterns.
- This has an immediate effect on the result viewer (checked patterns are in the viewer).
If at least one query and instance model is loaded, the middle section of the Query Explorer will present the match sets in a tree structure. The top level element corresponds to an editor-instance model pair (because the same instance model can be loaded from different editors and the reversed way is also possible). The elements under the top level elements correspond to the queries and the low-level elements represent the match set of the given query. Note that the contents of the tree viewer are automatically updated upon changes occurring in the match sets of the pattern.
- The behaviour depends on the state of the:
- instance model
- Data binding: EMF-IncQuery provides a simple data binding facility that can be used to bind pattern matches to UI elements.
- @QueryExplorer: the message parameter of the Query explorer annotation defines the label feature of the selected match.
- @ObservableValue: allows the developer to customize the appearance of a match inside the Details panel.
See more at EMFIncQuery/UserDocumentation/Databinding
- It automatically follows any changes to the attached instance model, the pattern registry (checked state) and the details/filters view. However, if you change the pattern definition in your .eiq file, the file needs to be re-loaded into the Query Explorer via the green button.
- Navigate to source (Show location): useful for jumping to relevant sections of
- the attached instance model: can be activated on individual matches, to reveal and select-highlight any EObjects contained in a match
- the pattern definition: can be activated on queries.
The view of this content is based on the selection inside the tree viewer. If you select a pattern then you can specify filters on the pattern parameters. However, if you select a single match, you can observe the values of the pattern parameters which are data bound to the appropriate model elements thus automatically refreshed upon match changing.
- Choosing a concrete match or matcher: the details mode is useful for investigating individual matches, while filters mode can be activated by selecting a matcher (query).
- Filters mode allows for input parameter binding (matcher filter) – popup window depends on the type of the parameter (object or scalar such as string or number). Input parameter binding allows to define a filter on the result set of the query, by binding one or more parameters to a given value (after the binding, only those results are shown which are allowed by the binding).
- These settings have an immediate effect on the result viewer.
- You can change the way of the pattern registry’s package presentation (flat or hierarchical) in the view menu of the Query Explorer.
- You can reset the UI. This is useful if the Query Explorer gets into an inconsistent state (due to e.g. an error).