[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [sapphire-dev] Sapphire Query on Section, Multi List, Enablement
|
Hi Shenxue Zhou,
It works as expected, but when it hides or shows properties (UI), I am seeing an exception in the console. Am I missing something here.
!ENTRY org.eclipse.sapphire.ui 4 0 2011-05-21 18:52:21.221
!MESSAGE Widget is disposed
!STACK 0
org.eclipse.swt.SWTException: Widget is disposed
at org.eclipse.swt.SWT.error(SWT.java:4083)
at org.eclipse.swt.SWT.error(SWT.java:3998)
at org.eclipse.swt.SWT.error(SWT.java:3969)
at org.eclipse.swt.widgets.Widget.error(Widget.java:468)
at org.eclipse.swt.widgets.Widget.checkWidget(Widget.java:340)
at org.eclipse.swt.widgets.Combo.getItemCount(Combo.java:690)
at org.eclipse.sapphire.ui.internal.binding.ComboBinding.removeMalformedItem(ComboBinding.java:103)
at org.eclipse.sapphire.ui.internal.binding.AbstractEnumBinding.doUpdateModel(AbstractEnumBinding.java:75)
at org.eclipse.sapphire.ui.internal.binding.AbstractBinding.updateModel(AbstractBinding.java:105)
at org.eclipse.sapphire.ui.internal.binding.ComboBinding$1.widgetSelected(ComboBinding.java:64)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:234)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4066)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3657)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2640)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2604)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2438)
at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:671)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:664)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:115)
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:369)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
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(Main.java:619)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:574)
at org.eclipse.equinox.launcher.Main.run(Main.java:1407)
at org.eclipse.equinox.launcher.Main.main(Main.java:1383)
On Sat, May 21, 2011 at 2:22 AM, Shenxue Zhou
<shenxue.zhou@xxxxxxxxxx> wrote:
Here is some code snippet for the if-else syntax in sdef
file:
<if>
<condition><class>ColumnScaleCondition</class></condition>
<then>
<property-editor>Scale</property-editor>
</then>
</if>
And here is the
ColumnScaleCondition class:
public final class
ColumnScaleCondition
extends
SapphireModelCondition
{
@Override
public boolean evaluate()
{
....
}
@Override
public List<String> getDependencies()
{
return
Collections.singletonList( IColumnDescriptor.PROP_TYPE.getName()
);
}
}
Make sure you import the package of your condition
class in the sdef file:
<import>
<package>...</package>
</import>
Sent: Friday, May 20, 2011 2:14
PM
To: Konstantin Komissarchik
Cc: Sapphire
project
Subject: Re: [sapphire-dev] Sapphire Query on Section, Multi
List, Enablement
Konstantin,
I couldn't extract the correct syntax for if-else
block, can you please give an example XML section on sdef file to achieve if
else.
Thanks,
-Naga
On Fri, May 20, 2011 at 10:14 PM, Nagarajan Murugesan
<nagarajan.m@xxxxxxxxx> wrote:
Thanks
Konstantin,
Can you please point me to some examples for @PropertyListeners
implementation?
On Thu, May 19, 2011 at 9:23 PM, Konstantin
Komissarchik
<konstantin.komissarchik@xxxxxxxxxx> wrote:
Could you send an e-mail to
webmaster@xxxxxxxxxxx detailing the
issues that you are having with the forum system?
> 1. Section -
Expand/Collapse
We don’t support this yet.
Please open an enhancement request. Another approach to dealing with a lot
of content is to break it up among multiple nodes in the content outline.
For instance, you could have an Advanced node beneath your main node rather
than a collapsible Advanced section.
> 2. Multiple Chose
values arranged horizontally
We have two ways of
presenting multi-select lists: a slush bucket and a checkbox list. I suppose
I can see how I horizontal arrangement of checkboxes could also be useful,
especially if you know that the set of possible values is small, such as
with some enums. Please open an enhancement request.
> 3.
Enablement
> … disabled as expected
but the values previously entered in the XML is not going away
Enablement does not clear
content. To clear content, you can use @PropertyListeners annotation to
register listeners on your controlling properties. The listener will be
called when property changes and can reach out and clear related properties
as necessary. I suppose you could also register a listener on the property
that needs clearing and look at the property’s enablement state instead.
Such a listener could be written generically and then attached to any number
of properties. Hmm… that makes me wonder if we should consider supporting
this scenario out of the box. I can certainly see value of a @ClearOnDisable
annotation. Maybe go ahead and open an enhancement request for this
too.
> 4. Hide
You can use the if-else
sdef construct to control what is shown based on the condition that you
specify. We don’t have many examples of this in samples right now. The only
one I found is in DefinitionEditor.sdef from the sapphire.sdk
plugin.
The condition class that is
used with if-else construct is “live” in that it can update itself. The UI
listens on condition changing and acts accordingly. Take a look at
SapphireModelCondition class which is a good base class for conditions that
need to react to changes in the model.
Note that you can also use
conditions to hide content outline nodes. There is a property in the node’s
definition that accepts a “visible-when” condition.
From: Nagarajan Murugesan [mailto:nagarajan.m@xxxxxxxxx]
Sent: Wednesday, May 18, 2011 11:29 PM
To: Konstantin
Komissarchik
Subject: Sapphire Query on Section, Multi List,
Enablement
Hi Konstantin,
Sorry to
bother you again, I have few more queries.
I assure you, I will put
those communications back in forum once it back alive for wider audience.
please help on email till then.
1. Section - Expand/Collapse
- I
add a section in the sdef like 'Advanced Options', I want this to be
collopsed by default, when required user can expand and fill in details. Is
there a <hint> available for this?
2. Multiple Chose values
arranged horizontally
- I have a property which will accept multiple
choice of comma seprated values, is there a way I can arrange the options as
check box horizontally. Currently the examples are having only slash bucket,
which occupies more screen space than what we
want
Example:
Property: Option1 Option2 Option3 (Check
boxes)
3. Enablement
One of the problem I am seeing with
Enablement annotation,
<item1>
<item2>
<item3>
I defined
<item2> and <item3> are enabled only when <item1> set to a
particular value. Lets say user first time select that value in
<item1> and set required property in <item2> and <item3>.
when he goes back to <item1> and changes its value. <item2> and
<item3> are disabled as expected but the values previously entered in
the XML is not going away. How do we remove those value from xml when we
disable that field?
4. Hide
I have seen the example to hide some
additional property based on a selection (in Contact, IAssistance). But it
works only the sub properties
like
<selection>
<option1>
<option2>
</selection>
<option1>
and <option2> can be hidden and shown based on the
selection.
Is there a way I can hide the UI of non sub properties
like
<item1>
<item2>
<item3>
if <item1>
set to particular value <item2> and <item3> should be
removed.
Thanks,
-Naga
_______________________________________________
sapphire-dev mailing list
sapphire-dev@xxxxxxxxxxx
http://dev.eclipse.org/mailman/listinfo/sapphire-dev