| Dynamically Created Images in Tables [message #915735] |
Mon, 17 September 2012 17:41  |
Paul Watson Messages: 12 Registered: July 2009 |
Junior Member |
|
|
Hi there,
What is the best way to go about displaying some dynamically created images in a table in RAP.
From the FAQ (http://wiki.eclipse.org/RAP/FAQ#How_to_display_dynamically_created_images.3F) it looked like I could create a BufferedImage, store it somewhere on the session store and retrieve it using a image service handler. I figured I could use the markup that is now supported for tables (and other widgets) to display the images).
However, when the images get displayed I get the following exception:
!ENTRY org.eclipse.rap.jface 4 2 2012-09-17 14:38:00.789
!MESSAGE Problems occurred when invoking code from plug-in: "org.eclipse.rap.jface".
!STACK 0
java.lang.IllegalArgumentException: Failed to parse markup text
at org.eclipse.swt.internal.widgets.MarkupValidator.validate(MarkupValidator.java:57)
at org.eclipse.swt.widgets.TableItem.setText(TableItem.java:261)
at org.eclipse.jface.viewers.TableViewerRow.setText(TableViewerRow.java:162)
at org.eclipse.jface.viewers.ViewerCell.setText(ViewerCell.java:162)
at org.eclipse.jface.viewers.ColumnLabelProvider.update(ColumnLabelProvider.java:36)
at org.eclipse.jface.viewers.ViewerColumn.refresh(ViewerColumn.java:155)
at org.eclipse.jface.viewers.AbstractTableViewer.doUpdateItem(AbstractTableViewer.java:399)
at org.eclipse.jface.viewers.StructuredViewer$UpdateItemSafeRunnable.run(StructuredViewer.java:483)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:51)
at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:177)
at org.eclipse.jface.viewers.StructuredViewer.updateItem(StructuredViewer.java:2149)
at org.eclipse.jface.viewers.AbstractTableViewer.createItem(AbstractTableViewer.java:277)
at org.eclipse.jface.viewers.AbstractTableViewer.internalRefreshAll(AbstractTableViewer.java:757)
at org.eclipse.jface.viewers.AbstractTableViewer.internalRefresh(AbstractTableViewer.java:649)
at org.eclipse.jface.viewers.AbstractTableViewer.internalRefresh(AbstractTableViewer.java:636)
at org.eclipse.jface.viewers.AbstractTableViewer$1.run(AbstractTableViewer.java:592)
at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1425)
at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1386)
at org.eclipse.jface.viewers.AbstractTableViewer.inputChanged(AbstractTableViewer.java:590)
at org.eclipse.jface.viewers.ContentViewer.setInput(ContentViewer.java:280)
at org.eclipse.jface.viewers.StructuredViewer.setInput(StructuredViewer.java:1672)
at org.eclipse.nebula.widgets.pagination.PageLoaderStrategyHelper.loadPageAndReplaceItems(PageLoaderStrategyHelper.java:88)
at org.eclipse.nebula.widgets.pagination.table.PageableTable.refreshPage(PageableTable.java:217)
at org.eclipse.nebula.widgets.pagination.AbstractPaginationWidget.internalRefreshPage(AbstractPaginationWidget.java:347)
at org.eclipse.nebula.widgets.pagination.AbstractPaginationWidget.pageIndexChanged(AbstractPaginationWidget.java:269)
at org.eclipse.nebula.widgets.pagination.PageableController.notifyListenersForPageIndexChanged(PageableController.java:313)
at org.eclipse.nebula.widgets.pagination.PageableController.reset(PageableController.java:290)
at org.eclipse.nebula.widgets.pagination.AbstractPaginationWidget.refreshPage(AbstractPaginationWidget.java:319)
at com.arenasoft.bench.core.ui.views.EntityTableView.refreshTable(EntityTableView.java:219)
at com.arenasoft.bench.core.ui.views.EntityTableView.setInput(EntityTableView.java:112)
at com.arenasoft.bench.core.ui.views.DataWarehouseView.loadViews(DataWarehouseView.java:210)
at com.arenasoft.bench.core.ui.views.DataWarehouseView.access$4(DataWarehouseView.java:203)
at com.arenasoft.bench.core.ui.views.DataWarehouseView$OpenEntityTypeAction.run(DataWarehouseView.java:450)
at com.arenasoft.bench.core.ui.views.DataWarehouseView.doubleClick(DataWarehouseView.java:231)
at org.eclipse.jface.viewers.StructuredViewer$1.run(StructuredViewer.java:828)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:51)
at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:177)
at org.eclipse.jface.viewers.StructuredViewer.fireDoubleClick(StructuredViewer.java:826)
at org.eclipse.jface.viewers.AbstractTreeViewer.handleDoubleSelect(AbstractTreeViewer.java:1422)
at org.eclipse.jface.viewers.StructuredViewer$4.widgetDefaultSelected(StructuredViewer.java:1228)
at org.eclipse.jface.util.OpenStrategy.fireDefaultSelectionEvent(OpenStrategy.java:242)
at org.eclipse.jface.util.OpenStrategy.access$0(OpenStrategy.java:239)
at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:304)
at org.eclipse.swt.internal.widgets.UntypedEventAdapter.dispatchEvent(UntypedEventAdapter.java:646)
at org.eclipse.swt.internal.widgets.UntypedEventAdapter.widgetDefaultSelected(UntypedEventAdapter.java:84)
at org.eclipse.swt.events.SelectionEvent.dispatchToObserver(SelectionEvent.java:194)
at org.eclipse.rwt.internal.events.Event.processEvent(Event.java:46)
at org.eclipse.swt.events.TypedEvent.processEvent(TypedEvent.java:186)
at org.eclipse.swt.events.TypedEvent.executeNext(TypedEvent.java:208)
at org.eclipse.swt.widgets.Display.runPendingMessages(Display.java:1145)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:1135)
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:702)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:685)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:157)
at com.arenasoft.bench.ui.application.rap.BenchApplication$1.run(BenchApplication.java:85)
at com.arenasoft.bench.ui.application.rap.BenchApplication$1.run(BenchApplication.java:1)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Unknown Source)
at com.arenasoft.bench.ui.application.rap.BenchApplication.start(BenchApplication.java:44)
at org.eclipse.rap.ui.internal.application.EntryPointApplicationWrapper.createUI(EntryPointApplicationWrapper.java:38)
at org.eclipse.rwt.internal.lifecycle.RWTLifeCycle.createUI(RWTLifeCycle.java:177)
at org.eclipse.rwt.internal.lifecycle.RWTLifeCycle$UIThreadController.run(RWTLifeCycle.java:289)
at java.lang.Thread.run(Unknown Source)
at org.eclipse.rwt.internal.lifecycle.UIThread.run(UIThread.java:101)
Caused by: org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 72; The reference to entity "imageId" must end with the ';' delimiter.
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLScanner.scanAttributeValue(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanAttribute(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse(Unknown Source)
at org.eclipse.swt.internal.widgets.MarkupValidator.validate(MarkupValidator.java:53)
... 69 more
It seems the markup parser is failing with the html for the img (see the example given below). Is there something I am doing wrong, or is this a bug?
<img src="/rap?custom_service_handler=imageServiceHandler&imageId=m3738.png&nocache=1347917880977"/>
An alternative approach would be to simply write the images somewhere and make them available on the webserver (I will probably end up using using Jetty), then include a simple link to image in the markup. I am pretty new to Jetty, can anyone point me in the right direction to some information about opening up an image directory and interacting with that from RAP.
Many thanks,
Paul
|
|
|
|
|
Powered by
FUDForum. Page generated in 0.01581 seconds