Jump to: navigation, search

Difference between revisions of "Eclipse4/RCP"

m (Workbench Model)
m (Adding section on application lifecycle (E4Application, properties / command-line arguments, etc.))
(15 intermediate revisions by 3 users not shown)
Line 6: Line 6:
 
*a model-based user interface and a new CSS-based declarative mechanism for application styling. These facilities make it easier to design and customize an application user interface. This also adds greater flexibility to UI layout, making it easier to make a user interface look different from an IDE.
 
*a model-based user interface and a new CSS-based declarative mechanism for application styling. These facilities make it easier to design and customize an application user interface. This also adds greater flexibility to UI layout, making it easier to make a user interface look different from an IDE.
 
*a new services-oriented programming model that makes it easier to use discreet application services of the Eclipse platform.
 
*a new services-oriented programming model that makes it easier to use discreet application services of the Eclipse platform.
 +
*a compatibility layer to allow existing well-behaved Eclipse 3.x applications to take advantage of the new functionality of the Eclipse 4 Application Platform.
  
 
==Programming Model==
 
==Programming Model==
 
*[[Eclipse4/RCP/Architectural_Overview | Architectural Overview]]
 
*[[Eclipse4/RCP/Architectural_Overview | Architectural Overview]]
 +
*[[Eclipse4/RCP/Modeled UI|Modeled UI]]
 +
*[[Eclipse4/RCP/CSS|Styling with CSS]]
 
*[[Eclipse4/RCP/Dependency_Injection | Dependency Injection]]
 
*[[Eclipse4/RCP/Dependency_Injection | Dependency Injection]]
 
*[[Eclipse4/RCP/Contexts | Contexts]]
 
*[[Eclipse4/RCP/Contexts | Contexts]]
 
*[[Eclipse4/RCP/Event_Model | Event Model]]
 
*[[Eclipse4/RCP/Event_Model | Event Model]]
 
==Compatibility Layer==
 
*[[Eclipse4/RCP/Compatibility Layer/Overview|Overview]]
 
*[[Eclipse4/RCP/Compatibility Layer/Overview#When to Use|When to Use]]
 
*[[Eclipse4/RCP/Compatibility Layer/Limitations|Limitations]]
 
**[[Eclipse4/RCP/Compatibility Layer/Limitations#Known Issues|Known Issues]]
 
*[[Eclipse4/RCP/Compatibility Layer/Migration|Migration]]
 
  
 
==Workbench Model==
 
==Workbench Model==
  
 
Source material: http://wiki.eclipse.org/E4/UI/Modeled_UI
 
Source material: http://wiki.eclipse.org/E4/UI/Modeled_UI
 
*[[Eclipse4/RCP/Modeled UI|Modeled UI]]
 
*Contributing to the Model
 
**Model Fragments
 
**Creating Model Elements at Runtime
 
*[[Eclipse4/RCP/Modeled UI/Modifying the Model|Modifying the Model]]
 
**[[Eclipse4/RCP/Modeled UI/Modifying the Model#Reparenting an Element|Reparenting an Element]]
 
**[[Eclipse4/RCP/Modeled UI/Modifying the Model#Changing the Visibility|Changing the Visibility]]
 
*[[Eclipse4/RCP/Modeled UI/Listening to Model Changes|Listening to Model Changes]]
 
*Defining the Application Layout
 
**Creating an e4xmi File
 
**Creating the Model Instance Programmatically
 
*Customizing the Behaviour
 
**Drag and Drop
 
*[[Eclipse4/RCP/Modeled UI/Extending the Model|Extending the Model]]
 
**[[Eclipse4/RCP/Modeled UI/Extending the Model#Defining New Model Elements|Defining New Model Elements]]
 
*[[Eclipse4/RCP/Modeled UI/Addons|Addons]]
 
*Localization
 
*[[Eclipse4/RCP/Modeled UI/Tags|Suggesting Behaviour with Tags]]
 
  
 
===Model Elements===
 
===Model Elements===
Line 54: Line 31:
 
**[[Eclipse4/RCP/Modeled UI/Model Elements#Commands|Commands]]
 
**[[Eclipse4/RCP/Modeled UI/Model Elements#Commands|Commands]]
 
*[[Eclipse4/RCP/Modeled UI/Model Elements#Shared Elements|Shared Elements]]
 
*[[Eclipse4/RCP/Modeled UI/Model Elements#Shared Elements|Shared Elements]]
*[[Eclipse4/RCP/Modeled UI/Best Practices|Best Practices]]
 
  
==Workbench Renderers==
+
===Contributing to the Model===
 +
*[[Eclipse4/RCP/Modeled UI/Application Layout|Defining the Application Layout]]
 +
**[[Eclipse4/RCP/Modeled UI/Application Layout#Creating an e4xmi File|Creating an e4xmi File]]
 +
**[[Eclipse4/RCP/Modeled UI/Application Layout#Creating the Model Instance Programmatically|Creating the Model Instance Programmatically]]
 +
*[[Eclipse4/RCP/Modeled UI/Contributing to the Model|Contributing to the Model]]
 +
**[[Eclipse4/RCP/Modeled UI/Contributing to the Model#Model Fragments|Model Fragments]]
 +
**[[Eclipse4/RCP/Modeled UI/Contributing to the Model#Creating Model Elements at Runtime|Creating Model Elements at Runtime]]
 +
**[[Eclipse4/RCP/Modeled UI/Contributing to the Model#Manipulating the Model With Processors|Manipulating the Model With Processors]]
 +
*[[Eclipse4/RCP/Modeled UI/Modifying the Model|Modifying the Model]]
 +
**[[Eclipse4/RCP/Modeled UI/Modifying the Model#Reparenting an Element|Reparenting an Element]]
 +
**[[Eclipse4/RCP/Modeled UI/Modifying the Model#Changing the Visibility|Changing the Visibility]]
 +
*[[Eclipse4/RCP/Modeled UI/Listening to Model Changes|Listening to Model Changes]]
 +
*Customizing the Behaviour
 +
**Drag and Drop
 +
*[[Eclipse4/RCP/Modeled UI/Addons|Addons]]
 +
*[[Eclipse4/RCP/Modeled UI/Localization|Localization]]
 +
*[[Eclipse4/RCP/Modeled UI/Tags|Suggesting Behaviour with Tags]]
  
With the Eclipse 4 Application Platform, the UI model has been separated from how the model is rendered.  Eclipse 4 ships with a standard SWT renderer, defined in ''org.eclipse.e4.ui.workbench.renderer.swt''. 
+
===Workbench Renderers===
  
Renderers are installed through the XXX extension point.  See YYY for an example of how to add a renderer.
+
* [[Eclipse4/RCP/Modeled UI/Rendering the Model|Rendering the Model]]
 
+
*[[Eclipse4/RCP/Modeled UI/Extending the Model|Extending the Model]]
=== What is the difference between #visible and #toBeRendered? ===
+
**[[Eclipse4/RCP/Modeled UI/Extending the Model#Defining New Model Elements|Defining New Model Elements]]
 
+
''#visible'' captures whether the rendered UI elements are in presentation or hidden from view.  With the SWT renderer, when ''#visible = false'', then the element's widgets are reparented to an invisible shell; the widget is still alive, but won't be seen.
+
 
+
''#toBeRendered'' captures whether this UI element should be rendered; it serves as an instruction to the renderer as to whether the element should or should not be rendered.  When set to ''true'', the renderer should explicitly When set to ''false'', all resources are removed and nulled.
+
  
 
==Application Services==
 
==Application Services==
Line 74: Line 62:
 
*[[Eclipse4/RCP/EAS|The "Twenty Things"]]
 
*[[Eclipse4/RCP/EAS|The "Twenty Things"]]
 
*[[Eclipse4/RCP/EAS/Obtaining Services|Obtaining Services]]
 
*[[Eclipse4/RCP/EAS/Obtaining Services|Obtaining Services]]
*Contributing Services
+
*[[Eclipse4/RCP/EAS/Contributing Services|Contributing Services]]
 
*[[Eclipse4/RCP/EAS/OSGi Services|OSGi Services]]
 
*[[Eclipse4/RCP/EAS/OSGi Services|OSGi Services]]
 
*[[Eclipse4/RCP/EAS/Common Services|Common Services]]
 
*[[Eclipse4/RCP/EAS/Common Services|Common Services]]
 
**[[Eclipse4/RCP/EAS/Common Services#Logging|Logging]]
 
**[[Eclipse4/RCP/EAS/Common Services#Logging|Logging]]
 
**[[Eclipse4/RCP/EAS/Common Services#Adapter Pattern|Adapter Pattern]]
 
**[[Eclipse4/RCP/EAS/Common Services#Adapter Pattern|Adapter Pattern]]
 +
**Internationalization/Translation
 
*[[Eclipse4/RCP/EAS/Workbench Services|Workbench Services]]
 
*[[Eclipse4/RCP/EAS/Workbench Services|Workbench Services]]
 
**[[Eclipse4/RCP/EAS/Workbench Services#Part Service|Part Service]]
 
**[[Eclipse4/RCP/EAS/Workbench Services#Part Service|Part Service]]
Line 85: Line 74:
 
* [[Eclipse4/RCP/EAS/List of All Provided Services|List of All Provided Services]]
 
* [[Eclipse4/RCP/EAS/List of All Provided Services|List of All Provided Services]]
  
== Frequently Asked Questions ==
+
==Application Lifecycle==
 +
 
 +
*[[Eclipse4/RCP/Lifecycle#Overview|Overview]]
 +
 
 +
==Compatibility Layer==
 +
*[[Eclipse4/RCP/Compatibility Layer/Overview|Overview]]
 +
*[[Eclipse4/RCP/Compatibility Layer/Overview#When to Use|When to Use]]
 +
*[[Eclipse4/RCP/Compatibility Layer/Limitations|Limitations]]
 +
**[[Eclipse4/RCP/Compatibility Layer/Limitations#Known Issues|Known Issues]]
 +
*[[Eclipse4/RCP/Compatibility Layer/Migration|Migration]]
 +
 
 +
== Further Information ==
 +
 
 +
* [[Eclipse4/RCP/FAQ|Frequently Asked Questions about Eclipse 4 RCP development]].
 +
* [[Eclipse4/RCP/Modeled UI/Best Practices|Best Practices for Eclipse 4 RCP development]]
 +
* [[Platform_UI/How_to_Contribute | How to Contribute]]
  
We have assembled a set of FAQs for [[Eclipse4/RCP/FAQ|Eclipse 4 development]] and another set for more [[Eclipse/Eclipse SDK 4.0 FAQ|general questions]].
+
== Tutorials ==
 +
* [http://www.vogella.de/articles/Eclipse4RCP/article.html Eclipse 4 RCP Tutorial - by Lars Vogel]
 +
* [http://www.vogella.de/articles/Eclipse4Services/article.html Eclipse 4 Services Tutorial - by Lars Vogel]
 +
* [http://www.vogella.de/articles/Eclipse4CSS/article.html Eclipse 4 CSS Styling - by Lars Vogel]

Revision as of 10:18, 24 October 2012

Introduction

Eclipse 4 is the next generation platform for building Eclipse-based tools and rich client desktop applications. This new release makes it easier for developers to develop and assemble applications and tools based on the Eclipse platform.

Eclipse 4 introduces the following:

  • a model-based user interface and a new CSS-based declarative mechanism for application styling. These facilities make it easier to design and customize an application user interface. This also adds greater flexibility to UI layout, making it easier to make a user interface look different from an IDE.
  • a new services-oriented programming model that makes it easier to use discreet application services of the Eclipse platform.
  • a compatibility layer to allow existing well-behaved Eclipse 3.x applications to take advantage of the new functionality of the Eclipse 4 Application Platform.

Programming Model

Workbench Model

Source material: http://wiki.eclipse.org/E4/UI/Modeled_UI

Model Elements

Contributing to the Model

Workbench Renderers

Application Services

Source material: http://wiki.eclipse.org/E4/Eclipse_Application_Services

Application Lifecycle

Compatibility Layer

Further Information

Tutorials