Jump to: navigation, search

Difference between revisions of "Eclipse4/API/AppContext"

< Eclipse4‎ | API
(IEventBroker)
(EModelService)
(5 intermediate revisions by 2 users not shown)
Line 8: Line 8:
  
 
This service presents API appropriate for working with the UI Model. If contains methods to search for model elements via a variety of search parameters a well as operations that can be used to manipulate the model to achieve changes in the UI.
 
This service presents API appropriate for working with the UI Model. If contains methods to search for model elements via a variety of search parameters a well as operations that can be used to manipulate the model to achieve changes in the UI.
 +
 +
:Since we decided to remove '''MPartDescriptor''' we should tag '''getPartDescriptor(String)''' as '''@noreference''' or remove it to avoid leaking non-API types. [[User:Michael_rennie@ca.ibm.com|Michael_Rennie@ca.ibm.com]]
  
 
=== EPartService  ===
 
=== EPartService  ===
Line 27: Line 29:
 
:The EContextService is important to programmatic clients, for activating contexts in their '''@PostConstruct''' or managing context activations based on the state of their controls (which widgets have focus, etc). [[User:Pwebster.ca.ibm.com|Pwebster.ca.ibm.com]]
 
:The EContextService is important to programmatic clients, for activating contexts in their '''@PostConstruct''' or managing context activations based on the state of their controls (which widgets have focus, etc). [[User:Pwebster.ca.ibm.com|Pwebster.ca.ibm.com]]
  
:Except for deferUpdates(*), that should be marked as @noreference [[User:Pwebster.ca.ibm.com|Pwebster.ca.ibm.com]]
+
:Except for '''deferUpdates(*)''', that should be marked as '''@noreference''' [[User:Pwebster.ca.ibm.com|Pwebster.ca.ibm.com]]
  
 
=== ECommandService  ===
 
=== ECommandService  ===
Line 34: Line 36:
  
 
:ECommandService allows interaction with the Command API, accessing commands and creating parameterized commands for execution.  It's like a global dictionary. [[User:Pwebster.ca.ibm.com|Pwebster.ca.ibm.com]]
 
:ECommandService allows interaction with the Command API, accessing commands and creating parameterized commands for execution.  It's like a global dictionary. [[User:Pwebster.ca.ibm.com|Pwebster.ca.ibm.com]]
 +
 +
:We can mark '''defineCategory(*)''' and '''defineCommand(*)''' as '''@noreference''' since those would be defined in the model. [[User:Pwebster.ca.ibm.com|Pwebster.ca.ibm.com]]
  
 
=== EHandlerService  ===
 
=== EHandlerService  ===
Line 41: Line 45:
 
:The ParameterizedCommand contains the information of what to execute (i.e. it comes from the MenuItem or ToolItem or KeyBinding).  The EHandlerService must then look up the handler to execute and actually execute it.  The ECommandService is for managing commands, but it knows nothing of handlers.  [[User:Pwebster.ca.ibm.com|Pwebster.ca.ibm.com]]
 
:The ParameterizedCommand contains the information of what to execute (i.e. it comes from the MenuItem or ToolItem or KeyBinding).  The EHandlerService must then look up the handler to execute and actually execute it.  The ECommandService is for managing commands, but it knows nothing of handlers.  [[User:Pwebster.ca.ibm.com|Pwebster.ca.ibm.com]]
  
:getContext() is used in the ContributedAction, but it is cast to the implementation.  It could probably be removed. [[User:Pwebster.ca.ibm.com|Pwebster.ca.ibm.com]]
+
:'''getContext()''' is used in the ContributedAction, but it is cast to the implementation.  It could probably be removed. [[User:Pwebster.ca.ibm.com|Pwebster.ca.ibm.com]]
  
 
=== EMenuService  ===
 
=== EMenuService  ===
Line 47: Line 51:
 
Provides a single API to register context menus.<br>  
 
Provides a single API to register context menus.<br>  
  
:This method is used to instantiate an MPopupMenu and hook it up to the parent Control that's passed in.  Contribution classes (MParts) need access to this.  This probably should wait until after Kepler, as it probably could be replaced with some work and having the MPart call '''presentationEngine.createGui(mPopupMenu, control, mPart.getContext())''' [[User:Pwebster.ca.ibm.com|Pwebster.ca.ibm.com]]
+
:This method is used to instantiate an MPopupMenu and hook it up to the parent Control that's passed in.  Contribution classes (MParts) need access to this.  This should wait until after Kepler, as it probably could be replaced with some work and having the MPart call '''presentationEngine.createGui(mPopupMenu, control, mPart.getContext())''' [[User:Pwebster.ca.ibm.com|Pwebster.ca.ibm.com]]
  
 
=== ESelectionService  ===
 
=== ESelectionService  ===

Revision as of 10:58, 8 March 2013

Services and Context Values

This section will describe which elements are guaranteed to be available for injection through the IEclipseContext. The most common of these will be the 'standard' services but will also reference some other 'value' elements (i.e. the injected value is *not* an interface itself but some discreet value such as a preference or model event).

Basic Services

EModelService

This service presents API appropriate for working with the UI Model. If contains methods to search for model elements via a variety of search parameters a well as operations that can be used to manipulate the model to achieve changes in the UI.

Since we decided to remove MPartDescriptor we should tag getPartDescriptor(String) as @noreference or remove it to avoid leaking non-API types. Michael_Rennie@ca.ibm.com

EPartService

This service provides API that deals with the runtime aspects of managin the current workbench UI such as opening new parts or getting / setting the 'active' part...

Can currently NOT used to open new parts as you cannot define the container, see https://bugs.eclipse.org/bugs/show_bug.cgi?id=390971 Lars.Vogel@gmail.com

EBindingService

This service allows manipulation of the key binding structures.

This services is used by the model to push key bindings into the runtime. It needs polish and I don't think it should be API for Kepler. Pwebster.ca.ibm.com

EContextService

Provides API to control the active 'chain' within a context structure.

The EContextService is important to programmatic clients, for activating contexts in their @PostConstruct or managing context activations based on the state of their controls (which widgets have focus, etc). Pwebster.ca.ibm.com
Except for deferUpdates(*), that should be marked as @noreference Pwebster.ca.ibm.com

ECommandService

Provides API to construct Commands.

ECommandService allows interaction with the Command API, accessing commands and creating parameterized commands for execution. It's like a global dictionary. Pwebster.ca.ibm.com
We can mark defineCategory(*) and defineCommand(*) as @noreference since those would be defined in the model. Pwebster.ca.ibm.com

EHandlerService

This provides API to manage Handlers.

The ParameterizedCommand contains the information of what to execute (i.e. it comes from the MenuItem or ToolItem or KeyBinding). The EHandlerService must then look up the handler to execute and actually execute it. The ECommandService is for managing commands, but it knows nothing of handlers. Pwebster.ca.ibm.com
getContext() is used in the ContributedAction, but it is cast to the implementation. It could probably be removed. Pwebster.ca.ibm.com

EMenuService

Provides a single API to register context menus.

This method is used to instantiate an MPopupMenu and hook it up to the parent Control that's passed in. Contribution classes (MParts) need access to this. This should wait until after Kepler, as it probably could be replaced with some work and having the MPart call presentationEngine.createGui(mPopupMenu, control, mPart.getContext()) Pwebster.ca.ibm.com

ESelectionService

This allows for registration of listeners regarding the current selection. Note that this has more functionality in it than the @Inject approach since it provides 'post selection' (i.e. deferred) listeners as well as regular listeners.

IEventBroker

Allows access to the OSGI event broker and can be used to register / unregister listeners on the UIModel.

Note that this API is incomplete, as it doesn't allow you to unregister an EventHandler from a specific topic https://bugs.eclipse.org/bugs/show_bug.cgi?id=331645 Pwebster.ca.ibm.com