PCM Updating Model Source Code
Zur Navigation springen
Zur Suche springen
Generate Editor Project from scratch
If you generate the pcm.editor project from scratch, some classes have to be adapted manually:
- de.uka.ipd.sdq.pcm.allocation.presentation.AllocationEditor
- de.uka.ipd.sdq.pcm.qosannotations.presentation.QosannotationsEditor
- de.uka.ipd.sdq.pcm.repository.presentation.RepositoryEditor
- de.uka.ipd.sdq.pcm.resourceenvironment.presentation.ResourceenvironmentEditor
- de.uka.ipd.sdq.pcm.repositorytype.presentation.ResourcetypeEditor
- de.uka.ipd.sdq.pcm.subsystem.presentation.SubsystemEditor
- de.uka.ipd.sdq.pcm.system.presentation.SystemEditor
- de.uka.ipd.sdq.pcm.usagemodel.presentation.UsagemodelEditor
Remember to change the "@generated" tag into "@generated not" for all adapted variables and methods to tell the code generator not to overwrite these changes.
protected ComposedAdapterFactory adapterFactory
In each class adapt the following code:
Replace
/**
* This is the one adapter factory used for providing views of the model.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
protected ComposedAdapterFactory adapterFactory;
with
/**
* This is the one adapter factory used for providing views of the model.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated not
*/
protected AdapterFactory adapterFactory; // NEW
protected void initializeEditingDomain()
In each class adapt the following code:
Replace
/**
* This sets up the editing domain for the model editor.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
protected void initializeEditingDomain() {
// Create an adapter factory that yields item providers.
//
adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE);
adapterFactory.addAdapterFactory(new ResourceItemProviderAdapterFactory());
adapterFactory.addAdapterFactory(new CoreItemProviderAdapterFactory());
...
adapterFactory.addAdapterFactory(new ProbfunctionItemProviderAdapterFactory());
adapterFactory.addAdapterFactory(new ReflectiveItemProviderAdapterFactory());
// Create the command stack that will notify this editor as commands are executed.
//
BasicCommandStack commandStack = new BasicCommandStack();
// Add a listener to set the most recent command's affected objects to be the selection of the viewer with focus.
//
commandStack.addCommandStackListener
(new CommandStackListener() {
public void commandStackChanged(final EventObject event) {
getContainer().getDisplay().asyncExec
(new Runnable() {
public void run() {
firePropertyChange(IEditorPart.PROP_DIRTY);
// Try to select the affected objects.
//
Command mostRecentCommand = ((CommandStack)event.getSource()).getMostRecentCommand();
if (mostRecentCommand != null) {
setSelectionToViewer(mostRecentCommand.getAffectedObjects());
}
if (propertySheetPage != null && !propertySheetPage.getControl().isDisposed()) {
propertySheetPage.refresh();
}
}
});
}
});
// Create the editing domain with a special command stack.
//
editingDomain = new AdapterFactoryEditingDomain(adapterFactory, commandStack, new HashMap<Resource, Boolean>());
}
with
/**
* This sets up the editing domain for the model editor.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated not
*/
protected void initializeEditingDomain() {
// Create an adapter factory that yields item providers.
//
// NEW:
ComposedAdapterFactory compAdapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE) {
@Override
public ComposeableAdapterFactory getRootAdapterFactory() {
// TODO Auto-generated method stub
return (PalladioItemProviderAdapterFactory)adapterFactory;
}
};
compAdapterFactory.addAdapterFactory(new ResourceItemProviderAdapterFactory());
compAdapterFactory.addAdapterFactory(new CoreItemProviderAdapterFactory());
...
compAdapterFactory.addAdapterFactory(new ProbfunctionItemProviderAdapterFactory());
compAdapterFactory.addAdapterFactory(new ReflectiveItemProviderAdapterFactory());
// NEW
adapterFactory = new PalladioItemProviderAdapterFactory(compAdapterFactory);
// Create the command stack that will notify this editor as commands are executed.
//
BasicCommandStack commandStack = new BasicCommandStack();
// Add a listener to set the most recent command's affected objects to be the selection of the viewer with focus.
//
commandStack.addCommandStackListener
(new CommandStackListener() {
public void commandStackChanged(final EventObject event) {
getContainer().getDisplay().asyncExec
(new Runnable() {
public void run() {
firePropertyChange(IEditorPart.PROP_DIRTY);
// Try to select the affected objects.
//
Command mostRecentCommand = ((CommandStack)event.getSource()).getMostRecentCommand();
if (mostRecentCommand != null) {
setSelectionToViewer(mostRecentCommand.getAffectedObjects());
}
if (propertySheetPage != null && !propertySheetPage.getControl().isDisposed()) {
propertySheetPage.refresh();
}
}
});
}
});
// Create the editing domain with a special command stack.
//
editingDomain = new AdapterFactoryEditingDomain(adapterFactory, commandStack, new HashMap<Resource, Boolean>());
}
public void dispose()
In each class adapt the following code:
Replace
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public void dispose() {
updateProblemIndication = false;
ResourcesPlugin.getWorkspace().removeResourceChangeListener(resourceChangeListener);
getSite().getPage().removePartListener(partListener);
adapterFactory.dispose();
if (getActionBarContributor().getActiveEditor() == this) {
getActionBarContributor().setActiveEditor(null);
}
if (propertySheetPage != null) {
propertySheetPage.dispose();
}
if (contentOutlinePage != null) {
contentOutlinePage.dispose();
}
super.dispose();
}
with
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated not
*/
@Override
public void dispose() {
updateProblemIndication = false;
ResourcesPlugin.getWorkspace().removeResourceChangeListener(resourceChangeListener);
getSite().getPage().removePartListener(partListener);
((PalladioItemProviderAdapterFactory)adapterFactory).dispose(); // NEW
if (getActionBarContributor().getActiveEditor() == this) {
getActionBarContributor().setActiveEditor(null);
}
if (propertySheetPage != null) {
propertySheetPage.dispose();
}
if (contentOutlinePage != null) {
contentOutlinePage.dispose();
}
super.dispose();
}
public IPropertySheetPage getPropertySheetPage()
In the classes
- QosannotationsEditor
- RepositoryEditor
- ResourceenvironmentEditor
- SystemEditor
- Usagemodeleditor
adapt the following code:
Replace
/**
* This accesses a cached version of the property sheet.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public IPropertySheetPage getPropertySheetPage() {
if (propertySheetPage == null) {
propertySheetPage =
new ExtendedPropertySheetPage(editingDomain) {
@Override
public void setSelectionToViewer(List<?> selection) {
QosannotationsEditor.this.setSelectionToViewer(selection);
QosannotationsEditor.this.setFocus();
}
@Override
public void setActionBars(IActionBars actionBars) {
super.setActionBars(actionBars);
getActionBarContributor().shareGlobalActions(this, actionBars);
}
};
propertySheetPage.setPropertySourceProvider(new AdapterFactoryContentProvider(adapterFactory));
}
return propertySheetPage;
}
with
/**
* This accesses a cached version of the property sheet.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated not
*/
public IPropertySheetPage getPropertySheetPage() {
if (propertySheetPage == null) {
propertySheetPage =
new ExtendedPropertySheetPage(editingDomain) {
@Override
public void setSelectionToViewer(List<?> selection) {
QosannotationsEditor.this.setSelectionToViewer(selection);
QosannotationsEditor.this.setFocus();
}
@Override
public void setActionBars(IActionBars actionBars) {
super.setActionBars(actionBars);
getActionBarContributor().shareGlobalActions(this, actionBars);
}
};
propertySheetPage.setPropertySourceProvider(new PalladioAdapterFactoryContentProvider(adapterFactory)); // new
}
return propertySheetPage;
}
public void createModel()
In the class
- RepositoryEditor
adapt the following code:
Replace
/**
* This is the method called to load a resource into the editing domain's resource set based on the editor's input.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public void createModel() {
URI resourceURI = EditUIUtil.getURI(getEditorInput());
Exception exception = null;
Resource resource = null;
try {
// Load the resource through the editing domain.
//
resource = editingDomain.getResourceSet().getResource(resourceURI, true);
}
catch (Exception e) {
exception = e;
resource = editingDomain.getResourceSet().getResource(resourceURI, false);
}
Diagnostic diagnostic = analyzeResourceProblems(resource, exception);
if (diagnostic.getSeverity() != Diagnostic.OK) {
resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception));
}
editingDomain.getResourceSet().eAdapters().add(problemIndicationAdapter);
}
with
/**
* This is the method called to load a resource into the editing domain's resource set based on the editor's input.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated not
*/
public void createModel() {
// Assumes that the input is a file object.
//
IFileEditorInput modelFile = (IFileEditorInput)getEditorInput();
URI resourceURI = URI.createPlatformResourceURI(modelFile.getFile().getFullPath().toString(), true);
Exception exception = null;
Resource resource = null;
try {
// Load the resource through the editing domain.
//
resource = editingDomain.getResourceSet().getResource(resourceURI, true);
}
catch (Exception e) {
exception = e;
resource = editingDomain.getResourceSet().getResource(resourceURI, false);
}
Diagnostic diagnostic = analyzeResourceProblems(resource, exception);
if (diagnostic.getSeverity() != Diagnostic.OK) {
resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception));
}
editingDomain.getResourceSet().eAdapters().add(problemIndicationAdapter);
AddExtraResource("pathmap://PCM_MODELS/PrimitiveTypes.repository");
AddExtraResource("pathmap://PCM_MODELS/Palladio.resourcetype");
AddExtraResource("pathmap://PCM_MODELS/FailureTypes.repository");
}
private void AddExtraResource(String uri) {
Resource extraResource = editingDomain.getResourceSet().getResource(URI.createURI(uri), true);
try {
extraResource.load(new HashMap<Object, Object>());
} catch (IOException e) {
//FIXME: Empty catch block!
}
}