Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 494665

Summary: pgroup widget in makeithappen demo doesnt work in RAP
Product: [Modeling] ECP Reporter: Neil Mackenzie <neil>
Component: CommonAssignee: Project Inbox <emfcp.common-inbox>
Status: CLOSED FIXED QA Contact:
Severity: normal    
Priority: P5 CC: eneufeld
Version: unspecified   
Target Milestone: 1.9.0   
Hardware: PC   
OS: Windows NT   
Whiteboard:

Description Neil Mackenzie CLA 2016-05-26 12:04:53 EDT
Not sure if this should be a bug report or enhancement request.
When using ECP with RAP with the makeithappen model and viewmodel a stacktrace is reported when I try to display a 'User' element and the User element is not shown. If I remove the org.eclipse.ecp.view.group.ui.swt bundle from the launch script then I can display a User, but almost all attributes are not show (only the task list is shown). I am guessing that it is using a nebula widget which cannot be used in RAP because it makes use of a paint command to paint on a canvas. 
the stack trace is:

java.lang.NoClassDefFoundError: org/eclipse/swt/graphics/Region
	at org.eclipse.nebula.widgets.pgroup.RectangleGroupStrategy.paint(RectangleGroupStrategy.java:204)
	at org.eclipse.nebula.widgets.pgroup.PGroup.onPaint(PGroup.java:320)
	at org.eclipse.nebula.widgets.pgroup.PGroup.access$1(PGroup.java:315)
	at org.eclipse.nebula.widgets.pgroup.PGroup$2.paintControl(PGroup.java:243)
	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:251)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:86)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:708)
	at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:610)
	at org.eclipse.swt.widgets.Canvas.repaint(Canvas.java:191)
	at org.eclipse.swt.widgets.Canvas.notifyResize(Canvas.java:170)
	at org.eclipse.swt.widgets.Control.setBounds(Control.java:2469)
	at org.eclipse.swt.widgets.Control.setBounds(Control.java:867)
	at org.eclipse.swt.widgets.Control.setBounds(Control.java:894)
	at org.eclipse.swt.layout.GridLayout.layout(GridLayout.java:689)
	at org.eclipse.swt.layout.GridLayout.layout(GridLayout.java:191)
	at org.eclipse.swt.widgets.Composite.updateLayout(Composite.java:538)
	at org.eclipse.swt.widgets.Composite$1.run(Composite.java:876)
	at org.eclipse.rap.rwt.internal.lifecycle.ProcessActionRunner.add(ProcessActionRunner.java:30)
	at org.eclipse.swt.widgets.Composite.notifyResize(Composite.java:872)
	at org.eclipse.swt.widgets.Control.setBounds(Control.java:2469)
	at org.eclipse.swt.widgets.Control.setBounds(Control.java:867)
	at org.eclipse.swt.widgets.Control.setBounds(Control.java:894)
	at org.eclipse.swt.layout.GridLayout.layout(GridLayout.java:689)
	at org.eclipse.swt.layout.GridLayout.layout(GridLayout.java:191)
	at org.eclipse.swt.widgets.Composite.updateLayout(Composite.java:538)
	at org.eclipse.swt.widgets.Composite$1.run(Composite.java:876)
	at org.eclipse.rap.rwt.internal.lifecycle.ProcessActionRunner.add(ProcessActionRunner.java:30)
	at org.eclipse.swt.widgets.Composite.notifyResize(Composite.java:872)
	at org.eclipse.swt.widgets.Control.setBounds(Control.java:2469)
	at org.eclipse.swt.widgets.Control.setBounds(Control.java:867)
	at org.eclipse.swt.widgets.Control.setBounds(Control.java:894)
	at org.eclipse.swt.layout.GridLayout.layout(GridLayout.java:689)
	at org.eclipse.swt.layout.GridLayout.layout(GridLayout.java:191)
	at org.eclipse.swt.widgets.Composite.updateLayout(Composite.java:538)
	at org.eclipse.swt.widgets.Composite$1.run(Composite.java:876)
	at org.eclipse.rap.rwt.internal.lifecycle.ProcessActionRunner.add(ProcessActionRunner.java:30)
	at org.eclipse.swt.widgets.Composite.notifyResize(Composite.java:872)
	at org.eclipse.swt.widgets.Control.setBounds(Control.java:2469)
	at org.eclipse.swt.widgets.Control.setBounds(Control.java:867)
	at org.eclipse.swt.widgets.Control.setBounds(Control.java:894)
	at org.eclipse.swt.layout.GridLayout.layout(GridLayout.java:689)
	at org.eclipse.swt.layout.GridLayout.layout(GridLayout.java:191)
	at org.eclipse.swt.widgets.Composite.updateLayout(Composite.java:538)
	at org.eclipse.swt.widgets.Composite$1.run(Composite.java:876)
	at org.eclipse.rap.rwt.internal.lifecycle.ProcessActionRunner.add(ProcessActionRunner.java:30)
	at org.eclipse.swt.widgets.Composite.notifyResize(Composite.java:872)
	at org.eclipse.swt.widgets.Control.setBounds(Control.java:2469)
	at org.eclipse.swt.widgets.Control.setBounds(Control.java:867)
	at org.eclipse.swt.widgets.Control.setBounds(Control.java:894)
	at org.eclipse.ui.forms.widgets.SizeCache.setBounds(SizeCache.java:512)
	at org.eclipse.ui.forms.widgets.Form$FormLayout.layout(Form.java:159)
	at org.eclipse.swt.widgets.Composite.updateLayout(Composite.java:538)
	at org.eclipse.swt.widgets.Composite$1.run(Composite.java:876)
	at org.eclipse.rap.rwt.internal.lifecycle.ProcessActionRunner.add(ProcessActionRunner.java:30)
	at org.eclipse.swt.widgets.Composite.notifyResize(Composite.java:872)
	at org.eclipse.swt.widgets.Control.setBounds(Control.java:2469)
	at org.eclipse.swt.widgets.Control.setBounds(Control.java:867)
	at org.eclipse.swt.widgets.Control.setSize(Control.java:981)
	at org.eclipse.swt.widgets.Control.setSize(Control.java:1001)
	at org.eclipse.rap.rwt.internal.textsize.EnlargeScrolledCompositeContentVisitor.enlargeContentControl(EnlargeScrolledCompositeContentVisitor.java:37)
	at org.eclipse.rap.rwt.internal.textsize.EnlargeScrolledCompositeContentVisitor.enlargeContentControl(EnlargeScrolledCompositeContentVisitor.java:30)
	at org.eclipse.rap.rwt.internal.textsize.EnlargeScrolledCompositeContentVisitor.doVisit(EnlargeScrolledCompositeContentVisitor.java:24)
	at org.eclipse.swt.internal.widgets.WidgetTreeVisitor$AllWidgetTreeVisitor.visit(WidgetTreeVisitor.java:40)
	at org.eclipse.swt.internal.widgets.WidgetTreeVisitor.accept(WidgetTreeVisitor.java:52)
	at org.eclipse.swt.internal.widgets.WidgetTreeVisitor.handleChildren(WidgetTreeVisitor.java:127)
	at org.eclipse.swt.internal.widgets.WidgetTreeVisitor.accept(WidgetTreeVisitor.java:57)
	at org.eclipse.swt.internal.widgets.WidgetTreeVisitor.handleChildren(WidgetTreeVisitor.java:127)
	at org.eclipse.swt.internal.widgets.WidgetTreeVisitor.accept(WidgetTreeVisitor.java:57)
	at org.eclipse.swt.internal.widgets.WidgetTreeVisitor.handleChildren(WidgetTreeVisitor.java:127)
	at org.eclipse.swt.internal.widgets.WidgetTreeVisitor.accept(WidgetTreeVisitor.java:57)
	at org.eclipse.swt.internal.widgets.WidgetTreeVisitor.handleChildren(WidgetTreeVisitor.java:127)
	at org.eclipse.swt.internal.widgets.WidgetTreeVisitor.accept(WidgetTreeVisitor.java:57)
	at org.eclipse.swt.internal.widgets.WidgetTreeVisitor.handleChildren(WidgetTreeVisitor.java:127)
	at org.eclipse.swt.internal.widgets.WidgetTreeVisitor.accept(WidgetTreeVisitor.java:57)
	at org.eclipse.swt.internal.widgets.WidgetTreeVisitor.handleChildren(WidgetTreeVisitor.java:127)
	at org.eclipse.swt.internal.widgets.WidgetTreeVisitor.accept(WidgetTreeVisitor.java:57)
	at org.eclipse.swt.internal.widgets.WidgetTreeVisitor.handleChildren(WidgetTreeVisitor.java:127)
	at org.eclipse.swt.internal.widgets.WidgetTreeVisitor.accept(WidgetTreeVisitor.java:57)
	at org.eclipse.swt.internal.widgets.WidgetTreeVisitor.handleChildren(WidgetTreeVisitor.java:127)
	at org.eclipse.swt.internal.widgets.WidgetTreeVisitor.accept(WidgetTreeVisitor.java:57)
	at org.eclipse.swt.internal.widgets.WidgetTreeVisitor.handleChildren(WidgetTreeVisitor.java:127)
	at org.eclipse.swt.internal.widgets.WidgetTreeVisitor.accept(WidgetTreeVisitor.java:57)
	at org.eclipse.swt.internal.widgets.WidgetTreeVisitor.handleChildren(WidgetTreeVisitor.java:127)
	at org.eclipse.swt.internal.widgets.WidgetTreeVisitor.accept(WidgetTreeVisitor.java:57)
	at org.eclipse.rap.rwt.internal.textsize.TextSizeRecalculation.enlargeScrolledCompositeContent(TextSizeRecalculation.java:72)
	at org.eclipse.rap.rwt.internal.textsize.TextSizeRecalculation.forceShellRecalculations(TextSizeRecalculation.java:46)
	at org.eclipse.rap.rwt.internal.textsize.TextSizeRecalculation.execute(TextSizeRecalculation.java:35)
	at org.eclipse.rap.rwt.internal.textsize.MeasurementOperator$MeasurementOperatorHandler$1.run(MeasurementOperator.java:126)
	at org.eclipse.rap.rwt.internal.lifecycle.ProcessActionRunner.executeNext(ProcessActionRunner.java:50)
	at org.eclipse.swt.widgets.Display.runPendingMessages(Display.java:1195)
	at org.eclipse.swt.widgets.Display.safeReadAndDispatch(Display.java:1180)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:1172)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2733)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2694)
	at org.eclipse.ui.internal.Workbench.access$5(Workbench.java:2530)
	at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:701)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:337)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:684)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:157)
	at org.eclipse.emf.ecp.rap.Application.createUI(Application.java:40)
	at org.eclipse.rap.rwt.internal.lifecycle.RWTLifeCycle.createUI(RWTLifeCycle.java:171)
	at org.eclipse.rap.rwt.internal.lifecycle.RWTLifeCycle$UIThreadController.run(RWTLifeCycle.java:283)
	at java.lang.Thread.run(Unknown Source)
	at org.eclipse.rap.rwt.internal.lifecycle.UIThread.run(UIThread.java:104)
Comment 1 Eugen Neufeld CLA 2016-05-26 14:20:26 EDT
Hi Neil, 
if the problem is the PGroup (which should work according to the nebula widgets website), you can remove the makeithappen.view.group.renderer plugin and keep the ecp.view.group plugin. This way a simple swt group should be drawn and everything should work otherwise.

I will check with the rap team about this issue, maybe they know more.

Cheers,
Eugen
Comment 2 Eugen Neufeld CLA 2016-05-27 03:15:07 EDT
Hi Neil, 
I checked with the rap team and there was a newsgroup entry:
https://www.eclipse.org/forums/index.php/t/1074244/
It basically says, that some changes are needed in the nebula widgets (like package import instead of required bundle) to get them running in rap, but otherwise most things should work.

I thus will close this as this must be fixed on the nebula side and we should only update the nebula library.

Cheers,
Eugen