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 "Scout"
(added the infobox) |
|||
Line 1: | Line 1: | ||
+ | {{Infobox | ||
+ | | name = Eclipse Scout | ||
+ | | website = http://www.eclipse.org/proposals/scout/ | ||
+ | | download = | ||
+ | | list = eclipse.scout-dev | ||
+ | | newsgroup = eclipse.scout | ||
+ | | product = EclipseScout | ||
+ | }} | ||
+ | |||
{| class="FCK__ShowTableBorders" align="right" | {| class="FCK__ShowTableBorders" align="right" | ||
|- | |- | ||
Line 6: | Line 15: | ||
The [http://www.eclipse.org/proposals/scout/ Eclipse Scout] project is a proposed open source project under the Eclipse Technology Project. | The [http://www.eclipse.org/proposals/scout/ Eclipse Scout] project is a proposed open source project under the Eclipse Technology Project. | ||
− | Please note that these pages are work in progress and still far from complete. | + | Please note that these pages are work in progress and still far from complete. |
== What is it == | == What is it == | ||
Line 14: | Line 23: | ||
Eclipse Scout consists of a runtime and an SDK part. The runtime part consists of approx. five Plug-Ins, the SDK consists of approx. three Plug-Ins. | Eclipse Scout consists of a runtime and an SDK part. The runtime part consists of approx. five Plug-Ins, the SDK consists of approx. three Plug-Ins. | ||
− | The runtime is purely based on equinox, and eclipse. The SDK part is an extension to JDT and PDE with a complete perspective for easy click-and-build of a complete application. | + | The runtime is purely based on equinox, and eclipse. The SDK part is an extension to JDT and PDE with a complete perspective for easy click-and-build of a complete application. |
== Key Concepts == | == Key Concepts == | ||
Line 37: | Line 46: | ||
== Screens == | == Screens == | ||
− | | + | |
== My first application == | == My first application == | ||
Line 50: | Line 59: | ||
== A Scout form == | == A Scout form == | ||
− | To get an idea consider a form with only a title and two string fields. | + | To get an idea consider a form with only a title and two string fields. This form is displayed as a complete SWT form with SWT fields when using the SWT GUI Plug-In. It can also be displayed using the Swing GUI Plug-In, or (in development) using the apache wicket GUI Plug-In to serve the form from the server as a web page. |
− | This form is displayed as a complete SWT form with SWT fields when using the SWT GUI Plug-In. | + | |
− | It can also be displayed using the Swing GUI Plug-In, or (in development) using the apache wicket GUI Plug-In to serve the form from the server as a web page. | + | |
public class PersonForm extends AbstractForm{ | public class PersonForm extends AbstractForm{ | ||
public PersonForm(){ | public PersonForm(){ | ||
− | + | } | |
/** | /** | ||
− | + | * This method and all other getConfigured* and exec* methods can be written manually | |
− | + | * or via the property editor in the scout sdk view | |
− | + | */ | |
− | + | @Override | |
− | + | protected String getConfiguredTitle(){ | |
− | + | return Texts.get("MailReader"); | |
− | + | } | |
− | + | ||
public MainBox getMainBox(){ | public MainBox getMainBox(){ | ||
− | + | return (MainBox)getRootGroupBox(); | |
− | + | } | |
− | + | ||
− | + | public FirstNameField getFirstNameField(){ | |
− | + | return getFieldByClass(FirstNameField.class); | |
− | + | } | |
public LastNameField getLastNameField(){ | public LastNameField getLastNameField(){ | ||
− | + | return getFieldByClass(LastNameField.class); | |
− | + | } | |
− | + | ||
− | + | public OkButton getOkButton(){ | |
− | + | return getFieldByClass(OkButton.class); | |
− | + | } | |
public CancelButton getCancelButton(){ | public CancelButton getCancelButton(){ | ||
− | + | return getFieldByClass(CancelButton.class); | |
− | + | } | |
/** | /** | ||
− | + | * Start the form with the create handler | |
− | + | */ | |
− | + | public void startCreate() throws ProcessingException{ | |
− | + | startInternal(new CreateHandler()); | |
− | + | } | |
/** | /** | ||
− | + | * Start the form with the modify handler | |
− | + | */ | |
− | + | public void startModify() throws ProcessingException{ | |
− | + | startInternal(new ModifyHandler()); | |
− | + | } | |
+ | |||
+ | <br> | ||
− | |||
@Order(10) | @Order(10) | ||
− | + | public class MainBox extends AbstractGroupBox{ | |
@Order(10) | @Order(10) | ||
− | + | public class FirstNameField extends AbstractStringField{ | |
− | + | @Override | |
− | + | protected String getConfiguredLabel(){ | |
− | + | return Texts.get("FirstName"); | |
− | + | } | |
− | + | } | |
− | + | ||
@Order(20) | @Order(20) | ||
− | + | public class LastNameField extends AbstractStringField{ | |
− | + | @Override | |
− | + | protected String getConfiguredLabel(){ | |
− | + | return Texts.get("LastName"); | |
− | + | } | |
− | + | } | |
− | + | ||
@Order(30) | @Order(30) | ||
− | + | public class OkButton extends AbstractOkButton{ | |
− | + | } | |
− | + | ||
− | + | @Order(40) | |
− | + | public class CancelButton extends AbstractCancelButton{ | |
− | + | } | |
− | + | ||
− | + | } | |
+ | <br> | ||
/** | /** | ||
− | + | * This is the form handler when started with .startCreate(); | |
− | + | */ | |
− | + | public class CreateHandler extends AbstractFormHandler{ | |
− | + | protected void execLoad() throws ProcessingException{ | |
− | + | //... | |
− | + | } | |
protected void execStore() throws ProcessingException{ | protected void execStore() throws ProcessingException{ | ||
− | + | //... | |
− | + | } | |
− | + | } | |
/** | /** | ||
− | + | * This is the form handler when started with .startModify(); | |
− | + | */ | |
− | + | public class ModifyHandler extends AbstractFormHandler{ | |
− | + | protected void execLoad() throws ProcessingException{ | |
− | + | //... | |
− | + | } | |
protected void execStore() throws ProcessingException{ | protected void execStore() throws ProcessingException{ | ||
− | + | //... | |
− | + | } | |
− | + | } | |
− | + | ||
} | } | ||
− | <br> | + | <br> |
== How Tos == | == How Tos == |
Revision as of 07:26, 15 March 2010
Eclipse Scout | |
Website | |
[ Download] | |
Community | |
Mailing List • Forums • IRC • mattermost | |
Issues | |
Open • Help Wanted • Bug Day | |
Contribute | |
Browse Source |
The Eclipse Scout project is a proposed open source project under the Eclipse Technology Project.
Please note that these pages are work in progress and still far from complete.
What is it
The eclipse Scout Plug-Ins are used to build applications based on eclipse and equinox. These may be standalone apps, client/server apps, headless apps on server-side equinox etc.
Eclipse Scout consists of a runtime and an SDK part. The runtime part consists of approx. five Plug-Ins, the SDK consists of approx. three Plug-Ins.
The runtime is purely based on equinox, and eclipse. The SDK part is an extension to JDT and PDE with a complete perspective for easy click-and-build of a complete application.
Key Concepts
An applications built with eclipse Scout typically has a UI with perspectives, views, forms and pages. It may also have a back-end part that is running in an application server with server-side equinox. Perspectives, views, forms and pages are not limited to SWT, Scout supports complete GUI pluggability and also supports Swing of the box.
With eclipse Scout you have
- Separation of UI (user interface layer) and GUI (graphical user interface). SWT and Swing GUI factory
- Complete workspace overview, multiple Plug-Ins participating to the same application are visualized with their high-level dependencies
- Much convenience and support in writing only the code you want to write when for example writing a new form with many sections and fields
- Automatic nls support as-you-type
- Soap-based remote service tunnel for hi-speed service remoting to a eclipse server-side application
- Extension point for declaring OSGi services and remote service proxies
- Extension point for UI component to gui widget mapping
- Complete abstration layer for desktop (workbench), outlines (perspectives), forms (views, dialogs) and fields
- Configurable code
- Template concept for creating abstract class libraries
- Strong typed code, minimized "string binding" and therefore best support by PDE and JDT
- No meta data and no one-way code genration; everything is in the Java code you write. If you prefer to write code manually, or via click-and-build, doesn't matter
Screens
My first application
Easiest way to begin is creating a new eclipse Scout project group and choosing the mail sample application. A project group is a set of Plug-Ins that make up your application. Project name: com.example.mail Project parts: client, server, SWT UI This will create the Plug-Ins (listed by layer)
- com.example.mail.ui.swt.core
- com.example.mail.client.core
- com.example.mail.shared.core
- com.example.mail.server.core
A Scout form
To get an idea consider a form with only a title and two string fields. This form is displayed as a complete SWT form with SWT fields when using the SWT GUI Plug-In. It can also be displayed using the Swing GUI Plug-In, or (in development) using the apache wicket GUI Plug-In to serve the form from the server as a web page.
public class PersonForm extends AbstractForm{
public PersonForm(){ }
/** * This method and all other getConfigured* and exec* methods can be written manually * or via the property editor in the scout sdk view */ @Override protected String getConfiguredTitle(){ return Texts.get("MailReader"); }
public MainBox getMainBox(){ return (MainBox)getRootGroupBox(); } public FirstNameField getFirstNameField(){ return getFieldByClass(FirstNameField.class); }
public LastNameField getLastNameField(){ return getFieldByClass(LastNameField.class); } public OkButton getOkButton(){ return getFieldByClass(OkButton.class); }
public CancelButton getCancelButton(){ return getFieldByClass(CancelButton.class); }
/** * Start the form with the create handler */ public void startCreate() throws ProcessingException{ startInternal(new CreateHandler()); }
/** * Start the form with the modify handler */ public void startModify() throws ProcessingException{ startInternal(new ModifyHandler()); }
@Order(10) public class MainBox extends AbstractGroupBox{
@Order(10) public class FirstNameField extends AbstractStringField{ @Override protected String getConfiguredLabel(){ return Texts.get("FirstName"); } }
@Order(20) public class LastNameField extends AbstractStringField{ @Override protected String getConfiguredLabel(){ return Texts.get("LastName"); } }
@Order(30) public class OkButton extends AbstractOkButton{ } @Order(40) public class CancelButton extends AbstractCancelButton{ } }
/** * This is the form handler when started with .startCreate(); */ public class CreateHandler extends AbstractFormHandler{ protected void execLoad() throws ProcessingException{ //... }
protected void execStore() throws ProcessingException{ //... } }
/** * This is the form handler when started with .startModify(); */ public class ModifyHandler extends AbstractFormHandler{ protected void execLoad() throws ProcessingException{ //... }
protected void execStore() throws ProcessingException{ //... } } }
How Tos
Where do I load data into a TablePage?
- override method execLoadTableData where you call an outline service operation that returns a Object[][] field
- Parameter SearchFilter of execLoadTableData contains all additional WHERE clauses (that start with „AND…“) defined in the getConfiguredSearchTerm methods