diff options
Diffstat (limited to 'plugins/toolsmiths/gmf-tooling/org.eclipse.papyrus.gmf.codegen.xtend/xtend/xpt/editor/palette/PaletteFactory.xtend')
-rw-r--r-- | plugins/toolsmiths/gmf-tooling/org.eclipse.papyrus.gmf.codegen.xtend/xtend/xpt/editor/palette/PaletteFactory.xtend | 167 |
1 files changed, 111 insertions, 56 deletions
diff --git a/plugins/toolsmiths/gmf-tooling/org.eclipse.papyrus.gmf.codegen.xtend/xtend/xpt/editor/palette/PaletteFactory.xtend b/plugins/toolsmiths/gmf-tooling/org.eclipse.papyrus.gmf.codegen.xtend/xtend/xpt/editor/palette/PaletteFactory.xtend index 6e5c8bc5def..35c0e44b571 100644 --- a/plugins/toolsmiths/gmf-tooling/org.eclipse.papyrus.gmf.codegen.xtend/xtend/xpt/editor/palette/PaletteFactory.xtend +++ b/plugins/toolsmiths/gmf-tooling/org.eclipse.papyrus.gmf.codegen.xtend/xtend/xpt/editor/palette/PaletteFactory.xtend @@ -1,21 +1,23 @@ -/******************************************************************************* - * Copyright (c) 2006, 2020 Borland Software Corporation, CEA LIST, Artal and others - * +/***************************************************************************** + * Copyright (c) 2006, 2010, 2013, 2021 Borland Software Corporation, CEA LIST, Artal and others + * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * + * https://www.eclipse.org/legal/epl-2.0/ + * * SPDX-License-Identifier: EPL-2.0 * - * Contributors: - * Artem Tikhomirov (Borland) - initial API and implementation - * Michael Golubev (Montages) - #386838 - migrate to Xtend2 - * Aurelien Didier (ARTAL) - aurelien.didier51@gmail.com - Bug 569174 + * Contributors: + * Artem Tikhomirov (Borland) - initial API and implementation + * Michael Golubev (Montages) - #386838 - migrate to Xtend2 + * Etienne Allogo (ARTAL) - etienne.allogo@artal.fr - Bug 569174 : 1.4 Merge papyrus extension templates into codegen.xtend + * Etienne Allogo (ARTAL) - etienne.allogo@artal.fr - Bug 569174 : L1.2 clean up *****************************************************************************/ package xpt.editor.palette import com.google.inject.Inject +import com.google.inject.Singleton import java.util.Map import org.eclipse.papyrus.gmf.codegen.gmfgen.AbstractToolEntry import org.eclipse.papyrus.gmf.codegen.gmfgen.EntryBase @@ -27,15 +29,17 @@ import org.eclipse.papyrus.gmf.codegen.gmfgen.ToolEntry import org.eclipse.papyrus.gmf.codegen.gmfgen.ToolGroup import org.eclipse.papyrus.gmf.codegen.gmfgen.ToolGroupItem import org.eclipse.papyrus.gmf.codegen.xtend.annotations.Localization +import xpt.CodeStyle import xpt.Common import xpt.Common_qvto import xpt.Externalizer import xpt.providers.ElementTypes -@com.google.inject.Singleton class PaletteFactory { +@Singleton class PaletteFactory { @Inject extension Common; @Inject extension Common_qvto; @Inject extension Utils_qvto; + @Inject extension CodeStyle; @Inject ElementTypes xptElementTypes; @Inject Externalizer xptExternalizer; @@ -50,38 +54,39 @@ import xpt.providers.ElementTypes @Deprecated def Factory(Palette it) '''«PaletteFactory(it)»''' - + def PaletteFactory(Palette it) ''' «copyright(diagram.editorGen)» - package «packageName(it)»; - + package «packageName»; + «generatedClassComment» - public class «className(it)» { - - «generatedMemberComment» - public void fillPalette(org.eclipse.gef.palette.PaletteRoot paletteRoot) { - «IF definesStandardTools()» - cleanStandardTools(paletteRoot); - «ENDIF» - «FOR group : it.groups» - «addEntry(group, 'paletteRoot')» - «ENDFOR» - } - - «IF it.definesStandardTools» - «cleanStandardToolsHack(it)» - «ENDIF» - - «FOR group : collectGroups(it)» - «createGroup(group)» + public class «factoryClassName» extends org.eclipse.gmf.runtime.diagram.ui.services.palette.PaletteFactory.Adapter { + //RS: New Palette generation + + //Generates the ID for the tool elements + //Generate the tool factory (if(ID) createtool...) + «FOR tool : collectTools(it)» + «generateIDAttribute(tool)» «ENDFOR» + + «««Generates the default constructor + «generatedMemberComment» + public «factoryClassName»() { + + } + + «««Generates the main method to create tool + «generateCreateTool(it)» + + «««Generates the main method to create template + «generateGetTemplate(it)» + + «««Generates each method for tool creation + «FOR tool : collectTools(it)» - «createEntry(tool)» + «createTool(tool)» «ENDFOR» - - «IF needsNodeToolEntryClass(it) && shouldGenerateToolEntryClasses()»«nodeToolEntry(it)»«ENDIF» - «IF needsLinkToolEntryClass(it) && shouldGenerateToolEntryClasses()»«linkToolEntry(it)»«ENDIF» - «additions(it)» + } ''' @@ -111,7 +116,7 @@ import xpt.providers.ElementTypes ''' def setDescription(ToolGroup gr, String varName) ''' - «IF gr.description != null» + «IF gr.description !== null » «varName».setDescription(«i18nDesc(gr)»); «ENDIF» ''' @@ -192,7 +197,7 @@ import xpt.providers.ElementTypes «IF it.elements.empty» org.eclipse.gef.palette.ToolEntry «toolVarName» = new org.eclipse.gef.palette.ToolEntry(«i18nTitle(it)», «i18nDesc(it)», null, null) {}; «ELSEIF it.elements.size() > 1» - java.util.ArrayList<org.eclipse.gmf.runtime.emf.type.core.IElementType> types = new java.util.ArrayList<org.eclipse.gmf.runtime.emf.type.core.IElementType>(«elements. + java.util.ArrayList<org.eclipse.gmf.runtime.emf.type.core.IElementType> types = new java.util.ArrayList<«elements.get(0).diamondOp('org.eclipse.gmf.runtime.emf.type.core.IElementType')»>(«elements. size»); «FOR e : elements» types.add(«xptElementTypes.accessElementType(e)»); @@ -233,27 +238,27 @@ import xpt.providers.ElementTypes ''' def setSmallImage(EntryBase it, String toolVarName, Palette palette) ''' - «IF null != smallIconPath» + «IF null !== smallIconPath » «toolVarName».setSmallIcon(«palette.activatorFQN».findImageDescriptor("«smallIconPath»")); «nonNLS(1)» «ELSEIF it.oclIsKindOf(typeof(ToolEntry))» - «IF (it as ToolEntry).elements.head != null» + «IF (it as ToolEntry).elements.head !== null » «toolVarName».setSmallIcon(«xptElementTypes.qualifiedClassName(palette.diagram)».getImageDescriptor(«xptElementTypes.accessElementType((it as ToolEntry).elements.head)»)); «ENDIF» «ENDIF» ''' def setLargeImage(EntryBase it, String toolVarName, Palette palette) ''' - «IF null != largeIconPath» + «IF null !== largeIconPath » «toolVarName».setLargeIcon(«palette.activatorFQN».findImageDescriptor("«largeIconPath»")); «nonNLS(1)» «ELSEIF it.oclIsKindOf(typeof(ToolEntry))» - «IF (it as ToolEntry).elements.head != null» + «IF (it as ToolEntry).elements.head !== null » «toolVarName».setLargeIcon(«toolVarName».getSmallIcon()); «ENDIF» «ENDIF» ''' def setToolClass(AbstractToolEntry it, String toolVarName) ''' - «IF null != qualifiedToolName» + «IF null !== qualifiedToolName » «toolVarName».setToolClass(«qualifiedToolName».class); «ENDIF» ''' @@ -263,16 +268,16 @@ import xpt.providers.ElementTypes ''' @Localization def dispatch i18nTitle(ToolEntry it) // - '''«IF title == null»null«ELSE»«xptExternalizer.accessorCall(group.palette.diagram.editorGen, i18nTitleKey(it))»«ENDIF»''' + '''«IF title === null »null«ELSE»«xptExternalizer.accessorCall(group.palette.diagram.editorGen, i18nTitleKey(it))»«ENDIF»''' @Localization def dispatch i18nTitle(ToolGroup it) // - '''«IF title == null»null«ELSE»«xptExternalizer.accessorCall(palette.diagram.editorGen, i18nTitleKey(it))»«ENDIF»''' + '''«IF title === null »null«ELSE»«xptExternalizer.accessorCall(palette.diagram.editorGen, i18nTitleKey(it))»«ENDIF»''' @Localization def dispatch i18nDesc(ToolEntry it) // - '''«IF description == null»null«ELSE»«xptExternalizer.accessorCall(group.palette.diagram.editorGen, i18nDescKey(it))»«ENDIF»''' + '''«IF description === null »null«ELSE»«xptExternalizer.accessorCall(group.palette.diagram.editorGen, i18nDescKey(it))»«ENDIF»''' @Localization def dispatch i18nDesc(ToolGroup it) // - '''«IF description == null»null«ELSE»«xptExternalizer.accessorCall(palette.diagram.editorGen, i18nDescKey(it))»«ENDIF»''' + '''«IF description === null »null«ELSE»«xptExternalizer.accessorCall(palette.diagram.editorGen, i18nDescKey(it))»«ENDIF»''' @Localization def i18nAccessors(Palette it) ''' «FOR group : collectGroups(it)» @@ -293,13 +298,13 @@ import xpt.providers.ElementTypes ''' @Localization protected def internal_i18n_accessors(EntryBase it) ''' - «IF null != title»«xptExternalizer.accessorField(i18nTitleKey(it))»«ENDIF» - «IF null != description»«xptExternalizer.accessorField(i18nDescKey(it))»«ENDIF» + «IF null !== title »«xptExternalizer.accessorField(i18nTitleKey(it))»«ENDIF» + «IF null !== description »«xptExternalizer.accessorField(i18nDescKey(it))»«ENDIF» ''' @Localization protected def internal_i18n_values(EntryBase it) ''' - «IF null != title»«xptExternalizer.messageEntry(i18nTitleKey(it), title)»«ENDIF» - «IF null != description»«xptExternalizer.messageEntry(i18nDescKey(it), description)»«ENDIF» + «IF null !== title »«xptExternalizer.messageEntry(i18nTitleKey(it), title)»«ENDIF» + «IF null !== description »«xptExternalizer.messageEntry(i18nDescKey(it), description)»«ENDIF» ''' def cleanStandardToolsHack(Palette it) ''' @@ -330,24 +335,24 @@ import xpt.providers.ElementTypes def nodeToolEntry(Palette it) ''' «generatedClassComment» private static class «getNodeToolEntryGeneratedClassName()» extends «getDefaultNodeToolEntryClassName()» { - + «generatedClassComment» private NodeToolEntry(String title, String description, java.util.List<org.eclipse.gmf.runtime.emf.type.core.IElementType> elementTypes) { super(title, description, elementTypes); } - + } ''' def linkToolEntry(Palette it) ''' «generatedClassComment» private static class «getLinkToolEntryGeneratedClassName()» extends «getDefaultLinkToolEntryClassName()» { - + «generatedClassComment» private LinkToolEntry(String title, String description, java.util.List<org.eclipse.gmf.runtime.emf.type.core.IElementType> elementTypes) { super(title, description, elementTypes); } - + } ''' @@ -361,6 +366,56 @@ import xpt.providers.ElementTypes «ENDIF» ''' - def additions(Palette it) '''''' + def generateCreateTool(Palette it) ''' + «generatedMemberComment» + public org.eclipse.gef.Tool createTool(String toolId) { + «FOR tool : collectTools(it)» + «checkToolID(tool)» + «ENDFOR» + // default return: null + return null; + } + ''' + + def checkToolID(AbstractToolEntry it) ''' + if (toolId.equals(«getConstantIDName(id)»)) { + return «createMethodName»(); + } + ''' + + def generateGetTemplate(Palette it) ''' + «generatedMemberComment» + public Object getTemplate(String templateId) { + + // default return: null + return null; + } + ''' + + def generateIDAttribute(AbstractToolEntry it) ''' + «generatedMemberComment» + private final static String «getConstantIDName(id)» = «id»;«IF isQuoted(id,'"')»«nonNLS»«ENDIF» + ''' + + def createTool(AbstractToolEntry it) ''' + «generatedMemberComment» + private org.eclipse.gef.Tool «createMethodName»() { + «newTool(it as ToolEntry, 'entry')» + } + ''' + + def newTool(ToolEntry it, String toolVarName) ''' + «IF elements.isEmpty()» + «ERROR('no elements for tool generation (Palette)')» + «ELSE» + java.util.List<org.eclipse.gmf.runtime.emf.type.core.IElementType> types = new java.util.ArrayList<«elements.get(0).diamondOp('org.eclipse.gmf.runtime.emf.type.core.IElementType')»>(«elements.size»); + «FOR e : elements» + types.add(«xptElementTypes.accessElementType(e)»); + «ENDFOR» + ««« RS: modified tool creation to have stereotypes-aware tools + org.eclipse.gef.Tool tool = new org.eclipse.papyrus.uml.diagram.common.service.«IF it.genNodes.isEmpty()»AspectUnspecifiedTypeConnectionTool«ELSE»AspectUnspecifiedTypeCreationTool«ENDIF»(types); + return tool; + «ENDIF» + ''' } |