Skip to main content



      Home
Home » Archived » Sapphire » Customise samples(How to customise the sapphire samples)
Customise samples [message #1374867] Thu, 22 May 2014 16:51 Go to next message
Eclipse UserFriend
Hi ,

I am new to sapphire. I downloaded and tried the samples. In order to become familiar with sapphire i want to start customising one of the existing samples to make it meet my needs. So i started by adding a new text field "version" in the class item.java in the catalog sample.

@Required
@XmlBinding( path = "Version" )

ValueProperty PROP_VERSION = new ValueProperty( TYPE, "Version" );

Value<String> getVersion();
void setVersion( String value );

However the field "version" does not appear in the editor "catalog.xml" when i try to add a new item. I only added some information in the item.java. Do i need to modify any other file as well?

In general, my question is how to add new fields in the existing samples and how the changes are propagated in the editor. Do i need to compile the sample somehow?
Re: Customise samples [message #1374884 is a reply to message #1374867] Thu, 22 May 2014 17:04 Go to previous messageGo to next message
Eclipse UserFriend
You need to reference the new property in CatalogEditor.sdef, the UI definition file. If you open this file in Eclipse with Sapphire SDK installed, it will open in the sdef editor. Then find the section where other related properties are referenced and add the new one.

For an end-to-end overview of Sapphire, see the introduction document.
Re: Customise samples [message #1374944 is a reply to message #1374884] Thu, 22 May 2014 17:39 Go to previous messageGo to next message
Eclipse UserFriend
thnx for your quick reply.

I did what you proposed but still I cannot see the "Version" field.

I added the property in the CatalogEditor.sdef:

<section>
<id>CatalogItemMainSection</id>
<content>
<property-editor>Name</property-editor>
<property-editor>Category</property-editor>
<property-editor>Manufacturer</property-editor>
<property-editor>Description</property-editor>
<property-editor>Version</property-editor>
</content>
<label>item</label>
</section>

Is there something else that I m missing?

I also get the following error in the console.Do you think it s related to my issue?

#######################################################################
Problems occurred when invoking code from plug-in: "org.eclipse.ui.workbench".

java.lang.IllegalStateException: CatalogEditorPageState element is already disposed.
at org.eclipse.sapphire.ElementImpl.assertNotDisposed(ElementImpl.java:1042)
at org.eclipse.sapphire.ElementImpl.property(ElementImpl.java:386)
at org.eclipse.sapphire.samples.catalog.CatalogEditorPageState$Impl.getContentOutlineState(Unknown Source)
at org.eclipse.sapphire.ui.forms.swt.MasterDetailsEditorPage.isDetailsMaximized(MasterDetailsEditorPage.java:479)
at org.eclipse.sapphire.ui.forms.swt.MasterDetailsEditorPage$4.partClosed(MasterDetailsEditorPage.java:358)
at org.eclipse.ui.internal.WorkbenchPage$21.run(WorkbenchPage.java:4878)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.ui.internal.WorkbenchPage.firePartClosed(WorkbenchPage.java:4876)
at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart$1.handleEvent(CompatibilityPart.java:101)
at org.eclipse.e4.ui.services.internal.events.UIEventHandler$1.run(UIEventHandler.java:41)
at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:180)
at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:150)
at org.eclipse.swt.widgets.Display.syncExec(Display.java:4650)
at org.eclipse.e4.ui.internal.workbench.swt.E4Application$1.syncExec(E4Application.java:205)
at org.eclipse.e4.ui.services.internal.events.UIEventHandler.handleEvent(UIEventHandler.java:38)
at org.eclipse.equinox.internal.event.EventHandlerWrapper.handleEvent(EventHandlerWrapper.java:197)
at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:197)
at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:1)
at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)
at org.eclipse.equinox.internal.event.EventAdminImpl.dispatchEvent(EventAdminImpl.java:135)
at org.eclipse.equinox.internal.event.EventAdminImpl.sendEvent(EventAdminImpl.java:78)
at org.eclipse.equinox.internal.event.EventComponent.sendEvent(EventComponent.java:39)
at org.eclipse.e4.ui.services.internal.events.EventBroker.send(EventBroker.java:80)
at org.eclipse.e4.ui.internal.workbench.UIEventPublisher.notifyChanged(UIEventPublisher.java:58)
at org.eclipse.emf.common.notify.impl.BasicNotifierImpl.eNotify(BasicNotifierImpl.java:374)
at org.eclipse.e4.ui.model.application.ui.impl.UIElementImpl.setWidget(UIElementImpl.java:248)
at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.unbindWidget(SWTPartRenderer.java:140)
at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.disposeWidget(SWTPartRenderer.java:161)
at org.eclipse.e4.ui.workbench.renderers.swt.ContributedPartRenderer.disposeWidget(ContributedPartRenderer.java:273)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeRemoveGui(PartRenderingEngine.java:899)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access$3(PartRenderingEngine.java:828)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$8.run(PartRenderingEngine.java:823)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.removeGui(PartRenderingEngine.java:808)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$1.handleEvent(PartRenderingEngine.java:153)
at org.eclipse.e4.ui.services.internal.events.UIEventHandler$1.run(UIEventHandler.java:41)
at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:180)
at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:150)
at org.eclipse.swt.widgets.Display.syncExec(Display.java:4650)
at org.eclipse.e4.ui.internal.workbench.swt.E4Application$1.syncExec(E4Application.java:205)
at org.eclipse.e4.ui.services.internal.events.UIEventHandler.handleEvent(UIEventHandler.java:38)
at org.eclipse.equinox.internal.event.EventHandlerWrapper.handleEvent(EventHandlerWrapper.java:197)
at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:197)
at org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:1)
at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)
at org.eclipse.equinox.internal.event.EventAdminImpl.dispatchEvent(EventAdminImpl.java:135)
at org.eclipse.equinox.internal.event.EventAdminImpl.sendEvent(EventAdminImpl.java:78)
at org.eclipse.equinox.internal.event.EventComponent.sendEvent(EventComponent.java:39)
at org.eclipse.e4.ui.services.internal.events.EventBroker.send(EventBroker.java:80)
at org.eclipse.e4.ui.internal.workbench.UIEventPublisher.notifyChanged(UIEventPublisher.java:58)
at org.eclipse.emf.common.notify.impl.BasicNotifierImpl.eNotify(BasicNotifierImpl.java:374)
at org.eclipse.e4.ui.model.application.ui.impl.UIElementImpl.setToBeRendered(UIElementImpl.java:290)
at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.hidePart(PartServiceImpl.java:1178)
at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.hidePart(PartServiceImpl.java:1113)
at org.eclipse.e4.ui.workbench.renderers.swt.StackRenderer.closePart(StackRenderer.java:1120)
at org.eclipse.e4.ui.workbench.renderers.swt.StackRenderer.access$5(StackRenderer.java:1102)
at org.eclipse.e4.ui.workbench.renderers.swt.StackRenderer$12.close(StackRenderer.java:996)
at org.eclipse.swt.custom.CTabFolder.onMouse(CTabFolder.java:1852)
at org.eclipse.swt.custom.CTabFolder$1.handleEvent(CTabFolder.java:284)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4166)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1466)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1489)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1474)
at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1279)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4012)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3651)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1113)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:997)
at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:140)
at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:611)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:567)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150)
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:354)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:181)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:636)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:591)
at org.eclipse.equinox.launcher.Main.run(Main.java:1450)
Re: Customise samples [message #1375337 is a reply to message #1374944] Thu, 22 May 2014 21:39 Go to previous messageGo to next message
Eclipse UserFriend
Do you have the Eclipse SDK installed (PDE) and have the samples plugin in your workspace and are you launching a new Eclipse runtime workbench to see your changes?
Re: Customise samples [message #1376176 is a reply to message #1375337] Fri, 23 May 2014 05:45 Go to previous messageGo to next message
Eclipse UserFriend
Thank you Greg. Now it works fine

So once I customise my editor how do i "export" it so that I can use it in my java projects? In ohter words, how I can i distribute my editor?

I guess this is an eclipse plug-ins related question. Shall i create a separate post?
Re: Customise samples [message #1376197 is a reply to message #1376176] Fri, 23 May 2014 05:55 Go to previous messageGo to next message
Eclipse UserFriend
Yeah those PDE/plugin related questions should likely go into another forum as they are not specific to Sapphire. But recent versions of Eclipse have a "self-hosted" mode which is nice... you can just install the plugin from your workspace directly into the running Eclipse instance. Right click the project > Export > Deployable plugins > then on that wizard page on the bottom there is an option for : "Install into host. Repository:" and it should be automatically set to the value that will install your plugin into your running Eclipse.

Good luck! Smile
Re: Customise samples [message #1376294 is a reply to message #1376197] Fri, 23 May 2014 06:45 Go to previous message
Eclipse UserFriend
Thank you Greg.

quick and straightforward. It worked!!! Smile
Previous Topic:Make whole editor read-only
Next Topic:Last call for Sapphire 8
Goto Forum:
  


Current Time: Sun Apr 27 08:56:14 EDT 2025

Powered by FUDForum. Page generated in 0.03967 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top