carbidecpp22devenv/plugins/org.eclipse.gmf.templates.legacy_1.0.0.v20090614-0839/codegen.lite.templates/xpt/diagram/policies/ComponentEditPolicy.xpt
changeset 422 033392511bf7
equal deleted inserted replaced
421:631a44165bcf 422:033392511bf7
       
     1 /*
       
     2  * Copyright (c) 2007 Borland Software Corporation
       
     3  * 
       
     4  * All rights reserved. This program and the accompanying materials
       
     5  * are made available under the terms of the Eclipse Public License v1.0
       
     6  * which accompanies this distribution, and is available at
       
     7  * http://www.eclipse.org/legal/epl-v10.html
       
     8  *
       
     9  * Contributors:
       
    10  *    bblajer (Borland) - initial API and implementation
       
    11  */
       
    12 
       
    13 «IMPORT "http://www.eclipse.org/gmf/2008/GenModel"»
       
    14 «IMPORT "http://www.eclipse.org/emf/2002/Ecore"»
       
    15 «IMPORT "http://www.eclipse.org/emf/2002/GenModel"»
       
    16 «EXTENSION xpt::GenModelUtils»
       
    17 «EXTENSION xpt::diagram::policies::i18n»
       
    18 «EXTENSION xpt::diagram::policies::ClassNames»
       
    19 «EXTENSION xpt::diagram::policies::ComponentEditPolicy»
       
    20 «EXTENSION xpt::diagram::LinkFinder»
       
    21 
       
    22 «DEFINE ComponentEditPolicy FOR gmfgen::GenCommonBase-»
       
    23 «EXPAND xpt::Common::copyright FOR getDiagram().editorGen»
       
    24 package «getDiagram().editPoliciesPackageName»;
       
    25 
       
    26 «EXPAND xpt::Common::generatedClassComment»
       
    27 public class «EXPAND className» «EXPAND supertypes» {
       
    28 	«EXPAND createDeleteCommand-»
       
    29 	«EXPAND getDeleteViewCommand-»
       
    30 	«EXPAND canDeleteView-»
       
    31 «IF needsGetGraphicalEditPart()-»
       
    32 	«EXPAND getGraphicalEditPart-»
       
    33 «ENDIF-»
       
    34 	«EXPAND domainModelRemoveCommand-»
       
    35 	«EXPAND getDiagramElement-»
       
    36 	«EXPAND additions-»
       
    37 }
       
    38 «ENDDEFINE»
       
    39 
       
    40 «DEFINE domainModelRemoveCommand FOR GenCommonBase»«ERROR "Unexpected type!"»«ENDDEFINE»
       
    41 
       
    42 «DEFINE domainModelRemoveCommand FOR GenNode-»
       
    43 «EXPAND xpt::commands::domainModelRemoveCommand::domainModelRemoveCommand("getDiagramNode()")-»
       
    44 «ENDDEFINE»
       
    45 
       
    46 «DEFINE domainModelRemoveCommand FOR GenLink-»
       
    47 «EXPAND xpt::commands::domainModelRemoveCommand::domainModelRemoveCommand("getDiagramEdge()")-»
       
    48 «ENDDEFINE»
       
    49 
       
    50 «DEFINE getDiagramElement FOR GenCommonBase»«ERROR "Unexpected type!"»«ENDDEFINE»
       
    51 
       
    52 «DEFINE getDiagramElement FOR GenNode-»
       
    53 «EXPAND getDiagramNode-»
       
    54 «ENDDEFINE»
       
    55 
       
    56 «DEFINE getDiagramElement FOR GenLink-»
       
    57 «EXPAND getDiagramEdge-»
       
    58 «ENDDEFINE»
       
    59 
       
    60 «DEFINE className FOR gmfgen::GenCommonBase»«getComponentEditPolicyClassName()»«ENDDEFINE»
       
    61 «DEFINE qualifiedClassName FOR gmfgen::GenCommonBase»«getDiagram().editPoliciesPackageName».«EXPAND className»«ENDDEFINE»
       
    62 
       
    63 «DEFINE supertypes FOR gmfgen::GenCommonBase»extends org.eclipse.gmf.runtime.lite.edit.policies.ComponentEditPolicyEx«ENDDEFINE»
       
    64 
       
    65 «DEFINE createDeleteCommand FOR gmfgen::GenCommonBase-»
       
    66 «EXPAND xpt::Common::generatedMemberComment»
       
    67 protected org.eclipse.gef.commands.Command createDeleteCommand(org.eclipse.gef.requests.GroupRequest deleteRequest) {
       
    68 	org.eclipse.emf.transaction.TransactionalEditingDomain editingDomain = org.eclipse.emf.transaction.util.TransactionUtil.getEditingDomain(«EXPAND getDiagramElementMethodName»().getDiagram().getElement());
       
    69 «LET incomingTypeLinks() AS incomingTypeLinks-»
       
    70 «LET outgoingNonPhantomLinks() AS outgoingLinks-»
       
    71 «IF incomingTypeLinks.size() > 0 || outgoingLinks.size() > 0-»
       
    72 	org.eclipse.gmf.runtime.lite.commands.CompositeWrappingCommand result = new org.eclipse.gmf.runtime.lite.commands.CompositeWrappingCommand(editingDomain, «EXPAND xpt::Externalizer::accessorCall(getDiagram().i18nKeyForDeleteModelElementLabel()) FOR getDiagram().editorGen»);
       
    73 «ENDIF-»
       
    74 	«EXPAND deleteIncomingLinks(incomingTypeLinks, true)-»
       
    75 	«EXPAND deleteOutgoingLinks(outgoingLinks, true)-»
       
    76 	«EXPAND createDeleteCommandPrim(true)-»
       
    77 «IF incomingTypeLinks.size() > 0 || outgoingLinks.size() > 0-»
       
    78 	result.add(cc);
       
    79 	return result;
       
    80 «ELSE-»
       
    81 	return new org.eclipse.gmf.runtime.lite.commands.WrappingCommand(editingDomain, cc);
       
    82 «ENDIF-»
       
    83 «ENDLET-»
       
    84 «ENDLET-»
       
    85 }
       
    86 «ENDDEFINE»
       
    87 
       
    88 «DEFINE deleteIncomingLinks(Collection[gmfgen::GenLink] incomingLinks, boolean deleteFromModel) FOR gmfgen::GenCommonBase-»
       
    89 «IF incomingLinks.size() > 0-»
       
    90 	for(java.util.Iterator it = getGraphicalEditPart().getTargetConnections().iterator(); it.hasNext(); ) {
       
    91 		org.eclipse.gef.EditPart nextEditPart = (org.eclipse.gef.EditPart) it.next();
       
    92 		org.eclipse.gmf.runtime.notation.Edge nextEdge = (org.eclipse.gmf.runtime.notation.Edge) nextEditPart.getModel();
       
    93 		int visualID = «getDiagram().getVisualIDRegistryQualifiedClassName()».getVisualID(nextEdge);
       
    94 		switch (visualID) {
       
    95 «FOREACH incomingLinks AS nextLink-»
       
    96 		case «nextLink.getEditPartQualifiedClassName()».VISUAL_ID:
       
    97 «ENDFOREACH-»
       
    98 			«EXPAND deleteDependentLinks(deleteFromModel)-»
       
    99 		}
       
   100 	}
       
   101 «ENDIF-»
       
   102 «ENDDEFINE»
       
   103 
       
   104 «DEFINE deleteOutgoingLinks(Collection[gmfgen::GenLink] outgoingLinks, boolean deleteFromModel) FOR gmfgen::GenCommonBase-»
       
   105 «IF outgoingLinks.size() > 0-»
       
   106 	for(java.util.Iterator it = getGraphicalEditPart().getSourceConnections().iterator(); it.hasNext(); ) {
       
   107 		org.eclipse.gef.EditPart nextEditPart = (org.eclipse.gef.EditPart) it.next();
       
   108 		org.eclipse.gmf.runtime.notation.Edge nextEdge = (org.eclipse.gmf.runtime.notation.Edge) nextEditPart.getModel();
       
   109 		int visualID = «getDiagram().getVisualIDRegistryQualifiedClassName()».getVisualID(nextEdge);
       
   110 		switch (visualID) {
       
   111 «FOREACH outgoingLinks AS nextLink-»
       
   112 		case «nextLink.getEditPartQualifiedClassName()».VISUAL_ID:
       
   113 «ENDFOREACH-»
       
   114 			«EXPAND deleteDependentLinks(deleteFromModel)-»
       
   115 		}
       
   116 	}
       
   117 «ENDIF-»
       
   118 «ENDDEFINE»
       
   119 
       
   120 «DEFINE deleteDependentLinks(boolean deleteFromModel) FOR gmfgen::GenCommonBase-»
       
   121 {
       
   122 	org.eclipse.gef.requests.GroupRequest deleteLinkRequest = new org.eclipse.gef.requests.GroupRequest(«IF deleteFromModel»org.eclipse.gef.RequestConstants.REQ_DELETE«ELSE»org.eclipse.gmf.runtime.lite.requests.RequestConstants.REQ_FORCED_DELETE_VIEW«ENDIF»);
       
   123 	deleteLinkRequest.setEditParts(nextEditPart);
       
   124 	result.add(nextEditPart.getCommand(deleteLinkRequest));
       
   125 	break;
       
   126 }
       
   127 «ENDDEFINE»
       
   128 
       
   129 «DEFINE getGraphicalEditPart FOR gmfgen::GenCommonBase-»
       
   130 «EXPAND xpt::Common::generatedMemberComment»
       
   131 protected org.eclipse.gef.GraphicalEditPart getGraphicalEditPart() {
       
   132 	return (org.eclipse.gef.GraphicalEditPart) getHost();
       
   133 }
       
   134 «ENDDEFINE»
       
   135 
       
   136 «DEFINE createDeleteCommandPrim(boolean deleteFromModel) FOR gmfgen::GenCommonBase»«ERROR "UnexpectedType"»«ENDDEFINE»
       
   137 
       
   138 «DEFINE createDeleteCommandPrim(boolean deleteFromModel) FOR gmfgen::GenNode-»
       
   139 org.eclipse.emf.common.command.CompoundCommand cc = new org.eclipse.emf.common.command.CompoundCommand();
       
   140 «IF deleteFromModel-»
       
   141 cc.append(createDomainModelRemoveCommand(editingDomain));
       
   142 «ENDIF-»
       
   143 cc.append(new org.eclipse.gmf.runtime.lite.commands.RemoveNotationalElementCommand((org.eclipse.gmf.runtime.notation.View) «EXPAND getDiagramElementMethodName»().eContainer(), «EXPAND getDiagramElementMethodName»()));
       
   144 «ENDDEFINE»
       
   145 
       
   146 «DEFINE createDeleteCommandPrim(boolean deleteFromModel) FOR gmfgen::GenLink-»
       
   147 org.eclipse.emf.common.command.CompoundCommand cc = new org.eclipse.emf.common.command.CompoundCommand();
       
   148 «IF deleteFromModel-»
       
   149 cc.append(createDomainModelRemoveCommand(editingDomain));
       
   150 «ENDIF-»
       
   151 cc.append(new org.eclipse.gmf.runtime.lite.commands.RemoveNotationalEdgeCommand(«EXPAND getDiagramElementMethodName»().getDiagram(), «EXPAND getDiagramElementMethodName»()));
       
   152 «ENDDEFINE»
       
   153 
       
   154 «DEFINE getDiagramElementMethodName FOR gmfgen::GenCommonBase»«ERROR "Unexpected type: " + this»«ENDDEFINE»
       
   155 «DEFINE getDiagramElementMethodName FOR gmfgen::GenNode»getDiagramNode«ENDDEFINE»
       
   156 «DEFINE getDiagramElementMethodName FOR gmfgen::GenLink»getDiagramEdge«ENDDEFINE»
       
   157 
       
   158 «DEFINE getDiagramNode FOR gmfgen::GenNode-»
       
   159 «EXPAND xpt::Common::generatedMemberComment»
       
   160 protected org.eclipse.gmf.runtime.notation.Node «EXPAND getDiagramElementMethodName»() {
       
   161 	return (org.eclipse.gmf.runtime.notation.Node) getHost().getModel();
       
   162 }
       
   163 «ENDDEFINE»
       
   164 
       
   165 «DEFINE getDiagramEdge FOR gmfgen::GenLink-»
       
   166 «EXPAND xpt::Common::generatedMemberComment»
       
   167 protected org.eclipse.gmf.runtime.notation.Edge «EXPAND getDiagramElementMethodName»() {
       
   168 	return (org.eclipse.gmf.runtime.notation.Edge) getHost().getModel();
       
   169 }
       
   170 «ENDDEFINE»
       
   171 
       
   172 «DEFINE getDeleteViewCommand FOR gmfgen::GenCommonBase-»
       
   173 «EXPAND xpt::Common::generatedMemberComment»
       
   174 protected org.eclipse.gef.commands.Command getDeleteViewCommand(org.eclipse.gef.requests.GroupRequest deleteRequest, boolean isForced) {
       
   175 	if (!isForced && !canDeleteView()) {
       
   176 		return org.eclipse.gef.commands.UnexecutableCommand.INSTANCE;
       
   177 	}
       
   178 	org.eclipse.emf.transaction.TransactionalEditingDomain editingDomain = org.eclipse.emf.transaction.util.TransactionUtil.getEditingDomain(«EXPAND getDiagramElementMethodName»().getDiagram().getElement());
       
   179 «LET incomingLinks() AS incomingLinks-»
       
   180 «LET outgoingLinks() AS outgoingLinks-»
       
   181 «IF incomingLinks.size() > 0 || outgoingLinks.size() > 0-»
       
   182 	org.eclipse.gmf.runtime.lite.commands.CompositeWrappingCommand result = new org.eclipse.gmf.runtime.lite.commands.CompositeWrappingCommand(editingDomain, «EXPAND xpt::Externalizer::accessorCall(getDiagram().i18nKeyForDeleteDiagramElementLabel()) FOR getDiagram().editorGen»);
       
   183 «ENDIF-»
       
   184 	«EXPAND deleteIncomingLinks(incomingLinks, false)-»
       
   185 	«EXPAND deleteOutgoingLinks(outgoingLinks, false)-»
       
   186 	«EXPAND createDeleteCommandPrim(false)-»
       
   187 «IF incomingLinks.size() > 0 || outgoingLinks.size() > 0-»
       
   188 	result.add(cc);
       
   189 	return result;
       
   190 «ELSE-»
       
   191 	return new org.eclipse.gmf.runtime.lite.commands.WrappingCommand(editingDomain, cc);
       
   192 «ENDIF-»
       
   193 «ENDLET-»
       
   194 «ENDLET-»
       
   195 }
       
   196 «ENDDEFINE»
       
   197 
       
   198 «DEFINE canDeleteView FOR gmfgen::GenCommonBase»«ERROR "Unexpected Type: " + this»«ENDDEFINE»
       
   199 
       
   200 «DEFINE canDeleteView FOR gmfgen::GenLink-»
       
   201 «EXPAND xpt::Common::generatedMemberComment»
       
   202 private boolean canDeleteView() {
       
   203 	return false;
       
   204 }
       
   205 «ENDDEFINE»
       
   206 
       
   207 «DEFINE canDeleteView FOR gmfgen::GenNode-»
       
   208 «EXPAND xpt::Common::generatedMemberComment»
       
   209 private boolean canDeleteView() {
       
   210 	if («EXPAND getDiagramElementMethodName»().getEAnnotation("Shortcut") != null) {	«EXPAND xpt::Common::nonNLS»
       
   211 		return true;
       
   212 	}
       
   213 	org.eclipse.gmf.runtime.notation.View parentView = (org.eclipse.gmf.runtime.notation.View) «EXPAND getDiagramElementMethodName»().eContainer();
       
   214 	if (parentView == null) {
       
   215 		return true;
       
   216 	}
       
   217 	org.eclipse.gmf.runtime.notation.CanonicalStyle canonicalStyle = (org.eclipse.gmf.runtime.notation.CanonicalStyle) parentView.getStyle(org.eclipse.gmf.runtime.notation.NotationPackage.eINSTANCE.getCanonicalStyle());
       
   218 	if (canonicalStyle != null) {
       
   219 		return !canonicalStyle.isCanonical();
       
   220 	}
       
   221 	return «!getDiagram().synchronized»;
       
   222 }
       
   223 «ENDDEFINE»
       
   224 
       
   225 «DEFINE additions FOR gmfgen::GenCommonBase»«ENDDEFINE»
       
   226 
       
   227 «DEFINE i18nAccessors FOR gmfgen::GenDiagram-»
       
   228 «EXPAND xpt::Externalizer::accessorField(i18nKeyForDeleteModelElementLabel())-»
       
   229 «EXPAND xpt::Externalizer::accessorField(i18nKeyForDeleteDiagramElementLabel())-»
       
   230 «ENDDEFINE»
       
   231 
       
   232 «DEFINE i18nValues FOR gmfgen::GenDiagram-»
       
   233 «EXPAND xpt::Externalizer::messageEntry(i18nKeyForDeleteModelElementLabel(), "Delete Model Element")-»
       
   234 «EXPAND xpt::Externalizer::messageEntry(i18nKeyForDeleteDiagramElementLabel(), "Delete Diagram Element")-»
       
   235 «ENDDEFINE»