EclipseCon2013 - AWS Toolkit

Download Report

Transcript EclipseCon2013 - AWS Toolkit

Zach Musgrave & Jason Fulghum
Amazon Web Services
March 28, 2013
•
•
•
•
•
•
•
Error Reporting
Build Automation and Distribution
Responsive UIs
Resource Management
Data Binding
Build on Eclipse Platform Projects
Tips and Tricks
When your software inevitably
breaks.

Use Plugin’s getLog() method:
◦ getLog().log(new Status(Status.ERROR, PLUGIN_ID, errorMessage, e));

Or… use StatusManager directly, for more control


Help your customers collect basic debugging
information before you have to ask
Make it as easy as possible to report
problems, or you might not find out about
bugs before you start losing customers
Release early and often; make
it easy!


Eclipse’s standard release engineering tools
Built on Ant, so easy to integrate into existing
build processes




Plugins and features stored in Amazon S3
Distributed through Amazon CloudFront for
fast downloads from edge locations all over
the world
Old versions remain in Amazon S3 if needed
Use Amazon CloudFront access logs feature
for download metrics
The UI thread is for UI, and
nothing else. Really.
DON’T DO SYNCHRONOUS
IO IN THE UI THREAD!
Seriously, not even once.

For work that needs customer visibility, but
will take some amount of time


Pattern for
short-lived, but
potentially
disruptive IO
work
Example:
populate a
Combo using
data from a web
service call


From the UI: cancel any running thread, then
start a new one
From the CancelableThread: do non-UI work
(web services calls), then:
◦ Check if canceled
◦ If not, update UI
◦ Otherwise exit

Synchronization is important


Better performance than regular Tables
Use SWT.VIRTUAL to speed them up more


Display.asyncExec(Runnable)
Display.syncExec(Runnable)
Why make X copies when 1 will do?

Override AbstractUIPlugin#createImageRegistry()




Remember: fonts use file handles!
Don’t create a font just to apply it to a control
Share fonts as much as possible, and
remember to dispose() of them when they
aren’t needed anymore
Or use shared fonts, like in JFaceResources
A cleaner way to implement MVC,
but with a steep learning curve.

The basic idea: bind your data model to a UI
element, and when one changes the other does
too
IObservableValue model =
PojoObservables.observeValue(pojo, “field”);
IObservable target =
SWTObservables.observeText(text, SWT.Modify);
bindingContext.bindValue(target, model);


Fields can validate themselves
Aggregate status gets rolled up
Stand on the shoulders of giants.


Tools for developing and deploying web
and Java EE applications
Used in the toolkit for:
◦ Deploying AWS Java web apps to AWS Elastic
Beanstalk through custom server types


Vendor neutral platform and tools for
working with relational and non-relational
data sources
Used in the toolkit for:
◦ Connecting to Amazon RDS databases
◦ Browsing and editing Amazon SimpleDB data
sources

Aggregates data contributed by multiple
plugins into a single, hierarchical tree view
Good support for drag and drop actions

Used in the toolkit for:

◦ AWS Explorer view
A miscellany of time-saving advice.

Easy pluggable dialog box with an optional
custom control area

Easy way to
create clean,
easy to use UIs


Used to store hierarchical data to persist
preferences and history for views, dialogs,
and wizards
Allows UIs to be prepopulated with users’
previous selections and history

Look for “SDK”
packages on
update sites


Q: How do I
implement this
interface?
A: Copy someone
else!