[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Newsgroup Home]
|
[news.eclipse.modeling.gmf] Re: check a property while reading file
|
- From: Martin Jacob <mj@xxxxxxxxxxxxxx>
- Date: Mon, 23 Feb 2009 17:20:07 +0100
- Newsgroups: eclipse.modeling.gmf
- Organization: EclipseCorner
- User-agent: Thunderbird 2.0.0.19 (Windows/20081209)
Hi Alex,
I solved the problem as follow:
I adapted the generated class
...model.diagram.part.XXXNewDiagramFileWizard.DiagramRootElementSelectionPage. This class is used as
the wizard to generate the xxx_diagram file.
1. XXXNewDiagramFileWizard constructor: set the diagramRoot element in class
DiagramRootElementSelectionPage (new Property in that class)
2. adapt method "validatePage" to check the property "version" of documentRoot
for details see the following source code as CVS difference to the generated source code:
private static class DiagramRootElementSelectionPage extends
ModelElementSelectionPage {
+ /**
+ * @generated NOT
+ */
+ protected PSC diagramRoot;
+
+ /*
+ * @generated NOT
+ * @see ModelElementSelectionPage#setModelElement(org.eclipse.emf.ecore.EObject)
+ */
+ @Override
+ public void setModelElement(EObject modelElement) {
+ if(modelElement instanceof PSC)
+ {
+ diagramRoot = (PSC) modelElement;
+ }
+ super.setModelElement(modelElement);
+ }
/**
* @generated
@@ -178,20 +197,33 @@
}
/**
- * @generated
+ * @generated NOT
*/
protected boolean validatePage() {
- if (selectedModelElement == null) {
+ boolean lRet = true;
+ if(null == diagramRoot){
+ setErrorMessage(Messages.PscNewDiagramFileWizard_RootSelectionPageNoSelectionMessage);
+ lRet = false;
+ }
+ else if (selectedModelElement == null) {
setErrorMessage(Messages.PscNewDiagramFileWizard_RootSelectionPageNoSelectionMessage);
- return false;
+ lRet = false;
+ }
+ else if(!Versions.isCompatiblePSCVersion(diagramRoot.getVersion())){
+ setErrorMessage(NLS.bind(Messages.PscNewDiagramFileWizard_WrongPSCVersion,
+ diagramRoot.getVersion(), Versions.getActualPSCVersion()));
+ lRet = false;
+ }
+ else
+ {
+ lRet = ViewService.getInstance().provides(
+ new CreateDiagramViewOperation(new EObjectAdapter(
+ selectedModelElement), NetworkEditPart.MODEL_ID,
+ PscDiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT));
+ setErrorMessage(lRet ? null
+ : Messages.PscNewDiagramFileWizard_RootSelectionPageInvalidSelectionMessage);
}
- boolean result = ViewService.getInstance().provides(
- new CreateDiagramViewOperation(new EObjectAdapter(
- selectedModelElement), NetworkEditPart.MODEL_ID,
- PscDiagramEditorPlugin.DIAGRAM_PREFERENCES_HINT));
- setErrorMessage(result ? null
- : Messages.PscNewDiagramFileWizard_RootSelectionPageInvalidSelectionMessage);
- return result;
+ return lRet;
}
}
}
BR, Martin
Alex Shatalin wrote, On 23.02.2009 14:05:
Hello Martin,
If you load model file using EMY api then you'll gen instances of
EMF-generated classes and you can use EMF-generated api to access
corresponding properties like:
Network network = ...;
if (network.getPSC().getVersion() = ...) {
....
}
-----------------
Alex Shatalin