blob: 00d1e755bebc006b1d93b0e233d9b98636342bb5 [file] [log] [blame]
/*
* Copyright (c) 2006, 2010 Borland Software Corporation and others
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Alexander Shatalin (Borland) - initial API and implementation
*/
import gmf.CodeGenerationUtils;
import xpt.OclMigrationProblems;
modeltype gmfgen uses "http://www.eclipse.org/gmf/2009/GenModel";
modeltype genmodel uses "http://www.eclipse.org/emf/2002/GenModel";
library Utils;
helper getMaxVisualID(navigator : gmfgen::GenNavigator) : Integer {
return getNavigatorNodes(navigator)->sortedBy(n | n.visualID)->last().visualID;
}
helper isStringFeature(feature : genmodel::GenFeature) : Boolean {
return feature.ecoreFeature.eType.name = 'EString'
}
-- MODIFIERS: cached
helper getNavigatorContainerNodes(navigator : gmfgen::GenNavigator) : Sequence(gmfgen::GenCommonBase) {
return getNavigatorNodes(navigator)->select(n | getChildReferencesFrom(navigator, n)->size() > 0)
}
-- MODIFIERS: cached
helper getNavigatorContainedNodes(navigator : gmfgen::GenNavigator) : Sequence(gmfgen::GenCommonBase) {
return getNavigatorNodes(navigator)->select(n | getChildReferencesTo(navigator, n)->size() > 0)
}
-- MODIFIERS: private
helper getNavigatorNodes(navigator : gmfgen::GenNavigator) : Sequence(gmfgen::GenCommonBase) {
return navigator.editorGen.diagram.getAllContainers()[gmfgen::GenCommonBase]->union(navigator.editorGen.diagram.links)->asSequence()
}
helper getGroupNames(_references : Sequence(gmfgen::GenNavigatorChildReference)) : Set(String) {
return _references->select(ref | ref.isInsideGroup())->collect(ref | ref.groupName)->asOrderedSet()
}
helper getNavigatorReference(groupName : String, childReferences : Sequence(gmfgen::GenNavigatorChildReference)) : gmfgen::GenNavigatorChildReference {
return childReferences->select(r | r.groupName = groupName)->first()
}
helper getChildReferencesFrom(navigator : gmfgen::GenNavigator, parent : gmfgen::GenCommonBase) : Sequence(gmfgen::GenNavigatorChildReference) {
return if parent.oclIsUndefined()
then Sequence{}
else navigator.childReferences->select(r | undefinedAsFalse(parent.visualID = r.parent.visualID))->asSequence()
endif
}
helper getChildReferencesTo(navigator : gmfgen::GenNavigator, child : gmfgen::GenCommonBase) : Sequence(gmfgen::GenNavigatorChildReference) {
return navigator.childReferences->select(r | child.visualID = r.child.visualID)->asSequence()
}
helper getDiagramTopReference(navigator : gmfgen::GenNavigator) : gmfgen::GenNavigatorChildReference {
return let diagramTopReferences = navigator.childReferences->select(cr | null = cr.parent)->select(cr | cr.child = navigator.editorGen.diagram) in (if diagramTopReferences->size() = 0 then null else diagramTopReferences->at(0 + 1) endif)
}
helper i18nKeyForGroup(groupName : String, contextElement : gmfgen::GenCommonBase) : String {
return 'NavigatorGroupName.' + (if null <> contextElement then contextElement.getUniqueIdentifier() else 'File' endif) + '.' + validJavaIdentifier(groupName)
}
helper i18nKeyForOpenDiagramActionName() : String {
return 'NavigatorActionProvider.OpenDiagramActionName'
}