Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » GMF (Graphical Modeling Framework) » Diagram opens in a dirty state
Diagram opens in a dirty state [message #204460] Fri, 05 September 2008 03:22 Go to next message
Eclipse UserFriend
Originally posted by: mklinchin.yahoo.com

Hi All,

When I open my genrated diagram from the navigator (by double clicking on
the file) or programmatically from my code it opens an editor but it opens
it in a "dirty" state right away. I can save the diagram (though there
should be nothing to save) and continue working. Everything else goes
perfectly well.

My environment is Eclipse 3.4 modeling edition on SUSE
Linux. When I run the same application as a product under Eclipse on
Windows XP this behaviour is not observed - diagram opens clean and only
after any modification it becomes dirty. However when I generate a product
(generation is on any platform - Linux or Win) and run it outside of
Eclipse (also, both Linux and Windows version suffer) this behavior comes
back - diagram opens in dirty state.

I have filtering of some diagram elements (so I overloaded
getModelChildren for some EditParts) and also I installed a couple of drag
& drop edit policies but it should not matter, right?

There is no "extra" commands (that I am aware of) besides the ones that
are generated that are executed during or right after diagram open. It
there any way to troubleshoot this situation? I set up a break point at
the place where the canBeSaved variable is set to true but it seems that
this time it is already a consequence of some event that I missed. Also,
the fact that it works fine under Eclipse on Windows prompts that it is
not directly related to the code.

Thank you for the advice.
Igor
Re: Diagram opens in a dirty state [message #204506 is a reply to message #204460] Fri, 05 September 2008 07:57 Go to previous messageGo to next message
Zsolt Török is currently offline Zsolt TörökFriend
Messages: 22
Registered: July 2009
Junior Member
Hi Igor,

Something similar is happening to me as well, I'm running it on Mac OS X
from inside my Eclipse IDE.
When I create a new link, save the diagram, close the editor and re-open
the same diagram again, it would mark the diagram editor dirty right away.
This is due to the fact, that when you draw a new link on the diagram you
don't do it in the "optimal" way (or at least not the way GMF would like
it to be), so it slightly re-routes the link when you open the diagram the
next time. I'm sure this auto-routing can be disabled by manually
modifying the code, but for now I left it how it was.
I know this isn't exactly the same as your scenario, but it might help in
tracking down the issue.

Zsolt
Re: Diagram opens in a dirty state [message #204684 is a reply to message #204506] Tue, 09 September 2008 03:05 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: mklinchin.yahoo.com

Hi Zsolt,

Thank you for your interesting comment. I did not think about possibility
that GMF itself could do someting by itself. I am thinking how to check
whether is it my case or not. I open a diagram, see it in dirty state,
save it, close it, open again and see it again in the dirty state. In your
case it should be clean this time but I realize that in my case GMF may be
unhappy with something even after saving its own version of laying out
objects.

I also tries to copy the diagram at some time, then open it, see it dirty,
save it back and compare XML file with the one that I saved - no
differences.

I will think more about it. I would appreciate any ideas about it too.

Thank you,
Igor


On Fri, 05 Sep 2008 07:57:20 +0000, Zsolt Török wrote:

> Hi Igor,
>
> Something similar is happening to me as well, I'm running it on Mac OS X
> from inside my Eclipse IDE.
> When I create a new link, save the diagram, close the editor and re-open
> the same diagram again, it would mark the diagram editor dirty right away.
> This is due to the fact, that when you draw a new link on the diagram you
> don't do it in the "optimal" way (or at least not the way GMF would like
> it to be), so it slightly re-routes the link when you open the diagram the
> next time. I'm sure this auto-routing can be disabled by manually
> modifying the code, but for now I left it how it was.
> I know this isn't exactly the same as your scenario, but it might help in
> tracking down the issue.
>
> Zsolt
Re: Diagram opens in a dirty state [message #205025 is a reply to message #204684] Wed, 10 September 2008 11:37 Go to previous messageGo to next message
Alexander Shatalin is currently offline Alexander ShatalinFriend
Messages: 2928
Registered: July 2009
Senior Member
Hello Igor,

Try placing break-point into org.eclipse.gmf.runtime.diagram.ui.resources.editor.document .AbstractDocumentProvider.fireElementDirtyStateChanged()
- this is a place where editor is marked as "dirty". I think you can see
the reason (appropriate notification) causing this situation from the stack
trace in a debugger.

-----------------
Alex Shatalin
Re: Diagram opens in a dirty state [message #206931 is a reply to message #205025] Wed, 24 September 2008 22:16 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: mklinchin.yahoo.com

Hi Alex,

I am sorry for late reply. I am not sure that this post will be visible or
I need to create a new thread for this. I digged a little bit more into
this situation. Now when I open a diagram in a standalone application
under Windows it opens in a dirty state. When I open it in a standalone
application under linux it works fine. When I open it in the application
started from Eclipse IDE it also works fine.

I attach below a stack trace. The notification is about set mutable flag
from false to true for DiagramImpl object. When I debug the application
under linux (the one that runs fine) I just do not get to this point. It
seems that in loop across adapters in this function:

SpResourceImpl(BasicNotifierImpl).eNotify(Notification)

I just do not have ResourceImpl$ModificationTrackingAdapter object at all.

It seems to be an issue related to some packaging. I just think how to
make a progress in troubleshooting.

Thank you,
Igor

On Wed, 10 Sep 2008 11:37:34 +0000, Alex Shatalin wrote:

> Hello Igor,
>
> Try placing break-point into org.eclipse.gmf.runtime.diagram.ui.resources.editor.document .AbstractDocumentProvider.fireElementDirtyStateChanged()
> - this is a place where editor is marked as "dirty". I think you can see
> the reason (appropriate notification) causing this situation from the stack
> trace in a debugger.
>
> -----------------
> Alex Shatalin

Thread [main] (Suspended (breakpoint at line 665 in AbstractDocumentProvider))
TopologyDocumentProvider(AbstractDocumentProvider).fireEleme ntDirtyStateChanged(Object, boolean) line: 665
TopologyDocumentProvider.access$1(TopologyDocumentProvider, Object, boolean) line: 1
TopologyDocumentProvider$ResourceSetModificationListener.not ifyChanged(Notification) line: 1113
SpResourceImpl(BasicNotifierImpl).eNotify(Notification) line: 247
SpResourceImpl(ResourceImpl).setModified(boolean) line: 1748
ResourceImpl$ModificationTrackingAdapter.notifyChanged(Notif ication) line: 1626
DiagramImpl(BasicNotifierImpl).eNotify(Notification) line: 247
DiagramImpl(ViewImpl).setMutable(boolean) line: 269
SetViewMutabilityCommand$1.doExecute(IProgressMonitor, IAdaptable) line: 154
SetViewMutabilityCommand$1(AbstractEMFOperation).execute(IPr ogressMonitor, IAdaptable) line: 157
SetViewMutabilityCommand.setMutability(boolean) line: 161
SetViewMutabilityCommand.execute() line: 128
SiteCanonicalEditPolicy(CanonicalEditPolicy).createViews(Lis t) line: 469
SiteCanonicalEditPolicy(CanonicalEditPolicy).refreshSemantic Children() line: 1125
SiteCanonicalEditPolicy.refreshSemantic() line: 142
SiteCanonicalEditPolicy(CanonicalEditPolicy).refresh() line: 985
SiteCanonicalEditPolicy(CanonicalConnectionEditPolicy).refre shOnActivate() line: 107
SiteCanonicalEditPolicy(CanonicalEditPolicy).activate() line: 653
SiteEditPart(AbstractEditPart).activateEditPolicies() line: 165
SiteEditPart(AbstractEditPart).activate() line: 148
SiteEditPart(AbstractGraphicalEditPart).activate() line: 193
GraphicalEditPart.access$0(GraphicalEditPart) line: 1
SiteEditPart(GraphicalEditPart).activate() line: 189
SiteEditPart(DiagramEditPart).activate() line: 349
RenderedDiagramRootEditPart(AbstractEditPart).addChild(EditP art, int) line: 201
RenderedDiagramRootEditPart(SimpleRootEditPart).setContents( EditPart) line: 101
DiagramGraphicalViewer(AbstractEditPartViewer).setContents(E ditPart) line: 601
DiagramGraphicalViewer.setContents(EditPart) line: 378
DiagramGraphicalViewer(AbstractEditPartViewer).setContents(O bject) line: 610
TopologyDiagramEditor(DiagramEditor).initializeGraphicalView erContents() line: 870
TopologyDiagramEditor(DiagramEditor).initializeGraphicalView er() line: 863
TopologyDiagramEditor(DiagramEditorWithFlyOutPalette).initia lizeGraphicalViewer() line: 116
TopologyDiagramEditor.initializeGraphicalViewer() line: 262
TopologyDiagramEditor(DiagramEditor).createGraphicalViewer(C omposite) line: 807
TopologyDiagramEditor(GraphicalEditor).createPartControl(Com posite) line: 163
TopologyDiagramEditor(DiagramEditor).createPartControl(Compo site) line: 1555
TopologyDiagramEditor(DiagramEditorWithFlyOutPalette).create PartControl(Composite) line: 328
TopologyDiagramEditor(DiagramDocumentEditor).createPartContr ol(Composite) line: 1459
EditorReference.createPartHelper() line: 661
EditorReference.createPart() line: 428
EditorReference(WorkbenchPartReference).getPart(boolean) line: 594
EditorPane(PartPane).setVisible(boolean) line: 306
PresentablePart.setVisible(boolean) line: 180
PresentablePartFolder.select(IPresentablePart) line: 270
LeftToRightTabOrder.select(IPresentablePart) line: 65
TabbedStackPresentation.selectPart(IPresentablePart) line: 473
EditorStack(PartStack).refreshPresentationSelection() line: 1256
EditorStack(PartStack).setSelection(LayoutPart) line: 1209
EditorStack(PartStack).showPart(LayoutPart, Object) line: 1608
EditorStack(PartStack).add(LayoutPart, Object) line: 499
EditorStack.add(LayoutPart, Object) line: 103
EditorStack(PartStack).add(LayoutPart) line: 485
EditorStack.add(LayoutPart) line: 112
EditorSashContainer.addEditor(EditorPane, EditorStack) line: 63
EditorAreaHelper.addToLayout(EditorPane, EditorStack) line: 217
EditorAreaHelper.addEditor(EditorReference, String) line: 207
EditorManager.createEditorTab(EditorReference, String) line: 779
EditorManager.openEditorFromDescriptor(EditorDescriptor, IEditorInput, IMemento) line: 678
EditorManager.openEditor(String, IEditorInput, boolean, IMemento) line: 639
WorkbenchPage.busyOpenEditorBatched(IEditorInput, String, boolean, int, IMemento) line: 2817
WorkbenchPage.busyOpenEditor(IEditorInput, String, boolean, int, IMemento) line: 2729
WorkbenchPage.access$11(WorkbenchPage, IEditorInput, String, boolean, int, IMemento) line: 2721
WorkbenchPage$10.run() line: 2673
BusyIndicator.showWhile(Display, Runnable) line: 70
WorkbenchPage.openEditor(IEditorInput, String, boolean, int, IMemento) line: 2668
WorkbenchPage.openEditor(IEditorInput, String, boolean, int) line: 2652
WorkbenchPage.openEditor(IEditorInput, String, boolean) line: 2643
IDE.openEditor(IWorkbenchPage, IFile, boolean, boolean) line: 646
IDE.openEditor(IWorkbenchPage, IFile, boolean) line: 605
OpenFileAction.openFile(IFile) line: 99
OpenFileAction(OpenSystemEditorAction).run() line: 99
RetargetAction.run() line: 221
CommonNavigatorManager$3.open(OpenEvent) line: 184
StructuredViewer$2.run() line: 820
SafeRunner.run(ISafeRunnable) line: 37
Platform.run(ISafeRunnable) line: 880
JFaceUtil$1.run(ISafeRunnable) line: 48
SafeRunnable.run(ISafeRunnable) line: 175
CommonViewer(StructuredViewer).fireOpen(OpenEvent) line: 818
CommonViewer(StructuredViewer).handleOpen(SelectionEvent) line: 1079
CommonViewer.handleOpen(SelectionEvent) line: 372
StructuredViewer$6.handleOpen(SelectionEvent) line: 1183
OpenStrategy.fireOpenEvent(SelectionEvent) line: 263
OpenStrategy.access$2(OpenStrategy, SelectionEvent) line: 257
OpenStrategy$1.handleEvent(Event) line: 297
EventTable.sendEvent(Event) line: 84
Tree(Widget).sendEvent(Event) line: 1003
Display.runDeferredEvents() line: 3823
Display.readAndDispatch() line: 3422
Workbench.runEventLoop(Window$IExceptionHandler, Display) line: 2382
Workbench.runUI() line: 2346
Workbench.access$4(Workbench) line: 2198
Workbench$5.run() line: 493
Realm.runWithDefault(Realm, Runnable) line: 288
Workbench.createAndRunWorkbench(Display, WorkbenchAdvisor) line: 488
PlatformUI.createAndRunWorkbench(Display, WorkbenchAdvisor) line: 149
Application.start(IApplicationContext) line: 24
EclipseAppHandle.run(Object) line: 193
EclipseAppLauncher.runApplication(Object) line: 110
EclipseAppLauncher.start(Object) line: 79
EclipseStarter.run(Object) line: 382
EclipseStarter.run(String[], Runnable) line: 179
NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]
NativeMethodAccessorImpl.invoke(Object, Object[]) line: not available
DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: not available
Method.invoke(Object, Object...) line: not available
Main.invokeFramework(String[], URL[]) line: 549
Main.basicRun(String[]) line: 504
Main.run(String[]) line: 1236
Re: Diagram opens in a dirty state [message #206956 is a reply to message #206931] Thu, 25 September 2008 04:53 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: mklinchin.yahoo.com

It looks like I figured out what my problem is. I use custom
ResourceFactory with custom ResourceImpl extending XMIResourceImpl. It
appears that XMIResourceImpl uses Modification Tracking Adapter that marks
diagram as dirty even during initial load. So I overrode
createModificationTrackingAdapter in my custom ResourceImpl which fixed
the issue.

I took the code for this overridden function from the one in GMFResource
class which is very smart and considers my case. Comment to this function
hints that someone hit this situation before me.

Confusion with different behavior in different environment came from my
error in generated diagram's plugin.xml where extension_parser pointed to
GMFResource. After all this fact actually helped me to find out how to fix
the situation.

Igor

On Wed, 24 Sep 2008 18:16:45 -0400, Igor Klinchin wrote:

> Hi Alex,
>
> I am sorry for late reply. I am not sure that this post will be visible or
> I need to create a new thread for this. I digged a little bit more into
> this situation. Now when I open a diagram in a standalone application
> under Windows it opens in a dirty state. When I open it in a standalone
> application under linux it works fine. When I open it in the application
> started from Eclipse IDE it also works fine.
>
> I attach below a stack trace. The notification is about set mutable flag
> from false to true for DiagramImpl object. When I debug the application
> under linux (the one that runs fine) I just do not get to this point. It
> seems that in loop across adapters in this function:
>
> SpResourceImpl(BasicNotifierImpl).eNotify(Notification)
>
> I just do not have ResourceImpl$ModificationTrackingAdapter object at all.
>
> It seems to be an issue related to some packaging. I just think how to
> make a progress in troubleshooting.
>
> Thank you,
> Igor
>
> On Wed, 10 Sep 2008 11:37:34 +0000, Alex Shatalin wrote:
>
>> Hello Igor,
>>
>> Try placing break-point into org.eclipse.gmf.runtime.diagram.ui.resources.editor.document .AbstractDocumentProvider.fireElementDirtyStateChanged()
>> - this is a place where editor is marked as "dirty". I think you can see
>> the reason (appropriate notification) causing this situation from the stack
>> trace in a debugger.
>>
>> -----------------
>> Alex Shatalin
>
> Thread [main] (Suspended (breakpoint at line 665 in AbstractDocumentProvider))
> TopologyDocumentProvider(AbstractDocumentProvider).fireEleme ntDirtyStateChanged(Object, boolean) line: 665
> TopologyDocumentProvider.access$1(TopologyDocumentProvider, Object, boolean) line: 1
> TopologyDocumentProvider$ResourceSetModificationListener.not ifyChanged(Notification) line: 1113
> SpResourceImpl(BasicNotifierImpl).eNotify(Notification) line: 247
> SpResourceImpl(ResourceImpl).setModified(boolean) line: 1748
> ResourceImpl$ModificationTrackingAdapter.notifyChanged(Notif ication) line: 1626
> DiagramImpl(BasicNotifierImpl).eNotify(Notification) line: 247
> DiagramImpl(ViewImpl).setMutable(boolean) line: 269
> SetViewMutabilityCommand$1.doExecute(IProgressMonitor, IAdaptable) line: 154
> SetViewMutabilityCommand$1(AbstractEMFOperation).execute(IPr ogressMonitor, IAdaptable) line: 157
> SetViewMutabilityCommand.setMutability(boolean) line: 161
> SetViewMutabilityCommand.execute() line: 128
> SiteCanonicalEditPolicy(CanonicalEditPolicy).createViews(Lis t) line: 469
> SiteCanonicalEditPolicy(CanonicalEditPolicy).refreshSemantic Children() line: 1125
> SiteCanonicalEditPolicy.refreshSemantic() line: 142
> SiteCanonicalEditPolicy(CanonicalEditPolicy).refresh() line: 985
> SiteCanonicalEditPolicy(CanonicalConnectionEditPolicy).refre shOnActivate() line: 107
> SiteCanonicalEditPolicy(CanonicalEditPolicy).activate() line: 653
> SiteEditPart(AbstractEditPart).activateEditPolicies() line: 165
> SiteEditPart(AbstractEditPart).activate() line: 148
> SiteEditPart(AbstractGraphicalEditPart).activate() line: 193
> GraphicalEditPart.access$0(GraphicalEditPart) line: 1
> SiteEditPart(GraphicalEditPart).activate() line: 189
> SiteEditPart(DiagramEditPart).activate() line: 349
> RenderedDiagramRootEditPart(AbstractEditPart).addChild(EditP art, int) line: 201
> RenderedDiagramRootEditPart(SimpleRootEditPart).setContents( EditPart) line: 101
> DiagramGraphicalViewer(AbstractEditPartViewer).setContents(E ditPart) line: 601
> DiagramGraphicalViewer.setContents(EditPart) line: 378
> DiagramGraphicalViewer(AbstractEditPartViewer).setContents(O bject) line: 610
> TopologyDiagramEditor(DiagramEditor).initializeGraphicalView erContents() line: 870
> TopologyDiagramEditor(DiagramEditor).initializeGraphicalView er() line: 863
> TopologyDiagramEditor(DiagramEditorWithFlyOutPalette).initia lizeGraphicalViewer() line: 116
> TopologyDiagramEditor.initializeGraphicalViewer() line: 262
> TopologyDiagramEditor(DiagramEditor).createGraphicalViewer(C omposite) line: 807
> TopologyDiagramEditor(GraphicalEditor).createPartControl(Com posite) line: 163
> TopologyDiagramEditor(DiagramEditor).createPartControl(Compo site) line: 1555
> TopologyDiagramEditor(DiagramEditorWithFlyOutPalette).create PartControl(Composite) line: 328
> TopologyDiagramEditor(DiagramDocumentEditor).createPartContr ol(Composite) line: 1459
> EditorReference.createPartHelper() line: 661
> EditorReference.createPart() line: 428
> EditorReference(WorkbenchPartReference).getPart(boolean) line: 594
> EditorPane(PartPane).setVisible(boolean) line: 306
> PresentablePart.setVisible(boolean) line: 180
> PresentablePartFolder.select(IPresentablePart) line: 270
> LeftToRightTabOrder.select(IPresentablePart) line: 65
> TabbedStackPresentation.selectPart(IPresentablePart) line: 473
> EditorStack(PartStack).refreshPresentationSelection() line: 1256
> EditorStack(PartStack).setSelection(LayoutPart) line: 1209
> EditorStack(PartStack).showPart(LayoutPart, Object) line: 1608
> EditorStack(PartStack).add(LayoutPart, Object) line: 499
> EditorStack.add(LayoutPart, Object) line: 103
> EditorStack(PartStack).add(LayoutPart) line: 485
> EditorStack.add(LayoutPart) line: 112
> EditorSashContainer.addEditor(EditorPane, EditorStack) line: 63
> EditorAreaHelper.addToLayout(EditorPane, EditorStack) line: 217
> EditorAreaHelper.addEditor(EditorReference, String) line: 207
> EditorManager.createEditorTab(EditorReference, String) line: 779
> EditorManager.openEditorFromDescriptor(EditorDescriptor, IEditorInput, IMemento) line: 678
> EditorManager.openEditor(String, IEditorInput, boolean, IMemento) line: 639
> WorkbenchPage.busyOpenEditorBatched(IEditorInput, String, boolean, int, IMemento) line: 2817
> WorkbenchPage.busyOpenEditor(IEditorInput, String, boolean, int, IMemento) line: 2729
> WorkbenchPage.access$11(WorkbenchPage, IEditorInput, String, boolean, int, IMemento) line: 2721
> WorkbenchPage$10.run() line: 2673
> BusyIndicator.showWhile(Display, Runnable) line: 70
> WorkbenchPage.openEditor(IEditorInput, String, boolean, int, IMemento) line: 2668
> WorkbenchPage.openEditor(IEditorInput, String, boolean, int) line: 2652
> WorkbenchPage.openEditor(IEditorInput, String, boolean) line: 2643
> IDE.openEditor(IWorkbenchPage, IFile, boolean, boolean) line: 646
> IDE.openEditor(IWorkbenchPage, IFile, boolean) line: 605
> OpenFileAction.openFile(IFile) line: 99
> OpenFileAction(OpenSystemEditorAction).run() line: 99
> RetargetAction.run() line: 221
> CommonNavigatorManager$3.open(OpenEvent) line: 184
> StructuredViewer$2.run() line: 820
> SafeRunner.run(ISafeRunnable) line: 37
> Platform.run(ISafeRunnable) line: 880
> JFaceUtil$1.run(ISafeRunnable) line: 48
> SafeRunnable.run(ISafeRunnable) line: 175
> CommonViewer(StructuredViewer).fireOpen(OpenEvent) line: 818
> CommonViewer(StructuredViewer).handleOpen(SelectionEvent) line: 1079
> CommonViewer.handleOpen(SelectionEvent) line: 372
> StructuredViewer$6.handleOpen(SelectionEvent) line: 1183
> OpenStrategy.fireOpenEvent(SelectionEvent) line: 263
> OpenStrategy.access$2(OpenStrategy, SelectionEvent) line: 257
> OpenStrategy$1.handleEvent(Event) line: 297
> EventTable.sendEvent(Event) line: 84
> Tree(Widget).sendEvent(Event) line: 1003
> Display.runDeferredEvents() line: 3823
> Display.readAndDispatch() line: 3422
> Workbench.runEventLoop(Window$IExceptionHandler, Display) line: 2382
> Workbench.runUI() line: 2346
> Workbench.access$4(Workbench) line: 2198
> Workbench$5.run() line: 493
> Realm.runWithDefault(Realm, Runnable) line: 288
> Workbench.createAndRunWorkbench(Display, WorkbenchAdvisor) line: 488
> PlatformUI.createAndRunWorkbench(Display, WorkbenchAdvisor) line: 149
> Application.start(IApplicationContext) line: 24
> EclipseAppHandle.run(Object) line: 193
> EclipseAppLauncher.runApplication(Object) line: 110
> EclipseAppLauncher.start(Object) line: 79
> EclipseStarter.run(Object) line: 382
> EclipseStarter.run(String[], Runnable) line: 179
> NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]
> NativeMethodAccessorImpl.invoke(Object, Object[]) line: not available
> DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: not available
> Method.invoke(Object, Object...) line: not available
> Main.invokeFramework(String[], URL[]) line: 549
> Main.basicRun(String[]) line: 504
> Main.run(String[]) line: 1236
Re: Diagram opens in a dirty state [message #206978 is a reply to message #206956] Thu, 25 September 2008 08:33 Go to previous message
Alexander Shatalin is currently offline Alexander ShatalinFriend
Messages: 2928
Registered: July 2009
Senior Member
Hello Igor,

Good to know you've finally corrected your problem! :-)

-----------------
Alex Shatalin
Previous Topic:CanonicalEditPolicy (shouldDeleteView)
Next Topic:Rendering a shortcut element that cannot be contained in the root element
Goto Forum:
  


Current Time: Thu May 13 23:10:15 GMT 2021

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

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

Back to the top