Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 327465

Summary: [SysML Block Definition Diagram] Reorganize the palette
Product: [Modeling] Papyrus Reporter: Tatiana Fesenko <tatiana.fesenko>
Component: CoreAssignee: Tatiana Fesenko <tatiana.fesenko>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: P3 CC: rschnekenburger, sebastien.gerard, yann.tanguy
Version: 0.7.0   
Target Milestone: ---   
Hardware: PC   
OS: Windows XP   
Whiteboard:
Bug Depends on:    
Bug Blocks: 330182    

Description Tatiana Fesenko CLA 2010-10-11 11:42:52 EDT
Flatten the palette - get rid of the groups. Let the user to customize the palette in accordance with his/her needs.
Comment 1 Tatiana Fesenko CLA 2010-10-11 12:26:13 EDT
Fixed in 2932
Comment 2 Yann Tanguy CLA 2010-11-05 06:47:17 EDT
Rémi the following exception occurs with the palette  :

eclipse.buildId=M20100909-0800
java.version=1.6.0_22
java.vendor=Sun Microsystems Inc.
BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=fr_FR
Framework arguments:  -product org.eclipse.platform.ide
Command-line arguments:  -product org.eclipse.platform.ide -data C:\Workspaces\Papyrus-0.7.X/../Papyrus-0.7.X-Runtime -dev file:C:/Workspaces/Papyrus-0.7.X/.metadata/.plugins/org.eclipse.pde.core/Papyrus-0.7.X-Runtime/dev.properties -os win32 -ws win32 -arch x86 -consoleLog


Error
Fri Nov 05 11:42:10 CET 2010
Unexpected Error

java.lang.NullPointerException
	at org.eclipse.papyrus.diagram.common.service.palette.Configuration.buildConfiguration(Configuration.java:156)
	at org.eclipse.papyrus.diagram.common.service.palette.Configuration.<init>(Configuration.java:82)
	at org.eclipse.papyrus.diagram.common.service.palette.StereotypePostAction.init(StereotypePostAction.java:252)
	at org.eclipse.papyrus.diagram.common.service.palette.StereotypeAspectActionProvider.createAction(StereotypeAspectActionProvider.java:48)
	at org.eclipse.papyrus.diagram.common.service.XMLRequiredProfileFactory.traverseAspectToolEntryNode(XMLRequiredProfileFactory.java:97)
	at org.eclipse.papyrus.diagram.common.service.XMLDefinitionPaletteParser.parseAspectToolNode(XMLDefinitionPaletteParser.java:89)
	at org.eclipse.papyrus.diagram.common.service.XMLDefinitionPaletteParser.parsePaletteContent(XMLDefinitionPaletteParser.java:76)
	at org.eclipse.papyrus.diagram.common.service.XMLDefinitionPaletteParser.parserDrawerNode(XMLDefinitionPaletteParser.java:101)
	at org.eclipse.papyrus.diagram.common.service.XMLDefinitionPaletteParser.parsePaletteContent(XMLDefinitionPaletteParser.java:68)
	at org.eclipse.papyrus.diagram.common.service.XMLDefinitionPaletteParser.parsePaletteDefinition(XMLDefinitionPaletteParser.java:49)
	at org.eclipse.papyrus.diagram.common.service.PluginPaletteProvider.getRequiredProfiles(PluginPaletteProvider.java:112)
	at org.eclipse.papyrus.diagram.common.part.PaletteUtil.areRequiredProfileApplied(PaletteUtil.java:440)
	at org.eclipse.papyrus.diagram.common.service.PapyrusPaletteService$ProviderDescriptor.provides(PapyrusPaletteService.java:175)
	at org.eclipse.gmf.runtime.common.core.service.Service.safeProvides(Service.java:860)
	at org.eclipse.gmf.runtime.common.core.service.ExecutionStrategy.getUncachedProviders(ExecutionStrategy.java:255)
	at org.eclipse.gmf.runtime.common.core.service.Service.getProviders(Service.java:538)
	at org.eclipse.gmf.runtime.common.core.service.ExecutionStrategy$4.execute(ExecutionStrategy.java:179)
	at org.eclipse.gmf.runtime.common.core.service.Service.execute(Service.java:652)
	at org.eclipse.papyrus.diagram.common.service.PapyrusPaletteService.execute(PapyrusPaletteService.java:523)
	at org.eclipse.papyrus.diagram.common.service.PapyrusPaletteService.contributeToPalette(PapyrusPaletteService.java:501)
	at org.eclipse.papyrus.diagram.common.service.PapyrusPaletteService$1.run(PapyrusPaletteService.java:540)
	at org.eclipse.emf.transaction.impl.TransactionalEditingDomainImpl.runExclusive(TransactionalEditingDomainImpl.java:328)
	at org.eclipse.papyrus.diagram.common.service.PapyrusPaletteService.createPalette(PapyrusPaletteService.java:537)
	at org.eclipse.papyrus.diagram.clazz.part.UMLDiagramEditor.createPaletteRoot(UMLDiagramEditor.java:135)
	at org.eclipse.papyrus.diagram.clazz.part.UMLDiagramEditor.createPaletteViewerProvider(UMLDiagramEditor.java:323)
	at org.eclipse.gmf.runtime.diagram.ui.parts.DiagramEditorWithFlyOutPalette.getPaletteViewerProvider(DiagramEditorWithFlyOutPalette.java:432)
	at org.eclipse.gmf.runtime.diagram.ui.parts.DiagramEditorWithFlyOutPalette.createPartControl(DiagramEditorWithFlyOutPalette.java:327)
	at org.eclipse.gmf.runtime.diagram.ui.resources.editor.parts.DiagramDocumentEditor.createPartControl(DiagramDocumentEditor.java:1510)
	at org.eclipse.papyrus.sasheditor.internal.EditorPart.createEditorPartControl(EditorPart.java:263)
	at org.eclipse.papyrus.sasheditor.internal.EditorPart.createPartControl(EditorPart.java:169)
	at org.eclipse.papyrus.sasheditor.internal.TabFolderPart.createChildPart(TabFolderPart.java:903)
	at org.eclipse.papyrus.sasheditor.internal.TabFolderPart.createTabItem(TabFolderPart.java:828)
	at org.eclipse.papyrus.sasheditor.internal.TabFolderPart.synchronize2(TabFolderPart.java:743)
	at org.eclipse.papyrus.sasheditor.internal.RootPart.synchronize2(RootPart.java:139)
	at org.eclipse.papyrus.sasheditor.internal.SashWindowsContainer.refreshTabsInternal(SashWindowsContainer.java:386)
	at org.eclipse.papyrus.sasheditor.internal.SashWindowsContainer.refreshTabs(SashWindowsContainer.java:339)
	at org.eclipse.papyrus.sasheditor.editor.AbstractMultiPageSashEditor.refreshTabs(AbstractMultiPageSashEditor.java:171)
	at org.eclipse.papyrus.core.editor.CoreMultiDiagramEditor.access$5(CoreMultiDiagramEditor.java:1)
	at org.eclipse.papyrus.core.editor.CoreMultiDiagramEditor$3.contentChanged(CoreMultiDiagramEditor.java:193)
	at org.eclipse.papyrus.sasheditor.contentprovider.di.internal.ContentChangedEventProvider.fireContentChanged(ContentChangedEventProvider.java:162)
	at org.eclipse.papyrus.sasheditor.contentprovider.di.internal.ContentChangedEventProvider$EMFAdapter.notifyChanged(ContentChangedEventProvider.java:194)
	at org.eclipse.emf.common.notify.impl.BasicNotifierImpl.eNotify(BasicNotifierImpl.java:380)
	at org.eclipse.emf.ecore.util.EcoreEList.dispatchNotification(EcoreEList.java:255)
	at org.eclipse.emf.common.notify.impl.NotifyingListImpl.addUnique(NotifyingListImpl.java:300)
	at org.eclipse.emf.common.util.AbstractEList.add(AbstractEList.java:307)
	at org.eclipse.papyrus.sashwindows.di.impl.TabFolderImpl.addPage(TabFolderImpl.java:91)
	at org.eclipse.papyrus.sashwindows.di.impl.SashModelImpl.addPage(SashModelImpl.java:145)
	at org.eclipse.papyrus.sasheditor.contentprovider.di.internal.PageMngrImpl.openPage(PageMngrImpl.java:141)
	at org.eclipse.papyrus.core.adaptor.gmf.AbstractPapyrusGmfCreateDiagramCommandHandler.openDiagram(AbstractPapyrusGmfCreateDiagramCommandHandler.java:190)
	at org.eclipse.papyrus.core.adaptor.gmf.AbstractPapyrusGmfCreateDiagramCommandHandler$1.doExecuteWithResult(AbstractPapyrusGmfCreateDiagramCommandHandler.java:142)
	at org.eclipse.gmf.runtime.emf.commands.core.command.AbstractTransactionalCommand.doExecute(AbstractTransactionalCommand.java:247)
	at org.eclipse.emf.workspace.AbstractEMFOperation.execute(AbstractEMFOperation.java:150)
	at org.eclipse.core.commands.operations.DefaultOperationHistory.execute(DefaultOperationHistory.java:511)
	at org.eclipse.papyrus.core.adaptor.gmf.AbstractPapyrusGmfCreateDiagramCommandHandler.runAsTransaction(AbstractPapyrusGmfCreateDiagramCommandHandler.java:149)
	at org.eclipse.papyrus.core.adaptor.gmf.AbstractPapyrusGmfCreateDiagramCommandHandler.runAsTransaction(AbstractPapyrusGmfCreateDiagramCommandHandler.java:99)
	at org.eclipse.papyrus.core.adaptor.gmf.AbstractPapyrusGmfCreateDiagramCommandHandler.execute(AbstractPapyrusGmfCreateDiagramCommandHandler.java:78)
	at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:293)
	at org.eclipse.core.commands.Command.executeWithChecks(Command.java:476)
	at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:508)
	at org.eclipse.ui.internal.handlers.HandlerService.executeCommand(HandlerService.java:169)
	at org.eclipse.ui.internal.handlers.SlaveHandlerService.executeCommand(SlaveHandlerService.java:241)
	at org.eclipse.ui.menus.CommandContributionItem.handleWidgetSelection(CommandContributionItem.java:820)
	at org.eclipse.ui.menus.CommandContributionItem.access$19(CommandContributionItem.java:806)
	at org.eclipse.ui.menus.CommandContributionItem$5.handleEvent(CommandContributionItem.java:796)
	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)
Comment 3 Remi Schnekenburger CLA 2010-11-05 06:53:59 EDT
commit a fix in the NPE class. Could you test if the problem is resolved? The modified class is located in {o.e.p}.diagram.common plugin.
Comment 4 Yann Tanguy CLA 2010-11-05 07:00:20 EDT
By "groups" I guess you mean button stack.

In my opinion flattening the palette in this case lead to a palette with too many elements which is confusing for users.
Note that even with "unflattened" palette, there were already a too large number of elements in the "Node" drawer.

I suggest to add two drawers :
- grouping FlowPort / FlowSpecification elements
- grouping Type related elements (DataType, Unit, Dimension...)

Do you have other suggestion ?
Comment 5 Yann Tanguy CLA 2010-11-05 08:24:08 EDT
(In reply to comment #3)
> commit a fix in the NPE class. Could you test if the problem is resolved? The
> modified class is located in {o.e.p}.diagram.common plugin.

It is resolved, thanks.
Comment 6 Tatiana Fesenko CLA 2010-11-15 06:18:59 EST
(In reply to comment #4)
> By "groups" I guess you mean button stack.
> 
> In my opinion flattening the palette in this case lead to a palette with too
> many elements which is confusing for users.
> Note that even with "unflattened" palette, there were already a too large
> number of elements in the "Node" drawer.
> 
> I suggest to add two drawers :
> - grouping FlowPort / FlowSpecification elements
> - grouping Type related elements (DataType, Unit, Dimension...)
> 

I agree. 
So the bug was renamed to 'Reorganize the palette'
Comment 7 Tatiana Fesenko CLA 2010-11-15 06:20:08 EST
> > I suggest to add two drawers :
> > - grouping FlowPort / FlowSpecification elements
> > - grouping Type related elements (DataType, Unit, Dimension...)

Initial grouping is committed as of r3216
Comment 8 Tatiana Fesenko CLA 2011-03-11 10:25:30 EST
(In reply to comment #7)
> > > I suggest to add two drawers :
> > > - grouping FlowPort / FlowSpecification elements
> > > - grouping Type related elements (DataType, Unit, Dimension...)
> 
> Initial grouping is committed as of r3216

But it seems that palette still can be organized better.