This document contains slides from a presentation on the Standard Widget Toolkit (SWT). It discusses the history and basics of SWT, including how to create widgets like shells, composites and controls. It provides an example of building a simple file explorer application with a tree and table widget, creating tree items, and adding listeners.
Beyond Horizon: Open Source Management On the Go for OpenStack and the Rest o...Mike Muzurakis
Mist.io's presentation in the OpenStack Summit in Paris: Using a single UI to manage and monitor your private and public cloud, Docker containers and bare metal servers.
Beyond Horizon: Open Source Management On the Go for OpenStack and the Rest o...Mike Muzurakis
Mist.io's presentation in the OpenStack Summit in Paris: Using a single UI to manage and monitor your private and public cloud, Docker containers and bare metal servers.
Presentation given at the Toulouse JUG in Dec 2019
GraalVM and its native-image component allow building native standalone executables from Java or any other language compiling to Java bytecode like Scala or Kotlin.
This talks goes through the practical steps leading to producing a native executable for a command-line tool, explaining the benefits and also the limits of GraalVM native-image.
"Kafka Streams has a rich set of metrics for monitoring application health. Through these metrics, you can uncover performance issues, resource allocation concerns, and improve the performance of your application through deployment and configuration changes.
Providing dashboards around all of these metrics can be rather challenging. In addition, the vast amount of metrics is extensive. Which metrics are important depends on the type of application you’re building. Let's uncover what you should be monitoring, why you should be monitoring it, and leave you with properly monitored Kafka Streams applications.
Not only will you gain an understanding of task-id, sub-topology, and partition-id, but you will also see how to visualize that topology in a dashboard. Explore the new metrics added to Kafka Streams, since 3.0 was released, and go in-depth with the awesome end-to-end latency metrics. Finally, learn how to use these metrics to determine the number of instances an application needs when being deployed.
Unleash your Kafka Stream Application metrics making it easier to run your applications effectively."
JavaScript and Friends August 20th, 20201 -- MySQL Shell and JavaScriptDave Stokes
The MySQL Shell has a JavaScript mode where you can use JS libraries to access you data and you can also write (and save) your own custom reports (or programs) for future use.
Cassandra Summit 2014: Highly Scalable Web Application in the Cloud with Cass...DataStax Academy
Presenters, L
Putting together a cloud based web application that allows end users to upload, encode, manage and distribute video media files is not a difficult task these days. Especially with the number of related frameworks and services available, ready to be used or consumed. The situation gets more complex when the expected traffic is in the millions-of-users range, globally distributed, and requiring detailed monitoring for usage. Using this scenario, in this session you will learn how to use the recently updated Datastax C# Cassandra driver, how to deploy a multi-datacenter Cassandra cluster using the Microsoft Azure platform that can be accessed from different programming languages, and how to leverage existing cloud services to perform some of the tasks associated with this use case.
2015 Java update and roadmap, JUG sevillaTrisha Gee
Not my material! Courtesy of Oracle's Aurelio García-Ribeyro and Georges Saab.
Presentation given to the Sevilla Java User Group about the state of Java
VMworld 2013: Virtualizing Mission Critical Oracle RAC with vSphere and vCOPSVMworld
VMworld 2013
Steven Jones, VMware
Charles Kim, Viscosity North America
Kannan Mani, VMware
George Trujillo, Hortonworks
Learn more about VMworld and register at http://www.vmworld.com/index.jspa?src=socmed-vmworld-slideshare
Serverless on OpenStack with Docker Swarm, Mistral, and StackStormDmitri Zimine
Intro to Serverless, 101 demo with StackStorm, and real world application of serverless solution.
Slides for OpenStack Summit Boston 2017 talk:
https://www.openstack.org/summit/boston-2017/summit-schedule/events/18325
Most of the talk was a demo, please stay tuned for recording.
Serverless, devops, automation, operations, faas, @Stack_Storm.
Transcript: Selling digital books in 2024: Insights from industry leaders - T...BookNet Canada
The publishing industry has been selling digital audiobooks and ebooks for over a decade and has found its groove. What’s changed? What has stayed the same? Where do we go from here? Join a group of leading sales peers from across the industry for a conversation about the lessons learned since the popularization of digital books, best practices, digital book supply chain management, and more.
Link to video recording: https://bnctechforum.ca/sessions/selling-digital-books-in-2024-insights-from-industry-leaders/
Presented by BookNet Canada on May 28, 2024, with support from the Department of Canadian Heritage.
Essentials of Automations: Optimizing FME Workflows with ParametersSafe Software
Are you looking to streamline your workflows and boost your projects’ efficiency? Do you find yourself searching for ways to add flexibility and control over your FME workflows? If so, you’re in the right place.
Join us for an insightful dive into the world of FME parameters, a critical element in optimizing workflow efficiency. This webinar marks the beginning of our three-part “Essentials of Automation” series. This first webinar is designed to equip you with the knowledge and skills to utilize parameters effectively: enhancing the flexibility, maintainability, and user control of your FME projects.
Here’s what you’ll gain:
- Essentials of FME Parameters: Understand the pivotal role of parameters, including Reader/Writer, Transformer, User, and FME Flow categories. Discover how they are the key to unlocking automation and optimization within your workflows.
- Practical Applications in FME Form: Delve into key user parameter types including choice, connections, and file URLs. Allow users to control how a workflow runs, making your workflows more reusable. Learn to import values and deliver the best user experience for your workflows while enhancing accuracy.
- Optimization Strategies in FME Flow: Explore the creation and strategic deployment of parameters in FME Flow, including the use of deployment and geometry parameters, to maximize workflow efficiency.
- Pro Tips for Success: Gain insights on parameterizing connections and leveraging new features like Conditional Visibility for clarity and simplicity.
We’ll wrap up with a glimpse into future webinars, followed by a Q&A session to address your specific questions surrounding this topic.
Don’t miss this opportunity to elevate your FME expertise and drive your projects to new heights of efficiency.
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
Key Trends Shaping the Future of Infrastructure.pdfCheryl Hung
Keynote at DIGIT West Expo, Glasgow on 29 May 2024.
Cheryl Hung, ochery.com
Sr Director, Infrastructure Ecosystem, Arm.
The key trends across hardware, cloud and open-source; exploring how these areas are likely to mature and develop over the short and long-term, and then considering how organisations can position themselves to adapt and thrive.
Connector Corner: Automate dynamic content and events by pushing a buttonDianaGray10
Here is something new! In our next Connector Corner webinar, we will demonstrate how you can use a single workflow to:
Create a campaign using Mailchimp with merge tags/fields
Send an interactive Slack channel message (using buttons)
Have the message received by managers and peers along with a test email for review
But there’s more:
In a second workflow supporting the same use case, you’ll see:
Your campaign sent to target colleagues for approval
If the “Approve” button is clicked, a Jira/Zendesk ticket is created for the marketing design team
But—if the “Reject” button is pushed, colleagues will be alerted via Slack message
Join us to learn more about this new, human-in-the-loop capability, brought to you by Integration Service connectors.
And...
Speakers:
Akshay Agnihotri, Product Manager
Charlie Greenberg, Host
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
Epistemic Interaction - tuning interfaces to provide information for AI supportAlan Dix
Paper presented at SYNERGY workshop at AVI 2024, Genoa, Italy. 3rd June 2024
https://alandix.com/academic/papers/synergy2024-epistemic/
As machine learning integrates deeper into human-computer interactions, the concept of epistemic interaction emerges, aiming to refine these interactions to enhance system adaptability. This approach encourages minor, intentional adjustments in user behaviour to enrich the data available for system learning. This paper introduces epistemic interaction within the context of human-system communication, illustrating how deliberate interaction design can improve system understanding and adaptation. Through concrete examples, we demonstrate the potential of epistemic interaction to significantly advance human-computer interaction by leveraging intuitive human communication strategies to inform system design and functionality, offering a novel pathway for enriching user-system engagements.
UiPath Test Automation using UiPath Test Suite series, part 3DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 3. In this session, we will cover desktop automation along with UI automation.
Topics covered:
UI automation Introduction,
UI automation Sample
Desktop automation flow
Pradeep Chinnala, Senior Consultant Automation Developer @WonderBotz and UiPath MVP
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
1. 2006 JavaOneSM
Conference | Session TS-3853 |
Introduction to SWT (The
Standard Widget Toolkit)
Steve Northover
SWT Team Lead
IBM Canada
eclipse.org/swt
SWT Eye for the
Swing Guy!
TS-3853
2. 2006 JavaOneSM
Conference | Session TS-3853 | 2
Write an SWT Application
Goal of This Talk
After this talk you will understand what
SWT is and how to write a simple SWT
application
3. 2006 JavaOneSM
Conference | Session TS-3853 | 3
Agenda
Background: A Brief History of SWT
The Basics: Widgets and Graphics
Putting It All Together: An SWT Application
Sneak Peek: Advanced Topics
4. 2006 JavaOneSM
Conference | Session TS-3853 | 4
What Is SWT?
• SWT = “Standard Widget Toolkit”
• A native GUI Toolkit for Java™ platform
• Standard UI component for Eclipse
• Roughly equivalent to AWT/Swing
5. 2006 JavaOneSM
Conference | Session TS-3853 | 5
History of SWT
• Object Technology International (OTI)
• VM’s, Class Libraries, Compilers, IDE’s
• Configuration Management (ENVY/Manager)
• Smalltalk (in the early 90’s)
• Major Vendors: ParcPlace, Digitalk, IBM
IBM Acquired OTI in 1996
7. 2006 JavaOneSM
Conference | Session TS-3853 | 7
WORA (Write Once, Run Away!)
• ParcPlace Smalltalk (emulated widgets)
• Digitalk Smalltalk/V (native + emulated)
• Windows, OS/2, Mac (emulated)
• IBM Smalltalk (native, written by OTI)
• Windows, X/Motif, OS/2, Mac, Open Look
Native vs. Emulated!
8. 2006 JavaOneSM
Conference | Session TS-3853 | 8
The “Leap Frog” Experience
• VisualAge for Java™
• Written in IBM Smalltalk
• VisualAge Micro Edition
• Prototype in Java code using AWT/Swing
• Rewritten in Java code using SWT
• Eclipse
10. 2006 JavaOneSM
Conference | Session TS-3853 | 10
“The SWT component is designed to
provide efficient, portable access to the
user-interface facilities of the operating
system on which it is implemented”
eclipse.org/swt
11. 2006 JavaOneSM
Conference | Session TS-3853 | 11
SWT Is
• Efficient
• Thin Java based layer over Java Native Interface
calls to the OS
• Portable
• Windows, GTK, Motif, Macintosh, Photon
• Java ME, Java SE
• Native
• Win32, GDI, GDI+, OLE, IE, Carbon, Cocoa, Core
Graphics, Quick Draw, Safari, ATSUI, X Windows,
X/t, Motif, GTK, GDK, Pango, cairo, ATK, Photon,
Mozilla, QNX Voyager, Uniscribe...
13. 2006 JavaOneSM
Conference | Session TS-3853 | 13
Myths
• SWT is better than Swing
• Swing is better than SWT
• SWT is “windows only”
• SWT is proprietary
• SWT applications are not portable
• …and more
TM
14. 2006 JavaOneSM
Conference | Session TS-3853 | 14
Agenda
Background: A Brief History of SWT
The Basics: Widgets and Graphics
Putting It All Together: An SWT Application
Sneak Peek: Advanced Topics
15. 2006 JavaOneSM
Conference | Session TS-3853 | 15
Hello World in SWT
import org.eclipse.swt.widgets.*;
public class HelloWorld {
public static void main(String[] args) {
Display display = new Display();
Shell shell = new Shell(display);
shell.setText("Hello World");
shell.setSize(200, 100);
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep ();
}
display.dispose ();
}
}
16. 2006 JavaOneSM
Conference | Session TS-3853 | 16
Display
• Connection to the window system
• Represents the “screen”
• Contains a list of Shells
• Normally a singleton
public static void main(String[] args) {
Display display = new Display();
Shell shell = new Shell(display);
17. 2006 JavaOneSM
Conference | Session TS-3853 | 17
Shell
• Represents a “window” on the “screen”
• Root of a tree of Composites and Controls
public static void main(String[] args) {
Display display = new Display();
Shell shell = new Shell(display);
shell.setText("Hello World");
shell.setSize(200, 100);
shell.open();
18. 2006 JavaOneSM
Conference | Session TS-3853 | 18
Composite and Control
• Composite
• Control that contains other Composites and Controls
• Control
• A heavyweight operating system object
• buttons, labels, entry fields, tables, toolbars,
and trees are controls (Shells and Composites too)
Shell, Composite, Control are subclasses of Widget
19. 2006 JavaOneSM
Conference | Session TS-3853 | 19
The Event Loop
• Repeatedly reads and dispatches events
• Yields CPU when no events are available
• Applications choose when to exit
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
20. 2006 JavaOneSM
Conference | Session TS-3853 | 20
Events
• JavaBeans™ event model (“typed” events)
• Events come from the event loop
(and from widget operations)
• Low level “untyped” events also available
21. 2006 JavaOneSM
Conference | Session TS-3853 | 21
Freeing Resources
• Operating system resources are explicitly
released by the programmer
display.dispose();
Rule #1: “If you created it, you dispose it”
Rule #2: “Disposing a parent disposes the
children”
22. 2006 JavaOneSM
Conference | Session TS-3853 | 22
Standard Constructors
• Widgets must be created with a parent
• Style bits used for create-only attributes
//Create a push button control
Button button = new Button(shell, SWT.PUSH);
//Create a single line entry field with a border
Text text = new Text(group, SWT.SINGLE|SWT.BORDER);
//Create a shell with dialog trimmings
Shell dialog = new Shell(shell, SWT.DIALOG_TRIM);
23. 2006 JavaOneSM
Conference | Session TS-3853 | 23
Errors and Exceptions
• SWTError
• An unrecoverable error
• The operating system failed
• SWTException
• A recoverable error occurred
• Invalid thread access, etc.
• IllegalArgumentException
• A recoverable error (argument is invalid)
• Argument cannot be null, etc.
24. 2006 JavaOneSM
Conference | Session TS-3853 | 24
Items
• A lightweight operating system object
• Always occur within a specific widget
• A Tree contains TreeItems
• A Table contains TableItems
• A Menu contains MenuItems
• …and more
25. 2006 JavaOneSM
Conference | Session TS-3853 | 25
Threads
• Single UI-thread (“apartment threaded”)
• Widget operations must be called from the UI-thread
• Runnables can be queued to run in the UI-thread
• Background Threads
• Use Display.syncExec(), asyncExec(), wake()
• Graphics operations may be called from any thread
26. 2006 JavaOneSM
Conference | Session TS-3853 | 26
Widget Packages
• org.eclipse.swt.widgets
• org.eclipse.swt.dnd
• Drag and Drop and Clipboard
• org.eclipse.swt.browser
• HTLM Browser control
• org.eclipse.swt.custom
• Custom Controls for Eclipse
• org.eclipse.swt.ole.win32
• OLE (ActiveX) Support
27. 2006 JavaOneSM
Conference | Session TS-3853 | 27
Widget Classes—All of Them!
(Dialogs, D&D, OLE, Browser, Custom Controls)
32. 2006 JavaOneSM
Conference | Session TS-3853 | 32
Draw and Fill a Polygon on a Shell
public void paintControl(PaintEvent event) {
Rectangle bounds = shell.getClientArea();
center.x = bounds.x + bounds.width/2;
center.y = bounds.y + bounds.height/2;
int pos = 0;
for (int i = 0; i < points; ++i) {
double r = Math.PI*2 * pos/points;
radial[i*2] = (int)((1+Math.cos(r))*center.x);
radial[i*2+1] = (int)((1+Math.sin(r))*center.y);
pos = (pos + points/2) % points;
}
event.gc.setBackground(
display.getSystemColor(SWT.COLOR_WHITE));
event.gc.fillPolygon(radial);
event.gc.drawPolygon(radial);
}});
33. 2006 JavaOneSM
Conference | Session TS-3853 | 33
shell.addPaintListener(new PaintListener() {
public void paintControl(PaintEvent event) {
…
//do I need to dispose this crazy thing?
GC gc = event.gc;
…
}});
Should This GC Be Disposed?
No. It was not created with “new GC()”
35. 2006 JavaOneSM
Conference | Session TS-3853 | 35
Layout Overview
• Layout
• An algorithm to position and resize controls
• Use Composite.setLayout()
• Layout Data
• Algorithm specific data associated with each control
• Use Control.setLayoutData()
37. 2006 JavaOneSM
Conference | Session TS-3853 | 37
Agenda
Background: A Brief History of SWT
The Basics: Widgets and Graphics
Putting It All Together: An SWT Application
Sneak Peek: Advanced Topics
39. 2006 JavaOneSM
Conference | Session TS-3853 | 39
Create the Display
public static void main(String[] args) {
Display display = new Display();
Shell shell = new Shell(display);
shell.setText("Example");
shell.setLayout(new FillLayout());
Tree tree = createTree(shell);
Table table = createTable(shell);
createListeners(tree, table);
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) display.sleep();
}
display.dispose();
}
1
2
3
40. 2006 JavaOneSM
Conference | Session TS-3853 | 40
Create the Shell
public static void main(String[] args) {
Display display = new Display();
Shell shell = new Shell(display);
shell.setText("Example");
shell.setLayout(new FillLayout());
Tree tree = createTree(shell);
Table table = createTable(shell);
createListeners(tree, table);
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) display.sleep();
}
display.dispose();
}
1
2
41. 2006 JavaOneSM
Conference | Session TS-3853 | 41
Create the Tree
public static void main(String[] args) {
Display display = new Display();
Shell shell = new Shell(display);
shell.setText("Example");
shell.setLayout(new FillLayout());
Tree tree = createTree(shell);
Table table = createTable(shell);
createListeners(tree, table);
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) display.sleep();
}
display.dispose();
}
42. 2006 JavaOneSM
Conference | Session TS-3853 | 42
Create the Tree with TreeItems
static Tree createTree (Composite parent) {
Tree tree = new Tree(parent, SWT.BORDER);
createTreeItems(tree, null, File.listRoots());
return tree;
}
First Level
43. 2006 JavaOneSM
Conference | Session TS-3853 | 43
Create the TreeItems
static void createTreeItems(Tree tree, TreeItem parent,
File [] files) {
if (files == null) return;
for (int i = 0; i < files.length; i++) {
if (files[i].isDirectory()) {
TreeItem item;
if (parent == null) {
item = new TreeItem(tree, SWT.NONE);
item.setText(files[i].toString());
} else {
item = new TreeItem(parent, SWT.NONE);
item.setText(files[i].getName());
}
item.setData(files[i]);
new TreeItem(item, SWT.NULL); // force a '+'
}
}
}
1
44. 2006 JavaOneSM
Conference | Session TS-3853 | 44
Create the TreeItems
static void createTreeItems(Tree tree, TreeItem parent,
File [] files) {
if (files == null) return;
for (int i = 0; i < files.length; i++) {
if (files[i].isDirectory()) {
TreeItem item;
if (parent == null) {
item = new TreeItem(tree, SWT.NONE);
item.setText(files[i].toString());
} else {
item = new TreeItem(parent, SWT.NONE);
item.setText(files[i].getName());
}
item.setData(files[i]);
new TreeItem(item, SWT.NULL); // force a '+'
}
}
}
1
2
45. 2006 JavaOneSM
Conference | Session TS-3853 | 45
Create the TreeItems
static void createTreeItems(Tree tree, TreeItem parent,
File [] files) {
if (files == null) return;
for (int i = 0; i < files.length; i++) {
if (files[i].isDirectory()) {
TreeItem item;
if (parent == null) {
item = new TreeItem(tree, SWT.NONE);
item.setText(files[i].toString());
} else {
item = new TreeItem(parent, SWT.NONE);
item.setText(files[i].getName());
}
item.setData(files[i]);
new TreeItem(item, SWT.NULL); // force a '+'
}
}
}
1
2
3
46. 2006 JavaOneSM
Conference | Session TS-3853 | 46
Create the TreeItems
static void createTreeItems(Tree tree, TreeItem parent,
File [] files) {
if (files == null) return;
for (int i = 0; i < files.length; i++) {
if (files[i].isDirectory()) {
TreeItem item;
if (parent == null) {
item = new TreeItem(tree, SWT.NONE);
item.setText(files[i].toString());
} else {
item = new TreeItem(parent, SWT.NONE);
item.setText(files[i].getName());
}
item.setData(files[i]);
new TreeItem(item, SWT.NULL); // force a '+'
}
}
}
1
2
3
4
47. 2006 JavaOneSM
Conference | Session TS-3853 | 47
Create the Table
public static void main(String[] args) {
Display display = new Display();
Shell shell = new Shell(display);
shell.setText("Example");
shell.setLayout(new FillLayout());
Tree tree = createTree(shell);
Table table = createTable(shell);
createListeners(tree, table);
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) display.sleep();
}
display.dispose();
}
48. 2006 JavaOneSM
Conference | Session TS-3853 | 48
Create the Table Without TableItems
static Table createTable(Composite parent) {
Table table = new Table(parent, SWT.BORDER);
table.setHeaderVisible(true);
String [] titles = {"Name", "Size"};
for (int i=0; i<titles.length; i++) {
TableColumn column =
new TableColumn(table, SWT.NONE);
column.setText(titles[i]);
}
return table;
}
49. 2006 JavaOneSM
Conference | Session TS-3853 | 49
Create the Listeners
public static void main(String[] args) {
Display display = new Display();
Shell shell = new Shell(display);
shell.setText("Example");
shell.setLayout(new FillLayout());
Tree tree = createTree(shell);
Table table = createTable(shell);
createListeners(tree, table);
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) display.sleep();
}
display.dispose();
}
59. 2006 JavaOneSM
Conference | Session TS-3853 | 59
Agenda
Background: A Brief History of SWT
The Basics: Widgets and Graphics
Putting It All Together: An SWT Application
Sneak Peek: Advanced Topics
60. 2006 JavaOneSM
Conference | Session TS-3853 | 60
Sneak Peek: Advanced Topics
• Browser
• Drag and Drop
• Printing
• Program
• Accessibility
• OLE (win32)
• AWT/Swing interop
61. 2006 JavaOneSM
Conference | Session TS-3853 |
Introduction to SWT (The
Standard Widget Toolkit)
Steve Northover
SWT Team Lead
IBM Canada
eclipse.org/swt
SWT Eye for the
Swing Guy!
TS-3853