Author: bobtarling
Date: 2011-03-30 09:15:11-0700
New Revision: 19145

Added:
   trunk/src/argouml-core-model/src/org/argouml/model/UmlFactoryDefaults.java
Modified:
   
trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/CoreHelperEUMLImpl.java
   
trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/UmlFactoryEUMLImpl.java
   
trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/CoreHelperMDRImpl.java
   
trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/UmlFactoryMDRImpl.java
   trunk/src/argouml-core-model/src/org/argouml/model/UmlFactory.java

Log:
Allow uml factory to set a default type for certain newly created model elements

Modified: 
trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/CoreHelperEUMLImpl.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/CoreHelperEUMLImpl.java?view=diff&pathrev=19145&r1=19144&r2=19145
==============================================================================
--- 
trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/CoreHelperEUMLImpl.java
        (original)
+++ 
trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/CoreHelperEUMLImpl.java
        2011-03-30 09:15:11-0700
@@ -1,6 +1,6 @@
 // $Id$
 
/*******************************************************************************
- * Copyright (c) 2007,2010 Tom Morris and other contributors
+ * Copyright (c) 2007-2011 Tom Morris and other contributors
  * 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
@@ -11,6 +11,7 @@
  *    Bogdan Pistol - initial implementation
  *    Thomas Neustupny
  *    Michiel van der Wulp
+ *    Bob Tarling
  *****************************************************************************/
 
 package org.argouml.model.euml;
@@ -1902,20 +1903,23 @@
     }
 
     public void setType(final Object handle, final Object type) {
-        if (!(handle instanceof TypedElement)) {
+        if (!(handle instanceof TypedElement) && !(handle instanceof 
Operation)) {
             throw new IllegalArgumentException(
                     "handle must be instance of TypedElement"); //$NON-NLS-1$
         }
         if (type != null && !(type instanceof Type)) {
             throw new IllegalArgumentException("type must be instance of 
Type"); //$NON-NLS-1$
         }
+        final TypedElement typedElement;
+        if (handle instanceof Operation) {
+            typedElement = (TypedElement) getReturnParameters(handle).get(0);
+        } else {
+            typedElement = (TypedElement) handle;
+        }
+
         RunnableClass run = new RunnableClass() {
             public void run() {
-                if (type != null) {
-                    ((TypedElement) handle).setType((Type) type);
-                } else {
-                    ((TypedElement) handle).setType(null);
-                }
+                typedElement.setType((Type) type);
             }
         };
         editingDomain.getCommandStack().execute(

Modified: 
trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/UmlFactoryEUMLImpl.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/UmlFactoryEUMLImpl.java?view=diff&pathrev=19145&r1=19144&r2=19145
==============================================================================
--- 
trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/UmlFactoryEUMLImpl.java
        (original)
+++ 
trunk/src/argouml-core-model-euml/src/org/argouml/model/euml/UmlFactoryEUMLImpl.java
        2011-03-30 09:15:11-0700
@@ -1,6 +1,6 @@
 /* $Id$
  
*******************************************************************************
- * Copyright (c) 2007,2010 Tom Morris and other contributors
+ * Copyright (c) 2007-2011 Tom Morris and other contributors
  * 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
@@ -28,6 +28,7 @@
 import org.argouml.model.InvalidElementException;
 import org.argouml.model.MetaTypes;
 import org.argouml.model.UmlFactory;
+import org.argouml.model.UmlFactoryDefaults;
 import org.eclipse.emf.common.util.URI;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.resource.Resource;
@@ -282,7 +283,16 @@
     }
 
     public Object buildNode(Object elementType, Object container) {
-        return buildNode(elementType, container, null);
+        return buildNode(elementType, container, (String) null);
+    }
+    
+    public Object buildNode(Object elementType, Object container, String 
property, UmlFactoryDefaults defaults) {
+        Object element = buildNode(elementType, container, property);
+        if (defaults != null && defaults.getDefaultType(elementType) != null) {
+            Object type = defaults.getDefaultType(elementType);
+            modelImpl.getCoreHelper().setType(element, type);
+        }
+        return element;
     }
 
     public Object buildNode(Object elementType) {

Modified: 
trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/CoreHelperMDRImpl.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/CoreHelperMDRImpl.java?view=diff&pathrev=19145&r1=19144&r2=19145
==============================================================================
--- 
trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/CoreHelperMDRImpl.java
   (original)
+++ 
trunk/src/argouml-core-model-mdr/src/org/argouml/model/mdr/CoreHelperMDRImpl.java
   2011-03-30 09:15:11-0700
@@ -1,6 +1,6 @@
 /* $Id$
  *****************************************************************************
- * Copyright (c) 2009-2010 Contributors - see below
+ * Copyright (c) 2009-2011 Contributors - see below
  * 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
@@ -10,6 +10,7 @@
  *    Thomas Neustupny
  *    Michiel van der Wulp
  *    Tom Morris
+ *    Bob Tarling
  *****************************************************************************
  *
  * Some portions of this file was previously release using the BSD License:
@@ -3394,6 +3395,13 @@
                 ((StructuralFeature) handle).setType((Classifier) type);
                 return;
             }
+            if (handle instanceof Operation) {
+                if (!getReturnParameters(handle).isEmpty()) {
+                    Parameter p = getReturnParameters(handle).get(0);
+                    p.setType((Classifier) type);
+                }
+                return;
+            }
         }
         throw new IllegalArgumentException("handle: " + handle + " or type: "
                 + type);

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=19145&r1=19144&r2=19145
==============================================================================
--- 
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
   2011-03-30 09:15:11-0700
@@ -1,6 +1,6 @@
 /* $Id$
  *****************************************************************************
- * Copyright (c) 2009-2010 Contributors - see below
+ * Copyright (c) 2009-2011 Contributors - see below
  * 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
@@ -57,6 +57,7 @@
 import org.argouml.model.MetaTypes;
 import org.argouml.model.Model;
 import org.argouml.model.UmlFactory;
+import org.argouml.model.UmlFactoryDefaults;
 import org.omg.uml.behavioralelements.activitygraphs.ActionState;
 import org.omg.uml.behavioralelements.activitygraphs.ActivityGraph;
 import org.omg.uml.behavioralelements.activitygraphs.CallState;
@@ -792,6 +793,16 @@
                 "Attempted to create unsupported model element type: " 
                 + elementType);
     }
+    
+    public Object buildNode(Object elementType, Object container, String 
property, UmlFactoryDefaults defaults) {
+        Object element = buildNode(elementType, container, property);
+        if (defaults != null && defaults.getDefaultType(elementType) != null) {
+            Object type = defaults.getDefaultType(elementType);
+            modelImpl.getCoreHelper().setType(element, type);
+        }
+        return element;
+    }
+    
 
     public Object buildNode(Object elementType, Object container, String 
properyName) {
         
@@ -958,7 +969,7 @@
     }
 
     public Object buildNode(Object elementType, Object container) {
-        return buildNode(elementType, container, null);
+        return buildNode(elementType, container, (String) null);
     }
     
     

Modified: trunk/src/argouml-core-model/src/org/argouml/model/UmlFactory.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model/src/org/argouml/model/UmlFactory.java?view=diff&pathrev=19145&r1=19144&r2=19145
==============================================================================
--- trunk/src/argouml-core-model/src/org/argouml/model/UmlFactory.java  
(original)
+++ trunk/src/argouml-core-model/src/org/argouml/model/UmlFactory.java  
2011-03-30 09:15:11-0700
@@ -1,13 +1,14 @@
 /* $Id$
  
*******************************************************************************
- * Copyright (c) 2009 Contributors - see below
+ * Copyright (c) 2009-2011 Contributors - see below
  * 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:
- *    tfmorris
+ *    Tom Morris
+ *    Bob Tarling
  
*******************************************************************************
  *
  * Some portions of this file was previously release using the BSD License:
@@ -103,6 +104,19 @@
      * @param elementType the type of model element to build
      * @param container the model element that will contain the 
      * newly built model element
+     * @param defaults the default values to apply to the new element
+     * @return the model element
+     */
+    Object buildNode(Object elementType, Object container, String property, 
UmlFactoryDefaults defaults);
+
+    
+    /**
+     * Creates a UML model element of the given type and adds 
+     * it to the passed in container.
+     * 
+     * @param elementType the type of model element to build
+     * @param container the model element that will contain the 
+     * newly built model element
      * @param property the property name of the containment
      * this is only required when a container has multiple
      * properties old containing the same type of object

Added: 
trunk/src/argouml-core-model/src/org/argouml/model/UmlFactoryDefaults.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-model/src/org/argouml/model/UmlFactoryDefaults.java?view=markup&pathrev=19145
==============================================================================
--- (empty file)
+++ trunk/src/argouml-core-model/src/org/argouml/model/UmlFactoryDefaults.java  
2011-03-30 09:15:11-0700
@@ -0,0 +1,29 @@
+/* $Id: org.eclipse.jdt.ui.prefs 17993 2010-02-11 21:46:56Z linus $
+ 
*******************************************************************************
+ * Copyright (c) 2011 Contributors - see below
+ * 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:
+ *    Bob Tarling
+ 
*******************************************************************************
+ */
+
+package org.argouml.model;
+
+/**
+ * Contains information on what default properties should be applied to a 
newly created
+ * model element.
+ * @author Bob Tarling
+ */
+public interface UmlFactoryDefaults {
+    
+    /**
+     * Get the default type to apply when creating on object of the given meta 
type.
+     * @param metaType that is to be created
+     * @return the type instance to apply to the newly created object
+     */
+    Object getDefaultType(Object metaType);
+}

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

To unsubscribe from this discussion, e-mail: 
[[email protected]].

Reply via email to