Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Difference between revisions of "Command Core Expressions"
(→Package Explorer IStructuredSelection) |
(→definitions) |
||
Line 239: | Line 239: | ||
The <b>org.eclipse.core.expressions.definitions</b> extension point was introduced. You can create core expression definitions, and then reference them from other core expressions. | The <b>org.eclipse.core.expressions.definitions</b> extension point was introduced. You can create core expression definitions, and then reference them from other core expressions. | ||
− | < | + | <extension point="org.eclipse.core.expressions.definitions"> |
− | + | <definition id="org.eclipse.ui.examples.contributions.view.inView"> | |
− | + | <with variable="activePartId"> | |
− | + | <equals value="org.eclipse.ui.examples.contributions.view"/> | |
− | + | </with> | |
− | + | </definition> | |
+ | </extension> | ||
Then: | Then: |
Revision as of 13:25, 12 June 2007
Core expressions are declarative or programmatic expressions based on the org.eclipse.core.expressions plugin.
Contents
Expressions and the Command Framework
The Platform Command Framework uses core expressions for enabledWhen and activeWhen for handlers, programmatic activation of contexts, and for visibleWhen for menu contributions. The command framework provides the IEvaluationContext that command core expressions are evaluate against.
The IEvaluationContext provides a default variable for evaluations, and a number of named variables. In the command framework, we provide the global selection as a java.util.Collection
as the default variable. It can either be empty, have one entry (if the ISelection was something like an ITextSelection), or have the contents of an IStructuredSelection.
The <with/> element can be used to change which variable the child expression elements are evaluating against.
Variables and the Command Framework
The variables used for command framework evaluation are listed in ISources.java
Some of the variables may not be set, depending on the current application context when they are evaluated.
Name | Type | Description | Since |
---|---|---|---|
activeContexts | A java.util.Collection of java.lang.String |
This is a collection of the active context IDs as strings. Most commonly used with <iterate/> and <count/>, and can also be used with <test/> and a |
3.2 |
activeActionSets | An IActionSetDescriptor[] |
Note: This is currently not used as points to an internal class and the type might change in any released. |
3.2 |
activeShell | org.eclipse.swt.widgets.Shell |
The currently active shell. It can be a dialog or workbench window shell. |
3.2 |
activeWorkbenchWindowShell | org.eclipse.swt.widgets.Shell |
The active workbench window shell. |
3.2 |
activeWorkbenchWindow | org.eclipse.ui.IWorkbenchWindow |
The active workbench window. |
3.2 |
activeWorkbenchWindow.isCoolbarVisible | java.lang.Boolean |
Reports coolbar visibility for the currently active workbench window. |
3.3 |
activeWorkbenchWindow.isPerspectiveBarVisible | java.lang.Boolean |
Reports perspective bar visibility for the currently active workbench window. |
3.3 |
activeEditor | org.eclipse.ui.IEditorPart |
The currently active editor. This is remembered even if the editor is not the currently active part. |
3.2 |
activeEditorId | java.lang.String |
The ID of the currently active editor. This can be used for expressions on the editor type. |
3.2 |
activePart | org.eclipse.ui.IWorkbenchPart |
The active part, which can be the same as the active editor. |
3.2 |
activePartId | java.lang.String |
The ID of the currently active part. |
3.2 |
activeSite | org.eclipse.ui.IWorkbenchPartSite |
The site of the currently active part. |
3.2 |
selection | org.eclipse.jface.viewers.ISelection |
The current global selection. It can be used in <test/> elements with |
3.2 |
activeMenu | A java.util.Collection of java.lang.String |
This is the list of IDs of the showing context menu. Examples are like #TextEditorRuler or a part ID. Most commonly used with <iterate> and <count>, and can also be used with <test> and a |
3.2 |
activeMenuSelection | org.eclipse.jface.viewers.ISelection |
This is a selection that is available while a context menu is showing. It is the selection from the selection provider used to register the context menu, usually from |
3.3 |
activeMenuEditorInput | org.eclipse.jface.viewers.ISelection |
This is a selection that is available while a context menu is showing. It is the selection from the editor input, usually if includeEditorInput was set to |
3.3 |
activeFocusControl | org.eclipse.swt.widgets.Control |
A control that has focus and has been registered with the IFocusService. |
3.3 |
activeFocusControlId | java.lang.String |
The ID of a control that has focus and has been registered with the |
3.3 |
Expression examples
Here are some examples. I'll pretend all of the examples are deciding when a handler is active.
Basic IStructuredSelection
A view provides a structured selection through its selection provider. An example would be the InfoView in org.eclipse.ui.examples.contributions. You can browse the plugin.xml and
InfoView.java files. The InfoView provides an IStructuredSelection
with 0 or more org.eclipse.ui.examples.contributions.model.Person
.
When using the default variable, you must treat it as an java.util.Collection
. That means using <count> or <iterate>
<activeWhen> <iterate> <instanceof value="org.eclipse.ui.examples.contributions.model.Person"/> </iterate> </activeWhen>
Package Explorer IStructuredSelection
The Package Explorer is a mixture of org.eclipse.core.resources.IResource
, org.eclipse.jdt.core.IJavaElement
and other classes. If you are trying to find all of the *.java files, you would need to:
- Iterate through the default variable
- adapt the selection elements to your class, in this case
IResource
- use one of the org.eclipse.core.resources property testers to test the IResource property
For example:
<activeWhen> <iterate> <adapt type="org.eclipse.core.resources.IResource"> <test property="org.eclipse.core.resources.name" value="*.java"/> </adapt> </iterate> </activeWhen>
New Core Expressions in 3.3
In 3.3 there were 2 additions to the core expressions framework.
count and iterate
The <count/> and <iterate> elements can now be used on any variable that adapts to org.eclipse.core.expressions.ICountable
and org.eclipse.core.expressions.IIterable
or implements the interfaces directly.
The workbench provides an adapter for ISelection
and IStructuredSelection
.
definitions
The org.eclipse.core.expressions.definitions extension point was introduced. You can create core expression definitions, and then reference them from other core expressions.
<extension point="org.eclipse.core.expressions.definitions"> <definition id="org.eclipse.ui.examples.contributions.view.inView"> <with variable="activePartId"> <equals value="org.eclipse.ui.examples.contributions.view"/> </with> </definition> </extension>
Then:
<activeWhen> <reference definitionId="org.eclipse.ui.examples.contributions.view.inView"/> </activeWhen>
The referenced expression will be evaluated at this point.