The graphical sub-system of the Eclipse platform is made up of two components: SWT, the Standard Widget Toolkit ;and JFace, an architecture-independent modeling layer. This module describes how JFace extends SWT with viewers, commands, wizards, dialogs, and field assist.
L0043 - Interfacing to Eclipse Standard ViewsTonny Madsen
Eclipse contains a large number of standard views that can be extended to support new languages or data models. This model focus on the interface to the most common Eclipse views: Problems View, Outline View, and the Properties View.
L0018 - SWT - The Standard Widget ToolkitTonny Madsen
The graphical sub-system of the Eclipse platform is made up of two components: SWT, the Standard Widget Toolkit; and JFace, an architecture independent modeling layer. This module describes how to use SWT in views and editors and how different resources must be managed.
A bean is a reusable software component based on Sun's JavaBeans specification that can be manipulated visually in a builder tool.“
The JavaBeans technology enables vendors to create environments that make it dramatically easier to develop user interfaces for Java applications.
L0043 - Interfacing to Eclipse Standard ViewsTonny Madsen
Eclipse contains a large number of standard views that can be extended to support new languages or data models. This model focus on the interface to the most common Eclipse views: Problems View, Outline View, and the Properties View.
L0018 - SWT - The Standard Widget ToolkitTonny Madsen
The graphical sub-system of the Eclipse platform is made up of two components: SWT, the Standard Widget Toolkit; and JFace, an architecture independent modeling layer. This module describes how to use SWT in views and editors and how different resources must be managed.
A bean is a reusable software component based on Sun's JavaBeans specification that can be manipulated visually in a builder tool.“
The JavaBeans technology enables vendors to create environments that make it dramatically easier to develop user interfaces for Java applications.
Introduction to java beans, java beans, Core java, j2se, getting started with java beans programming, java to standard edition, beans in java, beans programming in java
Producing Readable Output with iSQL*Plus - Oracle Data BaseSalman Memon
After completing this lesson, you should be able to
do the following:
Produce queries that require a substitution variable
Customize the iSQL*Plus environment
Produce more readable output
Create and execute script files
http://phpexecutor.com
An overview of the code that makes up the skeleton of a basic RCP application. This includes the basics for advisors and perspectives. This module also describes the basics of how to launch and debug an RCP application.
Introduction to java beans, java beans, Core java, j2se, getting started with java beans programming, java to standard edition, beans in java, beans programming in java
Producing Readable Output with iSQL*Plus - Oracle Data BaseSalman Memon
After completing this lesson, you should be able to
do the following:
Produce queries that require a substitution variable
Customize the iSQL*Plus environment
Produce more readable output
Create and execute script files
http://phpexecutor.com
An overview of the code that makes up the skeleton of a basic RCP application. This includes the basics for advisors and perspectives. This module also describes the basics of how to launch and debug an RCP application.
React table tutorial use filter (part 2)Katy Slemon
In this React Table tutorial, we will learn how to implement useFilter in our react-table example. Further, we will explore how useFilter works in React Table.
react-slides.pdf gives information about react libraryjanet736113
React is a framework that employs Webpack to automatically compile React, JSX, and ES6 code while handling CSS file prefixes. React is a JavaScript-based UI development library. Although React is a library rather than a language, it is widely used in web development. The library first appeared in May 2013 and is now one of the most commonly used frontend libraries for web development.
React offers various extensions for entire application architectural support, such as Flux and React Native, beyond mere UI,When compared to other technologies on the market, React is a new technology. Jordan Walke, a software engineer at Facebook, founded the library in 2011, giving it life. The likes of XHP, a straightforward HTML component framework for PHP, have an influence on React. React's newsfeed was its debut application in 2011. Later, Instagram picks it up and incorporates it into their platform,
Advantages
Makes use of the JavaScript structure known as virtual DOM. Since JavaScript's virtual DOM is quicker than the conventional DOM, this will boost the speed of programs.
Can be used with various systems and on both client and server sides is commendable.
Components and identify trends make larger apps easier to manage by increasing clarity.
Limitations
Only addresses the app's angle and distance; as a result, additional techniques must be selected if you want a full collection of development tools.
Employs inline scripting and JSX, which some programmers might find uncomfortable.
L0016 - The Structure of an Eclipse Plug-inTonny Madsen
This is a detailed description of the different parts that makes up an Eclipse plug-in. The module focuses on the purpose of the different files of a plug-in such as plugin.xml and the OSGi manifest file, MANIFEST.MF. The module also describes how plug-ins are developed in Eclipse with PDE, the Plug-in Development Environment
L0001 - The Terminology of the Eclipse PlatformTonny Madsen
This is a basic walk-through of all the central concepts of the Eclipse platform and how these fit together. The primary goal of this module is to establish a common terminology.
EclipseCon '11 - Using Adapters to Handle Menus and Handlers in Large Scale A...Tonny Madsen
How do you effectively control commands, menus and handlers in a large pluggable application to get a consistent use of the commands across the complete application? This is definitely one of the areas where the Eclipse IDE is not a good sample application. Just notice how all team providers add commands with the same text and function and how multiple identical menu items some times show up...
Here the Adapter framework of Eclipse can be a big help if used properly.
While the Adapter framework arguably is one of the more difficult to understand and use properly, the is also a framework that will solve many of the problems you might face is larger non-trivial applications. Especially when used in conjunction with the menus extension point and handlers. This presentation will show how to use the adapter framework of the Eclipse framework with special emphasis on the menus and handlers.
For PROSA:
Onsdag 26.1. Introduktion til Eclipse
Eclipse er et fremstormende open source-udviklingsmiljø (Eclipse IDE), der oprindeligt er udviklet med henblik på Java.
Kom og mød Tonny Madsen, formand for Eclipse Danmark, foreningen for både professionelle, virksomheder og brugere.
Tonny er til daglig direktør i RCP Company, der har specialiseret sig i udvikling, uddannelse og konsulentydelser inden for Eclipse.
Han vil give jer et overblik over platformen, både teknisk, projektmæssigt, organisering, muligheder, fremtiden etc.
ITU - MDD – Model-to-Model TransformationsTonny Madsen
This presentation describes the use Model-to-Model transformations (M2M). It focus on the why, what and how.
This presentation is developed for MDD 2010 course at ITU, Denmark.
”Medbring din laptop, netbook, mac el.lign. og få i løbet af denne workshop dine første hands-on erfaringer med Eclipse.”
Arrangement for IDA.
In Danish
IDA - Fra forretningside til bundlinie: Eclipse følger dig hele vejen (In Dan...Tonny Madsen
”Har du tænkt på at skifte til et leverandøruafhængigt udviklingsmiljø? Det er gratis, og du får ét udviklingsmiljø, som du kan programmere alt fra Java, C, C++ og PHP til databaser og webserver i. Vi får dig til at se værdien af værktøjet, og se flere forskellige eksempler på brugen af Eclipse i praksis.
Kom og hør formanden for eclipse.dk, Tonny Madsen, Direktør, RCP Kompaniet fortælle om Eclipse.
Eclipse er component-baseret, og du får indsigt i hvordan du sammensætter Eclipse til netop dine behov.”
In Danish
This presentation describes Eclipse Modeling Framework – EMF. It has two basic purposes:
Introduce you to the EMF techniques needed in the rest of the course
Introduce you to the architecture and components of the EMF project
This presentation is developed for MDD 2010 course at ITU, Denmark.
This presentation shows how Eclipse plug-ins are developed. It has two purposes:
Introduce you to the architecture and techniques of a major component based application
Introduce you to basic Eclipse plug-in development – this will hopefully ease the needed programming in the rest of the course
This presentation is developed for MDD 2010 course at ITU, Denmark.
This presentation describes the use of XText.
This presentation assumes a good knowledge of Data Modeling and Grammars as previously presented.
This presentation is developed for MDD 2010 course at ITU, Denmark.
eclipse.dk - Eclipse RCP Under the HoodTonny Madsen
Denne event er en kombination af en tutorial day og en live demonstration af en "full featured" Eclipse RCP applikation hvor udviklingen kommenteres on-the-fly.
Medbring din laptop og prøv selv hvordan man forholdsvis let kan starte en Eclipse RCP applikation. Det er meget vigtigt at du allerede har Eclipse 3.6 installeret på maskinen.Følgende emner vil blive demonstreret / omtalt
Eclipse RCP Arkitektur
Konfiguration (OSGi console, plugin.xml, manifest.mf...)
Packaging
Extension Points
UI / SWT / JFace
Editors / Views
Building and Testing
Eclipse Summit Europe '08 - Implementing Screen Flows in Eclipse RCP Applicat...Tonny Madsen
Eclipse RCP – about of the box – is a fantastic platform for building applications. Especially if these are for engineer-like users
When Eclipse RCP is used for enterprise applications – like for banks – one of major shortcomings is found in the missing ability to control screen flows.
This talk describes how screen flow was implemented in a major banking application where we expect to add 2-300 screen flows, some very simple and some very complex.
EclipseCon '09 - The Happy Marriage of EMF, Data binding, UI Forms and Field ...Tonny Madsen
Imagine you have to develop a larger Eclipse RCP based application with many dozens - maybe hundreds - of views, dialogs and wizards all based on a large common EMF based data model. How do you make sure you get a consistent and modern interface that can be extended in the future without redesigning everything again and again?
javagruppen.dk - e4, the next generation Eclipse platformTonny Madsen
After 13 years, the Eclipse framework gets it second make-over. The new work is termed e4 and will be included in Eclipse 4.0.
In the first make-over the run-time was replaced in Eclipse 3.0 with OSGi to get a better and more stable foundation for plug-ins. This time the user interface and contributions are modernized for use in Eclipse 4.0.
In this session, we will see some of the insides of the new paradigms in e4.
This presentation describes different modeling techniques. It has three basic purposes:
Give you an overview of some of the different types of models
Give you a set of tools to decide how to create a (good) model for a problem
Give you an overview of some of the different modeling techniques
This presentation is developed for MDD 2010 course at ITU, Denmark
Students, digital devices and success - Andreas Schleicher - 27 May 2024..pptxEduSkills OECD
Andreas Schleicher presents at the OECD webinar ‘Digital devices in schools: detrimental distraction or secret to success?’ on 27 May 2024. The presentation was based on findings from PISA 2022 results and the webinar helped launch the PISA in Focus ‘Managing screen time: How to protect and equip students against distraction’ https://www.oecd-ilibrary.org/education/managing-screen-time_7c225af4-en and the OECD Education Policy Perspective ‘Students, digital devices and success’ can be found here - https://oe.cd/il/5yV
We all have good and bad thoughts from time to time and situation to situation. We are bombarded daily with spiraling thoughts(both negative and positive) creating all-consuming feel , making us difficult to manage with associated suffering. Good thoughts are like our Mob Signal (Positive thought) amidst noise(negative thought) in the atmosphere. Negative thoughts like noise outweigh positive thoughts. These thoughts often create unwanted confusion, trouble, stress and frustration in our mind as well as chaos in our physical world. Negative thoughts are also known as “distorted thinking”.
How to Split Bills in the Odoo 17 POS ModuleCeline George
Bills have a main role in point of sale procedure. It will help to track sales, handling payments and giving receipts to customers. Bill splitting also has an important role in POS. For example, If some friends come together for dinner and if they want to divide the bill then it is possible by POS bill splitting. This slide will show how to split bills in odoo 17 POS.
How to Make a Field invisible in Odoo 17Celine George
It is possible to hide or invisible some fields in odoo. Commonly using “invisible” attribute in the field definition to invisible the fields. This slide will show how to make a field invisible in odoo 17.
The Roman Empire A Historical Colossus.pdfkaushalkr1407
The Roman Empire, a vast and enduring power, stands as one of history's most remarkable civilizations, leaving an indelible imprint on the world. It emerged from the Roman Republic, transitioning into an imperial powerhouse under the leadership of Augustus Caesar in 27 BCE. This transformation marked the beginning of an era defined by unprecedented territorial expansion, architectural marvels, and profound cultural influence.
The empire's roots lie in the city of Rome, founded, according to legend, by Romulus in 753 BCE. Over centuries, Rome evolved from a small settlement to a formidable republic, characterized by a complex political system with elected officials and checks on power. However, internal strife, class conflicts, and military ambitions paved the way for the end of the Republic. Julius Caesar’s dictatorship and subsequent assassination in 44 BCE created a power vacuum, leading to a civil war. Octavian, later Augustus, emerged victorious, heralding the Roman Empire’s birth.
Under Augustus, the empire experienced the Pax Romana, a 200-year period of relative peace and stability. Augustus reformed the military, established efficient administrative systems, and initiated grand construction projects. The empire's borders expanded, encompassing territories from Britain to Egypt and from Spain to the Euphrates. Roman legions, renowned for their discipline and engineering prowess, secured and maintained these vast territories, building roads, fortifications, and cities that facilitated control and integration.
The Roman Empire’s society was hierarchical, with a rigid class system. At the top were the patricians, wealthy elites who held significant political power. Below them were the plebeians, free citizens with limited political influence, and the vast numbers of slaves who formed the backbone of the economy. The family unit was central, governed by the paterfamilias, the male head who held absolute authority.
Culturally, the Romans were eclectic, absorbing and adapting elements from the civilizations they encountered, particularly the Greeks. Roman art, literature, and philosophy reflected this synthesis, creating a rich cultural tapestry. Latin, the Roman language, became the lingua franca of the Western world, influencing numerous modern languages.
Roman architecture and engineering achievements were monumental. They perfected the arch, vault, and dome, constructing enduring structures like the Colosseum, Pantheon, and aqueducts. These engineering marvels not only showcased Roman ingenuity but also served practical purposes, from public entertainment to water supply.
Instructions for Submissions thorugh G- Classroom.pptxJheel Barad
This presentation provides a briefing on how to upload submissions and documents in Google Classroom. It was prepared as part of an orientation for new Sainik School in-service teacher trainees. As a training officer, my goal is to ensure that you are comfortable and proficient with this essential tool for managing assignments and fostering student engagement.
Model Attribute Check Company Auto PropertyCeline George
In Odoo, the multi-company feature allows you to manage multiple companies within a single Odoo database instance. Each company can have its own configurations while still sharing common resources such as products, customers, and suppliers.
1. JFace
The graphical sub-system of the Eclipse platform is made up of two
components: SWT, the Standard Widget Toolkit ;and JFace, an
architecture-independent modeling layer. This module describes how
JFace extends SWT with viewers, commands, wizards, dialogs, and field
assist.
Redistribution and other use of this material requires written permission from The RCP Company.
L0001 - 2010-11-27
2. Eclipse User Interface Layers
4 Layers: Eclipse RCP
Preferences
Commands
Registry
Workbench
The Eclipse Workbench
Jobs
ICU
JFace
Overall look-n-feel
SWT
JFace OSGi/Run-time
Architecture-independent models
SWT
Platform independent API yet rather close to the metal
Native widgets
Platform dependent: Windows, Linux, Mac, Unix
The “Eclipse User Interface Guidelines” governs the look-n-feel of the
workbench and JFace
Consequently (nearly) all Eclipse RCP based applications look the same!
Use the SWT Bible “The Definitive Guide to SWT and JFace” by Robert Harris
and Rob Warner
L0001 - 2010-11-27
3. JFace
A set of classes for handling many common UI programming tasks
Viewers handle the drudgery of populating, sorting, filtering, and
updating widgets
Actions and contributions introduce semantics for defining user
actions and specifying where to make them available
Image and font registries provide common patterns for handling UI
resources
Dialogs and wizards define a framework for building complex
interactions with the user
Field assist provides classes that help guide the user in choosing
appropriate content for fields in dialogs, wizards, or forms
Does not hide SWT; rather, it extends SWT
L0001 - 2010-11-27
4. The JFace Viewers
Provides a glue layer between the application model and SWT
Viewers exists for most structured widgets – e.g.
Combo boxes
Lists
Trees
Tables
Uses common interfaces to control:
The content of the viewer: IContentProvider and child interfaces
The text and image of the cells: ILabelProvider and child interfaces
Decoration of images: ILabelDecorator
Filtering: ViewerFilter
Sorting: ViewerComparator
L0001 - 2010-11-27
5. Using JFace Viewers
Common design pattern
Create viewer in parent Composite
Assign layout to the Control of the viewer
Add columns
new TableViewerColumn(viewer, ...)
Set text and width of columns
Set content provider – normally ArrayContentProvider
The interface depends on the type of the viewer
Install commands and action
Set input
Must be last
Call viewer.refresh(…) when changes are made to the data
L0001 - 2010-11-27
6. Using JFace Viewers
Also possible to specify background, foreground, font, tooltip…
public void createPartControl(Composite parent) {
TableViewer viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL |
SWT.V_SCROLL);
viewer.setContentProvider(new ArrayContentProvider());
Table table = viewer.getTable();
TableViewerColumn c;
table.setHeaderVisible(true);
c = new TableViewerColumn(viewer, SWT.LEFT);
c.setLabelProvider(new NameLabelProvider());
c.getColumn().setText("Name");
c.getColumn().setWidth(100);
c = new TableViewerColumn(viewer, SWT.LEFT);
c.setLabelProvider(new RestLabelProvider());
c.getColumn().setText("Rest");
c.getColumn().setWidth(300);
viewer.setInput(getSite().getShell().getDisplay().getFontList(null, true));
}
private class NameLabelProvider extends ColumnLabelProvider {
@Override
public String getText(Object element) {
return ((FontData) element).getName();
}
}
L0001 - 2010-11-27
7. IContentProvider
Provides the glue between the content of the application model and the
appropriate viewer
IStructuredContentProvider – used for combo boxes, lists and tables
ITreeContentProvider – used for trees
ILazyContentProvider – used for SWT.VIRTUAL tables
ILazyTreeContentProvider – used for SWT.VIRTUAL trees
For arrays and List use ArrayContentProvider
public interface IStructuredContentProvider {
public void dispose();
public void inputChanged(Viewer viewer, Object oldInput, Object newInput);
public Object[] getElements(Object inputElement);
}
L0001 - 2010-11-27
8. ILabelProvider
ILabelProvider provides the basic label and image for a row object in a
viewer
Given the row object, the text, image. colors, font, ... for the cell is
returned
Several interesting implementations
ColumnLabelProvider - base class for label providers for
TableViewerColumn
OwnerDrawLabelProvider - base class for label providers that wish to
paint their cells
CellLabelProvider - don’t use this; use ColumnLabelProvider instead
L0001 - 2010-11-27
9. ILabelDecorator
ILabelDecorator provides a standard means to
decorate an existing label and image
Used extensively in Eclipse IDE: team and
class information
Label decorators can be registered as
extensions
Activated automatically based on the class
of the current row object of the viewer
L0001 - 2010-11-27
10. Label Providers for Table and Tree (3.3 and later edition)
For Table and Tree, a label provider can be registered per column
Use superclass ColumnLabelProvider and not CellLabelProvider
This allows reuse of label providers across projects
L0001 - 2010-11-27
11. Sample Decorator
This decorator will add a bullet to the top-right corner of the image for an
IRes object, if the IActionFilter of the object returns true for the children
property
The extension point currently uses the “old” style expression form
<extension
point="org.eclipse.ui.decorators">
<decorator
adaptable="true"
icon="icons/sample_decorator.gif"
id="com.rcpcompany.demo.providers.ui.decorators.decorator"
label="Resource Decorator"
lightweight="true"
location="TOP_RIGHT"
state="true">
<enablement>
<and>
<objectClass
name="com.rcpcompany.demo.providers.model.IRes"/>
<objectState
name="children"
value="true"/>
</and>
</enablement>
</decorator>
</extension>
L0001 - 2010-11-27
12. Filters and Sorters
Viewers support filtering
viewer.addFilter(ViewerFilter) – adds a filter to a viewer
Implement filter.select(viewer, parentElement, element)
•element is the object of the current row
Consider using the label providers for the different columns along
with SearchPattern
Multiple filters are logically and’ed
For trees use FilteredTree
final TableViewer viewer = new TableViewer(top, SWT.SINGLE);
...
viewer.addFilter(new ViewerFilter() {
public boolean select(Viewer viewer, Object parentElement, Object element) {
Contact c = (Contact)element;
return ...;
}
});
L0001 - 2010-11-27
13. Using SearchPattern
Create a new Pattern
SeachPattern sp = new SearchPattern();
sp.setPattern(“”)=;
Set the current pattern
sp.setPattern(“*M”);
Test the pattern
sp.matches(“Madsen”);
L0001 - 2010-11-27
14. Filters and Sorters
Viewers support sorting
viewer.setComparator(ViewerComparator) – sets the comparator/sorter
of a viewer
For Table the header can be changed to show the current sort
setSortColumn(TableColumn) and setSortDirection(int)
L0001 - 2010-11-27
15. Lab Exercise
Create a view with a JFace table
Add columns for first name and family name
Create both content and label providers (3.3 edition style)
Add a filter for the full name of a contact
Check out SearchPattern (3.3 and later edition)
L0001 - 2010-11-27
16. Lab Exercise
Extra: When the “arrow down” key is pressed in the filter box, move the
focus to the table
Extra: And back again
Extra: Add column for all cities of a contact and filter on this as well as the
full name
Extra: Add a dialog to select the shown columns
L0001 - 2010-11-27
17. When You Want to…
Paint specific columns of a TableViewer yourself
Use OwnerDrawLabelProvider
Decorate images
Use new DecoratingLabelProvider(yourLabelProvider,
PlatformUI.getWorkbench().getDecoratorManager().getLabelDecorator())
Control navigation in a Table or Tree
Subclass and use TableViewerFocusCellManager and
TreeViewerFocusCellManager
Edit the values in a column
See the EditingSupport class and subclasses
Remember to use SWT.FULL_SELECTION
L0001 - 2010-11-27
18. When You Want to…
Get the item of a TableViewer at a specific event position
Use table.getItem(new Point(e.x,e.y))
Hide the selection when nothing can be selected
v.getTable().addMouseListener(new MouseAdapter() {
public void mouseDown(MouseEvent e) {
if( v.getTable().getItem(new Point(e.x,e.y)) == null ) {
v.setSelection(new StructuredSelection());
}
}
});
L0001 - 2010-11-27
19. Management of Image Resources
Two types of image resources in Eclipse
Image
1-to-1 with the underlying image resource
Must be disposed when not used any more
ImageDescription
Lightweight descriptor of image
The Plugin class contains an image manager!
AbstractUIPlugin.imageDescriptorFromPlugin()
Different method must be used if using multiple monitors (and thus
possibly multiple Displays)
The platform also contains a large set of shared images that can cover
many usages:
PlatformUI.getWorkbench().getSharedImages().getImage(…)
L0001 - 2010-11-27
20. Managing Resources - JFaceResources
JFace contains a resource manager that handles fonts, images, and colors
You store RGB, FontData and ImageDescriptor objects and you retrieve
Color, Font and Image objects
As you don’t create these resources, you don’t have to dispose them!!!
JFaceResources contains a lot of standard resources:
All colors and fonts as specified in the current theme
L0001 - 2010-11-27
21. Managing Resources - JFaceResources
To add a color – really RGB value:
RGB rgb = new RGB(100, 100, 100);
JFaceResources.getColorRegistry().put(“BGColor”, rgb);
To retrieve the color:
Color color = JFaceResources.getColorRegistry().get(“BGColor”);
To monitor changes to the resources:
JFaceResources.getColorRegistry().addListener(new IPropertyChangeListener() {
public void propertyChange(PropertyChangeEvent event) {
...
}
});
Remember to remove the listener as well!
Likewise for fonts and images
L0001 - 2010-11-27
22. Managing Resources - JFaceResources
You can add images from your plug-in in your Activator.start(...) using the
following code
OK, as the existence of nor checked
ImageDescriptor id = imageDescriptorFromPlugin("com.rcpcompany.cexx", "icons/exit16.gif");
JFaceResources.getImageRegistry().put("exit", id);
L0001 - 2010-11-27
23. More Information
“Eclipse User Interface Guidelines: Version 2.1”
http://www.eclipse.org/resources/resource.php?id=162
The Look-n-Feel guidelines for Eclipse – heavily influenced by the
corresponding Microsoft Windows Look-n-Feel guidelines
“The Definitive Guide to SWT and JFace” by Robert Harris and Rob Warner
(ISBN: 978-1590593257)
As it says – “The Definitive Guide…” – and needed due to the poor
Javadoc of SWT
“JFaceSnippets” Repository
http://wiki.eclipse.org/index.php/JFaceSnippets
Likewise for JFace
L0001 - 2010-11-27
24. More Information
“Eclipse Forms: Rich UI for the Rich Client”
http://www.eclipse.org/resources/resource.php?id=140
“Rich clients with the SWT and JFace”
http://www.javaworld.com/javaworld/jw-04-2004/jw-0426-
swtjface.html?page=2
“Understanding Decorators in Eclipse”
http://www.eclipse.org/resources/resource.php?id=216
“Decorating resources in WebSphere”
http://www.ibm.com/developerworks/ibm/library/i-wsdeco/
In-dept article on the decorators
L0001 - 2010-11-27
25. More Information
“Building and delivering a table editor with SWT/JFace”
http://www.eclipse.org/resources/resource.php?id=209
Older – yet correct – article with all the needed information for editors
in tables
“JFace Plug-in Developers Guide”
http://help.eclipse.org/ganymede/topic/org.eclipse.platform.doc.isv/
guide/jface.htm
“UI Forms”
http://help.eclipse.org/ganymede/topic/org.eclipse.platform.doc.isv/
guide/forms.htm
“Eclipse Forms: Rich UI for the Rich Client”
http://www.eclipse.org/articles/Article-Forms/article.html
The Forms UI explained with some good examples
L0001 - 2010-11-27
Editor's Notes
\n
The look-n-feel of the native widgets and SWT is governed by the native look-n-feel guide. Eclipse adds some further rules on top of these in the form of &#x201C;Eclipse User Interface Guidelines&#x201D;.\nThe look-n-feel of an RCP application can be changed; this is described in the module &#x201C;L0019 - Changing the Look-n-Feel&#x201D;.\n
Where does JFace end and the workbench begin? Sometimes the lines aren't so obvious. In general, the JFace APIs (from the packages org.eclipse.jface.*) are independent of the workbench extension points and APIs. Conceivably, a JFace program could be written without using any workbench code at all.\nThe workbench makes use of JFace but attempts to reduce dependencies where possible. For example, the workbench part model (IWorkbenchPart) is designed to be independent of JFace. Views and editors can be implemented using SWT widgets directly without using any JFace classes. The workbench attempts to remain "JFace neutral" wherever possible, allowing programmers to use the parts of JFace they find useful. In practice, the workbench uses JFace for much of its implementation and there are references to JFace types in API definitions. (For example, the JFace interfaces for IMenuManager, IToolBarManager, and IStatusLineManager show up as types in the workbench IActionBar methods.)\nWhen using JFace API, it's a good idea to keep in mind the rules of engagement for using background threads.\nThe lines between SWT and JFace are much cleaner. SWT does not depend on any JFace or platform code at all. Many of the SWT examples show how you can build a standalone application. \nJFace is designed to provide common application UI function on top of the SWT library. JFace does not try to "hide" SWT or replace its function. It provides classes and interfaces that handle many of the common tasks associated with programming a dynamic UI using SWT.\nThe relationship between JFace and SWT is most clearly demonstrated by looking at viewers and their relationship to SWT widgets.\nDialogs and wizards are described in the module &#x201C;L0007 - More Interaction with the Workbench&#x201D;.\n
JFace viewers exist in most cases where data must be mapped to a structured widget.\nSee &#x201C;JFace Plug-in Developers Guide&#x201D; for more information.\nThe use of two types of providers is a major difference from the corresponding models in Swing.\n
If any changes are made to the structure of a viewer, then refresh(..) must be called.\nIf setInput(&#x2026;) is not the last method called, all sorts of peculiar things can happen &#x2013; most often some columns will only be present in the header and not in the table data. \n
Use ColumnLabelProvider, not CellLabelProvider.\n
The methods of the IStructuredContentProvider are:\ndispose() &#x2013; called when the viewer is disposed\ninputChanged(Viewer viewer, Object oldInput, Object newInput) - notifies this content provider that the given viewer's input has been switched to a different element\ngetElements(Object inputElement) - returns the elements to display in the viewer when its input is set to the given element\n
There are two means for providing labels and images in the Eclipse platform. The base label and image are provided via an ILabelProvider. These can then be augmented or decorated via ILabelDecorators.\nIn Eclipse IDE, the current set of decorators can be found on the &#x201C;Label Decoration&#x201D; page of the preferences.\nDecorators are registered via the extension point org.eclipse.ui.decorators &#x2013; see later slide for example.\n
There are two means for providing labels and images in the Eclipse platform. The base label and image are provided via an ILabelProvider. These can then be augmented or decorated via ILabelDecorators.\nIn Eclipse IDE, the current set of decorators can be found on the &#x201C;Label Decoration&#x201D; page of the preferences.\nDecorators are registered via the extension point org.eclipse.ui.decorators &#x2013; see later slide for example.\n
The primary advantage of the column label providers is the ability to use the same label providers across a complete project. The means the same look will be used for the same field throughout the application &#x2013; something most users appreciate &#xF04A;\nThe feel of viewers is to a large degree handled via the commands that are installed in the viewer and the content menu.\n
\n
\n
\n
\n
Now it&#x2019;s time for the lab.\nThe data for the table will be provided by the trainer. It consists of a plug-in with a ContactManager that provides a number of contacts each with name, address, zip, city and country attributes.\n
Now it&#x2019;s time for the lab.\nThe data for the table will be provided by the trainer. It consists of a plug-in with a ContactManager that provides a number of contacts each with name, address, zip, city and country attributes.\n
\n
\n
A main cause of resource problems in many Eclipse RCP applications is faulty management of images! Either they are never released (or disposed) properly or they are shared between parts of the application and released too early.\nThe important issue is to handle images (and fonts) consistently. Eclipse includes multiple resource managers:\norg.eclipse.ui.plugin.AbstractUIPlugin.imageDescriptorFromPlugin()\norg.eclipse.jface.resource.ResourceManager\nOne special issue is that images and fonts are associated with a specific Display. So, if multiple monitors are used in the application, the images must be handled on a per Display basis.\n