Committer Bootcamp at EclipseCon 2015

by waynebeaton at February 01, 2015 05:58 AM

Are you a new committer or project lead for an Eclipse, LocationTech, or PolarSys project? Are you thinking about proposing a new open source project? In this tutorial, Eclipse Foundation staff members will walk you through the information that you need to know to be an effective open source project committer. The discussion includes an overview of the Eclipse Development Process, the Intellectual Property Due Diligence Process, and the Tools and IT Infrastructure made available to open projects by the Eclipse Foundation.

We’ll be running the Eclipse Committer  Bootcamp at EclipseCon 2015. We’ve scheduled it on Sunday, to avoid conflicting with the fantastic tutorials that are running on Monday. The fun starts at 3 pm (PST); we normally run for about three hours, and–having learned valuable lessons from the past–include plenty of breaks and time for questions. You don’t have to prepare anything; we’ll take care of that.

There will be prizes.

There is some additional information, along with the presentation materials from past offerings of the Bootcamp in the wiki.

If you plan to attend, please send a quick to to emo@eclipse.org to state your intent (so that we can have some sense for the number of committers we should expect).

I’m understand if you can’t make it to the Bootcamp. But you really do need to come to EclipseCon: it’s a fantastic way to connect with the community,  network, and learn.

EclipseCon 2015



by waynebeaton at February 01, 2015 05:58 AM

e(fx)clipse 1.2.0 released

by Tom Schindl at January 30, 2015 09:37 PM

Before going into the weekend and work on my EclipseCon stuff I’m happy to announce the 1.2.0 release of e(fx)clipse tooling and runtime.

Tooling

e(fx)clipse adds JavaFX tooling to your Eclipse IDE and provides:

  • FXML editor including a live preview
  • CSS editor who knows all JavaFX properties and provides auto-complete and validation
  • (and many many more features)

The tooling is known to work on:

  • Eclipse Luna SR1/2
  • Eclipse Mars M5

You can install the tooling into your IDE using the following p2 repository.

Runtime platform

e(fx)clipse comes with a powerful runtime platform built on top of the Eclipse 4 Application but uses JavaFX for rendering instead of SWT. The e(fx)clipse runtime platform is production ready and used in a number of commerical products.

In case you need SLAs, consulting and commercial support please get in touch with BestSolution.

The runtime artifacts are publised as:

The runtime platform is using Eclipse Luna SR1 as its base and adds many many cool features on top of it. If you are interested in some highlights coming with 1.2.0 release please use this link

Next release 2.0

1.2.0 is the last public release of 1.x series unless something very serious shows up until the next scheduled release 2.0 which will be shipped as part of Mars Release Train.

For customers with service contracts additional releases with backports of bugfixes will be available through BestSolution channels if requested. If you are using e(fx)clipse in your commercial products get in touch with us.



by Tom Schindl at January 30, 2015 09:37 PM

What’s new in Orion’s Markdown editor

by Grant Gayed at January 30, 2015 03:13 AM

markdownEditorImprovements

We want Orion’s Markdown editor to be the most useful and enjoyable one that’s out there. Here’s what’s improved recently:

  • Content assist

No more need to refer back to the markdown syntax on Daring Fireball, just invoke the Orion editor’s standard content assist (Ctrl+Space) to see the available md and gfm templates.

  • Warning annotations

Warnings are now displayed for the following:

  • Unordered list item within ordered list
  • Ordered list item within unordered list
  • The first item in an ordered list should have index 1
  • Undefined link ID
  • Link has no URL
  • Link has no text
  • Header level cannot exceed 6

More warning types are under consideration.

  • Generate HTML File command

Outputs the preview pane’s HTML content to a file.

  • All header elements are now generated with anchor id’s
  • New splitter thumb to minimize the preview pane
  • New pane orientation toggle
  • Various bug fixes, particularly in the areas of lists, code blocks and reference links

 
Looking for a reliable place to author your markdown documents? Check out OrionHub!

As always, we also want to hear your Feature Requests and Bug Reports.


by Grant Gayed at January 30, 2015 03:13 AM

e(fx)clipse 1.2.0 – Helper API to call methods who throw exceptions

by Tom Schindl at January 29, 2015 09:14 PM

Have you ever worked with a library who throws an exceptions but there’s not possible recovery for you and you simply want to move on with a default value or null?

I’ve had the “fun” to work with something like this lately and all the exception handling cluttered my code. I’m using the IMarker-API as an example

private Annotation transform(IMarker m) {
   String type;
   try {
      type = marker.getType();
   } catch(CoreException e) {
      type = "Unknown";
   }
   
   return new Annotation(type,....);
}

In the ideal case IMarker would have similar as it has for getAttribute() a method who allows to define a default instead of throwing the exception but apparently this not the case and could only be fixed when adopting Java8.

So I’ve add a set of helper methods to deal with APIs who throw exceptions and now I can write:

import static org.eclipse.fx.core.function.ExExecutor.*;

private Annotation transform(IMarker m) {
  return new Annotation(
    executeSupplierOrDefault(m::getType, e -> "Unknown"), .....);
}


by Tom Schindl at January 29, 2015 09:14 PM

Java 8 tooling in Eclipse

by Noopur Gupta at January 29, 2015 03:07 PM

A short demo on how to get started with Java 8 in Eclipse presented at Eclipse Demo Camp Bangalore, January 2015.



by Noopur Gupta at January 29, 2015 03:07 PM

Auto-GWT - Boilerplate Free GWT Programming

by Sven Efftinge (noreply@blogger.com) at January 29, 2015 02:14 PM

Maybe not especially new for everybody, but: GWT is NOT dead!

I've been at the GWT.create conference yesterday, a two-day conference on GWT only that took place in San Jose last week and this week in Munich. With over 400 attendees it was sold out. If that is not enough evidence of the liveliness of the project, you may have missed that Google runs huge projects on GWT. The latest one is Google Inbox. Add all the nice improvements (like increased compile speed) the latest releases have to offer and you will conclude that GWT is the best way to write browser apps in Java or any JVM language. The generated JavaScript code is highly optimized and runs even much faster than typical hand-written JavaScript code.

I had the pleasure to present the new Auto-GWT library we have built for GWT together with my colleague Anton. Thanks to all the attendees for the great questions and the overwhelmingly positive feedback. As a kind of wrap up after the conference I have uploaded the slides, the demo and the Auto-GWT project.

You can find all necessary information on the project's website : auto-gwt.org
Forks and pull requests are very welcome!

Auto-GWT in action:

Slides from GWT.create:


by Sven Efftinge (noreply@blogger.com) at January 29, 2015 02:14 PM

OpenSource Week in the Alps

by Maximilian Koegel at January 29, 2015 11:33 AM

Developing, enhancing and using open source frameworks is daily business for us. We create a lot of open source software as committers and contributors for projects at Eclipse.org (e.g. EMF Forms) and for other open source projects (e.g. qb). Our business is to make open source work for our customers.

Although we spend a lot of time on open source in our daily work, we believe it is important for innovation to make room for an extended period of time to take a step back, collect new ideas and try new things.

Once a year we retreat for an open source week from all daily work including customer work and fully focus on defined topics in our open source projects. We will have dedicated blog posts for the results this year to share with you what we have achieved.

This blog post is just a teaser and is also meant to make you a bit jealous about the great location on top of a mountain we are having the OS week at this year icon wink OpenSource Week in the Alps

P1050721 s OpenSource Week in the Alps

P1050742 s1 OpenSource Week in the Alps 


TwitterGoogle+LinkedInFacebook

Leave a Comment. Tagged with eclipse, emf, eclipse, emf


by Maximilian Koegel at January 29, 2015 11:33 AM

e(fx)clipse 1.2.0 – publishing runtime as an R5 bundle repository

by Tom Schindl at January 29, 2015 10:30 AM

In other posts I already outlined that our effort beside creating new features is to make the e(fx)clipse runtime a better citizen of the OSGi community / ecosystem.

Starting with 1.2.0 we are not only providing a p2 repository – for people using PDE and Tycho – but also an R5 bundle repository you can use with bnd and bnd-tools (if you are an eclipse user).

Publishing our runtime as an R5 bundle repository in theory would allow you to use other IDEs as well to make use of our runtime – I say in theory because if not mistaken IntelliJ IDEA nor Netbeans yet support bnd directly.

I tried to get something working with IntelliJ IDEA, gradle and bnd but failed miserably which might be because I’m a newbie at gradle and IntelliJ IDEA – so if someone can give me a lending hand I’m happy to document the steps at our wiki and even add project setup support to our project wizards in future versions so that you are able to generate multi IDE projects.

So if a Netbeans or IntelliJ IDEA user is reading this I would really appreciate your input because I want our runtime used as much as possible without you leaving and forcing you into a specific IDE is not the way to go.



by Tom Schindl at January 29, 2015 10:30 AM

IoT Day 2015 – IoT Security, Device Management and IoT APIs

by Ian Skerrett at January 28, 2015 05:08 PM

This year at EclipseCon we are hosting an IoT Day on March 11 at the San Francisco Airport Hyatt Regency in Burlingame, CA. IoT Day is meant for people who might not want to spend an entire week learning about all things Eclipse but are definitely interested in IoT. We did this event last year and it was a great success so we are doing it again!

This year the themes for IoT Day are Security, Device Management and IoT APIs. These are incredibly important topics for the IoT industry so I am thrilled to have talks about them during IoT Day.  Here is a brief synposis of what the day will look like:

– The day starts with Benjamin Cabe providing an overview of the Eclipse Open IoT Stack.   The Eclipse IoT community is making great progress of providing the open building blocks any software developer needs to build an IoT solution.  This will be a good introduction.

– IoT device management is one of the key trends in the IoT industry for 2015. Therefore, we are lucky to have Marco Carrer and Julien Vermillard discuss the solutions for device management from Eclipse IoT.

– Lot of people are in the process of building IoT soutions, One aspect is designing an API for your solution. Two speakers from Zebra Technologies will share their experience of designing an IoT API.

– Security is always one of the key concerns for deploying IoT solutions. Open source and Eclipse IoT have a lot to offer developers looking to secure their IoT solution. Julien Vermillard will show how Eclipse IoT, lightweight M2M and DTLS can be used to secure your IoT solution.

– One of the innovative new projects at Eclipse IoT is called Vorto. The Vorto project leaders from Bosch will talk about their vision of IoT device integration with Vorto. 

– MQTT has become an important and widely adopted IoT standard. MQTT-SN is a version of MQTT for sensor networks. Ian Craggs, the Eclipse Paho project leader, will show how MQTT-SN can make MQTT possible over UDP, Zygbee and other transports.

– The day will close with a number of lightning talks from speakers in our community.

It is a great agenda and a great way to learn about some key topics for IoT. The cost to register for the IoT Day is just $200. Find out more and register today.

Special thank you to 2lemetry for being a sponsor of IoT Day.



by Ian Skerrett at January 28, 2015 05:08 PM

Diapason, MDE cutting-edge solutions for the correct design of complex Cyber-Physical Systems Part1

by Eclipse Foundation at January 28, 2015 09:58 AM

Diapason is a framework of cutting-edge solutions for design, analysis and development of Cyber-Physical Systems (CPS). Diapason is the result of conducting core research in the application of model-driven engineering methods and tools to the development of complex CPSs together with maintaining close working relationships with major academic and industrial players. It consists of: Papyrus, an enabler of authoring models: Papyrus is providing an integrated and user-consumable environment for authoring UML model and any kind of profiled UML models, such as SysML for system engineering and MARTE for embedded and real-time domains. In addition, Papyrus offers also a set of powerful customization mechanisms which can be leveraged to create and deploy user-defined Papyrus configuration and give it the same facilities as a "pure" DSL editor while also benefiting advantages of standard solutions. Diversity for testing, verifying & validating formally your systems: Diversity is a tool for formal model-based verification, validation and test of complex systems including real-time applications. It provides facilities to check if a system is correct and satisfies safety and reliability requirements. Diversity supports UML models and is fully integrated within Papyrus, but it also supports other modeling formalisms such as Matlab Simulink models and SDL formalism using RTDS tool. Sophia for ensuring safety and security of systems: Sophia is a tool for model-based risk analysis of complex systems. It is based on the Papyrus/Eclipse platform and can be easily customized with different modules referring to the specific user needs. Sophia enables: model annotations with the dysfunctional behavior according to the specific type of analysis; performs risk analysis on the annotated model by using various methods such as Hazard & Risk Analysis, FTA, FME(C)A, Requirement Maintenance or Model Checking; generate specific analysis report accounting for the specific type of analysis and related safety standards (e.g., IEC and ISO26262); and display results using dedicated profiles, editors, tables. Automatically generate reports. Moka for executing/simulating your Papyrus models: Moka is a Papyrus module for execution of UML models, which natively includes an execution engine complying with OMG standards fUML and PSCS (which deal with execution semantics of UML). Moka is integrated with the Eclipse debug framework to provide control, observation and animation facilities over executions. Moka can be easily extended to support alternative execution semantics, and thereby be adapted to multiple usage scenarios and domains. Qompass for optimizing, generating and deploying solutions: The Qompass tool suite consists of two modules, the Architect and the Designer. Qompass Architect is a model-based tool for QoS assessment and optimization of real-time architectures. QoS refers to the system’s delivery of non-functional properties at run-time and reflects the ability of allocating underlying resources properly. Qompass Architect explores non-functional properties of real-time architectures to finally synthesize an optimized architecture. Qompass Designer allows you to deploy your design on a specific platform (e.g., AUTOSAR and DDS) and generate code for each node in your system. ARTiMon for simulation & runtime verification: ARTiMon is a tool which analyses on-the-fly a flow of dated observations in order to detect hazards (negation of requirements) expressed in its formal entry language. Sequoia for dealing with both variability and products line concerns: the main issue behind the development of product line is to factor the development work associated with a set of design models presented. Sequoia assists designers in the one hand to build and use a generic system model to produce different product models, and in the other hand to master the complexity involved by the variability of products. Darwin for supporting requirement engineering: Darwin is a SysML-based tool for requirement management and traceability. It is designed as a specific Papyrus configuration and it offers requirement decomposition taxonomy and uses specific attributes for different types of requirements. It also provides import and export facilities with other requirement engineering tools via the ReqIF standard.

by Eclipse Foundation at January 28, 2015 09:58 AM

MQTT enabling the smallest "things"

by eclipsefdn at January 28, 2015 09:50 AM

The MQTT and MQTT-SN (see mqtt.org) protocols are being widely used for IoT applications because of their simplicity and low overheads. The Paho embedded client libraries for MQTT and MQTT-SN have been designed to minimize size and avoid dependencies on system libraries. This makes them suitable for use in just about any environment with a C or C++ compiler, regardless of operating system or networking library. This session will describe the libraries; how they are split into layers of varying size and helpfulness, and how they can be ported to the environment of your choice. It will be illustrated with examples of use on platforms such as mbed and Arduino. As these libraries are so portable, I am hoping I won't need to write MQTT or MQTT-SN client libraries in C or C++ ever again! Presenter: Ian Craggs [IBM]

by eclipsefdn at January 28, 2015 09:50 AM

SWT Look and Feel: Customize FlatScrollBar Color and More

by Frank Appel at January 28, 2015 04:30 AM

Written by Frank Appel

Recently I introduced a custom slider control useful for improving the SWT look and feel of more subtle view layouts. Happily it seems the widget already found early adopters outside of the Code Affine world. Which led to some enhancements that will be presented in the following sections.

SWT Look and Feel of Scrollbars

‘SWT is a thin abstraction layer on top of native OS widgets. This is a very good thing if you intent that your applications integrate well with the OS look and feel. But as a trade-off this approach limits styling capabilities significantly’ (to quote myself from Sacrilege, …)

In particular I perceive the native SWT scrollbars often as disruptive. But being part of native controls their SWT look and feel is not customizable at all. Hence I created a custom SWT slider widget called FlatScrollBar.

As it is also not feasible to replace the native SWT scrollbar of controls like trees or tables, I introduced a ScrollableAdapter that works around this limitations with overlays. So far I have adapters for tree and tables available and a prototype for ScrolledComposite as work in progress.

Color …

When it comes down to styling, colors are very important. So it is not surprising that the first enhancement request was about the ability of changing the colors of the various slider elements. Because of this I introduced the three properties incrementColor, pageIncrementColor and thumbColor to allow apropriate adjustments:

The following snippet…

FlatScrollBarTable table = [...]
table.setPageIncrementColor( getColor( SWT.COLOR_INFO_BACKGROUND ) );
table.setThumbColor( getColor( SWT.COLOR_WIDGET_LIGHT_SHADOW ) );

… renders the scrollbars like this (getColor retrieves the system color from the current display):

SWT Look and Feel: Scrollbar Color Settings

As native scrollbars on Mac OS look acceptable out of the box the adapter refrains from custom overlays on that platform. Only Gtk and MS Windows platforms are affected. However the FlatScrollBar control itself works well on OS X too.

 

…and More

The attentive reader might wonder what the incrementColor is useful for as the picture shows only three slider elements. It is possible to display increment buttons using the incrementButtonLength:

FlatScrollBarTable table = [...]
table.setIncrementButtonLength( 7 );
table.setIncrementColor( getColor( SWT.COLOR_WIDGET_DARK_SHADOW ) );
[...]

SWT Look and Feel: Increment Button

Neat, isn’t it? ;-)

The last enhancement is not style related but nevertheless noteworthy. It adds untyped event handling to the FlatScrollBar. So if you happen to use Java 8, scrollbar selection observation can be handled as shown here:

FlatScrollBar scrollBar = new FlatScrollBar( parent, SWT.HORIZONTAL );
scrollbar.addListener( SWT.Selection, event -> handleEvent() );

 

Conclusion

Using the FlatScrollBar and the ScrollableAdapter in one of our projects looks promising so far. I am curious to see how sustainable this approach will be and if it is possible to adapt also to text and/or styled text controls. The controls are part of the com.codeaffine.eclipse.swt feature of the Xiliary P2 repository:

http://fappel.github.io/xiliary

In case you want to have a look at the code or file an issue you might also have a look at the Xiliary GitHub project. Look for FlatScrollbarDemo, FlatScrollBarTreeDemo and FlatScrollBarTableDemo for usage examples:

https://github.com/fappel/xiliary

For everything else feel free to use the commenting section below.

The post SWT Look and Feel: Customize FlatScrollBar Color and More appeared first on Code Affine.


by Frank Appel at January 28, 2015 04:30 AM

Eclipse Newsletter - Eclipse for Science

January 27, 2015 04:44 PM

This month's newsletter is all about Science! Read it now.

January 27, 2015 04:44 PM

Thanks for the fixing the Eclipse Internal Browser on Linux!

by aurelien.pupier at January 27, 2015 01:00 PM

I'd like to offer a few words to say thank you to the folks who worked to make the Eclipse Internal browser work by default on Linux since Eclipse 4.4.

There was a known workaround which required User intervention, such as the one explained on our own community blog.

But it was broken for a such a loooong time. So long, that it was even the subject of a talk at one of the EclipseCon conferences called a journey of getting HTML to work inside Eclipse.

Thanks to your fix, the next release (6.5.0) of our product will have a Welcome page working by default!

Bonita BPM 6.5 home page - Ubuntu 14.04


by aurelien.pupier at January 27, 2015 01:00 PM

NatTable with custom scrollbars

by Dirk Fauth at January 26, 2015 07:26 PM

When talking about styling a SWT control via CSS, one issue is raised quite early. The scrollbars can not be styled! Looking at a dark theme, the importance on that issue becomes obvious, as you can see in the following screenshot.

NatTable_dark_default_scrollbars

Using NatTable the scrolling capabilities are via the ViewportLayer. With NatTable 1.1 the possibility was added to set custom scrollbars to the ViewportLayer. This enables for example to have multiple ViewportLayer in a layer composition (split viewport) or to create UI layouts with special scrolling interactions.

With the possibility to use a custom scrollbar implementation, it is possible to style a NatTable completely with a dark theme. As an example for a stylable scrollbar we use the FlatScrollBar from Code Affine.

Since the scrollbars of the Canvas, which is the base class of NatTable, can’t be exchanged directly, we need to create a wrapper composite for the NatTable. This way the scrollbars can be attached beneath the NatTable instead of being part inside the NatTable.

NatTable_wrapper

To create the above layout, a GridLayout with two columns can be used, where the NatTable will take all the available space.

// NatTable and scrollbar container
Composite container = new Composite(parent, SWT.NONE);
GridLayoutFactory
    .swtDefaults()
    .numColumns(2)
    .margins(0, 0)
    .spacing(0, 0)
    .applyTo(container);

// NatTable as main control
NatTable natTable = new NatTable(container, viewportLayer);
GridDataFactory
    .fillDefaults()
    .grab(true, true)
    .applyTo(natTable);

The vertical scrollbar is attached to the right, and the horizontal scrollbar is attached to the bottom. To ensure that the layout doesn’t break, the FlatScrollBar is wrapped into a Composite. This way we are also able to set a fixed width/height, while telling the FlatScrollBar to fill the available space.

// vertical scrollbar wrapped in another composite for layout
Composite verticalComposite =
    new Composite(container, SWT.NONE);
GridLayoutFactory
    .swtDefaults()
    .margins(0, 0)
    .spacing(0, 0)
    .applyTo(verticalComposite);
GridData verticalData = GridDataFactory
    .swtDefaults()
    .hint(14, SWT.DEFAULT)
    .align(SWT.BEGINNING, SWT.FILL)
    .grab(false, true)
    .create();
verticalComposite.setLayoutData(verticalData);

FlatScrollBar vertical =
    new FlatScrollBar(verticalComposite, SWT.VERTICAL);
GridDataFactory
    .fillDefaults()
    .grab(true, true)
    .applyTo(vertical);

// horizontal scrollbar wrapped in another composite for layout
Composite horizontalComposite =
    new Composite(container, SWT.NONE);
GridLayoutFactory
    .swtDefaults()
    .margins(0, 0)
    .spacing(0, 0)
    .applyTo(horizontalComposite);
GridData horizontalData = GridDataFactory
    .swtDefaults()
    .hint(SWT.DEFAULT, 14)
    .align(SWT.FILL, SWT.BEGINNING)
    .grab(true, false)
    .create();
horizontalComposite.setLayoutData(horizontalData);

FlatScrollBar horizontal =
    new FlatScrollBar(horizontalComposite, SWT.HORIZONTAL);
GridDataFactory
    .fillDefaults()
    .grab(true, true)
    .applyTo(horizontal);

To be independent of the scrollbar implementation, the IScroller<T> interface was introduced in NatTable. The two default implementations ScrollBarScroller and SliderScroller are shipped with NatTable Core to be able to set custom scrollbars using SWT default implementations. Using this abstraction it is also possible to use another scrollbar implementation, like the FlatScrollBar. The following code shows the implementation of a FlatScrollBarScroller.

class FlatScrollBarScroller
    implements IScroller<FlatScrollBar> {

    private FlatScrollBar scrollBar;

    public FlatScrollBarScroller(FlatScrollBar scrollBar) {
        this.scrollBar = scrollBar;
    }

    @Override
    public FlatScrollBar getUnderlying() {
        return scrollBar;
    }

    @Override
    public boolean isDisposed() {
        return scrollBar.isDisposed();
    }

    @Override
    public void addListener(int eventType, Listener listener) {
        scrollBar.addListener(eventType, listener);
    }

    @Override
    public void removeListener(int eventType, Listener listener) {
        scrollBar.removeListener(eventType, listener);
    }

    @Override
    public int getSelection() {
        return scrollBar.getSelection();
    }

    @Override
    public void setSelection(int value) {
        scrollBar.setSelection(value);
    }

    @Override
    public int getMaximum() {
        return scrollBar.getMaximum();
    }

    @Override
    public void setMaximum(int value) {
        scrollBar.setMaximum(value);
    }

    @Override
    public int getPageIncrement() {
        return scrollBar.getPageIncrement();
    }

    @Override
    public void setPageIncrement(int value) {
        scrollBar.setPageIncrement(value);
    }

    @Override
    public int getThumb() {
        return scrollBar.getThumb();
    }

    @Override
    public void setThumb(int value) {
        scrollBar.setThumb(value);
    }

    @Override
    public int getIncrement() {
        return scrollBar.getIncrement();
    }

    @Override
    public void setIncrement(int value) {
        scrollBar.setIncrement(value);
    }

    @Override
    public boolean getEnabled() {
        return scrollBar.getEnabled();
    }

    @Override
    public void setEnabled(boolean b) {
        scrollBar.setEnabled(b);
    }

    @Override
    public boolean getVisible() {
        return scrollBar.getVisible();
    }

    @Override
    public void setVisible(boolean b) {
        scrollBar.setVisible(b);
    }

}

Using the above FlatScrollBarScroller, the created FlatScrollBar instances can be set to the ViewportLayer.

As the layout will always show the space for the scroller with the GridData instances above, we need to register a listener that hides the wrapper Composites of the FlatScrollBar instances in case the FlatScrollBar is hidden, and a listener that shows the Composites again in case the FlatScrollBar becomes visible again. This is done by setting a GridLayoutData with a matching exclude flag.

// create the vertical scroller
FlatScrollBarScroller verticalScroller =
    new FlatScrollBarScroller(vertical);

// register the hide/show listener
verticalScroller.addListener(SWT.Hide, new Listener() {
    @Override
    public void handleEvent(Event event) {
    	GridDataFactory
            .createFrom(verticalData)
            .exclude(true)
            .applyTo(verticalComposite);
    	GridDataFactory
            .createFrom(horizontalData)
            .span(2, 1)
            .applyTo(horizontalComposite);
    }
});
verticalScroller.addListener(SWT.Show, new Listener() {
    @Override
    public void handleEvent(Event event) {
    	verticalComposite.setLayoutData(verticalData);
    	horizontalComposite.setLayoutData(horizontalData);
    }
});

// create the horizontal scroller
FlatScrollBarScroller horizontalScroller =
    new FlatScrollBarScroller(horizontal);

// register the hide/show listener
horizontalScroller.addListener(SWT.Hide, new Listener() {
    @Override
    public void handleEvent(Event event) {
    	GridDataFactory
            .createFrom(verticalData)
            .span(1, 2)
            .applyTo(verticalComposite);
    	GridDataFactory
            .createFrom(horizontalData)
            .exclude(true)
            .applyTo(horizontalComposite);
    }
});
horizontalScroller.addListener(SWT.Show, new Listener() {
    @Override
    public void handleEvent(Event event) {
    	verticalComposite.setLayoutData(verticalData);
    	horizontalComposite.setLayoutData(horizontalData);
    }
});

// set the custom IScroller to the ViewportLayer
viewportLayer.setVerticalScroller(verticalScroller);
viewportLayer.setHorizontalScroller(horizontalScroller);

The last part is to set the style information to the NatTable and the FlatScrollBar instances.

// set a dark background to the wrapper container
container.setBackground(GUIHelper.COLOR_BLACK);

// set a dark styling to the scrollbars
vertical.setBackground(GUIHelper.COLOR_BLACK);
vertical.setPageIncrementColor(GUIHelper.COLOR_BLACK);
vertical.setThumbColor(GUIHelper.COLOR_DARK_GRAY);

horizontal.setBackground(GUIHelper.COLOR_BLACK);
horizontal.setPageIncrementColor(GUIHelper.COLOR_BLACK);
horizontal.setThumbColor(GUIHelper.COLOR_DARK_GRAY);

// set a dark styling to NatTable
natTable.setBackground(GUIHelper.COLOR_BLACK);
natTable.setTheme(new DarkNatTableThemeConfiguration());

Doing the steps described above it is possible to create a completely dark themed NatTable using custom scrollbars as shown in the picture below.

NatTable_dark_custom_scrollbars

At the time writing this blog post, there is no wrapper or adapter implementation in NatTable for creating a NatTable with custom scrollbars. But it might be added in the future, based on the above explanations.

The full example code is available here.


by Dirk Fauth at January 26, 2015 07:26 PM

EclipseCon 2015 - Register by February 2

January 26, 2015 04:49 PM

Join us in sunny California for EclipseCon 2015! Register by February 2 for the best price.

January 26, 2015 04:49 PM

The Open IoT Challenge has officially started!

by Benjamin Cabé at January 26, 2015 10:09 AM

The Open IoT Challenge has received an incredible amount of interest so far, and it is 45 projects in total who entered the challenge! They now have about a month to work on their solution and demonstrate why they deserve to win.

We expect all the challengers to document the evolution of their projects and it will be interesting to see the variety of technologies and open-source projects being used.
You can follow what is happening thanks to the Tumblr that we created for the occasion: http://openiotchallenge.tumblr.com.

open iot challenge tumblr

Finally, last week, we have selected 10 projects that have been awarded with a $150 gift card to help buy hardware parts for their solution. Here are the names of the lucky winners:

  • Davide De Cesaris
  • Ravi Butani
  • Franz Schnyder
  • Lotte Steenbrink
  • Tobiasz Dworak
  • Abhishek
  • Emir Ercan Ayar
  • Sergey Vasiliev
  • Markus Fischer
  • Arne Jenssen

by Benjamin Cabé at January 26, 2015 10:09 AM

Eclipse Hackathon 2015/01 – Hamburg

by eselmeister at January 26, 2015 07:59 AM

We had our first 2015 Eclipse Hackathon last friday in Hamburg. The next one will follow approximately in April.

Eclipse-Hackathon-HH-2015

It was a great meeting and I’d like to encourage others to do the same :-).


by eselmeister at January 26, 2015 07:59 AM

Customize Perspective is back

by Andrey Loskutov at January 24, 2015 09:12 PM

After 3 years of absence "Customize Perspective Dialog" is coming back to Eclipse - will be in Eclipse 4.5 M5. The dialog itself was of course always there, but starting with Eclipse 4.2 it has lost half of the content compared with the Eclipse 3.8 and was in most cases not functional or lead to strange effects. You can read what was broken in detail in the bug 420956 and linked bugs. But a picture is worth a thousand words, below are screenshots before and after my patches.

Menu tab before:


Menu tab after: 


Toolbar tab before: 


Toolbar tab after (doesn't fit on a single window): 



Action set tab before (right two panes are pretty empty): 



Action set tab  after: 



The patch (or the series of them) itself wasn't big, but without any documentation I had to reverse engineer and step through with the debugger the entire window/toolbar creation code, which currently consists of a funny mix of the "legacy" 3.x and "modern" e4 paradigms. It cost me nearly two weeks around Christmas and some time afterwards on polishing the patches during the reviews. Many thanks to everyone helped me on the way, but especially to Lars Vogel, Paul Webster, Noopur Gupta.


by Andrey Loskutov at January 24, 2015 09:12 PM