Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
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.xtend167
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»
+ '''
}

Back to the top