svn commit: r15360 - trunk/src/argouml-app: src/org/argouml/i18n src/org/argouml/profile/internal src/org/argouml/ui tests/org/argouml/kernel tests/org/argouml/profile/internal

[email protected]
Newsgroups gmane.comp.lang.uml.argouml.cvs
Message-ID <[email protected]>
Author: maurelio1234
Date: 2008-07-24 03:41:33-0700
New Revision: 15360

Modified:
   trunk/src/argouml-app/src/org/argouml/i18n/tab.properties
   trunk/src/argouml-app/src/org/argouml/profile/internal/ProfileManagerImpl.java
   trunk/src/argouml-app/src/org/argouml/ui/ProjectSettingsTabProfile.java
   trunk/src/argouml-app/src/org/argouml/ui/SettingsTabProfile.java
   trunk/src/argouml-app/tests/org/argouml/kernel/TestProjectWithProfiles.java
   trunk/src/argouml-app/tests/org/argouml/profile/internal/TestProfileManagerImpl.java

Log:

resolving instabilities in Hudson build #479 caused by revision 15359

changed two test cases that made too strict hypothesis on the default profile configuration
changed the ui and the profile manager to disallow the removal of the UML profile



Modified: trunk/src/argouml-app/src/org/argouml/i18n/tab.properties
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/i18n/tab.properties?view=diff&rev=15360&p1=trunk/src/argouml-app/src/org/argouml/i18n/tab.properties&p2=trunk/src/argouml-app/src/org/argouml/i18n/tab.properties&r1=15359&r2=15360
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/i18n/tab.properties	(original)
+++ trunk/src/argouml-app/src/org/argouml/i18n/tab.properties	2008-07-24 03:41:33-0700
@@ -62,6 +62,7 @@
 tab.profiles.directories.remove = Remove
 tab.profiles.directories.refresh = Refresh
 
+tab.profiles.cantremoveuml = The UML profile can not be removed!
 tab.profiles.cannotdelete = Only user defined profiles can be unregistered!
 tab.profiles.confirmdeleteunregistered = The selected profile is only available \
  in this project, after removed there is no way to add it again. \

Modified: trunk/src/argouml-app/src/org/argouml/profile/internal/ProfileManagerImpl.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/profile/internal/ProfileManagerImpl.java?view=diff&rev=15360&p1=trunk/src/argouml-app/src/org/argouml/profile/internal/ProfileManagerImpl.java&p2=trunk/src/argouml-app/src/org/argouml/profile/internal/ProfileManagerImpl.java&r1=15359&r2=15360
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/profile/internal/ProfileManagerImpl.java	(original)
+++ trunk/src/argouml-app/src/org/argouml/profile/internal/ProfileManagerImpl.java	2008-07-24 03:41:33-0700
@@ -75,14 +75,17 @@
 
     private List<String> searchDirectories = new ArrayList<String>();
 
+    private Profile profileUML;
+
     /**
      * Constructor - includes initialization of built-in default profiles.
      */
     public ProfileManagerImpl() {
         try {
-            Profile uml = new ProfileUML();
-            registerProfile(uml);
-            registerProfile(new ProfileJava(uml));
+            profileUML = new ProfileUML();
+            addToDefaultProfiles(profileUML);
+            registerProfile(profileUML);
+            registerProfile(new ProfileJava(profileUML));
             registerProfile(new ProfileMeta());
         } catch (ProfileException e) {
             throw new RuntimeException(e);
@@ -190,7 +193,7 @@
 
 
     public void removeProfile(Profile p) {
-        if (p != null) {
+        if (p != null && p != profileUML) {
             profiles.remove(p);
             defaultProfiles.remove(p);
         }
@@ -224,7 +227,7 @@
 
 
     public void removeFromDefaultProfiles(Profile p) {
-        if (p != null && profiles.contains(p)) {
+        if (p != null && p != profileUML && profiles.contains(p)) {
             defaultProfiles.remove(p);
             updateDefaultProfilesConfiguration();
         }
@@ -261,7 +264,6 @@
         }
     }
 
-
     public void refreshRegisteredProfiles() {
 
         for (String dirName : searchDirectories) {
@@ -308,17 +310,7 @@
 
 
     public Profile getUMLProfile() {
-        for (Profile p : getRegisteredProfiles())
-            if (p.getDisplayName() != null 
-                    && p.getDisplayName().contains("UML"))
-                return p;
-        Profile p = null;
-        try {
-            p = new ProfileUML();
-        } catch (ProfileException e) {
-            throw new RuntimeException(e);
-        }
-        return p;
+        return profileUML;
     }
 
 }

Modified: trunk/src/argouml-app/src/org/argouml/ui/ProjectSettingsTabProfile.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/ui/ProjectSettingsTabProfile.java?view=diff&rev=15360&p1=trunk/src/argouml-app/src/org/argouml/ui/ProjectSettingsTabProfile.java&p2=trunk/src/argouml-app/src/org/argouml/ui/ProjectSettingsTabProfile.java&r1=15359&r2=15360
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/ui/ProjectSettingsTabProfile.java	(original)
+++ trunk/src/argouml-app/src/org/argouml/ui/ProjectSettingsTabProfile.java	2008-07-24 03:41:33-0700
@@ -63,7 +63,7 @@
  * The Tab where new profiles can be added and the registered ones can be

  * activated or deactivated on current project

  * 

- * @author Marcos Aurélio

+ * @author Marcos Aur�lio

  */

 public class ProjectSettingsTabProfile extends JPanel implements

         GUISettingsTabInterface, ActionListener {

@@ -250,41 +250,47 @@
                 Profile selected = (Profile) modelUsed.getElementAt(usedList

                         .getSelectedIndex());

 

-                List<Profile> dependents = getActiveDependents(selected);

-                boolean remove = true;

-

-                if (!dependents.isEmpty()) {

-                    String message = Translator.localize(

-                            "tab.profiles.confirmdeletewithdependencies",

-                            new Object[] { dependents });

-                    String title = Translator

-                            .localize("tab.profiles.confirmdeletewithdependencies.title");

-                    remove = (JOptionPane.showConfirmDialog(this, message,

-                            title, JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION);

-                }

+                if (selected == ProfileFacade.getManager().getUMLProfile()) {

+                    JOptionPane.showMessageDialog(this, Translator

+                            .localize("tab.profiles.cantremoveuml"));

+                } else {

+                    List<Profile> dependents = getActiveDependents(selected);

+                    boolean remove = true;

 

-                if (remove) {

-                    if (!ProfileFacade.getManager().getRegisteredProfiles()

-                            .contains(selected)

-                            && !ProfileFacade.getManager().getDefaultProfiles()

-                                    .contains(selected)) {

-                        remove = (JOptionPane

-                                .showConfirmDialog(

-                                        this,

-                                        Translator

-                                                .localize("tab.profiles.confirmdeleteunregistered"),

-                                        Translator

-                                                .localize("tab.profiles.confirmdeleteunregistered.title"),

-                                        JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION);

+                    if (!dependents.isEmpty()) {

+                        String message = Translator.localize(

+                                "tab.profiles.confirmdeletewithdependencies",

+                                new Object[] {dependents});

+                        String title = Translator

+                                .localize("tab.profiles.confirmdeletewithdependencies.title");

+                        remove = (JOptionPane.showConfirmDialog(this, message,

+                                title, JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION);

                     }

 

                     if (remove) {

-                        modelUsed.removeElement(selected);

-                        modelAvailable.addElement(selected);

+                        if (!ProfileFacade.getManager().getRegisteredProfiles()

+                                .contains(selected)

+                                && !ProfileFacade.getManager()

+                                        .getDefaultProfiles()

+                                        .contains(selected)) {

+                            remove = (JOptionPane

+                                    .showConfirmDialog(

+                                            this,

+                                            Translator

+                                                    .localize("tab.profiles.confirmdeleteunregistered"),

+                                            Translator

+                                                    .localize("tab.profiles.confirmdeleteunregistered.title"),

+                                            JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION);

+                        }

 

-                        for (Profile profile : dependents) {

-                            modelUsed.removeElement(profile);

-                            modelAvailable.addElement(profile);

+                        if (remove) {

+                            modelUsed.removeElement(selected);

+                            modelAvailable.addElement(selected);

+

+                            for (Profile profile : dependents) {

+                                modelUsed.removeElement(profile);

+                                modelAvailable.addElement(profile);

+                            }

                         }

                     }

                 }


Modified: trunk/src/argouml-app/src/org/argouml/ui/SettingsTabProfile.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/ui/SettingsTabProfile.java?view=diff&rev=15360&p1=trunk/src/argouml-app/src/org/argouml/ui/SettingsTabProfile.java&p2=trunk/src/argouml-app/src/org/argouml/ui/SettingsTabProfile.java&r1=15359&r2=15360
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/ui/SettingsTabProfile.java	(original)
+++ trunk/src/argouml-app/src/org/argouml/ui/SettingsTabProfile.java	2008-07-24 03:41:33-0700
@@ -63,7 +63,7 @@
 /**
  * The Tab containing the global settings for profiles
  * 
- * @author Marcos Aurélio
+ * @author Marcos Aur�lio
  */
 public class SettingsTabProfile extends JPanel implements
         GUISettingsTabInterface, ActionListener {
@@ -316,8 +316,14 @@
             if (defaultList.getSelectedIndex() != -1) {
                 Profile selected = (Profile) modelUsd.getElementAt(defaultList
                         .getSelectedIndex());
-                modelUsd.removeElement(selected);
-                modelAvl.addElement(selected);
+                
+                if (selected == ProfileFacade.getManager().getUMLProfile()) {
+                    JOptionPane.showMessageDialog(this, Translator
+                            .localize("tab.profiles.cantremoveuml"));
+                } else {
+                    modelUsd.removeElement(selected);
+                    modelAvl.addElement(selected);
+                }
             }
         } else if (arg0.getSource() == unregisterProfile) {
             if (availableList.getSelectedIndex() != -1) {

Modified: trunk/src/argouml-app/tests/org/argouml/kernel/TestProjectWithProfiles.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/tests/org/argouml/kernel/TestProjectWithProfiles.java?view=diff&rev=15360&p1=trunk/src/argouml-app/tests/org/argouml/kernel/TestProjectWithProfiles.java&p2=trunk/src/argouml-app/tests/org/argouml/kernel/TestProjectWithProfiles.java&r1=15359&r2=15360
==============================================================================
--- trunk/src/argouml-app/tests/org/argouml/kernel/TestProjectWithProfiles.java	(original)
+++ trunk/src/argouml-app/tests/org/argouml/kernel/TestProjectWithProfiles.java	2008-07-24 03:41:33-0700
@@ -33,6 +33,7 @@
 import java.io.IOException;
 import java.lang.reflect.Method;
 import java.util.Collection;
+import java.util.List;
 
 import junit.framework.TestCase;
 
@@ -92,16 +93,22 @@
 
     /**
      * Basic test that a new project contains a {@link ProfileConfiguration} 
-     * and that this contains at least the UML profile.
+     * and that this contains the default profiles.
      */
     public void testCreatedProjectContainsProfileConfiguration() {
+        List<Profile> defaultProfiles 
+            = ProfileFacade.getManager().getDefaultProfiles();               
+        
         Project project = ProjectManager.getManager().makeEmptyProject();
         ProfileConfiguration profileConfiguration = 
             project.getProfileConfiguration();
+                        
         assertNotNull(profileConfiguration);
         assertNotNull(profileConfiguration.getProfiles());
-        assertTrue(profileConfiguration.getProfiles().contains(
-                ProfileFacade.getManager().getUMLProfile()));
+        
+        for (Profile profile : defaultProfiles) {
+            assertTrue(profileConfiguration.getProfiles().contains(profile));
+        }
     }
     
     /**

Modified: trunk/src/argouml-app/tests/org/argouml/profile/internal/TestProfileManagerImpl.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/tests/org/argouml/profile/internal/TestProfileManagerImpl.java?view=diff&rev=15360&p1=trunk/src/argouml-app/tests/org/argouml/profile/internal/TestProfileManagerImpl.java&p2=trunk/src/argouml-app/tests/org/argouml/profile/internal/TestProfileManagerImpl.java&r1=15359&r2=15360
==============================================================================
--- trunk/src/argouml-app/tests/org/argouml/profile/internal/TestProfileManagerImpl.java	(original)
+++ trunk/src/argouml-app/tests/org/argouml/profile/internal/TestProfileManagerImpl.java	2008-07-24 03:41:33-0700
@@ -24,14 +24,17 @@
 
 package org.argouml.profile.internal;
 
+import java.util.Collection;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
+import java.util.Vector;
 
 import junit.framework.TestCase;
 
 import org.argouml.model.InitializeModel;
 import org.argouml.profile.Profile;
+import org.argouml.profile.ProfileException;
 import org.argouml.profile.ProfileManager;
 
 /**
@@ -72,14 +75,29 @@
     }
     
     public void testRemoveDefaultProfile() {
-        Profile umlProfile = manager.getProfileForClass(
-                ProfileUML.class.getName());
-        assertNotNull(umlProfile);
-        assertTrue(manager.getRegisteredProfiles().contains(umlProfile));
-        assertTrue(manager.getDefaultProfiles().contains(umlProfile));
-        manager.removeProfile(umlProfile);
-        assertFalse(manager.getRegisteredProfiles().contains(umlProfile));
-        assertFalse(manager.getDefaultProfiles().contains(umlProfile));
+        Profile testProfile = new Profile() {
+
+            @Override
+            public String getDisplayName() {
+                return "Test Profile";
+            }
+
+            @Override
+            public Collection getProfilePackages() throws ProfileException {
+                return new Vector();
+            }
+            
+        };
+        
+        manager.registerProfile(testProfile);        
+        assertTrue(manager.getRegisteredProfiles().contains(testProfile));
+        
+        manager.addToDefaultProfiles(testProfile);                
+        assertTrue(manager.getDefaultProfiles().contains(testProfile));
+        
+        manager.removeProfile(testProfile);
+        assertFalse(manager.getRegisteredProfiles().contains(testProfile));
+        assertFalse(manager.getDefaultProfiles().contains(testProfile));
     }
 
 }
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.