Skip to main content
AgeCommit message (Collapse)AuthorFilesLines
2016-07-13Bug 496299: Controlled Units as Integral FragmentsChristian W. Damus1-0/+9 Implement a new mode of controlled unit in Papyrus dubbed "shards". A shard is like any other sub-unit created up to and including the Neon release, except that it cannot be opened independently in the editor. The Papyrus editor, when asked to open a "shard", will instead open the root resource of the model. Likewise, the editor matcher normalizes editor inputs to the root resource of any shard. The graph of shard dependencies is inferred from a new workspace- wide index of cross-resource containment references, when it is available. Otherwise, the linkage of shards to their parent references is parsed on-the-fly from the shard annotation's reference (with a relatively efficient XML parsing that terminates after reading only a few lines of the XMI text). A new ResourceLocator is implemented to provide a pluggable hook for resource loading (including proxy resolution), to ensure when loading a shard resource that its parent resource chain is first loaded from the top down to ensure that all context of profile applications is available before loading the shard, itself, which may have stereotype applications that depend on those profile applications. The CoreMultiDiagramEditor installs this resource locator on the ModelSet; other applications (including in a non-Eclipse context) can make similar use of it. Some additional fixes are required in other core components to make the loading of referenced sharded models as in bug 458837 work: * the SemanticUMLContentProvider did not detect the final resolution of containment proxies that changes what looks look a model root object into just another intermediate element in the content tree. Besides that it would schedule a large number of redundant UI refreshes asynchronously (deferred) on the UI thread * the DiModel and NotationModel would load their adjuncts to the *.uml resource when that resource is created, not after it has been loaded. This is much too early and ends up causing the transactional editing domain to detect the attachment of a resource's contents at the end of loading as an attempt to edit the model during a read-only transaction, which logs an exception and bombs the UI action. Instead, these models now have snippets that load the *.di and *.notation resources after the semantic resource has been loaded. * the new model snippets required an additional fix in the loading of IModels to handle contributions of snippets and dependencies to models that are overridden by other IModels registered under the same ID, such as is the case with the NotationModel and the CSSNotationModel, which latter needs the snippet declared by the former * the IModels additionally need to ensure that they start snippets on loading of an existing model even when it is already found to be loaded in the ModelSet (as happens often in JUnit tests) * the AbstractModelFixture in the JUnit test framework is updated to ensure that the ModelSet is properly initialized, with its own snippets started and its IModels loaded and their snippets started * the basic uncontrol command now removes the shard annotation from the uncontrolled element/resource, if there was one. Because this bundle now supports a new feature (that being shards), it seems appropriate to bump its minor version number General-purpose changes in the core workspace model index framework that improve overall performance, of particular significance in large and highly fragmented models: Implement persistent storage of the workspace model index at workspace save to support quick start-up without parsing the entire workspace. Consolidation of indices: * run a single pool of indexing jobs and a single resource change listener to trigger (re)-indexing of files * all indices matching any given file process it * includes a new extension point from which all indices are loaded into the shared index manager to initialize them and do the work (cherry-picked from streams/2.0-maintenance) Change-Id: Ifd65a71c57134b69d873f17139f3cedbf11c5ba5
2016-04-12Move elementtypes definitions that are not model-based to model-based. Florian Noyrit1-36/+5
Change-Id: Ie8ffcdd5571799ac8bc7793c9606befb06b19fa5
2016-01-22Bug 485220: [Architecture] Provide a more modular architectureChristian W. Damus1-25/+0 Move UI-dependent APIs from the org.eclipse.papyrus.infra.emf bundle to a new org.eclipse.papyrus.infra.ui.emf bundle. Accordingly move tests into a new org.eclipse.papyrus.infra.ui.emf.tests bundle. Now that we have an UI EMF bundle, move the editor-page advices from the infra.ui bundle into it, which is a more appropriate home for them. One UI dependency is removed by reordering of code in the EMFHelper::getEObject(Object) API: * the EMF Facet tree elements are once again IAdaptables, providing their encapsulated EObjects or EReferences as adapters. So, the case handling IAdaptable is moved ahead of the test for is-an-EObject because these tree elements are also EObjects but are not interesting in themselves Also, the dialog-settings for the EMF Facet customization manager are moved into the infra.ui.emf bundle, as is the lazy initialization of the manager from those settings. Clients are refactored to get the customization manager from this new bundle (via a new ProviderHelper API) to ensure this lazy initialization. Various UI-dependent ServiceUtilsForXyz classes that were in the infra.emf bundle but had nothing to do with EMF are moved into the infra.ui bundle. UI-dependent classes from the org.eclipse.papyrus.infra.emf.readonly bundle are moved into the org.eclipse.papyrus.infra.ui.emf, also. These include extraction of the editor reload listener from the ReadOnlyManager class by means of a new general-purpose IReadOnlyManagerProcessor OSGi service interface. Tests all still pass (inasmuch as they do in the nightly master builds). Change-Id: Ieb0993b2ed1a7a49890d3471c7b42bc4f218fec6
2016-01-22Bug 485220: [Architecture] Provide a more modular architectureChristian W. Damus1-3/+4 Move UI-dependent APIs from the bundle to org.eclipse.papyrus.infra.ui. Accordingly move tests into a new org.eclipse.papyrus.infra.ui.tests bundle. Two crucial UI dependencies are inverted by introduction of new OSGi services with core interfaces specified in the non-UI layer: * IExecutorService extends Java Platform's ExecutorService with APIs for synchronous execution (a la Display.syncExec). A new CoreExecutors class in the bundle supplies the instance provided by the OSGi service implementation in the infra.ui bundle. This provides compatibility for clients of various UIUtil APIs that they can no longer access * IContextualServiceRegistryTracker abstracts the concept of the default ServicesRegistry found in the currently active editor, which the ServiceUtilsForHandlers class (and hence all of its clients) relies on. Again an OSGi service implementation in the infra.ui bundle supplies the implementation of this tracker, which is exposed in infra.core through the service-utils API Also move UI-dependent APIs from the org.eclipse.papyrus.infra.core bundle into org.eclipse.papyrus.infra.ui. This includes * moving the 'papyrusDiagram' and 'papyrusContentOutline' extension points into the org.eclipse.papyrus.infra.ui namespace * moving various UI-related services such as EditorLifeycleManager, SaveLayoutBeforeClose, and the IMultiDiagramEditor, itself, into the org.eclipse.papyrus.infra.ui bundle This necessitates not only widespread refactorings on the moved APIs, but also concomitant move of other APIs in other bundles because they cannot plausibly use these moved APIs from their new home in org.eclipse.papyrus.infra.ui and/or they cannot reasonably also be moved to the UI bundle and/or they must be used by bundles that now have no UI dependency: * the DI/sash-windows EMF model is moved out of infra.core.sasheditor.di bundle into a new model-only org.eclipse.papyrus.infra.sashwindows.di bundle (which symbolic name incidentally now better reflects the contained Java package names) * the IPageManager and ILocalPageService interfaces are moved out of infra.core.sasheditor.di bundle because they need to remain accessible by headless code such as the edit advices that ensure deletion of sash-model pages for notations that are deleted. These are now in a package named org.eclipse.papyrus.infra.code.sashwindows.di.service. Accordingly the class hierarchy implementing the IPageManager interface is changed: the obsolete PageMngrImpl is deleted, replaced by a BasicPageManagerImpl which now the PageManagerImpl extends. A service factory creates the basic page manager in a headless context, but is overridden by the UI-aware implementation when the UI bundles are installed * the MultiDiagramEditorGefDelegate (which has a GEF 3 dependency) is moved from the org.eclipse.papyrus.infra.core.sasheditor bundle to a new org.eclipse.papyrus.infra.gmfdiag.gef bundle. Its usage for an adapter of ActionRegistry type is extracted out of the CoreMultiDiagramEditor class into a new external adapter-factory in the infra.gmfdiag.gef bundle Tests all still pass (inasmuch as they do in the nightly master builds). Change-Id: I573dee5d9312d6e5746d74575350d0152b591ab3
2014-04-15431953: Stereotype garbage left in .uml file after removing profile (crash ↵Christian W. Damus1-13/+1
reason?) Refactor the initialization of the ModelSet service so that its own service factory associates it with the service registry (removing the additional service-factory that did this). This introduces a new concept of service adapters that can externally provide a POJO service instance with the service lifecycle hooks, for POJOs that are injected into the service registry by a client and not created by a factory. Non-POJO services and factory-created services do not need this because they have the service lifecycle built-in. Update the CoreMultiDiagramEditor to start itself early to let other services such as the model set find it in the registry. Fix an NPE in the abstract editor triggered by the service registry's attempt to obtain a service adapter from it.
2014-04-07408491: [Profile] Papyrus shall enable to easily switch between local and ↵Christian W. Damus1-0/+2
registered profiles. Implementation of stereotype application repair when switching profile applications. Includes a new DependencyManager that loads participants from an extension point, to enable injection of the stereotype application repair.
2014-04-03[Releng] Remove unused dependencies to EMF FacetCamille Letavernier1-4/+1
2014-02-20323802: [General] Papyrus shall provide a read only modeChristian W. Damus1-0/+22 Implement edit advice to protect read-only objects.
2014-02-20323802: [General] Papyrus shall provide a read only modeChristian W. Damus1-0/+4 Implement a custom TransactionChangeRecorder that aborting the transaction if a read-only object is modified. Add a new extension point oep.infra.gmfdiag.commands.historyListeners for registration of listeners to be added to the Papyrus operation history. Implement a listener that detects operations that failed because of rollback and presents a status dialog explaining the rollback. Add a new label provider for EMF Resources to support presentation of the rollback dialog when an affected object is a resource.
2014-02-07402525: [Widgets / Transactions] Papyrus dialogs should be transactionalChristian W. Damus1-0/+10 Introduce an IAtomicOperationExecutor adapter for the object being edited by the widgets to to execute complex operations on the EMF command-stack (for EObjects being edited). This command stack is understood to support nested command execution. Add the element being edited as context for the ReferenceValueFactory's creation of a new referenced object. This provides resource-set context for nested editors that need to create further new elements wherever in the model. This resource-set also can be used to look up the LabelProviderService for presentation of objects in the dialogs.
2013-03-28404564: [Resource] Papyrus shall support optional ecore modelscletavernie1-0/+4 Improve the LabelProvider for "AnyType" elements
2013-02-26401109: [PageManager] Deleting an element which contains an opened page ↵cletavernie1-0/+32
leads to critical model corruption
2013-02-18398712: [Core] Multiple issues with the PageManagercletavernie1-1/+1 360243: [ModelExplorer] Undo/Redo on delete for Diagrams and Tables
2012-10-26392438: [Core Services] Papyrus should provide a LabelProvider servicecletavernie1-0/+7 LabelProviderService is now partially used.
2012-01-30ASSIGNED - bug 370129: [Core] ServicesRegistry should be accessible from any ↵cdumoulin1-0/+18
EObject attached to a Papyrus ResourceSet Add class ServiceUtilsForResource allowing to get the ServicesRegistry from an EOBject.

    Back to the top