Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Eclipse Projects » Sirius » Custom Edge Styling - Avoid obstructions
Custom Edge Styling - Avoid obstructions [message #1478338] Tue, 18 November 2014 15:52 Go to next message
Stéphane Seyvoz is currently offline Stéphane SeyvozFriend
Messages: 21
Registered: October 2014
Junior Member
The issue

Sirius' provided layouts can create representations where Edges can go over/across graphical nodes/container nodes, whereas the underlying GMF "Avoid Obstructions" setting could prevent that.
I tried to enable such a thing, but didn't manage.

Tentative 1: The SiriusViewProvider-like way

I tried to implement a custom class similar to the SiriusViewProvider, using the org.eclipse.gmf.runtime.diagram.core.viewProviders extension point, to implement my own Class<?> getEdgeViewClass(int visualID) method returning a custom variation of DEdgeViewFactory (see SiriusViewProvider line 340 with Sirius 2.0.0, 341 with the link provided below).

The original DEdgeViewFactory setManahattanRoutingStyle and setTreeRoutingStyle methods configure the routing with setJumpLinkType, setJumpLinkStatus, setRouting, but not setAvoidObstructions or setClosestDistance (see RoutingStyle interface).

Quick resources links (maybe not up-to-date) for convenience:
- eclipse.googlesource.com/sirius/org.eclipse.sirius/+/5cf53378e4a084aefb90d9648d5db61d83881f58/plugins/org.eclipse.sirius.diagram/src/org/eclipse/sirius/diagram/internal/providers/SiriusViewProvider.java
- eclipse.googlesource.com/sirius/org.eclipse.sirius/+/0745304c5dcfd33794d483b3de844eaa02024b10/plugins/org.eclipse.sirius.diagram/src/org/eclipse/sirius/diagram/internal/view/factories/DEdgeViewFactory.java

I wanted to refine that.
I set my extension point with a High priority, in a way like what is done in Sirius internally for SiriusViewProvider, in the org.eclipse.sirius.diagram.ui module. My classes were instantiated, however the getNodeViewClass methods were called, but never the getEdgeViewClass ones. I investigated and discovered in the documentation that only Nodes can be customized yet, ok, let's call it normal (but frustrating).

So I investigated further.

Tentative 2: The "org.eclipse.sirius.diagram.canonicalSynchronizerFactoryOverride" extension point

This extension point was introduced in Sirius 2.0.0 (see Sirius Release Notes, API changes section).

Going upwards in the call hierarchy, I discovered that in Sirius, the SiriusViewProvider object creation is hardcoded in AbstractCanonicalSynchronizer (extended by DDiagramCanonicalSynchronizer), and that hence the AbstractCanonicalSynchronizer#createViews method always calls the default createEdge method line 292 (whereas nodes are handled in another place in Sirius as well as there, allowing more flexibility).

So I decided to create my own custom CanonicalSynchronizerFactory and CanonicalSynchronizer classes, and to extend the org.eclipse.sirius.diagram.canonicalSynchronizerFactoryOverride extension point, and to override only what was needed to use my own ViewProvider, for my custom edges.

In the end, I discovered that it could not work for an even more frustrating reason.

The CanonicalSynchronizerFactory refers to an "instance" that is created by CanonicalSynchronizerFactoryImpl.init() which uses the mentioned new extension point, which sounds really nice, however the returned element is the first (result = contributedFactories.get(0) line 67), and as Sirius itself is contributing the extension point internally from its org.eclipse.sirius.diagram.ui module (see plugin.xml), the latter is always first, and mine is never used Sad

Quick resources links (maybe not up-to-date) for convenience:
- eclipse.googlesource.com/sirius/org.eclipse.sirius/+/b128eea5b782e5d1e3eb9642405fefff866ed0e7/plugins/org.eclipse.sirius.diagram/specific/org/eclipse/sirius/diagram/internal/refresh/AbstractCanonicalSynchronizer.java

Note: I didn't provide the CanonicalSynchronizerFactoryImpl from 2.0.0 version link since I couldn't find any online source matching the one from my installed Sirius SDK plugin.

Note 2: sorry about the "textual" links since I cannot post any yet, being a new user.

Conclusion

In the end, I don't know what to do.
Is it possible to do anything at the GMF level ?
How can I suggest any modification to the Sirius team ?
Maybe is there already a feature request for this somewhere in a tracker ?

Thank you !

[Updated on: Tue, 25 November 2014 16:06]

Report message to a moderator

Re: Custom Edge Styling [message #1479379 is a reply to message #1478338] Wed, 19 November 2014 11:34 Go to previous messageGo to next message
Laurent Redor is currently offline Laurent RedorFriend
Messages: 252
Registered: July 2009
Senior Member
Le 18/11/2014 16:52, Stéphane Seyvoz a écrit :

Hi,

> The issue
>
> Sirius' provided layouts can create representations where Edges can go
> over/across graphical nodes/container nodes, whereas the underlying GMF
> "Avoid Obstructions" setting could allow that.
> I tried to enable such a thing, but didn't manage.
>
> Tentative 1: The SiriusViewProvider-like way
>
> I tried to implement a custom class similar to the SiriusViewProvider,
> using the org.eclipse.gmf.runtime.diagram.core.viewProviders extension
> point, to implement my own Class<?> getEdgeViewClass(int visualID)
> method returning a custom variation of DEdgeViewFactory (see
> SiriusViewProvider line 340 with Sirius 2.0.0, 341 with the link
> provided below).

The SiriusViewProvider does not use the
org.eclipse.gmf.runtime.diagram.core.viewProviders extension point. So
you can not override Sirius class by this way.

>
> The original DEdgeViewFactory setManahattanRoutingStyle and
> setTreeRoutingStyle methods configure the routing with setJumpLinkType,
> setJumpLinkStatus, setRouting, but not setAvoidObstructions or
> setClosestDistance (see RoutingStyle interface).
>
> Quick resources links (maybe not up-to-date) for convenience:
> -
> eclipse.googlesource.com/sirius/org.eclipse.sirius/+/5cf53378e4a084aefb90d9648d5db61d83881f58/plugins/org.eclipse.sirius.diagram/src/org/eclipse/sirius/diagram/internal/providers/SiriusViewProvider.java
>
> -
> eclipse.googlesource.com/sirius/org.eclipse.sirius/+/0745304c5dcfd33794d483b3de844eaa02024b10/plugins/org.eclipse.sirius.diagram/src/org/eclipse/sirius/diagram/internal/view/factories/DEdgeViewFactory.java
>
>
> I wanted to refine that.
> I set my extension point with a High priority, in a way like what is
> done in Sirius internally for SiriusViewProvider (in the
> org.eclipse.sirius.diagram.ui module). My classes were instantiated,
> however the getNodeViewClass methods were called, but never the
> getEdgeViewClass methods. I investigated and discovered in the
> documentation that only Nodes can be customized yet, ok, let's call it
> normal (but frustrating).

Where do you see in the documetation that "only Nodes can be customized
yet"?

>
> So I investigated further.
>
> Tentative 2: The
> "org.eclipse.sirius.diagram.canonicalSynchronizerFactoryOverride"
> extension point
>
> This extension point was introduced in Sirius 2.0.0 (see Sirius Release
> Notes, API changes section).

And in the same Release notes, it is said that "its only intended
implementer is the @org.eclipse.sirius.diagram.ui@ plug-in. It is used
by the diagram dialect's core to delegate to the UI plug-in the
canonical synchronizer logic, which depends on the UI." So it is
"normal" that your implementation is ignored.
>
> Going upwards in the call hierarchy, I discovered that in Sirius, the
> SiriusViewProvider object creation is hardcoded in
> AbstractCanonicalSynchronizer (extended by
> DDiagramCanonicalSynchronizer), and that hence the
> AbstractCanonicalSynchronizer#createViews method always calls the
> default createEdge method line 292 (whereas nodes are handled in another
> place in Sirius as well as there, allowing more flexibility).
>
> So I decided to create my own custom CanonicalSynchronizerFactory and
> CanonicalSynchronizer classes, and to extend the
> org.eclipse.sirius.diagram.canonicalSynchronizerFactoryOverride
> extension point, and to override only what was needed to use my own
> ViewProvider, for my custom edges.
>
> In the end, I discovered that it could not work for an even more
> frustrating reason.
>
> The CanonicalSynchronizerFactory refers to an "instance" that is created
> by CanonicalSynchronizerFactoryImpl.init() which uses the mentioned new
> extension point, which sounds really nice, however the returned element
> is the first (result = contributedFactories.get(0) line 67), and as
> Sirius itself is contributing the extension point internally from its
> org.eclipse.sirius.diagram.ui module (see plugin.xml), the latter is
> always first, and mine is never used :(
>
> Quick resources links (maybe not up-to-date) for convenience:
> -
> eclipse.googlesource.com/sirius/org.eclipse.sirius/+/b128eea5b782e5d1e3eb9642405fefff866ed0e7/plugins/org.eclipse.sirius.diagram/specific/org/eclipse/sirius/diagram/internal/refresh/AbstractCanonicalSynchronizer.java
>
>
> Note: I didn't provide the CanonicalSynchronizerFactoryImpl from 2.0.0
> version link since I couldn't find any online source matching the one
> from my installed Sirius SDK plugin.

The "original" source code is available here: [1]. The
eclipse.googlesource.com is only a mirror.

>
> Note 2: sorry about the "textual" links since I cannot post any yet,
> being a new user.
>
> Conclusion
>
> In the end, I don't know what to do.

This is a feature request. Nothing in Sirius allows you to customize
these fields.
What is your need finally? Set the values "Avoid obstructions" and
"Closest distance" to true for all new edges?.


> Is it possible to do anything at the GMF level ?

You can use the SessionEventBroker [2] to add a listener that detects
the creation of a new Edge and set the 2 properties. It is more a
workaround that a real solution.
You can find an example of SessionEventBroker usage in EcoreTools
project, line 127 of class EcoreToolsDesignPlugin [3].

> How can I suggest any modification to the Sirius team ?

You can propose gerrit review to the team but it is preferable to
discuss before about your needs through this forum or through a bugzilla
[4].

> Maybe is there already a feature request for this somewhere in a tracker ?

No, this is a new request. You can see all the current bugzilla for
Sirius project with [5].
>
> Thank you !

Best regards,

[1] http://git.eclipse.org/c/sirius/org.eclipse.sirius.git
[2]
http://git.eclipse.org/c/sirius/org.eclipse.sirius.git/plain/plugins/org.eclipse.sirius/src/org/eclipse/sirius/business/api/session/SessionEventBroker.java
[3]
http://git.eclipse.org/c/ecoretools/org.eclipse.ecoretools.git/tree/org.eclipse.emf.ecoretools.design/src/org/eclipse/emf/ecoretools/design/service/EcoreToolsDesignPlugin.java
[4] https://bugs.eclipse.org/bugs/enter_bug.cgi?product=Sirius
[5]
https://bugs.eclipse.org/bugs/buglist.cgi?list_id=10507820&product=Sirius&query_format=advanced

--
Laurent - Obeo

Need professional services for Sirius?
http://www.obeodesigner.com/sirius


Laurent Redor - Obeo

Need training or professional services for Sirius?
http://www.obeodesigner.com/sirius
Re: Custom Edge Styling [message #1479631 is a reply to message #1479379] Wed, 19 November 2014 15:48 Go to previous messageGo to next message
Stéphane Seyvoz is currently offline Stéphane SeyvozFriend
Messages: 21
Registered: October 2014
Junior Member
Hi Laurent,

First, yes my main need is to set "Avoid obstructions", since it would a really great improvement. "Closest distance" may be needed later, but can be forgotten right now.

I thought about the GMF ViewProvider extension point, after finding this post: How to set Avoid obstructions and Closest distance on my connections by default, then tried to do something similar with Sirius.

Concerning your "Where do you see in the documentation that "only Nodes can be customized yet"?" question, I may have gotten confused by all the experiments I recently made with Sirius. I had also manipulated StyleConfigurations, and the Extensions - Provide Custom Style documentation says:

Quote:
The StyleConfiguration mechanism is only available for ViewNode at the moment.


I extrapolated, a bit hastily I admit, that such a behavior may have applied a bit more widely to the project (as a matter of priority in development, for example). The fact that I could use a GMF extension-point-contributed ViewProvider "Node" methods and not the "Edge" ones at some point (I don't remember the details) comforted me in this idea. My apologies for the confusion.

I was aware of the "canonicalSynchronizerFactoryOverride" documented limitation... However, the introduction of such an extension point made me think there was a tendency to make it more flexible in the future (maybe not intended though ?), at quite a low cost. I just didn't know where to submit a request or contribution about that, so this forum looked the right place to start Smile
Your message clarified that point, so thank you about that.

Concerning the technical workaround, I will have a try as a quickfix, and to the Bugzilla as well.

Thank you for the fast and clear answers !

[Edit] Link to the Bugzilla enhancement request: Bug 452310

[Updated on: Wed, 19 November 2014 16:22]

Report message to a moderator

Re: Custom Edge Styling [message #1479708 is a reply to message #1479631] Wed, 19 November 2014 17:14 Go to previous messageGo to next message
Laurent Redor is currently offline Laurent RedorFriend
Messages: 252
Registered: July 2009
Senior Member
Le 19/11/2014 16:48, Stéphane Seyvoz a écrit :
> Hi Laurent,
>
> First, yes my main need is to set "Avoid obstructions", since it would a
> really great improvement. "Closest distance" may be needed later, but
> can be forgotten right now.
>
> I thought about the GMF ViewProvider extension point, after finding this
> post: https://www.eclipse.org/forums/index.php/t/74589/, then tried to
> do something similar with Sirius.
>
> Concerning your "Where do you see in the documentation that "only Nodes
> can be customized yet"?" question, I may have gotten confused by all the
> experiments I recently made with Sirius. I had also manipulated
> StyleConfigurations, and the
> https://www.eclipse.org/sirius/doc/developer/extensions-provide_custom_style.html
> documentation says:
>
> Quote:
>> The StyleConfiguration mechanism is only available for ViewNode at the
>> moment.
>
>
> I extrapolated, a bit hastily I admit, that such a behavior may have
> applied a bit more widely to the project (as a matter of priority in
> development, for example). The fact that I could use a GMF
> extension-point-contributed ViewProvider "Node" methods and not the
> "Edge" ones at some point (I don't remember the details) comforted me in
> this idea. My apologies for the confusion.
>
> I was aware of the "canonicalSynchronizerFactoryOverride" documented
> limitation... However, the introduction of such an extension point made
> me think there was a tendency to make it more flexible in the future
> (maybe not intended though ?), at quite a low cost.

There is currently no planned work for this. This new extension point
has appeared during a global enhancement of "Sirius's modularization",
more particulary to clearly separate UI and non UI stuff [1].

> I just didn't know
> where to submit a request or contribution about that, so this forum
> looked the right place to start :)
> Your message clarified that point, so thank you about that.
>
> Concerning the technical workaround, I will have a try as a quickfix,
> and to the Bugzilla as well.
>

Let us know if you have any further question or issue.

> Thank you for the fast and clear answers !
>

Regards,

[1] https://bugs.eclipse.org/bugs/show_bug.cgi?id=439871

--
Laurent - Obeo

Need professional services for Sirius?
http://www.obeodesigner.com/sirius


Laurent Redor - Obeo

Need training or professional services for Sirius?
http://www.obeodesigner.com/sirius
Re: Custom Edge Styling [message #1487138 is a reply to message #1479708] Tue, 25 November 2014 15:47 Go to previous messageGo to next message
Stéphane Seyvoz is currently offline Stéphane SeyvozFriend
Messages: 21
Registered: October 2014
Junior Member
Just a message to state how things went during my experiment.

I implemented the "Avoid obstructions" thanks to the SessionEventBroker as recommended, as follows (if people are interested):
- Activator.java
- AvoidObstructionsEdgesStyleFixTrigger.java
License is LGPLv3.

A few remarks:
- The setting works fine for Edges to avoid Nodes and Container Nodes, however the Edges can still overlap with Bordered Nodes. Those do not seem to be considered as "obstructing" by GMF, according to Sirius configuration/behavior apparently. I don't know how to overcome this limitation... Any suggestion would be welcome.
- The "notifyAddSession" is ok at session creation time but the trigger would not be registered with existing sessions (restarting the target Eclipse for example), so it's important to implement the "notify" method, however there's a number of available notifications, I may not have found the best ones to handle (further testing will tell).
- The "transaction domain" wasn't needed compared to the provided example link, since we do not touch the model, only style info.

Hope it helps, best regards !

[Updated on: Tue, 25 November 2014 16:11]

Report message to a moderator

Re: Custom Edge Styling [message #1488266 is a reply to message #1487138] Wed, 26 November 2014 13:04 Go to previous messageGo to next message
Laurent Redor is currently offline Laurent RedorFriend
Messages: 252
Registered: July 2009
Senior Member
Le 25/11/2014 16:47, Stéphane Seyvoz a écrit :
> Just a message to state how things went during my experiment.

Thanks for your feedback. Few remarks below:

>
> I implemented the "Avoid obstructions" thanks to the SessionEventBroker
> as recommended, as follows (if people are interested):
> -
> https://github.com/StephaneSeyvoz/mindEd/blob/8055220b258ffbb6fa9e0b105aae83d2399d4050/org.ow2.mindEd.adl.sirius/src/org/ow2/mindEd/adl/sirius/Activator.java
>
> -
> https://github.com/StephaneSeyvoz/mindEd/blob/8055220b258ffbb6fa9e0b105aae83d2399d4050/org.ow2.mindEd.adl.sirius/src/org/ow2/mindEd/adl/sirius/style/AvoidObstructionsEdgesStyleFixTrigger.java
>
>
> A few remarks that came to me:
> - The setting works fine and Edges go around my Nodes and Container
> Nodes, however the Edges can still overlap with Bordered Nodes. Those do
> not seem to be considered as "obstructing" by GMF, according to Sirius
> configuration/behavior apparently: I don't know how to overcome this
> limitation... Any suggestion would be welcome.

No idea. Some investigations would be necessary...

> - The "notifyAddSession" is ok at session creation time but the trigger
> would not be registered with existing sessions (restarting the target
> Eclipse for example), so it's important to implement the "notify"
> method, however there's a number of available notifications, I may not
> have found the best ones to check (further testing will tell).
> - The "transaction domain" wasn't needed compared to the provided
> example link, since we do not touch the model, only style info.

It's wrong. The style is stored in the GMF notation model part. So it
must be made inside a RecordingCommand to be correctly managed by
undo/redo, rollback, ...
The "filter" for the ModelChangeTrigger does not detect only the Edge
creation, so this preCommitListener will be called too often (at each
edge modification).

>
> Hope it helps, best regards !


--
Laurent - Obeo

Need professional services for Sirius?
http://www.obeodesigner.com/sirius


Laurent Redor - Obeo

Need training or professional services for Sirius?
http://www.obeodesigner.com/sirius
Re: Custom Edge Styling [message #1489405 is a reply to message #1488266] Thu, 27 November 2014 10:37 Go to previous messageGo to next message
Stéphane Seyvoz is currently offline Stéphane SeyvozFriend
Messages: 21
Registered: October 2014
Junior Member
I've had issues happening recently on layers activation/deactivation, when GMF tries to compute new paths, with stale edges NullPointerExceptions on "avoid obstructions" that indicate that the actual solution can lead to dirty internal states.

So I strongly agree with you that a domain transaction / RecordingCommand will be cleaner indeed, I'll improve the solution and post the result as well.

I understand about the edge filter part not being optimal, I don't know what to do about it though...
Re: Custom Edge Styling [message #1489574 is a reply to message #1489405] Thu, 27 November 2014 13:40 Go to previous messageGo to next message
Stéphane Seyvoz is currently offline Stéphane SeyvozFriend
Messages: 21
Registered: October 2014
Junior Member
I just noticed an "EdgeRoutingStyleChangedCommand" already exists in Sirius for IDiagramEdgeEditPart objects, it may be a good inspiration.
Re: Custom Edge Styling [message #1489609 is a reply to message #1489405] Thu, 27 November 2014 14:19 Go to previous messageGo to next message
Laurent Redor is currently offline Laurent RedorFriend
Messages: 252
Registered: July 2009
Senior Member
Le 27/11/2014 11:37, Stéphane Seyvoz a écrit :
> I've had issues happening recently on layers activation/deactivation,
> when GMF tries to compute new paths, with stale edges
> NullPointerExceptions on "avoid obstructions" that indicate that the
> actual solution can lead to dirty internal states.
>
> So I strongly agree with you that a domain transaction /
> RecordingCommand will be cleaner indeed, I'll improve the solution and
> post the result as well.
>
> I understand about the edge filter part not being optimal, I don't know
> what to do about it though...
something like:

input.getEventType() == Notification.ADD && input.getNewValue()
instanceof Edge

and probably the case of input.getEventType() == Notification.ADD_MANY
to handle

--
Laurent - Obeo

Need professional services for Sirius?
http://www.obeodesigner.com/sirius


Laurent Redor - Obeo

Need training or professional services for Sirius?
http://www.obeodesigner.com/sirius
Re: Custom Edge Styling [message #1490679 is a reply to message #1489609] Fri, 28 November 2014 10:45 Go to previous message
Stéphane Seyvoz is currently offline Stéphane SeyvozFriend
Messages: 21
Registered: October 2014
Junior Member
New version using a RecordingCommand:
Activator.java
AvoidObstructionsEdgesStyleFixTrigger.java
EnableAvoidObstructionsEdgesRoutingStyleCommand.java

I have a problem with Layers though, that already existed with the previous version: When disabling a layer from my VSM, some edges have to be removed/erased, and then the following exception appears:

Caused by: java.lang.NullPointerException
	at org.eclipse.draw2d.ShortestPathConnectionRouter.processStaleConnections(ShortestPathConnectionRouter.java:184)
	at org.eclipse.draw2d.ShortestPathConnectionRouter.getPathsAfterRouting(ShortestPathConnectionRouter.java:298)
	at org.eclipse.gmf.runtime.draw2d.ui.internal.routers.ObliqueRouter.routeAroundObstructions_GEF(ObliqueRouter.java:296)
	at org.eclipse.gmf.runtime.draw2d.ui.internal.routers.ObliqueRouter.calculateBendPoints(ObliqueRouter.java:227)
	at org.eclipse.gmf.runtime.draw2d.ui.internal.routers.ObliqueRouter.routeBendpoints(ObliqueRouter.java:206)
	at org.eclipse.gmf.runtime.draw2d.ui.internal.routers.ObliqueRouter.route(ObliqueRouter.java:195)
	at org.eclipse.draw2d.PolylineConnection$RoutingNotifier.route(PolylineConnection.java:371)
	at org.eclipse.draw2d.PolylineConnection.layout(PolylineConnection.java:176)
	at org.eclipse.sirius.diagram.ui.edit.api.part.AbstractDiagramEdgeEditPart$ViewEdgeFigure.layout(AbstractDiagramEdgeEditPart.java:671)
	at org.eclipse.draw2d.Figure.validate(Figure.java:1896)
	at org.eclipse.draw2d.Figure.validate(Figure.java:1898)
	at org.eclipse.draw2d.Figure.validate(Figure.java:1898)
	at org.eclipse.draw2d.Figure.validate(Figure.java:1898)
	at org.eclipse.draw2d.Figure.validate(Figure.java:1898)
	at org.eclipse.draw2d.FreeformViewport$FreeformViewportLayout.calculatePreferredSize(FreeformViewport.java:25)
	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.sirius.diagram.ui.tools.internal.part.SiriusDiagramGraphicalViewer$ToggleUpdateManager.performValidation(SiriusDiagramGraphicalViewer.java:211)
	at org.eclipse.draw2d.DeferredUpdateManager.performUpdate(DeferredUpdateManager.java:190)
	at org.eclipse.sirius.diagram.ui.tools.internal.part.SiriusDiagramGraphicalViewer$ToggleUpdateManager.performUpdate(SiriusDiagramGraphicalViewer.java:195)
	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:136)
	... 37 more


I'm trying to do an implementation where I would disable the "avoid obstructions" on edge REMOVE / REMOVE_MANY, with no success yet.

[Updated on: Fri, 28 November 2014 10:59]

Report message to a moderator

Previous Topic:Bordered Nodes pinning not shared between layers
Next Topic:Create new instances via context menu in model explorer
Goto Forum:
  


Current Time: Sat Apr 04 12:31:20 GMT 2020

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

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

Back to the top