### Eclipse Workspace Patch 1.0 #P org.eclipse.gmf.codegen Index: src/org/eclipse/gmf/codegen/gmfgen/impl/GenPluginImpl.java =================================================================== RCS file: /cvsroot/technology/org.eclipse.gmf/plugins/org.eclipse.gmf.codegen/src/org/eclipse/gmf/codegen/gmfgen/impl/GenPluginImpl.java,v retrieving revision 1.10 diff -u -r1.10 GenPluginImpl.java --- src/org/eclipse/gmf/codegen/gmfgen/impl/GenPluginImpl.java 26 May 2006 14:16:24 -0000 1.10 +++ src/org/eclipse/gmf/codegen/gmfgen/impl/GenPluginImpl.java 1 Jun 2006 12:23:05 -0000 @@ -13,6 +13,7 @@ import java.util.LinkedHashSet; import java.util.Set; +import org.eclipse.emf.codegen.ecore.genmodel.GenModel; import org.eclipse.emf.common.notify.Notification; import org.eclipse.emf.common.notify.NotificationChain; import org.eclipse.emf.common.util.BasicEList; @@ -237,11 +238,30 @@ * * @generated */ - public String getName() { + public String getNameGen() { return name; } /** + * @generated NOT + */ + public String getName() { + String result = getNameGen(); + if (result == null){ + GenEditorGenerator generator = getEditorGen(); + if (generator != null){ + String prefix = "Diagram Editor"; + GenModel genModel = generator.getDomainGenModel(); + if (genModel != null){ + prefix = genModel.getModelName(); + } + result = prefix + " Plugin"; + } + } + return result; + } + + /** * * * @generated #P org.eclipse.gmf.codegen.ui Index: src/org/eclipse/gmf/internal/codegen/GMFGenConfig.java =================================================================== RCS file: /cvsroot/technology/org.eclipse.gmf/plugins/org.eclipse.gmf.codegen.ui/src/org/eclipse/gmf/internal/codegen/GMFGenConfig.java,v retrieving revision 1.9 diff -u -r1.9 GMFGenConfig.java --- src/org/eclipse/gmf/internal/codegen/GMFGenConfig.java 29 May 2006 18:04:03 -0000 1.9 +++ src/org/eclipse/gmf/internal/codegen/GMFGenConfig.java 1 Jun 2006 12:23:06 -0000 @@ -36,6 +36,8 @@ preserveIfSet(GMFGEN.getGenEditorGenerator(), GMFGEN.getGenEditorGenerator_DiagramFileExtension()); preserveIfSet(GMFGEN.getGenEditorGenerator(), GMFGEN.getGenEditorGenerator_SameFileForDiagramAndModel()); preserveIfSet(GMFGEN.getGenEditorGenerator(), GMFGEN.getGenEditorGenerator_ModelID()); + preserveIfSet(GMFGEN.getGenEditorGenerator(), GMFGEN.getGenEditorGenerator_DynamicTemplates()); + preserveIfSet(GMFGEN.getGenEditorGenerator(), GMFGEN.getGenEditorGenerator_TemplateDirectory()); setMatcher(GMFGEN.getGenPlugin(), ALWAYS_MATCH); //exactly one feature for ALWAYS_MATCH GenEditorGenerator preserveIfSet(GMFGEN.getGenPlugin(), GMFGEN.getGenPlugin_ID()); @@ -45,9 +47,16 @@ preserveIfSet(GMFGEN.getGenPlugin(), GMFGEN.getGenPlugin_ActivatorClassName()); preserveIfSet(GMFGEN.getGenPlugin(), GMFGEN.getGenPlugin_PrintingEnabled()); + setMatcher(GMFGEN.getGenEditorView(), ALWAYS_MATCH); //exactly one + preserveIfSet(GMFGEN.getGenEditorView(), GMFGEN.getGenEditorView_IconPath()); + preserveIfSet(GMFGEN.getGenEditorView(), GMFGEN.getGenEditorView_ClassName()); + preserveIfSet(GMFGEN.getGenEditorView(), GMFGEN.getGenEditorView_ID()); + setMatcher(GMFGEN.getGenDiagram(), ALWAYS_MATCH); preserveIfSet(GMFGEN.getGenDiagram(), GMFGEN.getShortcuts_ContainsShortcutsTo()); preserveIfSet(GMFGEN.getGenDiagram(), GMFGEN.getShortcuts_ShortcutsProvidedFor()); + preserveIfSet(GMFGEN.getGenDiagram(), GMFGEN.getEditorCandies_CreationWizardIconPath()); + preserveIfSet(GMFGEN.getGenDiagram(), GMFGEN.getGenDiagram_Synchronized()); setMatcher(GMFGEN.getGenTopLevelNode(), getGenNodeMatcher()); preserveIfNotByPattern(GMFGEN.getGenTopLevelNode(), GMFGEN.getGenChildContainer_CanonicalEditPolicyClassName(), ".*" + GenChildContainer.CANONICAL_EDIT_POLICY_SUFFIX); #P org.eclipse.gmf.bridge Index: src/org/eclipse/gmf/bridge/genmodel/DiagramGenModelTransformer.java =================================================================== RCS file: /cvsroot/technology/org.eclipse.gmf/plugins/org.eclipse.gmf.bridge/src/org/eclipse/gmf/bridge/genmodel/DiagramGenModelTransformer.java,v retrieving revision 1.91 diff -u -r1.91 DiagramGenModelTransformer.java --- src/org/eclipse/gmf/bridge/genmodel/DiagramGenModelTransformer.java 30 May 2006 19:09:11 -0000 1.91 +++ src/org/eclipse/gmf/bridge/genmodel/DiagramGenModelTransformer.java 1 Jun 2006 12:23:09 -0000 @@ -66,7 +66,6 @@ import org.eclipse.gmf.codegen.gmfgen.GenNode; import org.eclipse.gmf.codegen.gmfgen.GenNodeLabel; import org.eclipse.gmf.codegen.gmfgen.GenNotationElementTarget; -import org.eclipse.gmf.codegen.gmfgen.GenPlugin; import org.eclipse.gmf.codegen.gmfgen.GenRuleTarget; import org.eclipse.gmf.codegen.gmfgen.GenSeverity; import org.eclipse.gmf.codegen.gmfgen.GenTopLevelNode; @@ -184,11 +183,10 @@ return getGenEssence().getDiagram(); } - private GenPlugin getGenPlugin() { + private void initGenPlugin() { if (getGenEssence().getPlugin() == null) { getGenEssence().setPlugin(GMFGenFactory.eINSTANCE.createGenPlugin()); } - return getGenEssence().getPlugin(); } private Palette createGenPalette() { @@ -215,11 +213,6 @@ getGenDiagram().setDomainDiagramElement(findGenClass(mapping.getDomainMetaElement())); getGenDiagram().setDiagramRunTimeClass(findRunTimeClass(mapping)); getGenDiagram().setVisualID(myVisualIDs.get(getGenDiagram())); - String pluginBaseName = "Diagram Editor"; - if (mapping.getDomainModel() != null) { - pluginBaseName = mapping.getDomainModel().getName(); - } - getGenPlugin().setName(pluginBaseName + " Plugin"); getGenDiagram().setViewmap(myViewmaps.create(mapping.getDiagramCanvas())); getGenDiagram().setIconProviderPriority(ProviderPriority.LOW_LITERAL); // override ElementTypeIconProvider if (getGenDiagram().getDomainDiagramElement() != null) { @@ -229,6 +222,8 @@ } else { getGenDiagram().setElementType(GMFGenFactory.eINSTANCE.createNotationType()); } + + initGenPlugin(); // set class names myNamingStrategy.feed(getGenDiagram(), mapping); #P org.eclipse.gmf.tests Index: src/org/eclipse/gmf/tests/gen/CodegenReconcileTest.java =================================================================== RCS file: /cvsroot/technology/org.eclipse.gmf/tests/org.eclipse.gmf.tests/src/org/eclipse/gmf/tests/gen/CodegenReconcileTest.java,v retrieving revision 1.9 diff -u -r1.9 CodegenReconcileTest.java --- src/org/eclipse/gmf/tests/gen/CodegenReconcileTest.java 29 May 2006 18:04:08 -0000 1.9 +++ src/org/eclipse/gmf/tests/gen/CodegenReconcileTest.java 1 Jun 2006 12:23:10 -0000 @@ -21,6 +21,7 @@ import org.eclipse.emf.common.util.EList; import org.eclipse.emf.ecore.EAttribute; import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EStructuralFeature; import org.eclipse.emf.ecore.EcorePackage; import org.eclipse.emf.ecore.util.EcoreUtil; @@ -95,6 +96,7 @@ private final String NEW_VERSION = "NewVersionValue"; private final String NEW_ID = "NewPluginID"; private final String NEW_ACTIVATOR = "NewActivator"; + private final String NEW_NAME = "NewName With Space"; private boolean myExpectedPrintingEnabled; public void applyChanges(GenEditorGenerator old) { @@ -103,6 +105,7 @@ assertNotNull(genPlugin.getVersion()); assertNotNull(genPlugin.getID()); assertNotNull(genPlugin.getActivatorClassName()); + assertNotNull(genPlugin.getName()); assertFalse(genPlugin.isPrintingEnabled()); myExpectedPrintingEnabled = !genPlugin.isPrintingEnabled(); @@ -112,6 +115,7 @@ genPlugin.setID(NEW_ID); genPlugin.setActivatorClassName(NEW_ACTIVATOR); genPlugin.setPrintingEnabled(myExpectedPrintingEnabled); + genPlugin.setName(NEW_NAME); } public void assertChangesPreserved(GenEditorGenerator current) { @@ -121,6 +125,7 @@ assertEquals(NEW_ID, genPlugin.getID()); assertEquals(NEW_ACTIVATOR, genPlugin.getActivatorClassName()); assertEquals(myExpectedPrintingEnabled, genPlugin.isPrintingEnabled()); + assertEquals(NEW_NAME, genPlugin.getName()); } public ReconcilerConfigBase getReconcilerConfig() { @@ -131,7 +136,7 @@ checkUserChange(new GenPluginChange()); } - public void testReconcileCompartmentIsListlayout(){ + public void testReconcileCompartmentIsListLayout(){ class CompartmentChange extends Assert implements UserChange { private int myCompartmentsTotalCount; private final EStructuralFeature myGenCompartmentFeature; @@ -253,7 +258,32 @@ checkUserChange(new ListLayoutChange()); } - public void testReconcileDiagramShortcuts(){ + public void testReconcileGenDiagram(){ + final class DiagramChange extends SingleChange { + public DiagramChange(EAttribute attribute, String valueToSet) { + super(attribute, valueToSet); + } + + public DiagramChange(EAttribute attribute, boolean valueToSet) { + super(attribute, valueToSet); + } + + protected EObject findChangeSubjet(GenEditorGenerator root) { + return root.getDiagram(); + } + } + + GMFGenPackage GMF = GMFGenPackage.eINSTANCE; + checkUserChange(new DiagramChange(GMF.getGenDiagram_Synchronized(), true)); + checkUserChange(new DiagramChange(GMF.getGenDiagram_Synchronized(), false)); + + checkUserChange(new DiagramChange(GMF.getEditorCandies_CreationWizardIconPath(), null)); + checkUserChange(new DiagramChange(GMF.getEditorCandies_CreationWizardIconPath(), "")); + checkUserChange(new DiagramChange(GMF.getEditorCandies_CreationWizardIconPath(), "\\..\\a\\B\\c")); + checkUserChange(new DiagramChange(GMF.getEditorCandies_CreationWizardIconPath(), "http://localhost:8080/")); + } + + public void testReconcileGenDiagram_Shortcuts(){ final String[] PROVIDED_FOR = {"ModelA", "ModelB", "ModelC"}; final String[] CONTAINS_TO = {"txt", "mdm", "taipan"}; final String[] EMPTY = new String[0]; @@ -299,7 +329,7 @@ checkUserChange(emptyChange); } - public void testReconcileGenEditorGenerator() throws Exception { + public void testReconcileGenEditorGenerator_LimitedConfig() throws Exception { class UserChangeImpl extends Assert implements UserChange { private boolean mySameFile; private final boolean myExpectingCopyrightPreserved; @@ -317,7 +347,7 @@ old.setSameFileForDiagramAndModel(mySameFile); - // we do not reconcile this now + // we do not reconcile this with limited config old.setTemplateDirectory("DDD"); assertEquals("DDD", old.getTemplateDirectory()); } @@ -333,6 +363,7 @@ assertEquals("CCC", current.getDiagramFileExtension()); assertEquals(mySameFile, current.isSameFileForDiagramAndModel()); + //not expected to be reconciled -- limited config assertFalse("DDD".equals(current.getTemplateDirectory())); } @@ -343,31 +374,50 @@ checkUserChange(new UserChangeImpl(false)); checkUserChange(new UserChangeImpl(true)); + } - public void testReconcileGenEditorGenerator_ModelId() throws Exception { - class ModelIdChange extends Assert implements UserChange { - private final String myUserModelID; - private String myExpectedModelIdBefore; - - public ModelIdChange(String userModelId){ - myUserModelID = userModelId; + public void testReconcileGenEditorGenerator(){ + class GenEditorGeneratorChange extends SingleChange { + public GenEditorGeneratorChange(EAttribute attribute, boolean expectedValue) { + super(attribute, expectedValue); } - - public void applyChanges(GenEditorGenerator old) { - old.setModelID(myUserModelID); - myExpectedModelIdBefore = old.getModelID(); //may be different + + public GenEditorGeneratorChange(EAttribute attribute, Object expectedValue) { + super(attribute, expectedValue); } - - public void assertChangesPreserved(GenEditorGenerator current) { - assertEquals(myExpectedModelIdBefore, current.getModelID()); + + protected final EObject findChangeSubjet(GenEditorGenerator root) { + return root; } - - public ReconcilerConfigBase getReconcilerConfig() { - return new GMFGenConfig(); + } + + class TemplateDirectoryChange extends GenEditorGeneratorChange { + public TemplateDirectoryChange(String value){ + super(GMFGenPackage.eINSTANCE.getGenEditorGenerator_TemplateDirectory(), value); + } + } + + class DynamicTemplatesChange extends GenEditorGeneratorChange { + public DynamicTemplatesChange(boolean value) { + super(GMFGenPackage.eINSTANCE.getGenEditorGenerator_DynamicTemplates(), value); } } + class ModelIdChange extends GenEditorGeneratorChange { + public ModelIdChange(String value){ + super(GMFGenPackage.eINSTANCE.getGenEditorGenerator_ModelID(), value); + } + } + + checkUserChange(new DynamicTemplatesChange(true)); + checkUserChange(new DynamicTemplatesChange(false)); + + checkUserChange(new TemplateDirectoryChange(null)); + checkUserChange(new TemplateDirectoryChange("")); + checkUserChange(new TemplateDirectoryChange("\\a\\b\\c")); + checkUserChange(new TemplateDirectoryChange("c:/my-folder/my templates with space/")); + checkUserChange(new ModelIdChange("ABC")); checkUserChange(new ModelIdChange("ABC ")); checkUserChange(new ModelIdChange("")); @@ -375,6 +425,33 @@ checkUserChange(new ModelIdChange(null)); } + public void testReconcileGenEditorView(){ + final class EditorChange extends SingleChange { + public EditorChange(EAttribute attribute, String valueToSet) { + super(attribute, valueToSet); + } + + protected EObject findChangeSubjet(GenEditorGenerator root) { + return root.getEditor(); + } + } + + GMFGenPackage GMF = GMFGenPackage.eINSTANCE; + checkUserChange(new EditorChange(GMF.getGenEditorView_IconPath(), null)); + checkUserChange(new EditorChange(GMF.getGenEditorView_IconPath(), "")); + checkUserChange(new EditorChange(GMF.getGenEditorView_IconPath(), "//a//b//c")); + checkUserChange(new EditorChange(GMF.getGenEditorView_IconPath(), "c:\\myIconsFolder")); + + checkUserChange(new EditorChange(GMF.getGenEditorView_ClassName(), null)); + checkUserChange(new EditorChange(GMF.getGenEditorView_ClassName(), "")); + checkUserChange(new EditorChange(GMF.getGenEditorView_ClassName(), "MyClass")); + checkUserChange(new EditorChange(GMF.getGenEditorView_ClassName(), "org.eclipse.MyClass")); + + checkUserChange(new EditorChange(GMF.getGenEditorView_ID(), null)); + checkUserChange(new EditorChange(GMF.getGenEditorView_ID(), "")); + checkUserChange(new EditorChange(GMF.getGenEditorView_ID(), "my.editor.id")); + } + private void checkUserChange(UserChange userChange){ GenEditorGenerator old = createCopy(); GenEditorGenerator current = createCopy(); @@ -413,4 +490,39 @@ } } + private abstract static class SingleChange implements UserChange { + private final EAttribute myAttribute; + private final Object myValueToSet; + private Object myExpectedValue; + + public SingleChange(EAttribute attribute, boolean valueToSet){ + this(attribute, Boolean.valueOf(valueToSet)); + } + + public SingleChange(EAttribute attribute, Object valueToSet){ + myAttribute = attribute; + myValueToSet = valueToSet; + } + + protected abstract EObject findChangeSubjet(GenEditorGenerator root); + + public void applyChanges(GenEditorGenerator old) { + EObject subject = findChangeSubjet(old); + assertNotNull(subject); + subject.eSet(myAttribute, myValueToSet); + myExpectedValue = subject.eGet(myAttribute); + } + + public void assertChangesPreserved(GenEditorGenerator current) { + EObject subject = findChangeSubjet(current); + assertNotNull(subject); + assertEquals(myExpectedValue, subject.eGet(myAttribute)); + } + + public ReconcilerConfigBase getReconcilerConfig() { + return new GMFGenConfig(); + } + } + + }