svn commit: r17013 - trunk/src: argouml-app argouml-app/src/org/argouml/profile/internal/ocl argouml-app/src/org/argouml/ui/explorer argouml-app/src/org/argouml/ui/explorer/rules argouml-app/src/org/argouml/uml/ui argouml-app/src/org/argouml/uml/ui/foundation/core argouml-core-model-mdr/src/org/argouml/model/mdr

Alexander Lepekhine <[email protected]>
Newsgroups gmane.comp.lang.uml.argouml.cvs
Message-ID <[email protected]>
Author: lepekhine
Date: 2009-04-01 10:01:28-0700
New Revision: 17013

Added:
   trunk/src/argouml-app/src/org/argouml/uml/ui/foundation/core/PropPanelTemplateParameter.java
Modified:
   trunk/src/argouml-app/build.xml
   trunk/src/argouml-app/src/org/argouml/profile/internal/ocl/DefaultOclEvaluator.java
   trunk/src/argouml-app/src/org/argouml/ui/explorer/ExplorerPopup.java
   trunk/src/argouml-app/src/org/argouml/ui/explorer/rules/GoModelElementToTemplateParameter.java
   trunk/src/argouml-app/src/org/argouml/uml/ui/ElementPropPanelFactory.java
   trunk/src/argouml-app/src/org/argouml/uml/ui/UmlObjectPropPanelFactory.java
   trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/UmlFactoryMDRImpl.java

Log:
Added template parameter support

Modified: trunk/src/argouml-app/build.xml
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/build.xml?view=diff&pathrev=17013&r1=17012&r2=17013
==============================================================================
--- trunk/src/argouml-app/build.xml	(original)
+++ trunk/src/argouml-app/build.xml	2009-04-01 10:01:28-0700
@@ -67,9 +67,12 @@
       <fileset dir="../argouml-core-infra/build/">
         <include name="*.jar"/>
       </fileset>
-      <fileset dir="../argouml-core-model/build/">
-        <include name="*.jar"/>
-      </fileset>
+        <fileset dir="../argouml-core-model/build/">
+          <include name="*.jar"/>
+        </fileset>
+        <fileset dir="../argouml-core-model-mdr/build/">
+          <include name="*.jar"/>
+        </fileset>
     </path>
 
     <!-- This runtime classpath is used for tests and other things started

Modified: trunk/src/argouml-app/src/org/argouml/profile/internal/ocl/DefaultOclEvaluator.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/profile/internal/ocl/DefaultOclEvaluator.java?view=diff&pathrev=17013&r1=17012&r2=17013
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/profile/internal/ocl/DefaultOclEvaluator.java	(original)
+++ trunk/src/argouml-app/src/org/argouml/profile/internal/ocl/DefaultOclEvaluator.java	2009-04-01 10:01:28-0700
@@ -67,7 +67,7 @@
         // XXX this seems to be a bug of the parser, 
         // it always requires a context
         
-        LOG.debug("OCL: " + ocl);
+        //LOG.debug("OCL: " + ocl);
         if (ocl.contains("ore")) {
             // TODO: Convert this to some sensible logging
             System.out.println("VOILA!");

Modified: trunk/src/argouml-app/src/org/argouml/ui/explorer/ExplorerPopup.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/ui/explorer/ExplorerPopup.java?view=diff&pathrev=17013&r1=17012&r2=17013
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/ui/explorer/ExplorerPopup.java	(original)
+++ trunk/src/argouml-app/src/org/argouml/ui/explorer/ExplorerPopup.java	2009-04-01 10:01:28-0700
@@ -97,6 +97,8 @@
      */
     private static final Object[] MODEL_ELEMENT_MENUITEMS = 
         new Object[] {
+    		Model.getMetaTypes().getTemplateParameter(),
+    		"button.new-template-parameter",
             Model.getMetaTypes().getPackage(), 
             "button.new-package",
             Model.getMetaTypes().getActor(), 

Modified: trunk/src/argouml-app/src/org/argouml/ui/explorer/rules/GoModelElementToTemplateParameter.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/ui/explorer/rules/GoModelElementToTemplateParameter.java?view=diff&pathrev=17013&r1=17012&r2=17013
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/ui/explorer/rules/GoModelElementToTemplateParameter.java	(original)
+++ trunk/src/argouml-app/src/org/argouml/ui/explorer/rules/GoModelElementToTemplateParameter.java	2009-04-01 10:01:28-0700
@@ -12,7 +12,7 @@
 
     @Override
     public Collection getChildren(Object parent) {
-        if (Model.getFacade().isAModelElement(parent)) {
+        if (Model.getFacade().isAClassifier(parent)) {
             return Model.getFacade().getTemplateParameters(parent);
         }
         return Collections.emptyList();
@@ -24,11 +24,11 @@
     }
 
     public Set getDependencies(Object parent) {
-        if (Model.getFacade().isAModelElement(parent)) {
-            Set set = new HashSet();
-            set.add(parent);
-            return set;
-        }
+//        if (Model.getFacade().isAClassifier(parent)) {
+//            Set set = new HashSet();
+//            set.add(parent);
+//            return set;
+//        }
         return Collections.emptySet();
     }
 

Modified: trunk/src/argouml-app/src/org/argouml/uml/ui/ElementPropPanelFactory.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/ui/ElementPropPanelFactory.java?view=diff&pathrev=17013&r1=17012&r2=17013
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/ui/ElementPropPanelFactory.java	(original)
+++ trunk/src/argouml-app/src/org/argouml/uml/ui/ElementPropPanelFactory.java	2009-04-01 10:01:28-0700
@@ -99,6 +99,7 @@
 import org.argouml.uml.ui.foundation.core.PropPanelParameter;
 import org.argouml.uml.ui.foundation.core.PropPanelPermission;
 import org.argouml.uml.ui.foundation.core.PropPanelRelationship;
+import org.argouml.uml.ui.foundation.core.PropPanelTemplateParameter;
 import org.argouml.uml.ui.foundation.core.PropPanelUsage;
 import org.argouml.uml.ui.foundation.extension_mechanisms.PropPanelStereotype;
 import org.argouml.uml.ui.foundation.extension_mechanisms.PropPanelTagDefinition;
@@ -201,6 +202,8 @@
                 return new PropPanelStimulus();
             } else if (Model.getFacade().isATaggedValue(element)) {
                 return new PropPanelTaggedValue();
+            } else if (Model.getFacade().isATemplateParameter(element)) {
+                return new PropPanelTemplateParameter();
             } else if (Model.getFacade().isATagDefinition(element)) {
                 return new PropPanelTagDefinition();
             } else if (Model.getFacade().isATransition(element)) {

Modified: trunk/src/argouml-app/src/org/argouml/uml/ui/UmlObjectPropPanelFactory.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/ui/UmlObjectPropPanelFactory.java?view=diff&pathrev=17013&r1=17012&r2=17013
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/ui/UmlObjectPropPanelFactory.java	(original)
+++ trunk/src/argouml-app/src/org/argouml/uml/ui/UmlObjectPropPanelFactory.java	2009-04-01 10:01:28-0700
@@ -26,6 +26,7 @@
 
 import org.argouml.model.Model;
 import org.argouml.uml.ui.foundation.core.PropPanelElementResidence;
+import org.argouml.uml.ui.foundation.core.PropPanelTemplateParameter;
 import org.argouml.uml.ui.model_management.PropPanelElementImport;
 
 /**
@@ -59,9 +60,9 @@
         if (Model.getFacade().isAElementResidence(object)) {
             return new PropPanelElementResidence();
         }
-//        if (Model.getFacade().isATemplateParameter(object)) {
-//            return new PropPanelTemplateParameter();
-//        }
+        if (Model.getFacade().isATemplateParameter(object)) {
+            return new PropPanelTemplateParameter();
+        }
         return null;
     }
 

Added: trunk/src/argouml-app/src/org/argouml/uml/ui/foundation/core/PropPanelTemplateParameter.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/ui/foundation/core/PropPanelTemplateParameter.java?view=markup&pathrev=17013
==============================================================================
--- (empty file)
+++ trunk/src/argouml-app/src/org/argouml/uml/ui/foundation/core/PropPanelTemplateParameter.java	2009-04-01 10:01:28-0700
@@ -0,0 +1,53 @@
+package org.argouml.uml.ui.foundation.core;
+
+import javax.swing.JTextField;
+
+import org.argouml.uml.ui.UMLPlainTextDocument;
+import org.argouml.uml.ui.UMLTextField2;
+import org.omg.uml.foundation.core.ModelElement;
+import org.omg.uml.foundation.core.TemplateParameter;
+
+public class PropPanelTemplateParameter extends PropPanelStructuralFeature {
+
+	private static final long serialVersionUID = 8466952187322427678L;
+	
+	public PropPanelTemplateParameter() {
+		super("label.template-parameter", null);
+		addField("Name",  new UMLTextField2(new UMLTemplateParameterDocument("TemplateParameter")));
+		// TODO: we don't need Type and DefaultValue for Java but they should be implemented to comply with UML 
+		addField("Type", new JTextField(""));
+		addField("Default Value", new JTextField(""));
+	}
+	
+	public static class UMLTemplateParameterDocument extends UMLPlainTextDocument {
+
+		private static final long serialVersionUID = -2597673735297949111L;
+
+		public UMLTemplateParameterDocument(String name) {
+			super(name);
+		}
+		
+		private ModelElement getParameter() {
+			Object target = getTarget();
+			if (target instanceof TemplateParameter) {
+				Object parameter =  ( (TemplateParameter)target).getParameter();
+				if (parameter instanceof ModelElement) {
+					return (ModelElement)parameter;
+				}
+				throw new IllegalArgumentException(parameter.getClass().getName() +" is not a ModelElement");
+			}
+			throw new IllegalArgumentException(target.getClass().getName() +" is not a TemplateParameter");
+		}
+		
+		@Override
+		protected void setProperty(String text) {
+			getParameter().setName(text);
+		}
+
+		@Override
+		protected String getProperty() {
+			return getParameter().getName();
+		}
+	}
+
+}

Modified: trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/UmlFactoryMDRImpl.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/UmlFactoryMDRImpl.java?view=diff&pathrev=17013&r1=17012&r2=17013
==============================================================================
--- trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/UmlFactoryMDRImpl.java	(original)
+++ trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/UmlFactoryMDRImpl.java	2009-04-01 10:01:28-0700
@@ -347,6 +347,12 @@
                 UmlClass.class, Reception.class
             });
         
+        // specifies valid elements for a classifier to contain
+        validContainmentMap.put(Classifier.class, 
+            new Class<?>[] { 
+                TemplateParameter.class
+            });
+        
         // specifies valid elements for an Interface to contain
         validContainmentMap.put(Interface.class, 
                 new Class<?>[] { 
@@ -581,6 +587,16 @@
         } else if (elementType == this.metaTypes.getExtensionPoint()) {
             element = this.modelImpl.getUseCasesFactory().
                 buildExtensionPoint(container);            
+        } else if (elementType == this.metaTypes.getTemplateParameter()) {
+			TemplateParameter t = (TemplateParameter) Model.getCoreFactory().createTemplateParameter();
+			DataType d = getCore().createDataType();
+			d.setName("T");
+			t.setParameter(d);
+			if (container instanceof ModelElement) {
+				t.setTemplate((ModelElement)container);
+				((ModelElement) container).getTemplateParameter().add(t);
+			}
+            return t;            
         } else {
             // build all other elements using existing buildNode
             element = buildNode(elementType);

------------------------------------------------------
http://argouml.tigris.org/ds/viewMessage.do?dsForumId=5905&dsMessageId=1508905

To unsubscribe from this discussion, e-mail: [[email protected]].
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.