IBM Support

Browser control based Rich Text editor for Documentation

Troubleshooting


Problem

On Windows platforms, users migrating from IBM Rational Software Architect Standard Edition 7.5.x to IBM Rational Software Architect 8.x or later will observe the differences in Rich Text documentation editor capabilities. This is because in IBM Rational Software Architect Standard Edition 7.5.x, documentation editor is based on Browser control based Rich text editor (a.k.a EPF Rich Text editor). Whereas, in IBM Rational Software Architect 8.x onwards, the documentation editor is based on the GEF control based Rich text editor.

Symptom

The GEF control based Rich text editor provided from IBM Rational Software Architect 8.x has limitations w.r.t supporting a certain html tags rendering compared to Browser control based Rich text editor used in IBM Rational Software Architect Standard Edition 7.5.x.

These limitations result in the following types of errors while opening the IBM Rational Software Architect 7.5.x models in IBM Rational Software Architect 8.x or later and also during the usage of the GEF documentation editor.

Symptom 1: Upgrading model with a table in the Documentation, the table cells are rearranged due to unsupported colspan and rowspan attributes in the html contents.

!ENTRY org.eclipse.ui 4 0 2014-11-12 07:33:33.293
!MESSAGE Unhandled event loop exception
!STACK 0
java.lang.NullPointerException
    at com.ibm.xtools.richtext.gef.internal.figures.FlowTableLayout$CellConstraints.access$0(Unknown Source)
    at com.ibm.xtools.richtext.gef.internal.figures.FlowTableLayout.resetData(Unknown Source)
    at com.ibm.xtools.richtext.gef.internal.figures.FlowTableLayout.layoutChildren(Unknown Source)
    at com.ibm.xtools.richtext.gef.internal.figures.FlowContainerLayout.layout(Unknown Source)
    at com.ibm.xtools.richtext.gef.internal.figures.FlowFigureLayout.layout(Unknown Source)
    at org.eclipse.draw2d.Figure$LayoutNotifier.layout(Unknown Source)
    at org.eclipse.draw2d.Figure.layout(Unknown Source)
    at org.eclipse.draw2d.Figure.validate(Unknown Source)
    at com.ibm.xtools.richtext.gef.internal.figures.BlockFlow.validate(Unknown Source)
    at com.ibm.xtools.richtext.gef.internal.figures.FlowContainerLayout.layoutChildren(Unknown Source)
    at com.ibm.xtools.richtext.gef.internal.figures.FlowContainerLayout.layout(Unknown Source)
    at com.ibm.xtools.richtext.gef.internal.figures.FlowFigureLayout.layout(Unknown Source)
    at org.eclipse.draw2d.Figure.layout(Unknown Source)
    at org.eclipse.draw2d.Figure.validate(Unknown Source)
    at com.ibm.xtools.richtext.gef.internal.figures.BlockFlow.validate(Unknown Source)
    at com.ibm.xtools.richtext.gef.internal.figures.FlowContainerLayout.layoutChildren(Unknown Source)
    at com.ibm.xtools.richtext.gef.internal.figures.FlowContainerLayout.layout(Unknown Source)
    at com.ibm.xtools.richtext.gef.internal.figures.FlowFigureLayout.layout(Unknown Source)
    at org.eclipse.draw2d.Figure.layout(Unknown Source)
    at org.eclipse.draw2d.Figure.validate(Unknown Source)
    at com.ibm.xtools.richtext.gef.internal.figures.BlockFlow.validate(Unknown Source)

Symptom 2: Upgrading model with a table in the Documentation, the table cells are rearranged due to unsupported colspan and rowspan attributes in the html contents.

java.lang.IllegalArgumentException: TableCells can only be added to FlowTables
    at com.ibm.xtools.richtext.gef.internal.figures.TableCell.checkValidParent(TableCell.java:23)
    at com.ibm.xtools.richtext.gef.internal.figures.FlowFigure.setParent(FlowFigure.java:207)
    at org.eclipse.draw2d.Figure.add(Figure.java:155)

Symptom 3: Upgrading model with table in Documentation results in table and/or its contents are removed due to the internal errors.

!ENTRY com.ibm.xtools.richtext.gef 4 0 2014-11-24 06:53:16.781
!MESSAGE index=4, size=4
!STACK 0
org.eclipse.emf.common.util.BasicEList$BasicIndexOutOfBoundsException: index=4, size=4
    at org.eclipse.emf.common.util.BasicEList.get(Unknown Source)
    at com.ibm.xtools.richtext.gef.internal.editparts.TablePart.refreshChildren(Unknown Source)
    at com.ibm.xtools.richtext.gef.internal.editparts.EMFEditPart.refreshVisuals(Unknown Source)
    at com.ibm.xtools.richtext.gef.internal.editparts.FlowTypePart.refreshVisuals(Unknown Source)
    at com.ibm.xtools.richtext.gef.internal.editparts.EMFEditPart.refresh(Unknown Source)
    at org.eclipse.gef.editparts.AbstractEditPart.addNotify(Unknown Source)
    at org.eclipse.gef.editparts.AbstractGraphicalEditPart.addNotify(Unknown Source)
    at com.ibm.xtools.richtext.gef.internal.editparts.TablePart.addNotify(Unknown Source)
    at org.eclipse.gef.editparts.AbstractEditPart.addChild(Unknown Source)
    at org.eclipse.gef.editparts.AbstractEditPart.refreshChildren(Unknown Source)
    at com.ibm.xtools.richtext.gef.internal.editparts.EMFEditPart.refreshVisuals(Unknown Source)
    at com.ibm.xtools.richtext.gef.internal.editparts.FlowTypePart.refreshVisuals(Unknown Source)
    at com.ibm.xtools.richtext.gef.internal.editparts.BlockContainerPart.refreshVisuals(Unknown Source)
    at com.ibm.xtools.richtext.gef.internal.editparts.EMFEditPart.refresh(Unknown Source)
    at org.eclipse.gef.editparts.AbstractEditPart.addNotify(Unknown Source)
    at org.eclipse.gef.editparts.AbstractGraphicalEditPart.addNotify(Unknown Source)
    at org.eclipse.gef.editparts.AbstractEditPart.addChild(Unknown Source)
    at org.eclipse.gef.editparts.AbstractEditPart.refreshChildren(Unknown Source)
    at com.ibm.xtools.richtext.gef.internal.editparts.EMFEditPart.refreshVisuals(Unknown Source)
    at com.ibm.xtools.richtext.gef.internal.editparts.FlowTypePart.refreshVisuals(Unknown Source)
    at com.ibm.xtools.richtext.gef.internal.editparts.BodyEditPart.refreshVisuals(Unknown Source)
    at com.ibm.xtools.richtext.gef.internal.editparts.EMFEditPart.refresh(Unknown Source)
    at org.eclipse.gef.editparts.AbstractEditPart.addNotify(Unknown Source)
    at org.eclipse.gef.editparts.AbstractGraphicalEditPart.addNotify(Unknown Source)
    at org.eclipse.gef.editparts.AbstractEditPart.addChild(Unknown Source)
    at org.eclipse.gef.editparts.SimpleRootEditPart.setContents(Unknown Source)
    at org.eclipse.gef.ui.parts.AbstractEditPartViewer.setContents(Unknown Source)
    at org.eclipse.gef.ui.parts.AbstractEditPartViewer.setContents(Unknown Source) ...

AND

!ENTRY org.eclipse.ui 4 0 2014-11-24 06:53:16.806
!MESSAGE Unhandled event loop exception
!STACK 0
org.eclipse.swt.SWTException: Failed to execute runnable (java.lang.NullPointerException)
    at org.eclipse.swt.SWT.error(Unknown Source)
    at org.eclipse.swt.SWT.error(Unknown Source)
    at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Unknown Source)
    at org.eclipse.swt.widgets.Display.runAsyncMessages(Unknown Source)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Unknown Source)
    at org.eclipse.ui.internal.Workbench.runEventLoop(Unknown Source)
    at org.eclipse.ui.internal.Workbench.runUI(Unknown Source)
    at org.eclipse.ui.internal.Workbench.access$4(Unknown Source)
    at org.eclipse.ui.internal.Workbench$7.run(Unknown Source)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Unknown Source)
    at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Unknown Source)
    at org.eclipse.ui.PlatformUI.createAndRunWorkbench(Unknown Source)
    at org.eclipse.ui.internal.ide.application.IDEApplication.start(Unknown Source)
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(Unknown Source)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(Unknown Source)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(Unknown Source)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(Unknown Source)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(Unknown Source)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.eclipse.equinox.launcher.Main.invokeFramework(Unknown Source)
    at org.eclipse.equinox.launcher.Main.basicRun(Unknown Source)
    at org.eclipse.equinox.launcher.Main.run(Unknown Source)
    at org.eclipse.equinox.launcher.Main.main(Unknown Source)
Caused by: java.lang.NullPointerException
    at com.ibm.xtools.richtext.gef.internal.figures.FlowTableLayout$CellConstraints.access$0(Unknown Source)
    at com.ibm.xtools.richtext.gef.internal.figures.FlowTableLayout.resetData(Unknown Source)
    at com.ibm.xtools.richtext.gef.internal.figures.FlowTableLayout.layoutChildren(Unknown Source)
    at com.ibm.xtools.richtext.gef.internal.figures.FlowContainerLayout.layout(Unknown Source)
    at com.ibm.xtools.richtext.gef.internal.figures.FlowFigureLayout.layout(Unknown Source)
    at org.eclipse.draw2d.Figure$LayoutNotifier.layout(Unknown Source)
    at org.eclipse.draw2d.Figure.layout(Unknown Source)
    at org.eclipse.draw2d.Figure.validate(Unknown Source)
    at com.ibm.xtools.richtext.gef.internal.figures.BlockFlow.validate(Unknown Source)
    at com.ibm.xtools.richtext.gef.internal.figures.FlowContainerLayout.layoutChildren(Unknown Source)
    at com.ibm.xtools.richtext.gef.internal.figures.FlowContainerLayout.layout(Unknown Source)
    at com.ibm.xtools.richtext.gef.internal.figures.FlowFigureLayout.layout(Unknown Source)
    at org.eclipse.draw2d.Figure.layout(Unknown Source)
    at org.eclipse.draw2d.Figure.validate(Unknown Source)
    at com.ibm.xtools.richtext.gef.internal.figures.BlockFlow.validate(Unknown Source)
    at com.ibm.xtools.richtext.gef.internal.figures.FlowContainerLayout.layoutChildren(Unknown Source)
    at com.ibm.xtools.richtext.gef.internal.figures.FlowContainerLayout.layout(Unknown Source)
    at com.ibm.xtools.richtext.gef.internal.figures.FlowFigureLayout.layout(Unknown Source)
    at org.eclipse.draw2d.Figure.layout(Unknown Source)
    at org.eclipse.draw2d.Figure.validate(Unknown Source)
    at com.ibm.xtools.richtext.gef.internal.figures.BlockFlow.validate(Unknown Source)
    at com.ibm.xtools.richtext.gef.internal.figures.FlowPage.validate(Unknown Source)
    at com.ibm.xtools.richtext.gef.internal.figures.FlowPage.getPreferredSize(Unknown Source)
    at com.ibm.xtools.richtext.gef.internal.figures.FlowPage.getMinimumSize(Unknown Source) .....

Symptom 4: Copying and pasting in the documentation rich text editor, one table row information into another throws the following error in the Error log and nothing happens.

!ENTRY org.eclipse.e4.ui.workbench 4 0 2014-10-24 16:37:38.760
!MESSAGE
!STACK 0
org.eclipse.e4.core.di.InjectionException: java.lang.ClassCastException: com.ibm.xtools.richtext.emf.impl.TableRowImpl incompatible with com.ibm.xtools.richtext.emf.TableColumn
    at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:63)
    at org.eclipse.e4.core.internal.di.InjectorImpl.invokeUsingClass(InjectorImpl.java:231)
    at org.eclipse.e4.core.internal.di.InjectorImpl.invoke(InjectorImpl.java:212)
    at org.eclipse.e4.core.contexts.ContextInjectionFactory.invoke(ContextInjectionFactory.java:131)
    at org.eclipse.e4.core.commands.internal.HandlerServiceImpl.executeHandler(HandlerServiceImpl.java:171)
    at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.executeCommand(KeyBindingDispatcher.java:277)
    at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.press(KeyBindingDispatcher.java:496)
    at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.processKeyEvent(KeyBindingDispatcher.java:547)
    at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.filterKeySequenceBindings(KeyBindingDispatcher.java:368)
    at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.access$0(KeyBindingDispatcher.java:314)
    at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher$KeyDownFilter.handleEvent(KeyBindingDispatcher.java:83)
    at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
    at org.eclipse.swt.widgets.Display.filterEvent(Display.java:1262)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1052)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1077)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1062)
    at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1104)
    at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1100)
    at org.eclipse.swt.widgets.Widget.wmChar(Widget.java:1521)
    at org.eclipse.swt.widgets.Control.WM_CHAR(Control.java:4640)
    at org.eclipse.swt.widgets.Canvas.WM_CHAR(Canvas.java:345)
    at org.eclipse.swt.widgets.Control.windowProc(Control.java:4528)
    at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:341)
    at org.eclipse.swt.widgets.Display.windowProc(Display.java:4976)
    at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method)
    at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:2546)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3756)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1054)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:943)
    at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:88)
    at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:589)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
    at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:543)
    at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
    at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:124)
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:353)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:180)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:88)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)
    at java.lang.reflect.Method.invoke(Method.java:618)
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:629)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:584)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1438)
    at org.eclipse.equinox.launcher.Main.main(Main.java:1414)
Caused by: java.lang.ClassCastException: com.ibm.xtools.richtext.emf.impl.TableRowImpl incompatible with com.ibm.xtools.richtext.emf.TableColumn
    at com.ibm.xtools.richtext.gef.internal.editparts.TablePart.refreshChildren(TablePart.java:125)
    at com.ibm.xtools.richtext.gef.internal.editparts.EMFEditPart.refreshVisuals(EMFEditPart.java:139)
    at com.ibm.xtools.richtext.gef.internal.editparts.FlowTypePart.refreshVisuals(FlowTypePart.java:93)
    at com.ibm.xtools.richtext.gef.internal.editparts.EMFEditPart.refresh(EMFEditPart.java:117)
    at org.eclipse.gef.editparts.AbstractEditPart.addNotify(AbstractEditPart.java:253)
    at org.eclipse.gef.editparts.AbstractGraphicalEditPart.addNotify(AbstractGraphicalEditPart.java:223)
    at com.ibm.xtools.richtext.gef.internal.editparts.TablePart.addNotify(TablePart.java:56)
    at org.eclipse.gef.editparts.AbstractEditPart.addChild(AbstractEditPart.java:212)
    at org.eclipse.gef.editparts.AbstractEditPart.refreshChildren(AbstractEditPart.java:781)
    at com.ibm.xtools.richtext.gef.internal.editparts.EMFEditPart.refreshVisuals(EMFEditPart.java:139)
    at com.ibm.xtools.richtext.gef.internal.editparts.FlowTypePart.refreshVisuals(FlowTypePart.java:93)
    at com.ibm.xtools.richtext.gef.internal.editparts.BodyEditPart.refreshVisuals(BodyEditPart.java:175)
    at com.ibm.xtools.richtext.gef.internal.notification.VisualPropertyUpdate.run(VisualPropertyUpdate.java:42)
    at com.ibm.xtools.richtext.gef.internal.notification.ViewerUpdateStrategy.executeUpdates(ViewerUpdateStrategy.java:68)
    at com.ibm.xtools.richtext.gef.internal.notification.ViewerUpdateStrategy.endBatchProcessing(ViewerUpdateStrategy.java:61)
    at com.ibm.xtools.richtext.gef.internal.notification.DomainNotifier.stackChanged(DomainNotifier.java:52)
    at org.eclipse.gef.commands.CommandStack.notifyListeners(CommandStack.java:329)
    at com.ibm.xtools.richtext.gef.internal.commands.RichTextCommandStack.notifyListeners(RichTextCommandStack.java:57)
    at com.ibm.xtools.richtext.gef.internal.commands.RichTextCommandStack.doExecute(RichTextCommandStack.java:82)
    at com.ibm.xtools.richtext.gef.internal.commands.RichTextCommandStack.execute(RichTextCommandStack.java:65)
    at com.ibm.xtools.richtext.control.internal.GEFRichText.executeCommand(GEFRichText.java:676)
    at com.ibm.xtools.richtext.control.internal.actions.PasteAction.run(PasteAction.java:45)
    at com.ibm.xtools.richtext.control.internal.util.RichtextKeyBindingHandler.execute(RichtextKeyBindingHandler.java:97)
    at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:290)
    at org.eclipse.ui.internal.handlers.E4HandlerProxy.execute(E4HandlerProxy.java:81)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:88)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)
    at java.lang.reflect.Method.invoke(Method.java:618)
    at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:56)
    ... 48 more

!ENTRY org.eclipse.ui 4 0 2014-10-24 16:37:38.822
!MESSAGE Unhandled event loop exception
!STACK 0
org.eclipse.swt.SWTException: Failed to execute runnable (java.lang.NullPointerException)
    at org.eclipse.swt.SWT.error(SWT.java:4361)
    at org.eclipse.swt.SWT.error(SWT.java:4276)
    at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:138)
    at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4144)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3761)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1054)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:943)
    at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:88)
    at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:589)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
    at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:543)
    at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
    at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:124)
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:353)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:180)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:88)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)
    at java.lang.reflect.Method.invoke(Method.java:618)
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:629)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:584)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1438)
    at org.eclipse.equinox.launcher.Main.main(Main.java:1414)
Caused by: java.lang.NullPointerException
    at com.ibm.xtools.richtext.gef.internal.figures.FlowTableLayout$CellConstraints.access$0(FlowTableLayout.java:318)
    at com.ibm.xtools.richtext.gef.internal.figures.FlowTableLayout.resetData(FlowTableLayout.java:207)
    at com.ibm.xtools.richtext.gef.internal.figures.FlowTableLayout.layoutChildren(FlowTableLayout.java:145)
    at com.ibm.xtools.richtext.gef.internal.figures.FlowContainerLayout.layout(FlowContainerLayout.java:97)
    at com.ibm.xtools.richtext.gef.internal.figures.FlowFigureLayout.layout(FlowFigureLayout.java:100)
    at org.eclipse.draw2d.Figure$LayoutNotifier.layout(Figure.java:1976)
    at org.eclipse.draw2d.Figure.layout(Figure.java:1093)
    at org.eclipse.draw2d.Figure.validate(Figure.java:1896)
    at com.ibm.xtools.richtext.gef.internal.figures.BlockFlow.validate(BlockFlow.java:321)
    at com.ibm.xtools.richtext.gef.internal.figures.FlowContainerLayout.layoutChildren(FlowContainerLayout.java:111)
    at com.ibm.xtools.richtext.gef.internal.figures.FlowContainerLayout.layout(FlowContainerLayout.java:97)
    at com.ibm.xtools.richtext.gef.internal.figures.FlowFigureLayout.layout(FlowFigureLayout.java:100)
    at org.eclipse.draw2d.Figure.layout(Figure.java:1093)
    at org.eclipse.draw2d.Figure.validate(Figure.java:1896)
    at com.ibm.xtools.richtext.gef.internal.figures.BlockFlow.validate(BlockFlow.java:321)
    at com.ibm.xtools.richtext.gef.internal.figures.FlowPage.validate(FlowPage.java:155)
    at com.ibm.xtools.richtext.gef.internal.figures.FlowPage.getPreferredSize(FlowPage.java:92)
    at com.ibm.xtools.richtext.gef.internal.figures.FlowPage.getMinimumSize(FlowPage.java:62)
    at org.eclipse.draw2d.StackLayout.calculateMinimumSize(StackLayout.java:44)
    at org.eclipse.draw2d.AbstractHintLayout.getMinimumSize(AbstractHintLayout.java:73)
    at org.eclipse.draw2d.Figure.getMinimumSize(Figure.java:779)
    at org.eclipse.draw2d.BorderLayout.calculateMinimumSize(BorderLayout.java:94)
    at org.eclipse.draw2d.AbstractHintLayout.getMinimumSize(AbstractHintLayout.java:73)
    at org.eclipse.draw2d.Figure.getMinimumSize(Figure.java:779)
    at org.eclipse.draw2d.StackLayout.calculateMinimumSize(StackLayout.java:44)
    at org.eclipse.draw2d.AbstractHintLayout.getMinimumSize(AbstractHintLayout.java:73)
    at org.eclipse.draw2d.Figure.getMinimumSize(Figure.java:779)
    at org.eclipse.draw2d.StackLayout.calculateMinimumSize(StackLayout.java:44)
    at org.eclipse.draw2d.AbstractHintLayout.getMinimumSize(AbstractHintLayout.java:73)
    at org.eclipse.draw2d.Figure.getMinimumSize(Figure.java:779)
    at org.eclipse.draw2d.StackLayout.calculateMinimumSize(StackLayout.java:44)
    at org.eclipse.draw2d.AbstractHintLayout.getMinimumSize(AbstractHintLayout.java:73)
    at org.eclipse.draw2d.Figure.getMinimumSize(Figure.java:779)
    at org.eclipse.draw2d.ScalableLayeredPane.getMinimumSize(ScalableLayeredPane.java:46)
    at org.eclipse.draw2d.StackLayout.calculateMinimumSize(StackLayout.java:44)
    at org.eclipse.draw2d.AbstractHintLayout.getMinimumSize(AbstractHintLayout.java:73)
    at org.eclipse.draw2d.Figure.getMinimumSize(Figure.java:779)
    at org.eclipse.draw2d.ViewportLayout.calculatePreferredSize(ViewportLayout.java:70)
    at org.eclipse.draw2d.AbstractLayout.getPreferredSize(AbstractLayout.java:110)
    at org.eclipse.draw2d.AbstractHintLayout.getPreferredSize(AbstractHintLayout.java:90)
    at org.eclipse.draw2d.Figure.getPreferredSize(Figure.java:807)
    at org.eclipse.draw2d.ScrollPaneSolver.solve(ScrollPaneSolver.java:82)
    at org.eclipse.draw2d.FigureCanvas.layoutViewport(FigureCanvas.java:325)
    at org.eclipse.draw2d.FigureCanvas.access$4(FigureCanvas.java:323)
    at org.eclipse.draw2d.FigureCanvas$3.notifyValidating(FigureCanvas.java:292)
    at org.eclipse.draw2d.UpdateManager.fireValidating(UpdateManager.java:143)
    at org.eclipse.draw2d.DeferredUpdateManager.performValidation(DeferredUpdateManager.java:214)
    at org.eclipse.draw2d.DeferredUpdateManager.performUpdate(DeferredUpdateManager.java:190)
    at org.eclipse.draw2d.DeferredUpdateManager$UpdateRequest.run(DeferredUpdateManager.java:44)
    at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
    at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:135)
    ... 24 more

Resolving The Problem

To avoid the limitations of GEF control based editor w.r.t rendering of the html tags etc, Browser control based editor is also supported in IBM Rational Software Architect Designer 9.5 onwards (for Windows platforms only).

To be consistent with previous versions (8.x and 9.x) of IBM Rational Software Architect documentation editor capabilities, the GEF based rich text editor is enabled by default.

If required, user can selectively enable the Browser control (or EPF control) based editor as follows:

    1. Start IBM Rational Software Architect Designer
    2. Open Windows -> Preferences dialog
    3. Select Modeling -> Text preference
    4. Enable 'Enable browser control based editor' option.
    5. Click on OK button
When user opens the documentation editor in Properties view and in diagram by using context menu etc, the Browser control based editor will be opened.

Note: Documentation editor for UML Comment and Note elements in diagrams will still use the GEF control based Rich text editor.

[{"Product":{"code":"SSYK2S","label":"Rational Software Architect Designer"},"Business Unit":{"code":"BU053","label":"Cloud & Data Platform"},"Component":"Not Applicable","Platform":[{"code":"PF033","label":"Windows"}],"Version":"9.5","Edition":"","Line of Business":{"code":"LOB36","label":"IBM Automation"}},{"Product":{"code":"SSYKBQ","label":"Rational Software Architect Designer for WebSphere Software"},"Business Unit":{"code":"BU053","label":"Cloud & Data Platform"},"Component":"Not Applicable","Platform":[{"code":"","label":""}],"Version":"","Edition":"","Line of Business":{"code":"LOB45","label":"Automation"}}]

Document Information

Modified date:
17 February 2020

UID

swg21966116