svn commit: r15339 - branches/gsoc2008/work_premerge_maurelio1234: . .settings src/org/argouml/application src/org/argouml/cognitive src/org/argouml/cognitive/ui src/org/argouml/i18n src/org/argouml/kernel src/org/argouml/moduleloader src/org/argouml/profile src/org/argouml/profile/init src/org/argouml/profile/internal src/org/argouml/profile/internal/ocl src/org/argouml/profile/internal/ocl/uml14 src/org/argouml/profile/internal/ui src/org/argouml/profile/profiles/uml14 src/org/argouml/ui src/org/argouml/ui/explorer src/org/argouml/ui/explorer/rules src/org/argouml/uml/cognitive/critics src/org/argouml/uml/diagram/static_structure/ui src/org/argouml/uml/diagram/ui src/org/argouml/uml/ui tests/org/argouml/profile tests/org/argouml/profile/internal tests/org/argouml/profile/internal/ocl

[email protected]
Newsgroups gmane.comp.lang.uml.argouml.cvs
Message-ID <[email protected]>
Author: maurelio1234
Date: 2008-07-22 10:13:24-0700
New Revision: 15339

Added:
   branches/gsoc2008/work_premerge_maurelio1234/.settings/org.eclipse.ltk.core.refactoring.prefs
   branches/gsoc2008/work_premerge_maurelio1234/argouml.log
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/UserDefinedProfile.java.mine
      - copied unchanged from r15336, /branches/gsoc2008/work_midterm_maurelio1234/src/org/argouml/profile/UserDefinedProfile.java.mine
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/UserDefinedProfile.java.r14801
      - copied unchanged from r15336, /branches/gsoc2008/work_midterm_maurelio1234/src/org/argouml/profile/UserDefinedProfile.java.r14801
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/internal/ocl/
      - copied from r15336, /branches/gsoc2008/work_midterm_maurelio1234/src/org/argouml/profile/internal/ocl/
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/internal/ocl/CompositeModelInterpreter.java
      - copied unchanged from r15336, /branches/gsoc2008/work_midterm_maurelio1234/src/org/argouml/profile/internal/ocl/CompositeModelInterpreter.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/internal/ocl/ComputeTriggers.java
      - copied unchanged from r15336, /branches/gsoc2008/work_midterm_maurelio1234/src/org/argouml/profile/internal/ocl/ComputeTriggers.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/internal/ocl/ContextApplicable.java
      - copied unchanged from r15336, /branches/gsoc2008/work_midterm_maurelio1234/src/org/argouml/profile/internal/ocl/ContextApplicable.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/internal/ocl/CrOCL.java
      - copied unchanged from r15336, /branches/gsoc2008/work_midterm_maurelio1234/src/org/argouml/profile/internal/ocl/CrOCL.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/internal/ocl/EvaluateExpression.java
      - copied unchanged from r15336, /branches/gsoc2008/work_midterm_maurelio1234/src/org/argouml/profile/internal/ocl/EvaluateExpression.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/internal/ocl/EvaluateInvariant.java
      - copied unchanged from r15336, /branches/gsoc2008/work_midterm_maurelio1234/src/org/argouml/profile/internal/ocl/EvaluateInvariant.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/internal/ocl/InvalidOclException.java
      - copied unchanged from r15336, /branches/gsoc2008/work_midterm_maurelio1234/src/org/argouml/profile/internal/ocl/InvalidOclException.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/internal/ocl/LambdaEvaluator.java
      - copied unchanged from r15336, /branches/gsoc2008/work_midterm_maurelio1234/src/org/argouml/profile/internal/ocl/LambdaEvaluator.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/internal/ocl/ModelInterpreter.java
      - copied unchanged from r15336, /branches/gsoc2008/work_midterm_maurelio1234/src/org/argouml/profile/internal/ocl/ModelInterpreter.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/internal/ocl/OclInterpreter.java
      - copied unchanged from r15336, /branches/gsoc2008/work_midterm_maurelio1234/src/org/argouml/profile/internal/ocl/OclInterpreter.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/internal/ocl/uml14/
      - copied from r15336, /branches/gsoc2008/work_midterm_maurelio1234/src/org/argouml/profile/internal/ocl/uml14/
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/internal/ocl/uml14/Bag.java
      - copied unchanged from r15336, /branches/gsoc2008/work_midterm_maurelio1234/src/org/argouml/profile/internal/ocl/uml14/Bag.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/internal/ocl/uml14/CollectionsModelInterpreter.java
      - copied unchanged from r15336, /branches/gsoc2008/work_midterm_maurelio1234/src/org/argouml/profile/internal/ocl/uml14/CollectionsModelInterpreter.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/internal/ocl/uml14/HashBag.java
      - copied unchanged from r15336, /branches/gsoc2008/work_midterm_maurelio1234/src/org/argouml/profile/internal/ocl/uml14/HashBag.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/internal/ocl/uml14/ModelAccessModelInterpreter.java
      - copied unchanged from r15336, /branches/gsoc2008/work_midterm_maurelio1234/src/org/argouml/profile/internal/ocl/uml14/ModelAccessModelInterpreter.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/internal/ocl/uml14/OclAPIModelInterpreter.java
      - copied unchanged from r15336, /branches/gsoc2008/work_midterm_maurelio1234/src/org/argouml/profile/internal/ocl/uml14/OclAPIModelInterpreter.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/internal/ocl/uml14/OclType.java
      - copied unchanged from r15336, /branches/gsoc2008/work_midterm_maurelio1234/src/org/argouml/profile/internal/ocl/uml14/OclType.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/internal/ocl/uml14/Uml14ModelInterpreter.java
      - copied unchanged from r15336, /branches/gsoc2008/work_midterm_maurelio1234/src/org/argouml/profile/internal/ocl/uml14/Uml14ModelInterpreter.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/internal/ui/
      - copied from r15336, /branches/gsoc2008/work_midterm_maurelio1234/src/org/argouml/profile/internal/ui/
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/internal/ui/ProfilePropPanelFactory.java
      - copied unchanged from r15336, /branches/gsoc2008/work_midterm_maurelio1234/src/org/argouml/profile/internal/ui/ProfilePropPanelFactory.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/internal/ui/PropPanelCritic.java
      - copied unchanged from r15336, /branches/gsoc2008/work_midterm_maurelio1234/src/org/argouml/profile/internal/ui/PropPanelCritic.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/ui/explorer/ActionManageProfiles.java
      - copied unchanged from r15336, /branches/gsoc2008/work_midterm_maurelio1234/src/org/argouml/ui/explorer/ActionManageProfiles.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/ui/explorer/rules/GoProfileToCritics.java
      - copied unchanged from r15336, /branches/gsoc2008/work_midterm_maurelio1234/src/org/argouml/ui/explorer/rules/GoProfileToCritics.java
   branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/internal/ocl/
      - copied from r15336, /branches/gsoc2008/work_midterm_maurelio1234/tests/org/argouml/profile/internal/ocl/
   branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/internal/ocl/TestCrOCL.java
      - copied unchanged from r15336, /branches/gsoc2008/work_midterm_maurelio1234/tests/org/argouml/profile/internal/ocl/TestCrOCL.java
   branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/internal/ocl/TestCrOCL2.java
      - copied unchanged from r15336, /branches/gsoc2008/work_midterm_maurelio1234/tests/org/argouml/profile/internal/ocl/TestCrOCL2.java
   branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/internal/ocl/TestOclInterpreter.java
      - copied unchanged from r15336, /branches/gsoc2008/work_midterm_maurelio1234/tests/org/argouml/profile/internal/ocl/TestOclInterpreter.java
Modified:
   branches/gsoc2008/work_premerge_maurelio1234/.classpath
   branches/gsoc2008/work_premerge_maurelio1234/ArgoUML DEBUG.launch
   branches/gsoc2008/work_premerge_maurelio1234/ArgoUML.launch
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/application/Main.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/cognitive/Agency.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/cognitive/CompoundCritic.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/cognitive/ui/PriorityNode.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/i18n/action.properties
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/i18n/misc.properties
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/i18n/tab.properties
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/kernel/ProfileConfiguration.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/moduleloader/ModuleLoader2.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/CoreProfileReference.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/DefaultTypeStrategy.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/FigNodeStrategy.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/FileModelLoader.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/FormatingStrategy.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/Profile.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/ProfileException.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/ProfileFacade.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/ProfileManager.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/ProfileModelLoader.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/ProfileReference.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/ReaderModelLoader.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/ResourceModelLoader.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/StreamModelLoader.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/URLModelLoader.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/UserDefinedProfile.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/UserProfileReference.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/ZipModelLoader.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/init/InitProfileSubsystem.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/internal/JavaFormatingStrategy.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/internal/ModelUtils.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/internal/ProfileJava.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/internal/ProfileManagerImpl.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/internal/ProfileMeta.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/internal/ProfileUML.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/profiles/uml14/metaprofile.xmi
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/ui/ProfileSelectionTab.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/ui/ProjectSettingsDialog.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/ui/ProjectSettingsTabProfile.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/ui/SettingsTabProfile.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/ui/explorer/ExplorerPopup.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/ui/explorer/PerspectiveManager.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/ui/explorer/rules/GoProfileToModel.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrAlreadyRealizes.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrAssocNameConflict.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrAttrNameConflict.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrCircularAssocClass.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrCircularComposition.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrCircularInheritance.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrClassMustBeAbstract.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrCrossNamespaceAssoc.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrDisambigStateName.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrDupParamName.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrDupRoleNames.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrEmptyPackage.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrFinalSubclassed.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrForkOutgoingTransition.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrIllegalGeneralization.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrIllegalName.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInterfaceAllPublic.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInterfaceOperOnly.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInvalidBranch.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInvalidFork.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInvalidForkTriggerOrGuard.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInvalidHistory.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInvalidInitial.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInvalidJoin.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInvalidJoinTriggerOrGuard.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInvalidPseudoStateTrigger.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInvalidSynch.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrJoinIncomingTransition.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrMergeClasses.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrMissingAttrName.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrMissingClassName.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrMissingOperName.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrMissingStateName.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrMultiComposite.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrMultipleAgg.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrMultipleDeepHistoryStates.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrMultipleInitialStates.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrMultipleShallowHistoryStates.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNWayAgg.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNameConflict.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNameConflictAC.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNameConfusion.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNavFromInterface.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNoAssociations.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNoGuard.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNoIncomingTransitions.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNoInitialState.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNoInstanceVariables.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNoOperations.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNoOutgoingTransitions.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNoTransitions.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNoTriggerOrGuard.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNodesOverlap.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNonAggDataType.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrOperNameConflict.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrOppEndConflict.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrOppEndVsAttr.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrReservedName.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrSubclassReference.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrTooManyAssoc.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrTooManyAttr.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrTooManyClasses.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrTooManyOper.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrTooManyStates.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrTooManyTransitions.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrUML.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrUnconventionalAttrName.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrUnconventionalClassName.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrUnconventionalOperName.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrUnconventionalPackName.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrUnnavigableAssoc.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrUselessAbstract.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrUselessInterface.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrUtilityViolated.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/InitCognitiveCritics.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/diagram/static_structure/ui/FigEnumeration.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/diagram/ui/TabDiagram.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/ui/ActionClassDiagram.java
   branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/ui/TabProps.java
   branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/ProfileMother.java
   branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/TestCoreProfileReference.java
   branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/TestProfileFacade.java
   branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/TestProfileManager.java
   branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/TestProfileMother.java
   branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/TestProfileReference.java
   branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/TestReaderModelLoader.java
   branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/TestSubsystemInit.java
   branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/TestUserDefinedProfile.java
   branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/TestUserProfileReference.java
   branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/internal/TestProfileJava.java
   branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/internal/TestProfileManagerImpl.java

Log:

merge



Modified: branches/gsoc2008/work_premerge_maurelio1234/.classpath
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/.classpath?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/.classpath&p2=branches/gsoc2008/work_premerge_maurelio1234/.classpath&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/.classpath	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/.classpath	2008-07-22 10:13:24-0700
@@ -1,17 +1,18 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<classpath>

-	<classpathentry kind="src" path="src"/>

-	<classpathentry kind="src" output="build-eclipse-tests" path="tests"/>

-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>

-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>

-	<classpathentry exported="true" kind="lib" path="lib/antlr-2.7.7.jar"/>

-	<classpathentry exported="true" kind="lib" path="lib/commons-logging-1.0.2.jar"/>

-	<classpathentry exported="true" kind="lib" path="lib/gef-0.12.4.jar" sourcepath="/gef/src"/>

-	<classpathentry exported="true" kind="lib" path="lib/ocl-argo-1.1.jar"/>

-	<classpathentry exported="true" kind="lib" path="lib/swidgets-0.1.4.jar" sourcepath="/swidgets/src"/>

-	<classpathentry exported="true" kind="lib" path="lib/toolbar-1.4.1-20071227.jar" sourcepath="/toolbar/src"/>

-	<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/3"/>

-	<classpathentry kind="lib" path="/argouml-core-tools/lib/easymock12.jar"/>

-	<classpathentry kind="lib" path="/argouml-core-tools/jdepend-2.9/lib/jdepend-2.9.jar"/>

-	<classpathentry kind="output" path="build-eclipse"/>

-</classpath>

+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="src" output="build-eclipse-tests" path="tests"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry exported="true" kind="lib" path="lib/antlr-2.7.7.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/commons-logging-1.0.2.jar"/>
+	<classpathentry exported="true" kind="lib" path="lib/ocl-argo-1.1.jar" sourcepath="/documents/workspace/gsoc/ocl1/src"/>
+	<classpathentry exported="true" kind="lib" path="lib/swidgets-0.1.4.jar" sourcepath="/swidgets/src"/>
+	<classpathentry exported="true" kind="lib" path="lib/toolbar-1.4.1-20071227.jar" sourcepath="/toolbar/src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/3"/>
+	<classpathentry kind="lib" path="/argouml-core-tools/lib/easymock12.jar"/>
+	<classpathentry kind="lib" path="/argouml-core-tools/jdepend-2.9/lib/jdepend-2.9.jar"/>
+	<classpathentry kind="lib" path="/argouml-core-tools/junit-3.8.2/junit.jar"/>
+	<classpathentry kind="lib" path="lib/gef-0.12.4.jar"/>
+	<classpathentry kind="output" path="build-eclipse"/>
+</classpath>

Added: branches/gsoc2008/work_premerge_maurelio1234/.settings/org.eclipse.ltk.core.refactoring.prefs
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/.settings/org.eclipse.ltk.core.refactoring.prefs?view=auto&rev=15339
==============================================================================
--- (empty file)
+++ branches/gsoc2008/work_premerge_maurelio1234/.settings/org.eclipse.ltk.core.refactoring.prefs	2008-07-22 10:13:24-0700
@@ -0,0 +1,3 @@
+#Tue Jul 22 17:17:26 CEST 2008
+eclipse.preferences.version=1
+org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false

Modified: branches/gsoc2008/work_premerge_maurelio1234/ArgoUML DEBUG.launch
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/ArgoUML%20DEBUG.launch?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/ArgoUML%20DEBUG.launch&p2=branches/gsoc2008/work_premerge_maurelio1234/ArgoUML%20DEBUG.launch&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/ArgoUML DEBUG.launch	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/ArgoUML DEBUG.launch	2008-07-22 10:13:24-0700
@@ -28,7 +28,7 @@
 <listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry path=&quot;3&quot; projectName=&quot;argouml-app&quot; type=&quot;1&quot;/&gt;&#13;&#10;"/>

 <listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/argouml-app/lib/antlr-2.7.7.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>

 <listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/argouml-app/lib/commons-logging-1.0.2.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>

-<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/argouml-app/lib/gef-0.12.4.jar&quot; path=&quot;3&quot; sourceAttachmentPath=&quot;/gef/src&quot; sourceRootPath=&quot;&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>

+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/argouml-app/lib/gef-0.12.4BETA3.jar&quot; path=&quot;3&quot; sourceAttachmentPath=&quot;/gef/src&quot; sourceRootPath=&quot;&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>

 <listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/argouml-app/lib/ocl-argo-1.1.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>

 <listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/argouml-app/lib/swidgets-0.1.4.jar&quot; path=&quot;3&quot; sourceAttachmentPath=&quot;/swidgets/src&quot; sourceRootPath=&quot;&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>

 <listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/argouml-app/lib/toolbar-1.4.1-20071227.jar&quot; path=&quot;3&quot; sourceAttachmentPath=&quot;/toolbar/src&quot; sourceRootPath=&quot;&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>


Modified: branches/gsoc2008/work_premerge_maurelio1234/ArgoUML.launch
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/ArgoUML.launch?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/ArgoUML.launch&p2=branches/gsoc2008/work_premerge_maurelio1234/ArgoUML.launch&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/ArgoUML.launch	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/ArgoUML.launch	2008-07-22 10:13:24-0700
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>

+<?xml version="1.0" encoding="UTF-8"?>

 <launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">

 <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">

 <listEntry value="/argouml-app/src/org/argouml/application/Main.java"/>

@@ -11,29 +11,19 @@
 <listEntry value="org.eclipse.debug.ui.launchGroup.run"/>

 </listAttribute>

 <listAttribute key="org.eclipse.jdt.launching.CLASSPATH">

-<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry containerPath=&quot;org.eclipse.jdt.launching.JRE_CONTAINER&quot; javaProject=&quot;argouml-app&quot; path=&quot;1&quot; type=&quot;4&quot;/&gt;&#13;&#10;"/>

-<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry path=&quot;3&quot; projectName=&quot;argouml-core-model-mdr&quot; type=&quot;1&quot;/&gt;&#13;&#10;"/>

-<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/argouml-core-model-mdr/lib/jmi.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>

-<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/argouml-core-model-mdr/lib/jmiutils.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>

-<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/argouml-core-model-mdr/lib/mdrapi.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>

-<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/argouml-core-model-mdr/lib/mof.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>

-<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/argouml-core-model-mdr/lib/nbmdr.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>

-<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/argouml-core-model-mdr/lib/openide-util.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>

-<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry id=&quot;org.eclipse.jdt.launching.classpathentry.defaultClasspath&quot;&gt;&#13;&#10;&lt;memento exportedEntriesOnly=&quot;false&quot; project=&quot;argouml-app&quot;/&gt;&#13;&#10;&lt;/runtimeClasspathEntry&gt;&#13;&#10;"/>

-<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry path=&quot;3&quot; projectName=&quot;argouml-core-tools&quot; type=&quot;1&quot;/&gt;&#13;&#10;"/>

-<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/argouml-core-tools/junit-3.8.2/junit.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>

-<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/argouml-core-tools/lib/easymock12.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>

-<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/argouml-core-tools/apache-ant-1.7.0/lib/ant.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>

-<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry path=&quot;3&quot; projectName=&quot;argouml-core-model&quot; type=&quot;1&quot;/&gt;&#13;&#10;"/>

-<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry path=&quot;3&quot; projectName=&quot;argouml-app&quot; type=&quot;1&quot;/&gt;&#13;&#10;"/>

-<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/argouml-app/lib/antlr-2.7.7.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>

-<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/argouml-app/lib/commons-logging-1.0.2.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>

-<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/argouml-app/lib/gef-0.12.4.jar&quot; path=&quot;3&quot; sourceAttachmentPath=&quot;/gef/src&quot; sourceRootPath=&quot;&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>

-<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/argouml-app/lib/ocl-argo-1.1.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>

-<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/argouml-app/lib/swidgets-0.1.4.jar&quot; path=&quot;3&quot; sourceAttachmentPath=&quot;/swidgets/src&quot; sourceRootPath=&quot;&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>

-<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/argouml-app/lib/toolbar-1.4.1-20071227.jar&quot; path=&quot;3&quot; sourceAttachmentPath=&quot;/toolbar/src&quot; sourceRootPath=&quot;&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>

-<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry path=&quot;3&quot; projectName=&quot;argouml-core-infra&quot; type=&quot;1&quot;/&gt;&#13;&#10;"/>

-<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/argouml-core-infra/lib/log4j-1.2.6.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>

+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry containerPath=&quot;org.eclipse.jdt.launching.JRE_CONTAINER&quot; javaProject=&quot;argouml-app&quot; path=&quot;1&quot; type=&quot;4&quot;/&gt;&#13;&#10;"/>

+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry path=&quot;3&quot; projectName=&quot;argouml-core-model-mdr&quot; type=&quot;1&quot;/&gt;&#13;&#10;"/>

+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/argouml-core-model-mdr/lib/jmi.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>

+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/argouml-core-model-mdr/lib/jmiutils.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>

+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/argouml-core-model-mdr/lib/mdrapi.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>

+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/argouml-core-model-mdr/lib/mof.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>

+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/argouml-core-model-mdr/lib/nbmdr.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>

+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/argouml-core-model-mdr/lib/openide-util.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>

+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry id=&quot;org.eclipse.jdt.launching.classpathentry.defaultClasspath&quot;&gt;&#13;&#10;&lt;memento exportedEntriesOnly=&quot;false&quot; project=&quot;argouml-app&quot;/&gt;&#13;&#10;&lt;/runtimeClasspathEntry&gt;&#13;&#10;"/>

+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry path=&quot;3&quot; projectName=&quot;argouml-core-tools&quot; type=&quot;1&quot;/&gt;&#13;&#10;"/>

+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/argouml-core-tools/junit-3.8.2/junit.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>

+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/argouml-core-tools/lib/easymock12.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>

+<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#13;&#10;&lt;runtimeClasspathEntry internalArchive=&quot;/argouml-core-tools/apache-ant-1.7.0/lib/ant.jar&quot; path=&quot;3&quot; type=&quot;2&quot;/&gt;&#13;&#10;"/>

 </listAttribute>

 <booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="false"/>

 <stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.argouml.application.Main"/>


Added: branches/gsoc2008/work_premerge_maurelio1234/argouml.log
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/argouml.log?view=auto&rev=15339
==============================================================================

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/application/Main.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/application/Main.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/application/Main.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/application/Main.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/application/Main.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/application/Main.java	2008-07-22 10:13:24-0700
@@ -160,9 +160,9 @@
                 if (theTheme != null) {
                     LookAndFeelMgr.getInstance().setCurrentTheme(theTheme);
                 }
-                if (doSplash) {
+/*                if (doSplash) {
                     splash = initializeSplash();
-                }
+                }*/
             }
 
             // main initialization happens here

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/cognitive/Agency.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/cognitive/Agency.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/cognitive/Agency.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/cognitive/Agency.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/cognitive/Agency.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/cognitive/Agency.java	2008-07-22 10:13:24-0700
@@ -31,9 +31,11 @@
 import java.util.List;
 import java.util.Observable;
 import java.util.Observer;
+import java.util.Set;
 import java.util.Vector;
 
 import org.apache.log4j.Logger;
+import org.argouml.uml.cognitive.critics.CrUML;
 
 /**
  * Agency manages Critics.  Since classes are not really first class
@@ -235,6 +237,32 @@
         register(cr, (Class) clazz);
     }
     
+    /**
+     * Register a critic in the global table of critics that have been
+     * loaded.
+     * 
+     * @param cr the critic to register
+     */
+    public static void register(CrUML cr) {
+        Set<Object> metas = cr.getCriticizedMetatypes();
+        for (Object meta : metas) {
+            register(cr, meta);            
+        }
+    }
+    
+    /**
+     * Register a compound critic in the global table of critics that have been
+     * loaded.
+     * 
+     * @param cr the critic to register
+     */
+    public static void register(CompoundCritic cr) {
+        Set<Object> metas = cr.getCriticizedMetatypes();
+        for (Object meta : metas) {
+            register(cr, meta);            
+        }
+    }    
+    
     private static Hashtable<Class, Collection<Critic>> cachedCritics = 
         new Hashtable<Class, Collection<Critic>>();
 

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/cognitive/CompoundCritic.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/cognitive/CompoundCritic.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/cognitive/CompoundCritic.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/cognitive/CompoundCritic.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/cognitive/CompoundCritic.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/cognitive/CompoundCritic.java	2008-07-22 10:13:24-0700
@@ -25,10 +25,15 @@
 package org.argouml.cognitive;
 
 import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 import java.util.Vector;
+
 import javax.swing.Icon;
 
+import org.argouml.uml.cognitive.critics.CrUML;
+
 /**
  * A CompoundCritic acts like a regular critic in that it checks the
  * design and produces design feedback.  However, a CompoundCritic is
@@ -295,4 +300,17 @@
 	throw new UnsupportedOperationException();
     }
 
+    /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        for (Critic cr : this.critics) {
+            if (cr instanceof CrUML) {
+                ret.addAll(((CrUML)cr).getCriticizedMetatypes());
+            }
+        }
+        return ret;
+    }
+    
 }

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/cognitive/ui/PriorityNode.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/cognitive/ui/PriorityNode.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/cognitive/ui/PriorityNode.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/cognitive/ui/PriorityNode.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/cognitive/ui/PriorityNode.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/cognitive/ui/PriorityNode.java	2008-07-22 10:13:24-0700
@@ -27,6 +27,7 @@
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Vector;
+
 import org.argouml.cognitive.ToDoItem;
 import org.argouml.cognitive.Translator;
 

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/i18n/action.properties
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/i18n/action.properties?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/i18n/action.properties&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/i18n/action.properties&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/i18n/action.properties	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/i18n/action.properties	2008-07-22 10:13:24-0700
@@ -126,6 +126,7 @@
 action.invert-selection = Invert Selection
 action.javadocs = Javadocs
 action.layout = Layout
+action.manage-profiles = Manage Profiles...
 action.more-info = More Info...
 action.navigate-back = Navigate Back
 action.navigate-forward = Navigate Forward

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/i18n/misc.properties
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/i18n/misc.properties?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/i18n/misc.properties&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/i18n/misc.properties&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/i18n/misc.properties	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/i18n/misc.properties	2008-07-22 10:13:24-0700
@@ -147,11 +147,13 @@
 misc.primitive.rounded-rectangle = Rounded Rectangle
 misc.primitive.spline = Spline
 misc.primitive.text = Text
+misc.profile.unnamed = Unnamed Profile
 misc.profile.model = Profile->Model
 misc.profileconfiguration.profile = Profile Configuration->Profile
 misc.project.collaboration = Project->Collaboration
 misc.project.diagram = Project->Diagram
 misc.project.model = Project->Model
+misc.project.critic = Project->Critic
 misc.project.profileconfiguration = Project->Profile Configuration
 misc.project.roots = Project->Root Elements
 misc.project.state-machine = Project->State Machine

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/i18n/tab.properties
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/i18n/tab.properties?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/i18n/tab.properties&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/i18n/tab.properties&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/i18n/tab.properties	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/i18n/tab.properties	2008-07-22 10:13:24-0700
@@ -51,7 +51,7 @@
 
 tab.profiles = Profiles
 tab.profiles.userdefined.load = Load profile from file...
-tab.profiles.userdefined.unload = Unload
+tab.profiles.userdefined.unload = Unload active profile
 tab.profiles.userdefined.available = Available Profiles:
 tab.profiles.userdefined.active = Active Profiles:
 tab.profiles.userdefined.default = Default Profiles:

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/kernel/ProfileConfiguration.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/kernel/ProfileConfiguration.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/kernel/ProfileConfiguration.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/kernel/ProfileConfiguration.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/kernel/ProfileConfiguration.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/kernel/ProfileConfiguration.java	2008-07-22 10:13:24-0700
@@ -46,12 +46,13 @@
 import org.argouml.profile.Profile;
 import org.argouml.profile.ProfileException;
 import org.argouml.profile.ProfileFacade;
+import org.argouml.uml.cognitive.critics.CrUML;
 
 /**
- *   This class captures represents the unique access point for the 
- *   configurability allowed by the use of profiles. 
- *
- *   @author maurelio1234
+ * This class captures represents the unique access point for the
+ * configurability allowed by the use of profiles.
+ * 
+ * @author maurelio1234
  */
 public class ProfileConfiguration extends AbstractProjectMember {
     /**
@@ -69,22 +70,21 @@
     private List<Profile> profiles = new ArrayList<Profile>();
 
     private List<Object> profileModels = new ArrayList<Object>();
-    
+
     /**
      * The extension used in serialization and returned by {@link #getType()}
      */
     public static final String EXTENSION = "profile";
-    
 
     /**
      * The configuration key for the default stereotype view.
      */
-    public static final ConfigurationKey KEY_DEFAULT_STEREOTYPE_VIEW = 
-        Configuration.makeKey("profiles", "stereotypeView");
-    
+    public static final ConfigurationKey KEY_DEFAULT_STEREOTYPE_VIEW = Configuration
+            .makeKey("profiles", "stereotypeView");
+
     /**
-     * The default constructor for this class. Sets the default profiles as 
-     * given by {@link org.argouml.profile.ProfileManager} as the profiles of 
+     * The default constructor for this class. Sets the default profiles as
+     * given by {@link org.argouml.profile.ProfileManager} as the profiles of
      * the project.
      * 
      * @param project the project that contains this configuration
@@ -97,15 +97,16 @@
 
         updateStrategies();
     }
-    
+
     /**
-     * The constructor for pre-defined profile configurations, such as when a 
+     * The constructor for pre-defined profile configurations, such as when a
      * project is read from a saved file.
+     * 
      * @param project the project that contains this configuration
-     * @param configuredProfiles the {@link Profile}s that will be the project 
-     *        profiles
+     * @param configuredProfiles the {@link Profile}s that will be the project
+     *            profiles
      */
-    public ProfileConfiguration(Project project, 
+    public ProfileConfiguration(Project project,
             Collection<Profile> configuredProfiles) {
         super(EXTENSION, project);
         for (Profile profile : configuredProfiles) {
@@ -113,11 +114,11 @@
         }
         updateStrategies();
     }
-    
+
     private void updateStrategies() {
         for (Profile profile : profiles) {
-            activateFormatingStrategy(profile);                
-            activateDefaultTypeStrategy(profile);                
+            activateFormatingStrategy(profile);
+            activateDefaultTypeStrategy(profile);
         }
     }
 
@@ -134,10 +135,10 @@
     public DefaultTypeStrategy getDefaultTypeStrategy() {
         return defaultTypeStrategy;
     }
-    
+
     /**
-     * Updates the current strategy to the strategy provided by the 
-     * passed profile. The profile should have been previously registered.
+     * Updates the current strategy to the strategy provided by the passed
+     * profile. The profile should have been previously registered.
      * 
      * @param profile the profile providing the current default type strategy
      */
@@ -147,18 +148,18 @@
             this.defaultTypeStrategy = profile.getDefaultTypeStrategy();
         }
     }
-    
+
     /**
-     * Updates the current strategy to the strategy provided by the 
-     * passed profile. The profile should have been previously registered.
+     * Updates the current strategy to the strategy provided by the passed
+     * profile. The profile should have been previously registered.
      * 
      * @param profile the profile providing the current formating strategy
      */
     public void activateFormatingStrategy(Profile profile) {
-	if (profile != null && profile.getFormatingStrategy() != null
-		&& getProfiles().contains(profile)) {
-	    this.formatingStrategy = profile.getFormatingStrategy();
-	}
+        if (profile != null && profile.getFormatingStrategy() != null
+                && getProfiles().contains(profile)) {
+            this.formatingStrategy = profile.getFormatingStrategy();
+        }
     }
 
     /**
@@ -167,7 +168,7 @@
     public List<Profile> getProfiles() {
         return profiles;
     }
-    
+
     /**
      * Applies a new profile to this configuration
      * 
@@ -182,7 +183,7 @@
             } catch (ProfileException e) {
                 LOG.warn("Error retrieving profile's " + p + " packages.", e);
             }
-            
+
             FigNodeStrategy fns = p.getFigureStrategy();
             if (fns != null) {
                 figNodeStrategies.add(fns);
@@ -192,13 +193,18 @@
                 addProfile(dependency);
             }
 
+            for (CrUML critic : p.getCritics()) {
+                critic.setEnabled(true);
+            }
+
             updateStrategies();
+
             ArgoEventPump.fireEvent(new ArgoProfileEvent(
                     ArgoEventTypes.PROFILE_ADDED, new PropertyChangeEvent(this,
                             "profile", null, p)));
         }
     }
-        
+
     /**
      * @return the list of models of the currently applied profile.
      */
@@ -207,12 +213,17 @@
     }
 
     /**
-     * Removes the passed profile from the configuration. 
+     * Removes the passed profile from the configuration.
      * 
      * @param p the profile to be removed
      */
     public void removeProfile(Profile p) {
         profiles.remove(p);
+
+        for (CrUML critic : p.getCritics()) {
+            critic.setEnabled(false);
+        }
+
         try {
             profileModels.removeAll(p.getProfilePackages());
         } catch (ProfileException e) {
@@ -244,30 +255,30 @@
                 ArgoEventTypes.PROFILE_REMOVED, new PropertyChangeEvent(this,
                         "profile", p, null)));
     }
-    
+
     private FigNodeStrategy compositeFigNodeStrategy = new FigNodeStrategy() {
 
-	public Image getIconForStereotype(Object element) {
-	    Iterator it = figNodeStrategies.iterator();
+        public Image getIconForStereotype(Object element) {
+            Iterator it = figNodeStrategies.iterator();
+
+            while (it.hasNext()) {
+                FigNodeStrategy strat = (FigNodeStrategy) it.next();
+                Image extra = strat.getIconForStereotype(element);
+
+                if (extra != null) {
+                    return extra;
+                }
+            }
+            return null;
+        }
 
-	    while (it.hasNext()) {
-		FigNodeStrategy strat = (FigNodeStrategy) it.next();
-		Image extra = strat.getIconForStereotype(element);
-
-		if (extra != null) {
-		    return extra;
-		}
-	    }
-	    return null;
-	}
-	
     };
-    
+
     /**
      * @return the current FigNodeStrategy
      */
     public FigNodeStrategy getFigNodeStrategy() {
-	return compositeFigNodeStrategy; 
+        return compositeFigNodeStrategy;
     }
 
     /**
@@ -275,18 +286,18 @@
      * @see org.argouml.kernel.AbstractProjectMember#getType()
      */
     public String getType() {
-	return EXTENSION;
+        return EXTENSION;
     }
 
     /**
-     * Objects of this class are always consistent, there's no need 
-     * to repair them.
+     * Objects of this class are always consistent, there's no need to repair
+     * them.
      * 
      * @return the empty string.
      * @see org.argouml.kernel.ProjectMember#repair()
      */
     public String repair() {
-	return "";
+        return "";
     }
 
     /**
@@ -298,9 +309,8 @@
         return "Profile Configuration";
     }
 
-
     /**
-     * Find a stereotype with the given name which is applicable to the given 
+     * Find a stereotype with the given name which is applicable to the given
      * element.
      * 
      * @param name name of stereotype to look for
@@ -309,7 +319,7 @@
      */
     public Object findStereotypeForObject(String name, Object element) {
         Iterator iter = null;
-        
+
         for (Object model : profileModels) {
             iter = Model.getFacade().getOwnedElements(model).iterator();
 
@@ -347,10 +357,8 @@
     }
 
     /**
-     * Finds a type in a model by name
-     * 
-     * FIXME: duplicated from the method with the same name in 
-     * org.argouml.profile.internal.ModelUtils.
+     * Finds a type in a model by name FIXME: duplicated from the method with
+     * the same name in org.argouml.profile.internal.ModelUtils.
      * 
      * @param s the type name
      * @param model the model
@@ -359,14 +367,12 @@
     public static Object findTypeInModel(String s, Object model) {
 
         if (!Model.getFacade().isANamespace(model)) {
-            throw new IllegalArgumentException(
-                    "Looking for the classifier " + s
-                    + " in a non-namespace object of " + model
+            throw new IllegalArgumentException("Looking for the classifier "
+                    + s + " in a non-namespace object of " + model
                     + ". A namespace was expected.");
         }
 
-        Collection allClassifiers =
-            Model.getModelManagementHelper()
+        Collection allClassifiers = Model.getModelManagementHelper()
                 .getAllModelElementsOfKind(model,
                         Model.getMetaTypes().getClassifier());
 
@@ -377,7 +383,7 @@
 
             classifier = classifiers[i];
             if (Model.getFacade().getName(classifier) != null
-                        && Model.getFacade().getName(classifier).equals(s)) {
+                    && Model.getFacade().getName(classifier).equals(s)) {
                 return classifier;
             }
         }
@@ -386,12 +392,12 @@
     }
 
     /**
-     * Find all the model elements in the configured {@link Profile}s 
-     * of the given meta type.
+     * Find all the model elements in the configured {@link Profile}s of the
+     * given meta type.
      * 
      * @param metaType the meta type of the model elements to find
-     * @return a {@link Collection} containing the model elements that 
-     *         are of the given meta type
+     * @return a {@link Collection} containing the model elements that are of
+     *         the given meta type
      */
     @SuppressWarnings("unchecked")
     public Collection findByMetaType(Object metaType) {
@@ -407,8 +413,7 @@
     }
 
     /**
-     * @param modelElement
-     *                ModelElement for which find possible stereotypes
+     * @param modelElement ModelElement for which find possible stereotypes
      * @return collection of stereotypes which are valid for the given model
      *         element.
      */

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/moduleloader/ModuleLoader2.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/moduleloader/ModuleLoader2.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/moduleloader/ModuleLoader2.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/moduleloader/ModuleLoader2.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/moduleloader/ModuleLoader2.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/moduleloader/ModuleLoader2.java	2008-07-22 10:13:24-0700
@@ -41,6 +41,7 @@
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import java.util.StringTokenizer;
 import java.util.jar.Attributes;
 import java.util.jar.JarEntry;
@@ -51,15 +52,20 @@
 import org.argouml.application.api.AbstractArgoJPanel;
 import org.argouml.application.api.Argo;
 import org.argouml.i18n.Translator;
+import org.argouml.profile.ProfileException;
+import org.argouml.profile.ProfileFacade;
+import org.argouml.profile.UserDefinedProfile;
+import org.argouml.uml.cognitive.critics.CrUML;
 
 
 /**
  * This is the module loader that loads modules implementing the
- * ModuleInterface.<p>
- *
- * This is a singleton. There are convenience functions that are static
- * to access the module.<p>
- *
+ * ModuleInterface.
+ * <p>
+ * This is a singleton. There are convenience functions that are static to
+ * access the module.
+ * <p>
+ * 
  * @stereotype singleton
  * @author Linus Tolke
  * @since 0.15.4
@@ -71,16 +77,16 @@
     private static final Logger LOG = Logger.getLogger(ModuleLoader2.class);
 
     /**
-     * This map contains the module loader information about the module.<p>
-     *
+     * This map contains the module loader information about the module.
+     * <p>
      * The keys is the list of available modules.
      */
     private Map<ModuleInterface, ModuleStatus> moduleStatus;
-    
+
     /**
-     * List of locations that we've searched and/or loaded modules
-     * from.  This is for information purposes only to allow it to 
-     * be displayed in the settings Environment tab.
+     * List of locations that we've searched and/or loaded modules from. This is
+     * for information purposes only to allow it to be displayed in the settings
+     * Environment tab.
      */
     private List<String> extensionLocations = new ArrayList<String>();
 
@@ -108,16 +114,16 @@
      * Constructor for this object.
      */
     private ModuleLoader2() {
-	moduleStatus = new HashMap<ModuleInterface, ModuleStatus>();
+        moduleStatus = new HashMap<ModuleInterface, ModuleStatus>();
     }
 
     /**
      * Get hold of the instance of this object.
-     *
+     * 
      * @return the instance
      */
     public static ModuleLoader2 getInstance() {
-	return INSTANCE;
+        return INSTANCE;
     }
 
     /**
@@ -132,45 +138,47 @@
             }
             if (status.isEnabled()) {
                 if (module instanceof DetailsTabProvider) {
-                    result.addAll(
-                            ((DetailsTabProvider) module).getDetailsTabs());
+                    result.addAll(((DetailsTabProvider) module)
+                            .getDetailsTabs());
                 }
             }
         }
         return result;
     }
+
     /**
      * Return a collection of all available modules.
-     *
+     * 
      * @return A Collection of all available modules.
      */
     private Collection<ModuleInterface> availableModules() {
-	return Collections.unmodifiableCollection(moduleStatus.keySet());
+        return Collections.unmodifiableCollection(moduleStatus.keySet());
     }
 
     // Access methods for program infrastructure.
     /**
-     * Enables all selected modules and disabling all modules not selected.<p>
-     *
-     * In short this attempts to make the modules obey their selection.<p>
-     *
+     * Enables all selected modules and disabling all modules not selected.
+     * <p>
+     * In short this attempts to make the modules obey their selection.
+     * <p>
+     * 
      * @param failingAllowed is <code>true</code> if enabling or disabling of
-     *                       some of the modules is allowed to fail.
+     *            some of the modules is allowed to fail.
      */
     public static void doLoad(boolean failingAllowed) {
-	getInstance().doInternal(failingAllowed);
+        getInstance().doInternal(failingAllowed);
     }
 
     // Access methods for modules that need to query about the status of
     // other modules.
     /**
      * Gets the loaded status for some other module.
-     *
+     * 
      * @return true if the module exists and is enabled.
      * @param name is the module name of the queried module
      */
     public static boolean isEnabled(String name) {
-	return getInstance().isEnabledInternal(name);
+        return getInstance().isEnabledInternal(name);
     }
 
     // Access methods for the GUI that the user uses to enable and disable
@@ -178,82 +186,82 @@
 
     /**
      * Get a Collection with all the names.
-     *
+     * 
      * @return all the names.
      */
     public static Collection<String> allModules() {
-	Collection<String> coll = new HashSet<String>();
+        Collection<String> coll = new HashSet<String>();
 
-	for (ModuleInterface mf : getInstance().availableModules()) {
-	    coll.add(mf.getName());
-	}
+        for (ModuleInterface mf : getInstance().availableModules()) {
+            coll.add(mf.getName());
+        }
 
-	return coll;
+        return coll;
     }
 
     /**
      * Get the selected.
-     *
+     * 
      * @param name The name of the module.
      * @return <code>true</code> if the module is selected.
      */
     public static boolean isSelected(String name) {
-	return getInstance().isSelectedInternal(name);
+        return getInstance().isSelectedInternal(name);
     }
 
     /**
      * Get the selected.
-     *
+     * 
      * @see #isSelected(String)
      * @param name The name of the module.
      * @return <code>true</code> if the module is selected.
      */
     private boolean isSelectedInternal(String name) {
-	Map.Entry<ModuleInterface, ModuleStatus> entry = findModule(name);
+        Map.Entry<ModuleInterface, ModuleStatus> entry = findModule(name);
 
-	if (entry != null) {
-	    ModuleStatus status = entry.getValue();
+        if (entry != null) {
+            ModuleStatus status = entry.getValue();
 
-	    if (status == null) {
-		return false;
-	    }
+            if (status == null) {
+                return false;
+            }
 
-	    return status.isSelected();
-	}
-	return false;
+            return status.isSelected();
+        }
+        return false;
     }
 
     /**
      * Set the selected value.
-     *
+     * 
      * @param name The name of the module.
      * @param value Selected or not.
      */
     public static void setSelected(String name, boolean value) {
-	getInstance().setSelectedInternal(name, value);
+        getInstance().setSelectedInternal(name, value);
     }
 
     /**
      * Set the selected value.
-     *
+     * 
      * @see #setSelected(String, boolean)
      * @param name The name of the module.
      * @param value Selected or not.
      */
     private void setSelectedInternal(String name, boolean value) {
-	Map.Entry<ModuleInterface, ModuleStatus> entry = findModule(name);
+        Map.Entry<ModuleInterface, ModuleStatus> entry = findModule(name);
 
-	if (entry != null) {
-	    ModuleStatus status = entry.getValue();
+        if (entry != null) {
+            ModuleStatus status = entry.getValue();
 
-	    status.setSelected(value);
-	}
+            status.setSelected(value);
+        }
     }
 
     /**
-     * Create a description of the module based on the information provided
-     * by the module itself.
-     *
+     * Create a description of the module based on the information provided by
+     * the module itself.
+     * 
      * @param name The name of the module.
      * @return The description.
      */
@@ -262,21 +270,21 @@
     }
 
     /**
-     * Create a description of the module based on the information provided
-     * by the module itself.
-     *
+     * Create a description of the module based on the information provided by
+     * the module itself.
+     * 
      * @see #getDescription(String)
      * @param name The name of the module.
      * @return The description.
      */
     private String getDescriptionInternal(String name) {
-	Map.Entry<ModuleInterface, ModuleStatus> entry = findModule(name);
+        Map.Entry<ModuleInterface, ModuleStatus> entry = findModule(name);
 
-	if (entry == null) {
-	    throw new IllegalArgumentException("Module does not exist.");
-	}
+        if (entry == null) {
+            throw new IllegalArgumentException("Module does not exist.");
+        }
 
-	ModuleInterface module = entry.getKey();
+        ModuleInterface module = entry.getKey();
         StringBuffer sb = new StringBuffer();
         String desc = module.getInfo(ModuleInterface.DESCRIPTION);
         if (desc != null) {
@@ -296,28 +304,27 @@
         return sb.toString();
     }
 
-
     // Access methods for the program infrastructure
     /**
      * Enables all selected modules.
-     *
-     * @param failingAllowed is true if this is not the last attempt at
-     * turning on.
+     * 
+     * @param failingAllowed is true if this is not the last attempt at turning
+     *            on.
      */
     private void doInternal(boolean failingAllowed) {
-	huntForModules();
+        huntForModules();
 
-	boolean someModuleSucceeded;
-	do {
-	    someModuleSucceeded = false;
+        boolean someModuleSucceeded;
+        do {
+            someModuleSucceeded = false;
 
-	    for (ModuleInterface module : getInstance().availableModules()) {
+            for (ModuleInterface module : getInstance().availableModules()) {
 
-		ModuleStatus status = moduleStatus.get(module);
+                ModuleStatus status = moduleStatus.get(module);
 
-		if (status == null) {
-		    continue;
-		}
+                if (status == null) {
+                    continue;
+                }
 
 		if (!status.isEnabled() && status.isSelected()) {
 		    try {
@@ -347,68 +354,67 @@
 	    }
 	} while (someModuleSucceeded);
 
-	if (!failingAllowed) {
-	    // Notify the user that the modules in the list that are selected
-	    // but not enabled were not possible to enable and that are not
-	    // selected that we cannot disable.
-	    //
-	    // Currently we just log this.
-	    //
-	    // TODO: We could eventually pop up some warning window.
-	    //
-	    for (ModuleInterface module : getInstance().availableModules()) {
+        if (!failingAllowed) {
+            // Notify the user that the modules in the list that are selected
+            // but not enabled were not possible to enable and that are not
+            // selected that we cannot disable.
+            //
+            // Currently we just log this.
+            //
+            // TODO: We could eventually pop up some warning window.
+            //
+            for (ModuleInterface module : getInstance().availableModules()) {
 
-		ModuleStatus status = moduleStatus.get(module);
+                ModuleStatus status = moduleStatus.get(module);
 
-		if (status == null) {
-		    continue;
-		}
+                if (status == null) {
+                    continue;
+                }
 
-		if (status.isEnabled() && status.isSelected()) {
-		    continue;
-		}
+                if (status.isEnabled() && status.isSelected()) {
+                    continue;
+                }
 
-		if (!status.isEnabled() && !status.isSelected()) {
-		    continue;
-		}
+                if (!status.isEnabled() && !status.isSelected()) {
+                    continue;
+                }
 
-		if (status.isSelected()) {
-		    LOG.warn("ModuleLoader was not able to enable module "
-		             + module.getName());
-		} else {
-		    LOG.warn("ModuleLoader was not able to disable module "
-		             + module.getName());
-		}
-	    }
-	}
+                if (status.isSelected()) {
+                    LOG.warn("ModuleLoader was not able to enable module "
+                            + module.getName());
+                } else {
+                    LOG.warn("ModuleLoader was not able to disable module "
+                            + module.getName());
+                }
+            }
+        }
     }
 
     /**
      * Gets the loaded status for some other module.
-     *
+     * 
      * @return true if the module exists and is enabled.
      * @param name is the module name of the queried module
      */
     private boolean isEnabledInternal(String name) {
-	Map.Entry<ModuleInterface, ModuleStatus> entry = findModule(name);
+        Map.Entry<ModuleInterface, ModuleStatus> entry = findModule(name);
 
-	if (entry != null) {
-	    ModuleStatus status = entry.getValue();
+        if (entry != null) {
+            ModuleStatus status = entry.getValue();
 
-	    if (status == null) {
-		return false;
-	    }
+            if (status == null) {
+                return false;
+            }
 
-	    return status.isEnabled();
-	}
-	return false;
+            return status.isEnabled();
+        }
+        return false;
     }
 
-
     /**
-     * Return the ModuleInterface, ModuleStatus pair for the module
-     * with the given name or <code>null</code> if there isn't any.
-     *
+     * Return the ModuleInterface, ModuleStatus pair for the module with the
+     * given name or <code>null</code> if there isn't any.
+     * 
      * @param name The given name.
      * @return A pair (Map.Entry).
      */
@@ -420,13 +426,14 @@
                 return entry;
             }
         }
-	return null;
+        return null;
     }
 
     /**
-     * Tries to find as many available modules as possible.<p>
-     *
-     * As the modules are found they are appended to {@link #moduleStatus}.<p>
+     * Tries to find as many available modules as possible.
+     * <p>
+     * As the modules are found they are appended to {@link #moduleStatus}.
+     * <p>
      */
     private void huntForModules() {
         huntForModulesFromExtensionDir();
@@ -449,75 +456,72 @@
             }
         }
     }
-    
+
     /**
-     * Find and enable modules from our "ext" directory and from the
-     * directory specified in "argo.ext.dir".<p>
-     *
-     * TODO: This does a calculation of where our "ext" directory is.
-     *       We should eventually make sure that this calculation is
-     *       only present in one place in the code and not several.
+     * Find and enable modules from our "ext" directory and from the directory
+     * specified in "argo.ext.dir".
+     * <p>
+     * TODO: This does a calculation of where our "ext" directory is. We should
+     * eventually make sure that this calculation is only present in one place
+     * in the code and not several.
      */
     private void huntForModulesFromExtensionDir() {
-	// Use a little trick to find out where Argo is being loaded from.
+        // Use a little trick to find out where Argo is being loaded from.
         String extForm = getClass().getResource(Argo.ARGOINI).toExternalForm();
-	String argoRoot =
-	    extForm.substring(0,
-			      extForm.length() - Argo.ARGOINI.length());
-
-	// If it's a jar, clean it up and make it look like a file url
-	if (argoRoot.startsWith(JAR_PREFIX)) {
-	    argoRoot = argoRoot.substring(JAR_PREFIX.length());
-	    if (argoRoot.endsWith("!")) {
-	        argoRoot = argoRoot.substring(0, argoRoot.length() - 1);
-	    }
-	}
+        String argoRoot = extForm.substring(0, extForm.length()
+                - Argo.ARGOINI.length());
+
+        // If it's a jar, clean it up and make it look like a file url
+        if (argoRoot.startsWith(JAR_PREFIX)) {
+            argoRoot = argoRoot.substring(JAR_PREFIX.length());
+            if (argoRoot.endsWith("!")) {
+                argoRoot = argoRoot.substring(0, argoRoot.length() - 1);
+            }
+        }
 
-	String argoHome = null;
+        String argoHome = null;
 
-	if (argoRoot != null) {
-	    LOG.info("argoRoot is " + argoRoot);
-	    if (argoRoot.startsWith(FILE_PREFIX)) {
-	        argoHome =
-	            new File(argoRoot.substring(FILE_PREFIX.length()))
-	            	.getAbsoluteFile().getParent();
-	    } else {
-	        argoHome = new File(argoRoot).getAbsoluteFile().getParent();
-	    }
+        if (argoRoot != null) {
+            LOG.info("argoRoot is " + argoRoot);
+            if (argoRoot.startsWith(FILE_PREFIX)) {
+                argoHome = new File(argoRoot.substring(FILE_PREFIX.length()))
+                        .getAbsoluteFile().getParent();
+            } else {
+                argoHome = new File(argoRoot).getAbsoluteFile().getParent();
+            }
 
-	    try {
-		argoHome = java.net.URLDecoder.decode(argoHome, 
-                        Argo.getEncoding());
-	    } catch (UnsupportedEncodingException e) {
-		LOG.warn("Encoding " 
-                        + Argo.getEncoding() 
-                        + " is unknown.");
-	    }
+            try {
+                argoHome = java.net.URLDecoder.decode(argoHome, Argo
+                        .getEncoding());
+            } catch (UnsupportedEncodingException e) {
+                LOG.warn("Encoding " + Argo.getEncoding() + " is unknown.");
+            }
 
-	    LOG.info("argoHome is " + argoHome);
-	}
+            LOG.info("argoHome is " + argoHome);
+        }
 
-	if (argoHome != null) {
+        if (argoHome != null) {
             String extdir;
-	    if (argoHome.startsWith(FILE_PREFIX)) {
-	        extdir = argoHome.substring(FILE_PREFIX.length())
+            if (argoHome.startsWith(FILE_PREFIX)) {
+                extdir = argoHome.substring(FILE_PREFIX.length())
                         + File.separator + "ext";
-	    } else {
-	        extdir = argoHome + File.separator + "ext";
-	    }
+            } else {
+                extdir = argoHome + File.separator + "ext";
+            }
             extensionLocations.add(extdir);
-	    huntModulesFromNamedDirectory(extdir);
-	}
+            huntModulesFromNamedDirectory(extdir);
+        }
 
         String extdir = System.getProperty("argo.ext.dir");
-	if (extdir != null) {
+        if (extdir != null) {
             extensionLocations.add(extdir);
-	    huntModulesFromNamedDirectory(extdir);
-	}
+            huntModulesFromNamedDirectory(extdir);
+        }
     }
-    
+
     /**
      * Get the list of locations that we've loaded extension modules from.
+     * 
      * @return A list of the paths we've loaded from.
      */
     public List<String> getExtensionLocations() {
@@ -526,62 +530,58 @@
 
     /**
      * Find and enable a module from a given directory.
-     *
+     * 
      * @param dirname The name of the directory.
      */
     private void huntModulesFromNamedDirectory(String dirname) {
-	File extensionDir = new File(dirname);
-	if (extensionDir.isDirectory()) {
-	    File[] files = extensionDir.listFiles(new JarFileFilter());
-	    for (File file : files) {
-		JarFile jarfile = null;
-		// Try-catch only the JarFile instantiation so we
-		// don't accidentally mask anything in ArgoJarClassLoader
-		// or processJarFile.
-		try {
-		    jarfile = new JarFile(file);
-		    if (jarfile != null) {
-		        // TODO: Should we be delegating to a different
-		        // classloader than the default here? - - tfm
-	                ClassLoader classloader =
-			    new URLClassLoader(new URL[] {
-				file.toURI().toURL(),
-			    });
-	                try {
-	                    processJarFile(classloader, file);
-	                } catch (ClassNotFoundException e) {
-	                    LOG.error("The class is not found.", e);
-	                    return;
-	                }
-		    }
-		} catch (IOException ioe) {
-		    LOG.debug("Cannot open Jar file " + file, ioe);
-		}
-	    }
-	}
+        File extensionDir = new File(dirname);
+        if (extensionDir.isDirectory()) {
+            File[] files = extensionDir.listFiles(new JarFileFilter());
+            for (File file : files) {
+                JarFile jarfile = null;
+                // Try-catch only the JarFile instantiation so we
+                // don't accidentally mask anything in ArgoJarClassLoader
+                // or processJarFile.
+                try {
+                    jarfile = new JarFile(file);
+                    if (jarfile != null) {
+                        // TODO: Should we be delegating to a different
+                        // classloader than the default here? - - tfm
+                        ClassLoader classloader = new URLClassLoader(
+                                new URL[] {file.toURI().toURL()} );
+                        try {
+                            processJarFile(classloader, file);
+                        } catch (ClassNotFoundException e) {
+                            LOG.error("The class is not found.", e);
+                            return;
+                        }
+                    }
+                } catch (IOException ioe) {
+                    LOG.debug("Cannot open Jar file " + file, ioe);
+                }
+            }
+        }
     }
 
     /**
-     * Check a jar file for an ArgoUML extension/module.<p>
-     *
+     * Check a jar file for an ArgoUML extension/module.
+     * <p>
      * If there isn't a manifest or it isn't readable, we fail silently.
-     *
-     * @param classloader The classloader to use.
-     * @param file The file to process.
-     * @throws ClassNotFoundException if the manifest file contains a class
-     *         that doesn't exist.
+     * 
+     * @throws ClassNotFoundException if the manifest file contains a class that
+     *             doesn't exist.
      */
     private void processJarFile(ClassLoader classloader, File file)
         throws ClassNotFoundException {
 
-	LOG.info("Opening jar file " + file);
+        LOG.info("Opening jar file " + file);
         JarFile jarfile;
-	try {
-	    jarfile = new JarFile(file);
-	} catch (IOException e) {
-	    LOG.error("Unable to open " + file, e);
+        try {
+            jarfile = new JarFile(file);
+        } catch (IOException e) {
+            LOG.error("Unable to open " + file, e);
             return;
-	}
+        }
 
         Manifest manifest;
         try {
@@ -593,26 +593,30 @@
             LOG.error("Unable to read manifest of " + file, e);
             return;
         }
-	
+
+        LOG.info("Reading profiles...");
+        try {
+            loadProfilesFromJarFile(jarfile.getManifest(), file, classloader);
+        } catch (IOException e) {
+            LOG.error("Unable to get MANIFEST from Jar of " + file, e);
+        }
+
         boolean loadedClass = false;
         if (manifest == null) {
             Enumeration<JarEntry> jarEntries = jarfile.entries();
             while (jarEntries.hasMoreElements()) {
                 JarEntry entry = jarEntries.nextElement();
-                loadedClass =
-                        loadedClass
-                                | processEntry(classloader, entry.getName());
+                loadedClass = loadedClass
+                        | processEntry(classloader, entry.getName());
             }
         } else {
             Map<String, Attributes> entries = manifest.getEntries();
             for (String key : entries.keySet()) {
                 // Look for our specification
-                loadedClass =
-                    loadedClass
-                            | processEntry(classloader, key);
+                loadedClass = loadedClass | processEntry(classloader, key);
             }
         }
-        
+
         if (loadedClass) {
             // Add this to search list for I18N properties
             Translator.addClassLoader(classloader);
@@ -623,13 +627,124 @@
     }
 
     /**
+     * Interprets the MANIFEST file in the JAR in order to load the declared
+     * profile.
+     * 
+     * @param file the file object referencing the Jar
+     * @param manifest the manifest file of the Jar
+     * @param classloader the classloader that loads the classes referenced by
+     *            the Jar
+     */
+    private void loadProfilesFromJarFile(Manifest manifest, File file,
+            ClassLoader classloader) {
+        Map<String, Attributes> entries = manifest.getEntries();
+        boolean classLoaderAlreadyAdded = false;
+
+        for (String entryName : entries.keySet()) {
+            Attributes attr = entries.get(entryName);
+            if (new Boolean(attr.getValue("Profile") + "").booleanValue()) {
+                try {
+                    // we only need to add the classloader once
+                    // and if and only if there is at least a profile
+                    // in the JAR
+                    if (!classLoaderAlreadyAdded) {
+                        Translator.addClassLoader(classloader);
+                        classLoaderAlreadyAdded = true;
+                    }
+                    Set<CrUML> critics = loadJavaCriticsForProfile(attr,
+                            classloader);
+                    String modelPath = attr.getValue("Model");
+                    URL modelURL = null;
+
+                    if (modelPath != null) {
+                        modelURL = new URL(JAR_PREFIX + FILE_PREFIX
+                                + file.getCanonicalPath() + "!" + modelPath);
+                    }
+
+                    UserDefinedProfile udp = new UserDefinedProfile(entryName,
+                            modelURL, critics,
+                            loadManifestDependenciesForProfile(attr));
+
+                    ProfileFacade.getManager().registerProfile(udp);
+                    LOG.debug("Registered Profile: " + udp.getDisplayName()
+                            + "...");
+                } catch (ProfileException e) {
+                    LOG.error("Exception", e);
+                } catch (IOException e) {
+                    LOG.error("Exception", e);
+                }
+            }
+
+        }
+    }
+
+    /**
+     * Resolves the dependencies for a Profile
+     * 
+     * TODO How do we deal with the non-determinism in the order of the loaded
+     * profiles? (Maybe the d depended profiles were not loaded yet)
+     * 
+     * @param attr a group of attributes in the MANIFEST file for this JAR
+     * 
+     * @return the set of defined profiles
+     */
+    private Set<String> loadManifestDependenciesForProfile(Attributes attr) {
+        Set<String> ret = new HashSet<String>();
+        String value = attr.getValue("Depends-on");
+        if (value != null) {
+            StringTokenizer st = new StringTokenizer(value, ",");
+
+            while (st.hasMoreElements()) {
+                String entry = st.nextToken().trim();
+                ret.add(entry);
+            }
+        }
+
+        return ret;
+    }
+
+    /**
+     * Loads the Java critics defined by a profile
+     * 
+     * @param attr the Manifest section of the profile
+     * @param classloader the classloader of the Jar
+     * 
+     * @return the set of defined critics
+     */
+    private Set<CrUML> loadJavaCriticsForProfile(Attributes attr,
+            ClassLoader classloader) {
+        Set<CrUML> ret = new HashSet<CrUML>();
+
+        String value = attr.getValue("Java-Critics");
+        if (value != null) {
+            StringTokenizer st = new StringTokenizer(value, ",");
+
+            while (st.hasMoreElements()) {
+                String entry = st.nextToken().trim();
+
+                try {
+                    Class cl = classloader.loadClass(entry);
+                    CrUML critic = (CrUML) cl.newInstance();
+                    ret.add(critic);
+                } catch (ClassNotFoundException e) {
+                    LOG.error("Error loading class: " + entry, e);
+                } catch (InstantiationException e) {
+                    LOG.error("Error instantianting class: " + entry, e);
+                } catch (IllegalAccessException e) {
+                    LOG.error("Exception", e);
+                }
+            }
+        }
+
+        return ret;
+    }
+
+    /**
      * Process a JAR file entry, attempting to load anything that looks like a
      * Java class.
      * 
-     * @param classloader
-     *            the classloader to use when loading the class
-     * @param cname
-     *            the class name
+     * @param classloader the classloader to use when loading the class
+     * @param cname the class name
      * @throws ClassNotFoundException
      * @return true if class was a module class and loaded successfully
      */
@@ -646,23 +761,21 @@
 
     /**
      * Add a class from the current class loader.
-     *
+     * 
      * @param classname The name of the class (including package).
      * @throws ClassNotFoundException if the class classname is not found.
      */
-    public static void addClass(String classname)
-        throws ClassNotFoundException {
+    public static void addClass(String classname) throws ClassNotFoundException {
 
-        getInstance().addClass(ModuleLoader2.class.getClassLoader(),
-			       classname);
+        getInstance().addClass(ModuleLoader2.class.getClassLoader(), classname);
     }
 
     /**
-     * Try to load a module from the given ClassLoader.<p>
-     *
+     * Try to load a module from the given ClassLoader.
+     * <p>
      * Only add it as a module if it is a module (i.e. it implements the
      * {@link ModuleInterface} interface.
-     *
+     * 
      * @param classLoader The ClassLoader to load from.
      * @param classname The name.
      * @throws ClassNotFoundException if the class classname is not found.
@@ -689,7 +802,7 @@
             LOG.error("Unexpected error while loading " + classname, e);
             return false;
         }
-        
+
         if (!ModuleInterface.class.isAssignableFrom(moduleClass)) {
             LOG.debug("The class " + classname + " is not a module.");
             return false;
@@ -697,16 +810,15 @@
 
         Constructor defaultConstructor;
         try {
-            defaultConstructor =
-                    moduleClass.getDeclaredConstructor(new Class[] {});
+            defaultConstructor = moduleClass
+                    .getDeclaredConstructor(new Class[] {});
         } catch (SecurityException e) {
             LOG.error("The default constructor for class " + classname
-                      + " is not accessable.",
-                      e);
+                    + " is not accessable.", e);
             return false;
         } catch (NoSuchMethodException e) {
             LOG.error("The default constructor for class " + classname
-                      + " is not found.", e);
+                    + " is not found.", e);
             return false;
         } catch (NoClassDefFoundError e) {
             LOG.error("Unable to find required class while loading "
@@ -725,7 +837,7 @@
         }
         Object moduleInstance;
         try {
-            moduleInstance = defaultConstructor.newInstance(new Object[]{});
+            moduleInstance = defaultConstructor.newInstance(new Object[] {});
         } catch (IllegalArgumentException e) {
             LOG.error("The constructor for class " + classname
                     + " is called with incorrect argument.", e);
@@ -766,51 +878,48 @@
     }
 
     /**
-     * Add a newly found module to {@link #moduleStatus}. If we already
-     * know about it, don't add it.
-     *
+     * Add a newly found module to {@link #moduleStatus}. If we already know
+     * about it, don't add it.
+     * 
      * @param mf The module to add.
      */
     private void addModule(ModuleInterface mf) {
-	// Since there is no way to compare the objects as equal,
-	// we have to search through the list at this point.
+        // Since there is no way to compare the objects as equal,
+        // we have to search through the list at this point.
         for (ModuleInterface foundMf : moduleStatus.keySet()) {
-	    if (foundMf.getName().equals(mf.getName())) {
-		return;
-	    }
-	}
+            if (foundMf.getName().equals(mf.getName())) {
+                return;
+            }
+        }
 
-	// We havn't found it. Add it.
-	ModuleStatus ms = new ModuleStatus();
+        // We havn't found it. Add it.
+        ModuleStatus ms = new ModuleStatus();
 
-	// Enable it.
-	// TODO: This by default selects all modules that are found.
-	//       Eventually we would rather obey a default either from the
-	//       modules themselves, from how they are found, and also
-	//       have information on what modules are selected from the
-	//       configuration.
-	ms.setSelected();
+        // Enable it.
+        // TODO: This by default selects all modules that are found.
+        // Eventually we would rather obey a default either from the
+        // modules themselves, from how they are found, and also
+        // have information on what modules are selected from the
+        // configuration.
+        ms.setSelected();
 
-	moduleStatus.put(mf, ms);
+        moduleStatus.put(mf, ms);
     }
 
-
     /**
      * The file filter that selects Jar files.
      */
     static class JarFileFilter implements FileFilter {
-	/*
-	 * @see java.io.FileFilter#accept(java.io.File)
-	 */
-	public boolean accept(File pathname) {
-	    return (pathname.canRead()
-		    && pathname.isFile()
-		    && pathname.getPath().toLowerCase().endsWith(".jar"));
-	}
+        /*
+         * @see java.io.FileFilter#accept(java.io.File)
+         */
+        public boolean accept(File pathname) {
+            return (pathname.canRead() && pathname.isFile() && pathname
+                    .getPath().toLowerCase().endsWith(".jar"));
+        }
     }
 }
 
-
 /**
  * Status for each of the available modules. This is created in one copy per
  * available module.
@@ -828,61 +937,60 @@
 
     /**
      * Tells if the module is enabled or not.
-     *
+     * 
      * @return true if the module is enabled.
      */
     public boolean isEnabled() {
-	return enabled;
+        return enabled;
     }
 
     /**
      * Setter for enabled.
      */
     public void setEnabled() {
-	enabled = true;
+        enabled = true;
     }
 
     /**
      * Setter for enabled.
      */
     public void setDisabled() {
-	enabled = false;
+        enabled = false;
     }
 
     /**
      * Tells if the module is selected by the user or not.
-     *
+     * 
      * @return true if it is selected.
      */
     public boolean isSelected() {
-	return selected;
+        return selected;
     }
 
-
     /**
      * Setter for selected.
      */
     public void setSelected() {
-	selected = true;
+        selected = true;
     }
 
     /**
      * Setter for selected.
      */
     public void setUnselect() {
-	selected = false;
+        selected = false;
     }
 
     /**
      * Setter for selected.
-     *
+     * 
      * @param value The value to set.
      */
     public void setSelected(boolean value) {
-	if (value) {
-	    setSelected();
-	} else {
-	    setUnselect();
-	}
+        if (value) {
+            setSelected();
+        } else {
+            setUnselect();
+        }
     }
 }

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/CoreProfileReference.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/CoreProfileReference.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/CoreProfileReference.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/CoreProfileReference.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/CoreProfileReference.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/CoreProfileReference.java	2008-07-22 10:13:24-0700
@@ -29,34 +29,30 @@
 
 /**
  * This class provides the base referencing and URL for ArgoUML core profiles.
- *
+ * 
  * @author Luis Sergio Oliveira (euluis)
  */
 public class CoreProfileReference extends ProfileReference {
-    
-    static final String PROFILES_RESOURCE_PATH = 
-        "/org/argouml/profile/profiles/uml14/";
-    
-    static final String PROFILES_BASE_URL = 
-        "http://argouml.org/profiles/uml14/";
+
+    static final String PROFILES_RESOURCE_PATH = "/org/argouml/profile/profiles/uml14/";
+
+    static final String PROFILES_BASE_URL = "http://argouml.org/profiles/uml14/";
 
     /**
-     * Constructor, which builds a ProfileReference for ArgoUML core profiles 
-     * by: 
-     * <li>prefixing the fileName with {@link #PROFILES_RESOURCE_PATH} and 
+     * Constructor, which builds a ProfileReference for ArgoUML core profiles
+     * by:
+     * <li>prefixing the fileName with {@link #PROFILES_RESOURCE_PATH} and
      * using this as the path;</li>
-     * <li>and prefixing the fileName with {@link #PROFILES_BASE_URL} and 
-     * using this as the publicReference.</li>
+     * <li>and prefixing the fileName with {@link #PROFILES_BASE_URL} and using
+     * this as the publicReference.</li>
      * 
      * @param fileName the profile file name.
      * @throws MalformedURLException if the built URL is incorrect.
      */
     public CoreProfileReference(String fileName) throws MalformedURLException {
-        super(PROFILES_RESOURCE_PATH + fileName, 
-            new URL(PROFILES_BASE_URL + fileName));
-        assert fileName != null 
-            : "null isn't acceptable as the profile file name.";
-        assert !"".equals(fileName)
-        : "the empty string isn't acceptable as the profile file name.";
+        super(PROFILES_RESOURCE_PATH + fileName, new URL(PROFILES_BASE_URL
+                + fileName));
+        assert fileName != null : "null isn't acceptable as the profile file name.";
+        assert !"".equals(fileName) : "the empty string isn't acceptable as the profile file name.";
     }
 }

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/DefaultTypeStrategy.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/DefaultTypeStrategy.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/DefaultTypeStrategy.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/DefaultTypeStrategy.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/DefaultTypeStrategy.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/DefaultTypeStrategy.java	2008-07-22 10:13:24-0700
@@ -25,9 +25,9 @@
 package org.argouml.profile;
 
 /**
- * Using this strategy profiles can provide the default used when creating new 
+ * Using this strategy profiles can provide the default used when creating new
  * parameters, operations and attributes.
- *
+ * 
  * @author maurelio1234
  */
 public interface DefaultTypeStrategy {

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/FigNodeStrategy.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/FigNodeStrategy.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/FigNodeStrategy.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/FigNodeStrategy.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/FigNodeStrategy.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/FigNodeStrategy.java	2008-07-22 10:13:24-0700
@@ -27,20 +27,20 @@
 import java.awt.Image;
 
 /**
- * Using this strategy profiles can provide icons to replace the default 
+ * Using this strategy profiles can provide icons to replace the default
  * visualization of stereotyped node according to UML 2.0 specification.
- *
+ * 
  * @author maurelio1234
  */
 public interface FigNodeStrategy {
-    
+
     /**
-     * Returns the image of the icon that should replace the model elements 
-     * having this stereotype  
+     * Returns the image of the icon that should replace the model elements
+     * having this stereotype
      * 
      * @param stereotype the stereotype model element
-     * @return the icon or <code>null</code> if the stereotype has no icon 
+     * @return the icon or <code>null</code> if the stereotype has no icon
      */
     Image getIconForStereotype(Object stereotype);
-    
+
 }

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/FileModelLoader.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/FileModelLoader.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/FileModelLoader.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/FileModelLoader.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/FileModelLoader.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/FileModelLoader.java	2008-07-22 10:13:24-0700
@@ -33,14 +33,14 @@
 
 /**
  * An implementation for the ProfileModelLoader that loads profiles from files.
- *
+ * 
  * @author maurelio1234
  */
 public class FileModelLoader extends URLModelLoader {
 
     private static final Logger LOG = Logger.getLogger(FileModelLoader.class);
 
-    public Collection loadModel(ProfileReference reference) 
+    public Collection loadModel(ProfileReference reference)
         throws ProfileException {
         LOG.info("Loading profile from file'" + reference.getPath() + "'");
         try {

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/FormatingStrategy.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/FormatingStrategy.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/FormatingStrategy.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/FormatingStrategy.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/FormatingStrategy.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/FormatingStrategy.java	2008-07-22 10:13:24-0700
@@ -30,18 +30,16 @@
  * Interface for the formating strategy to be used when formating model element
  * names.
  * 
- * @author Marcos Aurélio
+ * @author Marcos Aur�lio
  */
 public interface FormatingStrategy {
-    
+
     /**
      * Produce a string that represents the specific model element in the
      * context of the specified namespace.
      * 
-     * @param element
-     *                element to represent.
-     * @param namespace
-     *                context namespace (may be null).
+     * @param element element to represent.
+     * @param namespace context namespace (may be null).
      * @return a string representing the model element
      */
     public abstract String formatElement(Object element, Object namespace);
@@ -50,10 +48,8 @@
      * Produce a string the represents the collection of model elements in the
      * context of the specified namespace.
      * 
-     * @param iter
-     *                iterator over collection
-     * @param namespace
-     *                context namespace (may be null).
+     * @param iter iterator over collection
+     * @param namespace context namespace (may be null).
      * @return a string representing the collection
      */
     public abstract String formatCollection(Iterator iter, Object namespace);

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/Profile.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/Profile.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/Profile.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/Profile.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/Profile.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/Profile.java	2008-07-22 10:13:24-0700
@@ -28,55 +28,76 @@
 import java.util.HashSet;
 import java.util.Set;
 
+import org.argouml.uml.cognitive.critics.CrUML;
 
 /**
- * Abstract class representing a Profile.  It contains default types and 
+ * Abstract class representing a Profile. It contains default types and
  * presentation characteristics that can be tailored to various modeling
  * environments.
  * 
- * @author Marcos Aurélio
+ * @author Marcos Aur�lio
  */
 public abstract class Profile {
-    
-    private Set<Profile> importedProfiles  = new HashSet<Profile>();
-    private Set<Profile> importingProfiles = new HashSet<Profile>();
-        
+
+    private Set<String> dependencies = new HashSet<String>();
+
+    /**
+     * The critics provided by this profile
+     */
+    private Set<CrUML> critics = new HashSet<CrUML>();
+
     /**
      * Add a dependency on the given profile from this profile.
      * 
-     * @param p
-     *                the profile
-     * @throws IllegalArgumentException
-     *                 if there is some cycle on the dependency graph
+     * @param p the profile
+     * @throws IllegalArgumentException never thrown
      */
     protected final void addProfileDependency(Profile p)
         throws IllegalArgumentException {
-        
-        if (importingProfiles.contains(p)) {
-            throw new IllegalArgumentException("This profile causes a cycle "
-                    + "in the profile dependency graph!");
-        } else {
-            importedProfiles.add(p);
-            importedProfiles.addAll(p.importedProfiles);
+        addProfileDependency(p.getProfileIdentifier());
+    }
 
-            for (Profile importedProfile : importedProfiles) {
-                importedProfile.importingProfiles.add(this);
-            }
-        }
-    }    
+    /**
+     * Add a dependency on the given profile from this profile.
+     * 
+     * @param profileIdentifier the profile identifier
+     */
+    protected void addProfileDependency(String profileIdentifier) {
+        dependencies.add(profileIdentifier);
+    }
 
     /**
      * @return the dependencies
      */
     public final Set<Profile> getDependencies() {
-        return importedProfiles;
+        if (ProfileFacade.isInitiated()) {
+            Set<Profile> ret = new HashSet<Profile>();
+            for (String pid : dependencies) {
+                Profile p = ProfileFacade.getManager()
+                        .lookForRegisteredProfile(pid);
+                if (p != null) {
+                    ret.add(p);
+                    ret.addAll(p.getDependencies());
+                }
+            }
+            return ret;
+        } else {
+            return new HashSet<Profile>();
+        }
+    }
+
+    /**
+     * @return the ids of the dependencies
+     */
+    public final Set<String> getDependenciesID() {
+        return dependencies;
     }
-    
+
     /**
-     * @return the name for this profile 
+     * @return the name for this profile
      */
     public abstract String getDisplayName();
-    
+
     /**
      * @return the formating strategy offered by this profile, if any. Returns
      *         <code>null</code> if this profile has no formating strategy.
@@ -100,15 +121,14 @@
     public DefaultTypeStrategy getDefaultTypeStrategy() {
         return null;
     }
-    
+
     /**
      * @return a collection of the top level UML Packages containing the
      *         profile.
-     * @throws ProfileException
-     *                 if failed to get profile.
+     * @throws ProfileException if failed to get profile.
      */
     public abstract Collection getProfilePackages() throws ProfileException;
-    
+
     /**
      * @return the display name
      */
@@ -116,4 +136,25 @@
     public String toString() {
         return getDisplayName();
     }
+
+    /**
+     * @return Returns the critics defined by this profile.
+     */
+    public Set<CrUML> getCritics() {
+        return critics;
+    }
+
+    /**
+     * @return a unique identifier for this profile
+     */
+    public String getProfileIdentifier() {
+        return getDisplayName();
+    }
+
+    /**
+     * @param critics The critics to set.
+     */
+    protected void setCritics(Set<CrUML> critics) {
+        this.critics = critics;
+    }
 }

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/ProfileException.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/ProfileException.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/ProfileException.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/ProfileException.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/ProfileException.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/ProfileException.java	2008-07-22 10:13:24-0700
@@ -25,9 +25,9 @@
 package org.argouml.profile;
 
 /**
- * An exception to be thrown during failure in the Profile subsystem.
- * This will typically be a wrapped exception containing the exception
- * representing the underlying failure cause.
+ * An exception to be thrown during failure in the Profile subsystem. This will
+ * typically be a wrapped exception containing the exception representing the
+ * underlying failure cause.
  * 
  * @author Marcus Aurelio (maurelio1234)
  */
@@ -35,7 +35,7 @@
 
     /**
      * The constructor.
-     *
+     * 
      * @param message the message to show
      */
     public ProfileException(String message) {
@@ -44,7 +44,7 @@
 
     /**
      * The constructor.
-     *
+     * 
      * @param message the message to show
      * @param theCause the cause for the exception
      */
@@ -54,11 +54,10 @@
 
     /**
      * The constructor.
-     *
+     * 
      * @param theCause the cause for the exception
      */
     public ProfileException(Throwable theCause) {
         super(theCause);
     }
 }
-

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/ProfileFacade.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/ProfileFacade.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/ProfileFacade.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/ProfileFacade.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/ProfileFacade.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/ProfileFacade.java	2008-07-22 10:13:24-0700
@@ -25,11 +25,11 @@
 package org.argouml.profile;
 
 /**
- * The <a href="http://en.wikipedia.org/wiki/Facade_pattern">Facade</a> of the 
- * profile subsystem. 
- * It provides a simplified interface to the subsystem, and access to objects 
- * of the subsystem when the methods it provides directly aren't enough.
- *
+ * The <a href="http://en.wikipedia.org/wiki/Facade_pattern">Facade</a> of the
+ * profile subsystem. It provides a simplified interface to the subsystem, and
+ * access to objects of the subsystem when the methods it provides directly
+ * aren't enough.
+ * 
  * @author Luis Sergio Oliveira (euluis)
  * @since 0.25.4
  */
@@ -37,6 +37,7 @@
 
     /**
      * Register a profile in the {@link ProfileManager}.
+     * 
      * @param profile the profile to be registered
      */
     public static void register(Profile profile) {
@@ -45,6 +46,7 @@
 
     /**
      * Remove or unregister the profile from the {@link ProfileManager}.
+     * 
      * @param profile the profile to be removed
      */
     public static void remove(Profile profile) {
@@ -55,13 +57,12 @@
      * @return the profile manager
      */
     public static ProfileManager getManager() {
-        if (manager == null)
-            notInitialized("manager");
+        if (manager == null) notInitialized("manager");
         return manager;
     }
 
     private static void notInitialized(String string) {
-        throw new RuntimeException("ProfileFacade's " + string  
+        throw new RuntimeException("ProfileFacade's " + string
                 + " isn't initialized!");
     }
 
@@ -84,5 +85,5 @@
     public static boolean isInitiated() {
         return manager != null;
     }
-    
+
 }

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/ProfileManager.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/ProfileManager.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/ProfileManager.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/ProfileManager.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/ProfileManager.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/ProfileManager.java	2008-07-22 10:13:24-0700
@@ -28,7 +28,7 @@
 
 /**
  * Interface to the manager for the global set of registered profiles.
- *
+ * 
  * @author maurelio1234
  */
 public interface ProfileManager {
@@ -37,23 +37,24 @@
      * Register a new profile.
      * 
      * @param profile A profile to be registered so that it is available to the
-     *                users.
+     *            users.
      */
     void registerProfile(Profile profile);
 
     /**
      * Remove a profile from the list of registered profiles.
+     * Only User defined profiles can be removed.
      * 
      * @param profile the profile to unregister. It will no longer be available
-     *                for selection by users
+     *            for selection by users
      */
     void removeProfile(Profile profile);
-    
+
     /**
      * @return the list of registered profiles
      */
     List<Profile> getRegisteredProfiles();
-    
+
     /**
      * Search for a Profile with the given Java classname.
      * 
@@ -61,56 +62,64 @@
      * @param className the name of the Java class to search for.
      */
     Profile getProfileForClass(String className);
-    
+
     /**
      * @return the default list of profiles
      */
     List<Profile> getDefaultProfiles();
-    
+
     /**
      * Add a profile to the default list.
      * 
      * @param profile profile to be added to the default application profiles.
-     *                New models will reference it by default
+     *            New models will reference it by default
      */
     void addToDefaultProfiles(Profile profile);
-    
+
     /**
      * Remove a profile from the default list.
      * 
      * @param profile the profile to be removed
      */
     void removeFromDefaultProfiles(Profile profile);
-    
+
     /**
      * Add a new directory to the directory list.
      * 
-     * @param path a directory name where the manager will try to look for 
-     *             user defined profiles as XMI files
+     * @param path a directory name where the manager will try to look for user
+     *            defined profiles as XMI files
      */
     void addSearchPathDirectory(String path);
-    
+
     /**
      * Remove a directory from the directory list.
      * 
      * @param path the directory path to be removed.
      */
     void removeSearchPathDirectory(String path);
-    
+
     /**
      * @return the current directory list
      */
     List<String> getSearchPathDirectories();
-    
+
     /**
-     * Look for XMI files at the current directory list and registers
-     * them as user defined profiles.
+     * Look for XMI files at the current directory list and registers them as
+     * user defined profiles.
      */
     void refreshRegisteredProfiles();
 
     /**
-     * @return the Profile for UML, i.e., the base UML profile as defined by 
-     *         the standard.
+     * @return the Profile for UML, i.e., the base UML profile as defined by the
+     *         standard.
      */
     Profile getUMLProfile();
+
+    /**
+     * Looks for registered Profile
+     * 
+     * @param profile identifier
+     * @return profile
+     */
+    Profile lookForRegisteredProfile(String profile);
 }

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/ProfileModelLoader.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/ProfileModelLoader.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/ProfileModelLoader.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/ProfileModelLoader.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/ProfileModelLoader.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/ProfileModelLoader.java	2008-07-22 10:13:24-0700
@@ -28,20 +28,19 @@
 
 /**
  * Interface to be implemented by profile model loaders.
- *
+ * 
  * @author maurelio1234
  */
 public interface ProfileModelLoader {
-    
-    
+
     /**
      * Load a model from the specified path.
      * 
      * @param reference the reference to the profile file, which contains the
-     *                path where the profile file can be found.
+     *            path where the profile file can be found.
      * @return the set of defined packages.
      * @throws ProfileException if the profile could not be loaded for some
-     *                 reason.
+     *             reason.
      */
-    Collection loadModel(ProfileReference reference) throws ProfileException;  
+    Collection loadModel(ProfileReference reference) throws ProfileException;
 }

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/ProfileReference.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/ProfileReference.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/ProfileReference.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/ProfileReference.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/ProfileReference.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/ProfileReference.java	2008-07-22 10:13:24-0700
@@ -36,10 +36,11 @@
 public class ProfileReference {
 
     private String path;
+
     private URL url;
 
     /**
-     * Constructor. Note that this checks if the file name in path and in 
+     * Constructor. Note that this checks if the file name in path and in
      * publicReference are the same.
      * 
      * @param thePath the system path to the profile file.
@@ -49,25 +50,25 @@
         File file = new File(thePath);
         File fileFromPublicReference = new File(publicReference.getPath());
         assert file.getName().equals(fileFromPublicReference.getName()) 
-            : "File name in path and in publicReference are different.";
+                    : "File name in path and in publicReference are different.";
         path = thePath;
         url = publicReference;
     }
 
     /**
-     * @return the path to the profile, being in principle this path the 
-     * system path to the profile file.
+     * @return the path to the profile, being in principle this path the system
+     *         path to the profile file.
      */
     public String getPath() {
         return path;
     }
 
     /**
-     * @return the public reference by which the profile will 
-     * be known in models that depend on it. I.e., this reference will prefix 
-     * the IDs of the profile model elements referred in the XMI of models 
-     * that depend on the profile for which the constructed ProfileReference 
-     * is used.
+     * @return the public reference by which the profile will be known in models
+     *         that depend on it. I.e., this reference will prefix the IDs of
+     *         the profile model elements referred in the XMI of models that
+     *         depend on the profile for which the constructed ProfileReference
+     *         is used.
      */
     public URL getPublicReference() {
         return url;

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/ReaderModelLoader.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/ReaderModelLoader.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/ReaderModelLoader.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/ReaderModelLoader.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/ReaderModelLoader.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/ReaderModelLoader.java	2008-07-22 10:13:24-0700
@@ -34,16 +34,15 @@
 import org.xml.sax.InputSource;
 
 /**
- * TODO: this doesn't need a full ProfileReference since it uses the 
- * reader handed in the constructor. It doesn't make much sense to make 
- * its callers init the path to some name which it doesn't need... 
- *
+ * TODO: this doesn't need a full ProfileReference since it uses the reader
+ * handed in the constructor. It doesn't make much sense to make its callers
+ * init the path to some name which it doesn't need...
+ * 
  * @author Luis Sergio Oliveira (euluis)
  */
 public class ReaderModelLoader implements ProfileModelLoader {
 
-    private static final Logger LOG = Logger.getLogger(
-            ReaderModelLoader.class);
+    private static final Logger LOG = Logger.getLogger(ReaderModelLoader.class);
 
     private Reader reader;
 
@@ -56,24 +55,22 @@
         this.reader = theReader;
     }
 
-
-    /* 
+    /*
      * @see ProfileModelLoader#loadModel(ProfileReference)
      */
-    public Collection loadModel(ProfileReference reference) 
+    public Collection loadModel(ProfileReference reference)
         throws ProfileException {
-        
+
         if (reader == null) {
             LOG.error("Profile not found");
             throw new ProfileException("Profile not found!");
         }
-        
+
         try {
             XmiReader xmiReader = Model.getXmiReader();
             InputSource inputSource = new InputSource(reader);
             inputSource.setSystemId(reference.getPath());
-            inputSource.setPublicId(
-                    reference.getPublicReference().toString());
+            inputSource.setPublicId(reference.getPublicReference().toString());
             Collection elements = xmiReader.parse(inputSource, true);
             return elements;
         } catch (UmlException e) {

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/ResourceModelLoader.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/ResourceModelLoader.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/ResourceModelLoader.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/ResourceModelLoader.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/ResourceModelLoader.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/ResourceModelLoader.java	2008-07-22 10:13:24-0700
@@ -30,7 +30,7 @@
 
 /**
  * Loads models using the default ClassLoader or a provided one.
- *
+ * 
  * @author maurelio1234
  */
 public class ResourceModelLoader extends URLModelLoader {
@@ -40,17 +40,17 @@
      */
     private static final Logger LOG = Logger
             .getLogger(ResourceModelLoader.class);
-    
+
     private Class clazz;
-    
+
     /**
-     * The default constructor for this class. Loads resources from the same 
+     * The default constructor for this class. Loads resources from the same
      * ClassLoader that loaded this class.
      */
     public ResourceModelLoader() {
         this.clazz = this.getClass();
     }
-    
+
     /**
      * Loads resources from the ClassLoader that loaded the given class
      * 
@@ -60,12 +60,11 @@
         clazz = c;
     }
 
-    
-    public Collection loadModel(ProfileReference reference) 
+    public Collection loadModel(ProfileReference reference)
         throws ProfileException {
         LOG.info("Loading profile from resource'" + reference.getPath() + "'");
-        return super.loadModel(clazz.getResource(reference.getPath()), 
-            reference.getPublicReference());
+        return super.loadModel(clazz.getResource(reference.getPath()),
+                reference.getPublicReference());
     }
 
 }

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/StreamModelLoader.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/StreamModelLoader.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/StreamModelLoader.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/StreamModelLoader.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/StreamModelLoader.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/StreamModelLoader.java	2008-07-22 10:13:24-0700
@@ -36,30 +36,28 @@
 
 /**
  * Abstract ProfileModelLoader which loads models from an InputStream.
- *
- * @author Marcos Aurélio
+ * 
+ * @author Marcos Aur�lio
  */
 public abstract class StreamModelLoader implements ProfileModelLoader {
 
     private static final Logger LOG = Logger.getLogger(StreamModelLoader.class);
 
-
-
     /**
      * @param inputStream the stream from where the model should be loaded
      * @param publicReference the URL to be used as the public reference of the
-     *                profile that will be loaded.
+     *            profile that will be loaded.
      * @return the model
      * @throws ProfileException if the XMIReader couldn't read the input stream
      */
     public Collection loadModel(InputStream inputStream, URL publicReference)
         throws ProfileException {
-        
+
         if (inputStream == null) {
             LOG.error("Profile not found");
             throw new ProfileException("Profile not found!");
         }
-        
+
         try {
             XmiReader xmiReader = Model.getXmiReader();
             InputSource inputSource = new InputSource(inputStream);

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/URLModelLoader.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/URLModelLoader.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/URLModelLoader.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/URLModelLoader.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/URLModelLoader.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/URLModelLoader.java	2008-07-22 10:13:24-0700
@@ -34,7 +34,7 @@
 
 /**
  * Abstract ProfileModelLoader which loads models from a URL.
- *
+ * 
  * @author Tom Morris
  */
 public class URLModelLoader implements ProfileModelLoader {
@@ -48,8 +48,7 @@
      *         single package stereotyped <<profile>>
      * @throws ProfileException if the XMIReader couldn't read the profile
      */
-    public Collection loadModel(URL url, URL publicId) 
-        throws ProfileException {
+    public Collection loadModel(URL url, URL publicId) throws ProfileException {
         if (url == null) {
             throw new ProfileException("Null profile URL");
         }

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/UserDefinedProfile.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/UserDefinedProfile.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/UserDefinedProfile.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/UserDefinedProfile.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/UserDefinedProfile.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/UserDefinedProfile.java	2008-07-22 10:13:24-0700
@@ -1,4 +1,4 @@
-// $Id$
+// // $Id$
 // Copyright (c) 2007-2008 The Regents of the University of California. All
 // Rights Reserved. Permission to use, copy, modify, and distribute this
 // software and its documentation without fee, and without a written
@@ -24,35 +24,97 @@
 
 package org.argouml.profile;
 
+import java.awt.Image;
+import java.io.BufferedInputStream;
 import java.io.File;
-import java.io.Reader;
+import java.io.FileInputStream;
+import java.io.IOException;
 import java.net.MalformedURLException;
 import java.net.URL;
+import java.util.ArrayList;
 import java.util.Collection;
-import java.util.List;
+import java.util.HashMap;
+import java.util.Set;
 import java.util.StringTokenizer;
+import java.util.Vector;
 
+import javax.swing.ImageIcon;
+
+import org.apache.log4j.Logger;
+import org.argouml.cognitive.Critic;
+import org.argouml.cognitive.Decision;
+import org.argouml.cognitive.ToDoItem;
+import org.argouml.cognitive.Translator;
 import org.argouml.model.Model;
+import org.argouml.profile.internal.ocl.CrOCL;
+import org.argouml.profile.internal.ocl.InvalidOclException;
+import org.argouml.uml.cognitive.UMLDecision;
+import org.argouml.uml.cognitive.critics.CrUML;
 
 /**
  * Represents a profile defined by the user
- *
- * @author Marcos Aur�lio
+ * 
+ * @author maurelio1234
  */
 public class UserDefinedProfile extends Profile {
 
+    /**
+     * Logger.
+     */
+    private static final Logger LOG = Logger
+            .getLogger(UserDefinedProfile.class);
+
     private String displayName;
+
     private File modelFile;
+
     private Collection profilePackages;
-    private boolean fromZargo;
+
+    private UserDefinedFigNodeStrategy figNodeStrategy = new UserDefinedFigNodeStrategy();
+
+    private class UserDefinedFigNodeStrategy implements FigNodeStrategy {
+
+        private HashMap<String, Image> images = new HashMap<String, Image>();
+
+        public Image getIconForStereotype(Object stereotype) {
+            return images.get(Model.getFacade().getName(stereotype));
+        }
+
+        /**
+         * Adds a new descriptor to this strategy
+         * 
+         * @param fnd
+         */
+        public void addDesrciptor(FigNodeDescriptor fnd) {
+            images.put(fnd.stereotype, fnd.img);
+        }
+    }
+
+    private class FigNodeDescriptor {
+        private String stereotype;
+
+        private Image img;
+
+        private String src;
+
+        private int length;
+
+        /**
+         * @return if this descriptor ir valid
+         */
+        public boolean isValid() {
+            return stereotype != null && src != null && length > 0;
+        }
+    }
 
     /**
      * The default constructor for this class
      * 
-     * @param file the file from where the model should be read  
+     * @param file the file from where the model should be read
      * @throws ProfileException if the profile could not be loaded
      */
     public UserDefinedProfile(File file) throws ProfileException {
+        LOG.info("load " + file);
         displayName = file.getName();
         modelFile = file;
         ProfileReference reference = null;
@@ -60,58 +122,65 @@
             reference = new UserProfileReference(file.getPath());
         } catch (MalformedURLException e) {
             throw new ProfileException(
-                "Failed to create the ProfileReference.", e);
+                    "Failed to create the ProfileReference.", e);
         }
         profilePackages = new FileModelLoader().loadModel(reference);
-        fromZargo = false;
 
-        completeLoading();
+        finishLoading();
     }
 
-    
     /**
-     * A constructor that takes a file name and a reader, being the reader the 
-     * input method to get the profile model.
+     * A constructor that reads a file from an URL
      * 
-     * @param fileName name of the profile model file.
-     * @param reader a reader opened from where the profile model will be 
-     * loaded. 
-     * @throws ProfileException if something goes wrong in initializing the 
-     * profile.
-     */
-    public UserDefinedProfile(String fileName, Reader reader) 
-        throws ProfileException {
-        displayName = fileName;
+     * @param url the URL
+     * @throws ProfileException if the profile can't be read or is not valid
+     */
+    public UserDefinedProfile(URL url) throws ProfileException {
+        LOG.info("load " + url);
+
         ProfileReference reference = null;
-        try {
-            reference = new UserProfileReference(fileName);
-        } catch (MalformedURLException e) {
-            throw new ProfileException(
-                "Failed to create the ProfileReference.", e);
-        }
-        profilePackages = new ReaderModelLoader(reader).loadModel(reference);
-        fromZargo = true;
-        
-        completeLoading();
+        reference = new UserProfileReference(url.getPath(), url);
+        profilePackages = new URLModelLoader().loadModel(reference);
+
+        finishLoading();
     }
 
+    /**
+     * A constructor that reads a file from an URL associated with some profiles
+     * 
+     * @param dn the display name of the profile
+     * @param url the URL of the profile mode
+     * @param critics the Critics defined by this profile
+     * @param dependencies the dependencies of this profile
+     * @throws ProfileException if the model cannot be loaded
+     */
+    public UserDefinedProfile(String dn, URL url, Set<CrUML> critics,
+            Set<String> dependencies) throws ProfileException {
+        LOG.info("load " + url);
+
+        this.displayName = dn;
+        if (url != null) {
+            ProfileReference reference = null;
+            reference = new UserProfileReference(url.getPath(), url);
+            profilePackages = new URLModelLoader().loadModel(reference);
+        } else {
+            profilePackages = new ArrayList(0);
+        }
 
-    // TODO: Add missing Javadoc
-    public UserDefinedProfile(URL url) throws ProfileException {
-        ProfileReference reference = 
-            new UserProfileReference(url.getPath(), url);
-        profilePackages = new URLModelLoader().loadModel(reference);
-        fromZargo = false;
+        this.setCritics(critics);
 
-        completeLoading();
-    }
+        for (String profileID : dependencies) {
+            addProfileDependency(profileID);
+        }
 
+        finishLoading();
+    }
 
     /**
      * Reads the informations defined as TaggedValues
      */
-    private void completeLoading() {
-        
+    private void finishLoading() {
+
         for (Object obj : profilePackages) {
             if (Model.getExtensionMechanismsHelper().hasStereotype(obj,
                     "profile")) {
@@ -120,57 +189,242 @@
                 String name = Model.getFacade().getName(obj);
                 if (name != null) {
                     displayName = name;
+                } else {
+                    if (displayName == null) {
+                        displayName = Translator
+                                .localize("misc.profile.unnamed");
+                    }
                 }
+                LOG.info("profile " + displayName);
 
-                // TODO: Instead of a TaggedValue, why can't this just use
-                // Dependencies with the <<appliedProfile>> stereotype?  It
-                // seems designed exactly for cases like this.
-                
                 // load profile dependencies
-                String dep = Model.getFacade().getTaggedValueValue(obj,
-                        "Dependency");
-                StringTokenizer st = new StringTokenizer(dep, " ,;:");
+                String dependencyListStr = Model.getFacade()
+                        .getTaggedValueValue(obj, "Dependency");
+                StringTokenizer st = new StringTokenizer(dependencyListStr,
+                        " ,;:");
 
-                String prof = null;
+                String profile = null;
 
                 while (st.hasMoreTokens()) {
-                    prof = st.nextToken();
-                    if (prof != null) {
-                        this.addProfileDependency(
-                                lookForRegisteredProfile(prof));
+                    profile = st.nextToken();
+                    if (profile != null) {
+                        LOG.debug("AddingDependency " + profile);
+                        this.addProfileDependency(ProfileFacade.getManager()
+                                .lookForRegisteredProfile(profile));
+                    }
+                }
+
+            }
+        }
+
+        // load fig nodes
+        Collection allStereotypes = Model.getExtensionMechanismsHelper()
+                .getStereotypes(profilePackages);
+        for (Object stereotype : allStereotypes) {
+            Collection tags = Model.getFacade().getTaggedValuesCollection(
+                    stereotype);
+
+            for (Object tag : tags) {
+                if (Model.getFacade().getTag(tag).toLowerCase()
+                        .equals("figure")) {
+                    LOG.debug("AddFigNode "
+                            + Model.getFacade().getName(stereotype));
+
+                    String value = Model.getFacade().getValueOfTag(tag);
+                    File f = new File(value);
+                    FigNodeDescriptor fnd = null;
+                    try {
+                        fnd = loadImage(Model.getFacade().getName(stereotype)
+                                .toString(), f);
+                        figNodeStrategy.addDesrciptor(fnd);
+                    } catch (IOException e) {
+                        LOG.error("Error loading FigNode", e);
                     }
                 }
+            }
+        }
+
+        // load critiques
+        Vector<CrUML> allCritiques = getAllCritiquesInModel();
+        Set<CrUML> myCritics = this.getCritics(); 
+        
+        for (CrUML critique : allCritiques) {
+            myCritics.add(critique);
+        }
+        
+        this.setCritics(myCritics);
+    }
+
+    private CrUML generateCriticFromComment(Object critique) {
+        String ocl = "" + Model.getFacade().getBody(critique);
+        String headline = null;
+        String description = null;
+        int priority = ToDoItem.HIGH_PRIORITY;
+        Vector<Decision> supportedDecisions = new Vector<Decision>();
+        Vector<String> knowledgeTypes = new Vector<String>();
+        String moreInfoURL = null;
+
+        Collection tags = Model.getFacade().getTaggedValuesCollection(critique);
+
+        for (Object tag : tags) {
+            if (Model.getFacade().getTag(tag).toLowerCase().equals("headline")) {
+                headline = Model.getFacade().getValueOfTag(tag);
+            } else if (Model.getFacade().getTag(tag).toLowerCase().equals(
+                    "description")) {
+                description = Model.getFacade().getValueOfTag(tag);
+            } else if (Model.getFacade().getTag(tag).toLowerCase().equals(
+                    "priority")) {
+                String prioStr = Model.getFacade().getValueOfTag(tag);
+
+                if (prioStr.toLowerCase().equals("high")) {
+                    priority = ToDoItem.HIGH_PRIORITY;
+                } else if (prioStr.toLowerCase().equals("med")) {
+                    priority = ToDoItem.MED_PRIORITY;
+                } else if (prioStr.toLowerCase().equals("low")) {
+                    priority = ToDoItem.LOW_PRIORITY;
+                } else if (prioStr.toLowerCase().equals("interruptive")) {
+                    priority = ToDoItem.INTERRUPTIVE_PRIORITY;
+                }
+            } else if (Model.getFacade().getTag(tag).toLowerCase().equals(
+                    "supporteddecision")) {
+                String decStr = Model.getFacade().getValueOfTag(tag);
+
+                StringTokenizer st = new StringTokenizer(decStr, ",;:");
+
+                while (st.hasMoreTokens()) {
+                    String token = st.nextToken().trim().toLowerCase();
+
+                    if (token.equals("behavior"))
+                        supportedDecisions.add(UMLDecision.BEHAVIOR);
+                    if (token.equals("containment"))
+                        supportedDecisions.add(UMLDecision.CONTAINMENT);
+                    if (token.equals("classselection"))
+                        supportedDecisions.add(UMLDecision.CLASS_SELECTION);
+                    if (token.equals("codegen"))
+                        supportedDecisions.add(UMLDecision.CODE_GEN);
+                    if (token.equals("expectedusage"))
+                        supportedDecisions.add(UMLDecision.EXPECTED_USAGE);
+                    if (token.equals("inheritance"))
+                        supportedDecisions.add(UMLDecision.INHERITANCE);
+                    if (token.equals("instantiation"))
+                        supportedDecisions.add(UMLDecision.INSTANCIATION);
+                    if (token.equals("methods"))
+                        supportedDecisions.add(UMLDecision.METHODS);
+                    if (token.equals("modularity"))
+                        supportedDecisions.add(UMLDecision.MODULARITY);
+                    if (token.equals("naming"))
+                        supportedDecisions.add(UMLDecision.NAMING);
+                    if (token.equals("patterns"))
+                        supportedDecisions.add(UMLDecision.PATTERNS);
+                    if (token.equals("plannedextensions"))
+                        supportedDecisions.add(UMLDecision.PLANNED_EXTENSIONS);
+                    if (token.equals("relationships"))
+                        supportedDecisions.add(UMLDecision.RELATIONSHIPS);
+                    if (token.equals("statemachines"))
+                        supportedDecisions.add(UMLDecision.STATE_MACHINES);
+                    if (token.equals("stereotypes"))
+                        supportedDecisions.add(UMLDecision.STEREOTYPES);
+                    if (token.equals("storage"))
+                        supportedDecisions.add(UMLDecision.STORAGE);
+                }
+            } else if (Model.getFacade().getTag(tag).toLowerCase().equals(
+                    "knowledgetype")) {
+                String ktStr = Model.getFacade().getValueOfTag(tag);
+
+                StringTokenizer st = new StringTokenizer(ktStr, ",;:");
+
+                while (st.hasMoreTokens()) {
+                    String token = st.nextToken().trim().toLowerCase();
 
+                    if (token.equals("completeness"))
+                        knowledgeTypes.add(Critic.KT_COMPLETENESS);
+                    if (token.equals("consistency"))
+                        knowledgeTypes.add(Critic.KT_CONSISTENCY);
+                    if (token.equals("correctness"))
+                        knowledgeTypes.add(Critic.KT_CORRECTNESS);
+                    if (token.equals("designers"))
+                        knowledgeTypes.add(Critic.KT_DESIGNERS);
+                    if (token.equals("experiencial"))
+                        knowledgeTypes.add(Critic.KT_EXPERIENCIAL);
+                    if (token.equals("optimization"))
+                        knowledgeTypes.add(Critic.KT_OPTIMIZATION);
+                    if (token.equals("organizational"))
+                        knowledgeTypes.add(Critic.KT_ORGANIZATIONAL);
+                    if (token.equals("presentation"))
+                        knowledgeTypes.add(Critic.KT_PRESENTATION);
+                    if (token.equals("semantics"))
+                        knowledgeTypes.add(Critic.KT_SEMANTICS);
+                    if (token.equals("syntax"))
+                        knowledgeTypes.add(Critic.KT_SYNTAX);
+                    if (token.equals("tool"))
+                        knowledgeTypes.add(Critic.KT_TOOL);
+                }
+            } else if (Model.getFacade().getTag(tag).toLowerCase().equals(
+                    "moreinfourl")) {
+                moreInfoURL = Model.getFacade().getValueOfTag(tag);
             }
+
         }
-                
+
+        LOG.debug("OCL-Critic: " + ocl);
+
+        try {
+            return new CrOCL(ocl, headline, description, priority,
+                    supportedDecisions, knowledgeTypes, moreInfoURL);
+        } catch (InvalidOclException e) {
+            LOG.error("Invalid OCL in XMI!", e);
+
+            return null;
+        }
+
     }
 
-    private Profile lookForRegisteredProfile(String name) {
-        ProfileManager man = ProfileFacade.getManager();
-        List<Profile> regs = man.getRegisteredProfiles();
+    @SuppressWarnings("unchecked")
+    private Vector<CrUML> getAllCritiquesInModel() {
+        Vector<CrUML> ret = new Vector();
+
+        Collection comments = getAllCommentsInModel(profilePackages);
+
+        for (Object comment : comments) {
+            if (Model.getExtensionMechanismsHelper().hasStereotype(comment,
+                    "Critic")) {
+                CrUML cr = generateCriticFromComment(comment);
 
-        for (Profile profile : regs) { 
-            if (profile.getDisplayName().equalsIgnoreCase(name)) {
-                return profile;
+                if (cr != null) {
+                    ret.add(cr);
+                }
             }
         }
-        return null;
+        return ret;
+    }
+
+    @SuppressWarnings("unchecked")
+    private Collection getAllCommentsInModel(Collection objs) {
+        Collection col = new Vector<Object>();
+        for (Object obj : objs) {
+            if (Model.getFacade().isAComment(obj)) {
+                col.add(obj);
+            } else if (Model.getFacade().isANamespace(obj)) {
+                Collection contents = Model.getModelManagementHelper()
+                        .getAllContents(obj);
+                if (contents != null) {
+                    col.addAll(contents);
+                }
+            }
+        }
+        return col;
     }
-    
 
     /**
-     * @return the string that should represent this profile in the GUI. An
-     *         start (*) is placed on it if it comes from the currently opened
-     *         zargo file.
+     * @return the string that should represent this profile in the GUI.
      */
     public String getDisplayName() {
-        return displayName + (fromZargo ? "*" : "");
+        return displayName;
     }
 
-
     /**
-     * Returns null.  This profile has no formatting strategy.
+     * Returns null. This profile has no formatting strategy.
+     * 
      * @return null.
      */
     @Override
@@ -179,12 +433,13 @@
     }
 
     /**
-     * Returns null.  This profile has no figure strategy.
+     * Returns null. This profile has no figure strategy.
+     * 
      * @return null.
      */
     @Override
     public FigNodeStrategy getFigureStrategy() {
-        return null;
+        return figNodeStrategy;
     }
 
     /**
@@ -199,13 +454,34 @@
      */
     @Override
     public String toString() {
-        // TODO: I18N
-        return super.toString() + " [" + getModelFile() + "]";
+        File str = getModelFile();
+        return super.toString() + (str != null ? " [" + str + "]" : "");
     }
 
-
     @Override
     public Collection getProfilePackages() {
         return profilePackages;
     }
+
+    private FigNodeDescriptor loadImage(String stereotype, File f)
+        throws IOException {
+        FigNodeDescriptor descriptor = new FigNodeDescriptor();
+        descriptor.length = (int) f.length();
+        descriptor.src = f.getPath();
+        descriptor.stereotype = stereotype;
+
+        BufferedInputStream bis = new BufferedInputStream(
+                new FileInputStream(f));
+
+        byte[] buf = new byte[descriptor.length];
+        try {
+            bis.read(buf);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+
+        descriptor.img = new ImageIcon(buf).getImage();
+
+        return descriptor;
+    }
 }

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/UserProfileReference.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/UserProfileReference.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/UserProfileReference.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/UserProfileReference.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/UserProfileReference.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/UserProfileReference.java	2008-07-22 10:13:24-0700
@@ -30,37 +30,36 @@
 
 /**
  * This class provides the base URL for user defined profiles.
- *
+ * 
  * @author Luis Sergio Oliveira (euluis)
  */
 public class UserProfileReference extends ProfileReference {
 
-    static final String DEFAULT_USER_PROFILE_BASE_URL = 
-        "http://argouml.org/user-profiles/";
+    static final String DEFAULT_USER_PROFILE_BASE_URL = "http://argouml.org/user-profiles/";
 
     /**
      * Constructor that simply delegates to super.
      * 
-     * @param thePath see thePath documentation in 
-     * {@link ProfileReference#ProfileReference(String, URL)}.
-     * @param publicReference see publicReference documentation in 
-     * {@link ProfileReference#ProfileReference(String, URL)}.
+     * @param thePath see thePath documentation in
+     *            {@link ProfileReference#ProfileReference(String, URL)}.
+     * @param publicReference see publicReference documentation in
+     *            {@link ProfileReference#ProfileReference(String, URL)}.
      */
     public UserProfileReference(String thePath, URL publicReference) {
         super(thePath, publicReference);
     }
 
     /**
-     * Constructor, which builds a ProfileReference for a user defined profile 
-     * by prefixing the fileName with {@link #DEFAULT_USER_PROFILE_BASE_URL} 
-     * and using this as the publicReference.
+     * Constructor, which builds a ProfileReference for a user defined profile
+     * by prefixing the fileName with {@link #DEFAULT_USER_PROFILE_BASE_URL} and
+     * using this as the publicReference.
      * 
      * @param path the profile absolute file name.
      * @throws MalformedURLException if the built URL is incorrect.
      */
     public UserProfileReference(String path) throws MalformedURLException {
-        super(path, 
-            new URL(DEFAULT_USER_PROFILE_BASE_URL + new File(path).getName()));
+        super(path, new URL(DEFAULT_USER_PROFILE_BASE_URL
+                + new File(path).getName()));
     }
 
 }

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/ZipModelLoader.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/ZipModelLoader.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/ZipModelLoader.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/ZipModelLoader.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/ZipModelLoader.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/ZipModelLoader.java	2008-07-22 10:13:24-0700
@@ -44,61 +44,55 @@
 
     private static final Logger LOG = Logger.getLogger(ZipModelLoader.class);
 
-   
-    public Collection loadModel(ProfileReference reference) 
+    public Collection loadModel(ProfileReference reference)
         throws ProfileException {
         LOG.info("Loading profile from ZIP '" + reference.getPath() + "'");
-        
+
         if (!reference.getPath().endsWith("zip")) {
             throw new ProfileException("Profile could not be loaded!");
         }
 
         InputStream is = null;
         File modelFile = new File(reference.getPath());
-        // TODO: This is in the wrong place.  It's not profile specific.
+        // TODO: This is in the wrong place. It's not profile specific.
         // It needs to be moved to main XMI reading code. - tfm 20060326
         String filename = modelFile.getName();
-        String extension = filename.substring(filename.indexOf('.'),
-                filename.lastIndexOf('.'));
+        String extension = filename.substring(filename.indexOf('.'), filename
+                .lastIndexOf('.'));
         String path = modelFile.getParent();
         // Add the path of the model to the search path, so we can
         // read dependent models
         if (path != null) {
-            System.setProperty("org.argouml.model.modules_search_path",
-                    path);
+            System.setProperty("org.argouml.model.modules_search_path", path);
         }
         try {
             is = openZipStreamAt(modelFile.toURI().toURL(), extension);
         } catch (MalformedURLException e) {
-            LOG.error("Exception while loading profile '"
-                    + reference.getPath() + "'", e);
+            LOG.error("Exception while loading profile '" + reference.getPath()
+                    + "'", e);
             throw new ProfileException(e);
         } catch (IOException e) {
-            LOG.error("Exception while loading profile '"
-                    + reference.getPath() + "'", e);
+            LOG.error("Exception while loading profile '" + reference.getPath()
+                    + "'", e);
             throw new ProfileException(e);
         }
-        
+
         if (is == null) {
             throw new ProfileException("Profile could not be loaded!");
         }
-        
+
         return super.loadModel(is, reference.getPublicReference());
     }
 
     /**
      * Open a ZipInputStream to the first file found with a given extension.
-     *
-     * TODO: Remove since this is a duplicate of ZipFilePersister method
-     * when we have refactored the Persister subsystem.
-     *
-     * @param url
-     *            The URL of the zip file.
-     * @param ext
-     *            The required extension.
+     * TODO: Remove since this is a duplicate of ZipFilePersister method when we
+     * have refactored the Persister subsystem.
+     * 
+     * @param url The URL of the zip file.
+     * @param ext The required extension.
      * @return the zip stream positioned at the required location.
-     * @throws IOException
-     *             if there is a problem opening the file.
+     * @throws IOException if there is a problem opening the file.
      */
     private ZipInputStream openZipStreamAt(URL url, String ext)
         throws IOException {

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/init/InitProfileSubsystem.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/init/InitProfileSubsystem.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/init/InitProfileSubsystem.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/init/InitProfileSubsystem.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/init/InitProfileSubsystem.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/init/InitProfileSubsystem.java	2008-07-22 10:13:24-0700
@@ -25,6 +25,9 @@
 package org.argouml.profile.init;
 
 import org.argouml.profile.ProfileFacade;
+import org.argouml.profile.internal.ui.ProfilePropPanelFactory;
+import org.argouml.uml.ui.PropPanelFactory;
+import org.argouml.uml.ui.PropPanelFactoryManager;
 
 /**
  * Initializer class for the Profile subsystem.
@@ -39,6 +42,10 @@
     public void init() {
         ProfileFacade.setManager(
                 new org.argouml.profile.internal.ProfileManagerImpl());
+
+        /* Set up the property panels for critics: */
+        PropPanelFactory factory = new ProfilePropPanelFactory();
+        PropPanelFactoryManager.addPropPanelFactory(factory);    
     }
 
 }

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/internal/JavaFormatingStrategy.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/internal/JavaFormatingStrategy.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/internal/JavaFormatingStrategy.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/internal/JavaFormatingStrategy.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/internal/JavaFormatingStrategy.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/internal/JavaFormatingStrategy.java	2008-07-22 10:13:24-0700
@@ -31,11 +31,10 @@
 
 /**
  * The Formating Strategy based on Java naming conventions.
- *
- * @author Marcos Aurélio
+ * 
+ * @author maurelio1234
  */
 public class JavaFormatingStrategy implements FormatingStrategy {
-    
 
     public String formatElement(Object element, Object namespace) {
         String value = null;
@@ -44,8 +43,8 @@
         } else {
             Object elementNs = Model.getFacade().getNamespace(element);
             //
-            //   if element is an AssociationEnd use
-            //      the namespace of containing association
+            // if element is an AssociationEnd use
+            // the namespace of containing association
             //
             if (Model.getFacade().isAAssociationEnd(element)) {
                 Object assoc = Model.getFacade().getAssociation(element);
@@ -73,8 +72,7 @@
      * @param namespace the namespace
      * @return the default name for the given associationend
      */
-    protected String defaultAssocEndName(Object assocEnd,
-                                         Object namespace) {
+    protected String defaultAssocEndName(Object assocEnd, Object namespace) {
         String name = null;
         Object type = Model.getFacade().getType(assocEnd);
         if (type != null) {
@@ -102,7 +100,7 @@
 
     /**
      * Create a default association name from its ends.
-     *
+     * 
      * @param assoc the given association
      * @param ns the namespace
      * @return the default association name
@@ -169,8 +167,7 @@
      * @param element the given modelelement
      * @param pathSep the path separator character(s)
      */
-    private void buildPath(StringBuffer buffer, Object element, 
-            String pathSep) {
+    private void buildPath(StringBuffer buffer, Object element, String pathSep) {
         if (element != null) {
             Object parent = Model.getFacade().getNamespace(element);
             if (parent != null && parent != element) {
@@ -199,7 +196,6 @@
         return "[empty]";
     }
 
-
     public String formatCollection(Iterator iter, Object namespace) {
         String value = null;
         if (iter.hasNext()) {

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/internal/ModelUtils.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/internal/ModelUtils.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/internal/ModelUtils.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/internal/ModelUtils.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/internal/ModelUtils.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/internal/ModelUtils.java	2008-07-22 10:13:24-0700
@@ -30,7 +30,7 @@
 
 /**
  * Helper utility methods for searching the model.
- *
+ * 
  * @author maurelio1234
  */
 public class ModelUtils {
@@ -44,20 +44,18 @@
     public static Object findTypeInModel(String s, Object model) {
 
         if (!Model.getFacade().isANamespace(model)) {
-            throw new IllegalArgumentException(
-                    "Looking for the classifier " + s
-                    + " in a non-namespace object of " + model
+            throw new IllegalArgumentException("Looking for the classifier "
+                    + s + " in a non-namespace object of " + model
                     + ". A namespace was expected.");
         }
 
-        Collection allClassifiers =
-            Model.getModelManagementHelper()
+        Collection allClassifiers = Model.getModelManagementHelper()
                 .getAllModelElementsOfKind(model,
                         Model.getMetaTypes().getClassifier());
 
         for (Object classifier : allClassifiers) {
             if (Model.getFacade().getName(classifier) != null
-                        && Model.getFacade().getName(classifier).equals(s)) {
+                    && Model.getFacade().getName(classifier).equals(s)) {
                 return classifier;
             }
         }

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/internal/ProfileJava.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/internal/ProfileJava.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/internal/ProfileJava.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/internal/ProfileJava.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/internal/ProfileJava.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/internal/ProfileJava.java	2008-07-22 10:13:24-0700
@@ -40,20 +40,23 @@
 
 /**
  * This class represents the Java default Profile
- *
- * @author Marcos Aurélio
+ * 
+ * @author Marcos Aur�lio
  */
 public class ProfileJava extends Profile {
 
     private static final String PROFILE_FILE = "default-java.xmi";
+
     static final String NAME = "Java";
-    
+
     private ProfileModelLoader profileModelLoader;
+
     private Collection model;
-    
+
     /**
-     * The default constructor for this class 
-     * @throws ProfileException 
+     * The default constructor for this class
+     * 
+     * @throws ProfileException
      */
     @SuppressWarnings("unchecked")
     ProfileJava(Profile uml) throws ProfileException {
@@ -63,7 +66,7 @@
             profileReference = new CoreProfileReference(PROFILE_FILE);
         } catch (MalformedURLException e) {
             throw new ProfileException(
-                "Exception while creating profile reference.", e);
+                    "Exception while creating profile reference.", e);
         }
         model = profileModelLoader.loadModel(profileReference);
 
@@ -73,24 +76,21 @@
         }
 
         addProfileDependency(uml);
-    }    
-    
+    }
+
     ProfileJava() throws ProfileException {
         this(ProfileFacade.getManager().getProfileForClass(
                 ProfileUML.class.getName()));
     }
 
-
     public String getDisplayName() {
         return NAME;
     }
 
-
     @Override
     public Collection getProfilePackages() {
         return model;
     }
-    
 
     @Override
     public DefaultTypeStrategy getDefaultTypeStrategy() {
@@ -109,7 +109,7 @@
                 return ModelUtils.findTypeInModel("void", model.iterator()
                         .next());
             }
-            
+
         };
     }
 }

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/internal/ProfileManagerImpl.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/internal/ProfileManagerImpl.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/internal/ProfileManagerImpl.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/internal/ProfileManagerImpl.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/internal/ProfileManagerImpl.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/internal/ProfileManagerImpl.java	2008-07-22 10:13:24-0700
@@ -31,6 +31,7 @@
 import java.util.StringTokenizer;
 
 import org.apache.log4j.Logger;
+import org.argouml.cognitive.Agency;
 import org.argouml.configuration.Configuration;
 import org.argouml.configuration.ConfigurationKey;
 import org.argouml.model.Model;
@@ -39,16 +40,17 @@
 import org.argouml.profile.ProfileException;
 import org.argouml.profile.ProfileManager;
 import org.argouml.profile.UserDefinedProfile;
+import org.argouml.uml.cognitive.critics.CrUML;
 
 /**
  * Default <code>ProfileManager</code> implementation
- *
- * @author Marcos Aur�lio
+ * 
+ * @author maurelio1234
  */
 public class ProfileManagerImpl implements ProfileManager {
-    
-    private static final Logger LOG = Logger.getLogger(
-            ProfileManagerImpl.class);
+
+    private static final Logger LOG = Logger
+            .getLogger(ProfileManagerImpl.class);
 
     private static final String DIRECTORY_SEPARATOR = "*";
 
@@ -68,22 +70,24 @@
      * Avoids recursive configuration update when loading configuration
      */
     private boolean disableConfigurationUpdate = false;
-    
+
     private List<Profile> profiles = new ArrayList<Profile>();
 
     private List<Profile> defaultProfiles = new ArrayList<Profile>();
 
     private List<String> searchDirectories = new ArrayList<String>();
 
+    private ProfileUML profileUML = null;
     /**
      * Constructor - includes initialization of built-in default profiles.
      */
     public ProfileManagerImpl() {
         try {
-            Profile uml = new ProfileUML();
-            defaultProfiles.add(uml);
-            registerProfile(uml);
-            registerProfile(new ProfileJava(uml));
+            profileUML = new ProfileUML();
+            
+            defaultProfiles.add(profileUML);
+            registerProfile(profileUML);
+            registerProfile(new ProfileJava(profileUML));
             registerProfile(new ProfileMeta());
         } catch (ProfileException e) {
             throw new RuntimeException(e);
@@ -96,19 +100,19 @@
         loadDefaultProfilesfromConfiguration();
     }
 
-    private void loadDefaultProfilesfromConfiguration() {    
+    private void loadDefaultProfilesfromConfiguration() {
         disableConfigurationUpdate = true;
-        
+
         StringTokenizer tokenizer = new StringTokenizer(Configuration
                 .getString(KEY_DEFAULT_PROFILES), DIRECTORY_SEPARATOR, false);
 
         while (tokenizer.hasMoreTokens()) {
             String desc = tokenizer.nextToken();
             Profile p = null;
-            
+
             if (desc.charAt(0) == 'U') {
                 String fileName = desc.substring(1);
-                p = findUserDefinedProfile(new File(fileName));                
+                p = findUserDefinedProfile(new File(fileName));
             } else if (desc.charAt(0) == 'C') {
                 String className = desc.substring(1);
                 p = getProfileForClass(className);
@@ -125,7 +129,7 @@
     private void updateDefaultProfilesConfiguration() {
         if (!disableConfigurationUpdate) {
             StringBuffer buf = new StringBuffer();
-            
+
             for (Profile p : defaultProfiles) {
                 if (p instanceof UserDefinedProfile) {
                     buf.append("U"
@@ -144,16 +148,14 @@
 
     private void loadDirectoriesFromConfiguration() {
         disableConfigurationUpdate = true;
-        
-        StringTokenizer tokenizer = 
-            new StringTokenizer(
-                    Configuration.getString(KEY_DEFAULT_DIRECTORIES), 
-                    DIRECTORY_SEPARATOR, false);
+
+        StringTokenizer tokenizer = new StringTokenizer(Configuration
+                .getString(KEY_DEFAULT_DIRECTORIES), DIRECTORY_SEPARATOR, false);
 
         while (tokenizer.hasMoreTokens()) {
             searchDirectories.add(tokenizer.nextToken());
         }
-        
+
         disableConfigurationUpdate = false;
     }
 
@@ -169,35 +171,39 @@
         }
     }
 
-
     public List<Profile> getRegisteredProfiles() {
         return profiles;
     }
 
-
-    public void registerProfile(Profile p) {        
+    public void registerProfile(Profile p) {
         if (p != null && !profiles.contains(p)) {
             if (p instanceof UserDefinedProfile
                     || getProfileForClass(p.getClass().getName()) == null) {
                 profiles.add(p);
-                
-                // this profile could have not been loaded when 
-                // the default profile configuration 
+
+                for (CrUML critic : p.getCritics()) {
+                    for (Object meta : critic.getCriticizedMetatypes()) {
+                        Agency.register(critic, meta);
+                    }
+
+                    critic.setEnabled(false);
+                }
+
+                // this profile could have not been loaded when
+                // the default profile configuration
                 // was loaded at first, so we need to do it again
                 loadDefaultProfilesfromConfiguration();
             }
         }
     }
 
-
     public void removeProfile(Profile p) {
-        if (p != null) {
+        if (p != null && (p instanceof UserDefinedProfile)) {
             profiles.remove(p);
             defaultProfiles.remove(p);
         }
     }
 
-
     public Profile getProfileForClass(String profileClass) {
         Profile found = null;
         for (Profile p : profiles) {
@@ -209,29 +215,24 @@
         return found;
     }
 
-
     public void addToDefaultProfiles(Profile p) {
-        if (p != null && profiles.contains(p) 
-                && !defaultProfiles.contains(p)) {
+        if (p != null && profiles.contains(p) && !defaultProfiles.contains(p)) {
             defaultProfiles.add(p);
             updateDefaultProfilesConfiguration();
         }
     }
 
-
     public List<Profile> getDefaultProfiles() {
         return Collections.unmodifiableList(defaultProfiles);
     }
 
-
     public void removeFromDefaultProfiles(Profile p) {
-        if (p != null && profiles.contains(p)) {
+        if (p != null && profiles.contains(p) && !(p instanceof ProfileUML)) {
             defaultProfiles.remove(p);
             updateDefaultProfilesConfiguration();
         }
     }
 
-
     public void addSearchPathDirectory(String path) {
         if (path != null && !searchDirectories.contains(path)) {
             searchDirectories.add(path);
@@ -244,12 +245,10 @@
         }
     }
 
-
     public List<String> getSearchPathDirectories() {
         return Collections.unmodifiableList(searchDirectories);
     }
 
-
     public void removeSearchPathDirectory(String path) {
         if (path != null) {
             searchDirectories.remove(path);
@@ -262,7 +261,6 @@
         }
     }
 
-
     public void refreshRegisteredProfiles() {
 
         for (String dirName : searchDirectories) {
@@ -273,8 +271,7 @@
                     // TODO: Allow .zargo as profile as well?
                     if (file.getName().toLowerCase().endsWith(".xmi")) {
 
-                        boolean found = 
-                            findUserDefinedProfile(file) != null;
+                        boolean found = findUserDefinedProfile(file) != null;
 
                         if (!found) {
                             UserDefinedProfile udp = null;
@@ -284,7 +281,7 @@
                             } catch (ProfileException e) {
                                 // if an exception is raised file is unusable
                                 LOG.warn("Failed to load user defined profile "
-                                    + file.getAbsolutePath() + ".", e);
+                                        + file.getAbsolutePath() + ".", e);
                             }
                         }
                     }
@@ -294,7 +291,7 @@
     }
 
     private Profile findUserDefinedProfile(File file) {
-        
+
         for (Profile p : profiles) {
             if (p instanceof UserDefinedProfile) {
                 UserDefinedProfile udp = (UserDefinedProfile) p;
@@ -307,19 +304,22 @@
         return null;
     }
 
-
     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 profileUML;
+    }
+
+    /**
+     * @see org.argouml.profile.ProfileManager#lookForRegisteredProfile(java.lang.String)
+     */
+    public Profile lookForRegisteredProfile(String value) {
+        List<Profile> registeredProfiles = getRegisteredProfiles();
+
+        for (Profile profile : registeredProfiles) {
+            if (profile.getProfileIdentifier().equalsIgnoreCase(value)) {
+                return profile;
+            }
         }
-        return p;
+        return null;
     }
 
 }

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/internal/ProfileMeta.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/internal/ProfileMeta.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/internal/ProfileMeta.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/internal/ProfileMeta.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/internal/ProfileMeta.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/internal/ProfileMeta.java	2008-07-22 10:13:24-0700
@@ -37,19 +37,21 @@
 import org.argouml.profile.ResourceModelLoader;
 
 /**
- * Meta Profile which defines the TaggedValues to be used in User defined Profiles
- *
+ * Meta Profile which defines the TaggedValues to be used in User defined
+ * Profiles
+ * 
  * @author maas
  */
 public class ProfileMeta extends Profile {
 
     private static final String PROFILE_FILE = "metaprofile.xmi";
+
     private Collection model;
 
     /**
      * Creates a new instance of this profile
      * 
-     * @throws ProfileException
+     * @throws ProfileException if something goes wrong
      */
     @SuppressWarnings("unchecked")
     public ProfileMeta() throws ProfileException {
@@ -59,7 +61,7 @@
             profileReference = new CoreProfileReference(PROFILE_FILE);
         } catch (MalformedURLException e) {
             throw new ProfileException(
-                "Exception while creating profile reference.", e);
+                    "Exception while creating profile reference.", e);
         }
         model = profileModelLoader.loadModel(profileReference);
 
@@ -69,7 +71,7 @@
         }
 
     }
-    
+
     @Override
     public String getDisplayName() {
         return "MetaProfile";

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/internal/ProfileUML.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/internal/ProfileUML.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/internal/ProfileUML.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/internal/ProfileUML.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/internal/ProfileUML.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/internal/ProfileUML.java	2008-07-22 10:13:24-0700
@@ -40,22 +40,25 @@
 
 /**
  * This class represents the default UML profile
- *
- * @author Marcos Aurélio
+ * 
+ * @author Marcos Aur�lio
  */
 public class ProfileUML extends Profile {
-    
+
     private static final String PROFILE_FILE = "default-uml14.xmi";
 
     static final String NAME = "UML 1.4";
-    
+
     private FormatingStrategy formatingStrategy;
+
     private ProfileModelLoader profileModelLoader;
+
     private Collection model;
-    
+
     /**
-     * Construct a Profile for UML modeling. 
-     * @throws ProfileException 
+     * Construct a Profile for UML modeling.
+     * 
+     * @throws ProfileException
      */
     @SuppressWarnings("unchecked")
     ProfileUML() throws ProfileException {
@@ -66,15 +69,15 @@
             profileReference = new CoreProfileReference(PROFILE_FILE);
         } catch (MalformedURLException e) {
             throw new ProfileException(
-                "Exception while creating profile reference.", e);
+                    "Exception while creating profile reference.", e);
         }
         model = profileModelLoader.loadModel(profileReference);
 
         if (model == null) {
             model = new ArrayList();
             model.add(Model.getModelManagementFactory().createModel());
-        }        
-    }    
+        }
+    }
 
     @Override
     public FormatingStrategy getFormatingStrategy() {
@@ -86,12 +89,10 @@
         return NAME;
     }
 
-
     @Override
     public Collection getProfilePackages() {
         return model;
     }
-    
 
     @Override
     public DefaultTypeStrategy getDefaultTypeStrategy() {

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/profiles/uml14/metaprofile.xmi
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/profiles/uml14/metaprofile.xmi?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/profiles/uml14/metaprofile.xmi&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/profiles/uml14/metaprofile.xmi&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/profiles/uml14/metaprofile.xmi	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/profile/profiles/uml14/metaprofile.xmi	2008-07-22 10:13:24-0700
@@ -1,8 +1,8 @@
 <?xml version = '1.0' encoding = 'UTF-8' ?>
-<XMI xmi.version = '1.2' xmlns:UML = 'org.omg.xmi.namespace.UML' timestamp = 'Sun May 25 10:34:59 CEST 2008'>
+<XMI xmi.version = '1.2' xmlns:UML = 'org.omg.xmi.namespace.UML' timestamp = 'Thu Jul 17 07:16:58 CEST 2008'>
   <XMI.header>    <XMI.documentation>
       <XMI.exporter>ArgoUML (using Netbeans XMI Writer version 1.0)</XMI.exporter>
-      <XMI.exporterVersion>PRE-0.25.5(6) revised on $Date: 2007-05-12 08:08:08 +0200 (sam., 12 mai 2007) $ </XMI.exporterVersion>
+      <XMI.exporterVersion>PRE-0.26.beta1(6) revised on $Date: 2007-05-12 08:08:08 +0200 (sam., 12 mai 2007) $ </XMI.exporterVersion>
     </XMI.documentation>
     <XMI.metamodel xmi.name="UML" xmi.version="1.4"/></XMI.header>
   <XMI.content>
@@ -20,9 +20,9 @@
         <UML:TagDefinition xmi.id = '127-0-1-1--3790810c:11a1f2b16a5:-8000:00000000000007C8'
           name = 'Dependency' visibility = 'public' isSpecification = 'false'>
           <UML:TagDefinition.multiplicity>
-            <UML:Multiplicity xmi.id = '127-0-1-1--3790810c:11a1f2b16a5:-8000:00000000000007D7'>
+            <UML:Multiplicity xmi.id = '127-0-1-1--231af496:11aa229b828:-8000:0000000000000898'>
               <UML:Multiplicity.range>
-                <UML:MultiplicityRange xmi.id = '127-0-1-1--3790810c:11a1f2b16a5:-8000:00000000000007D6'
+                <UML:MultiplicityRange xmi.id = '127-0-1-1--231af496:11aa229b828:-8000:0000000000000897'
                   lower = '0' upper = '-1'/>
               </UML:Multiplicity.range>
             </UML:Multiplicity>
@@ -39,6 +39,77 @@
             </UML:Multiplicity>
           </UML:TagDefinition.multiplicity>
         </UML:TagDefinition>
+        <UML:Stereotype xmi.id = '127-0-1-1--259518d7:11a5dd26371:-8000:00000000000008DF'
+          name = 'Critic' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'
+          isAbstract = 'false'>
+          <UML:Stereotype.baseClass>Comment</UML:Stereotype.baseClass>
+        </UML:Stereotype>
+        <UML:TagDefinition xmi.id = '127-0-1-1--231af496:11aa229b828:-8000:0000000000000899'
+          name = 'Description' isSpecification = 'false'>
+          <UML:TagDefinition.multiplicity>
+            <UML:Multiplicity xmi.id = '127-0-1-1--231af496:11aa229b828:-8000:000000000000089A'>
+              <UML:Multiplicity.range>
+                <UML:MultiplicityRange xmi.id = '127-0-1-1--231af496:11aa229b828:-8000:000000000000089B'
+                  lower = '0' upper = '1'/>
+              </UML:Multiplicity.range>
+            </UML:Multiplicity>
+          </UML:TagDefinition.multiplicity>
+        </UML:TagDefinition>
+        <UML:TagDefinition xmi.id = '127-0-1-1--231af496:11aa229b828:-8000:000000000000089C'
+          name = 'Headline' isSpecification = 'false'>
+          <UML:TagDefinition.multiplicity>
+            <UML:Multiplicity xmi.id = '127-0-1-1--231af496:11aa229b828:-8000:000000000000089D'>
+              <UML:Multiplicity.range>
+                <UML:MultiplicityRange xmi.id = '127-0-1-1--231af496:11aa229b828:-8000:000000000000089E'
+                  lower = '0' upper = '1'/>
+              </UML:Multiplicity.range>
+            </UML:Multiplicity>
+          </UML:TagDefinition.multiplicity>
+        </UML:TagDefinition>
+        <UML:TagDefinition xmi.id = '127-0-1-1--690faa61:11b2f4ae818:-8000:00000000000008AC'
+          name = 'Priority' isSpecification = 'false'>
+          <UML:TagDefinition.multiplicity>
+            <UML:Multiplicity xmi.id = '127-0-1-1--690faa61:11b2f4ae818:-8000:00000000000008B0'>
+              <UML:Multiplicity.range>
+                <UML:MultiplicityRange xmi.id = '127-0-1-1--690faa61:11b2f4ae818:-8000:00000000000008AF'
+                  lower = '0' upper = '1'/>
+              </UML:Multiplicity.range>
+            </UML:Multiplicity>
+          </UML:TagDefinition.multiplicity>
+        </UML:TagDefinition>
+        <UML:TagDefinition xmi.id = '127-0-1-1--690faa61:11b2f4ae818:-8000:00000000000008B1'
+          name = 'SupportedDecision' isSpecification = 'false'>
+          <UML:TagDefinition.multiplicity>
+            <UML:Multiplicity xmi.id = '127-0-1-1--690faa61:11b2f4ae818:-8000:00000000000008B2'>
+              <UML:Multiplicity.range>
+                <UML:MultiplicityRange xmi.id = '127-0-1-1--690faa61:11b2f4ae818:-8000:00000000000008B3'
+                  lower = '0' upper = '1'/>
+              </UML:Multiplicity.range>
+            </UML:Multiplicity>
+          </UML:TagDefinition.multiplicity>
+        </UML:TagDefinition>
+        <UML:TagDefinition xmi.id = '127-0-1-1--690faa61:11b2f4ae818:-8000:00000000000008B4'
+          name = 'KnowldgeType' isSpecification = 'false'>
+          <UML:TagDefinition.multiplicity>
+            <UML:Multiplicity xmi.id = '127-0-1-1--690faa61:11b2f4ae818:-8000:00000000000008B5'>
+              <UML:Multiplicity.range>
+                <UML:MultiplicityRange xmi.id = '127-0-1-1--690faa61:11b2f4ae818:-8000:00000000000008B6'
+                  lower = '0' upper = '1'/>
+              </UML:Multiplicity.range>
+            </UML:Multiplicity>
+          </UML:TagDefinition.multiplicity>
+        </UML:TagDefinition>
+        <UML:TagDefinition xmi.id = '127-0-1-1--690faa61:11b2f4ae818:-8000:00000000000008B7'
+          name = 'MoreInfoURL' isSpecification = 'false'>
+          <UML:TagDefinition.multiplicity>
+            <UML:Multiplicity xmi.id = '127-0-1-1--690faa61:11b2f4ae818:-8000:00000000000008B8'>
+              <UML:Multiplicity.range>
+                <UML:MultiplicityRange xmi.id = '127-0-1-1--690faa61:11b2f4ae818:-8000:00000000000008B9'
+                  lower = '0' upper = '1'/>
+              </UML:Multiplicity.range>
+            </UML:Multiplicity>
+          </UML:TagDefinition.multiplicity>
+        </UML:TagDefinition>
       </UML:Namespace.ownedElement>
     </UML:Model>
   </XMI.content>

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/ui/ProfileSelectionTab.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/ui/ProfileSelectionTab.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/ui/ProfileSelectionTab.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/ui/ProfileSelectionTab.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/ui/ProfileSelectionTab.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/ui/ProfileSelectionTab.java	2008-07-22 10:13:24-0700
@@ -59,7 +59,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 ProfileSelectionTab extends JPanel implements

 	GUISettingsTabInterface, ActionListener {

@@ -286,8 +286,8 @@
 

 	JPanel lffPanel = new JPanel();

 	lffPanel.setLayout(new FlowLayout());

+        lffPanel.add(unregisterProfile);

 	lffPanel.add(loadFromFile);

-	lffPanel.add(unregisterProfile);

 

 	loadFromFile.addActionListener(this);

 	unregisterProfile.addActionListener(this);

@@ -335,7 +335,7 @@
                     modelUsd.fireListeners();

                 } else {

                     JOptionPane.showMessageDialog(this,

-                            "Only user defined profiles can be removed");

+                            "Only active user defined profiles can be removed");

                 }

             }

         } else if (arg0.getSource() == loadFromFile) {


Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/ui/ProjectSettingsDialog.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/ui/ProjectSettingsDialog.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/ui/ProjectSettingsDialog.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/ui/ProjectSettingsDialog.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/ui/ProjectSettingsDialog.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/ui/ProjectSettingsDialog.java	2008-07-22 10:13:24-0700
@@ -46,7 +46,7 @@
  * 
  * @author michiel
  */
-class ProjectSettingsDialog extends ArgoDialog implements WindowListener {
+public class ProjectSettingsDialog extends ArgoDialog implements WindowListener {
 
     private JButton applyButton;
     private JButton resetToDefaultButton;
@@ -248,4 +248,17 @@
         handleCancel();
     }
 
+    /**
+     * Show the dialog with the tab as selected
+     * @param profilesTab tab to be selected
+     */
+    public void showDialog(ProjectSettingsTabProfile profilesTab) {
+        try {
+            tabs.setSelectedComponent(profilesTab);           
+        } catch(Throwable t) {
+            
+        }
+        showDialog();
+    }
+
 }

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/ui/ProjectSettingsTabProfile.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/ui/ProjectSettingsTabProfile.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/ui/ProjectSettingsTabProfile.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/ui/ProjectSettingsTabProfile.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/ui/ProjectSettingsTabProfile.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/ui/ProjectSettingsTabProfile.java	2008-07-22 10:13:24-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 {

@@ -189,8 +189,8 @@
 

 	JPanel lffPanel = new JPanel();

 	lffPanel.setLayout(new FlowLayout());

+        lffPanel.add(unregisterProfile);

 	lffPanel.add(loadFromFile);

-	lffPanel.add(unregisterProfile);

 

 	loadFromFile.addActionListener(this);

 	unregisterProfile.addActionListener(this);


Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/ui/SettingsTabProfile.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/ui/SettingsTabProfile.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/ui/SettingsTabProfile.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/ui/SettingsTabProfile.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/ui/SettingsTabProfile.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/ui/SettingsTabProfile.java	2008-07-22 10:13:24-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 {
@@ -202,8 +202,8 @@
         lffPanel.add(unregisterProfile);
         lffPanel.add(refreshProfiles);
 
-        loadFromFile.addActionListener(this);
         unregisterProfile.addActionListener(this);
+        loadFromFile.addActionListener(this);
         refreshProfiles.addActionListener(this);
 
         profileSettings.add(lffPanel);

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/ui/explorer/ExplorerPopup.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/ui/explorer/ExplorerPopup.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/ui/explorer/ExplorerPopup.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/ui/explorer/ExplorerPopup.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/ui/explorer/ExplorerPopup.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/ui/explorer/ExplorerPopup.java	2008-07-22 10:13:24-0700
@@ -51,6 +51,7 @@
 import org.argouml.ui.ActionCreateContainedModelElement;
 import org.argouml.ui.ActionCreateEdgeModelElement;
 import org.argouml.ui.targetmanager.TargetManager;
+import org.argouml.uml.cognitive.critics.CrUML;
 import org.argouml.uml.diagram.ArgoDiagram;
 import org.argouml.uml.diagram.activity.ui.UMLActivityDiagram;
 import org.argouml.uml.diagram.sequence.ui.UMLSequenceDiagram;
@@ -188,11 +189,20 @@
             initMenuCreateDiagrams();
             this.add(createDiagrams);
         }
-        
-        if (!multiSelect && selectedItem instanceof Profile) {
-            this.add(new ActionExportProfileXMI((Profile) selectedItem));
+
+        try {
+            if (!multiSelect && selectedItem instanceof Profile
+                    && !((Profile) selectedItem).getProfilePackages().isEmpty()) {
+                this.add(new ActionExportProfileXMI((Profile) selectedItem));
+            }
+        } catch (Exception e) {
+
         }
-        
+
+        if (!multiSelect && selectedItem instanceof ProfileConfiguration) {
+            this.add(new ActionManageProfiles());
+        }
+
         if (modelElementsOnly) {
             initMenuCreateModelElements();
         }
@@ -759,7 +769,8 @@
             Object selectedItem) {
         boolean found = selectedItem instanceof ProfileConfiguration
                 || selectedItem instanceof Profile
-                || selectedItem instanceof ArgoDiagram;
+                || selectedItem instanceof ArgoDiagram
+                || selectedItem instanceof CrUML;
                 
         /* The next statement fixes an exception 
          * when right-clicking on e.g. an AssociationsNode 

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/ui/explorer/PerspectiveManager.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/ui/explorer/PerspectiveManager.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/ui/explorer/PerspectiveManager.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/ui/explorer/PerspectiveManager.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/ui/explorer/PerspectiveManager.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/ui/explorer/PerspectiveManager.java	2008-07-22 10:13:24-0700
@@ -77,6 +77,7 @@
 import org.argouml.ui.explorer.rules.GoPackageToClass;
 import org.argouml.ui.explorer.rules.GoPackageToElementImport;
 import org.argouml.ui.explorer.rules.GoProfileConfigurationToProfile;
+import org.argouml.ui.explorer.rules.GoProfileToCritics;
 import org.argouml.ui.explorer.rules.GoProfileToModel;
 import org.argouml.ui.explorer.rules.GoProjectToCollaboration;
 import org.argouml.ui.explorer.rules.GoProjectToDiagram;
@@ -332,6 +333,7 @@
         classPerspective.addRule(new GoProjectToProfileConfiguration());
         classPerspective.addRule(new GoProfileConfigurationToProfile());
         classPerspective.addRule(new GoProfileToModel());
+        classPerspective.addRule(new GoProfileToCritics());
         classPerspective.addRule(new GoProjectToRoots());
         classPerspective.addRule(new GoNamespaceToClassifierAndPackage());
         classPerspective.addRule(new GoNamespaceToDiagram());
@@ -350,6 +352,7 @@
         packagePerspective.addRule(new GoProjectToProfileConfiguration());
         packagePerspective.addRule(new GoProfileConfigurationToProfile());
         packagePerspective.addRule(new GoProfileToModel());
+        packagePerspective.addRule(new GoProfileToCritics());
         packagePerspective.addRule(new GoProjectToRoots());
         packagePerspective.addRule(new GoNamespaceToOwnedElements());
         packagePerspective.addRule(new GoPackageToElementImport());
@@ -398,6 +401,7 @@
         diagramPerspective.addRule(new GoProjectToProfileConfiguration());
         diagramPerspective.addRule(new GoProfileConfigurationToProfile());
         diagramPerspective.addRule(new GoProfileToModel());
+        diagramPerspective.addRule(new GoProfileToCritics());
         diagramPerspective.addRule(new GoModelToDiagrams());
         diagramPerspective.addRule(new GoDiagramToNode());
         diagramPerspective.addRule(new GoDiagramToEdge());
@@ -412,6 +416,7 @@
         inheritancePerspective.addRule(new GoProjectToProfileConfiguration());
         classPerspective.addRule(new GoProfileConfigurationToProfile());
         classPerspective.addRule(new GoProfileToModel());
+        classPerspective.addRule(new GoProfileToCritics());
         inheritancePerspective.addRule(new GoModelToBaseElements());
         inheritancePerspective
                 .addRule(new GoGeneralizableElementToSpecialized());
@@ -423,6 +428,7 @@
         associationsPerspective.addRule(new GoProjectToProfileConfiguration());
         associationsPerspective.addRule(new GoProfileConfigurationToProfile());
         associationsPerspective.addRule(new GoProfileToModel());
+        associationsPerspective.addRule(new GoProfileToCritics());
         associationsPerspective.addRule(new GoNamespaceToDiagram());
         associationsPerspective.addRule(new GoPackageToClass());
         associationsPerspective.addRule(new GoClassToAssociatedClass());
@@ -434,6 +440,7 @@
         residencePerspective.addRule(new GoProjectToProfileConfiguration());
         residencePerspective.addRule(new GoProfileConfigurationToProfile());
         residencePerspective.addRule(new GoProfileToModel());
+        residencePerspective.addRule(new GoProfileToCritics());
         residencePerspective.addRule(new GoModelToNode());
         residencePerspective.addRule(new GoNodeToResidentComponent());
         residencePerspective.addRule(new GoComponentToResidentModelElement());
@@ -468,6 +475,7 @@
         compositionPerspective.addRule(new GoProjectToProfileConfiguration());
         compositionPerspective.addRule(new GoProfileConfigurationToProfile());
         compositionPerspective.addRule(new GoProfileToModel());
+        compositionPerspective.addRule(new GoProfileToCritics());
         compositionPerspective.addRule(new GoProjectToRoots());
         compositionPerspective.addRule(new GoModelElementToContents());
         compositionPerspective.addRule(new GoModelElementToContainedDiagrams());
@@ -533,6 +541,7 @@
             new GoProjectToProfileConfiguration(), 
             new GoProfileConfigurationToProfile(),
             new GoProfileToModel(),
+            new GoProfileToCritics(),
             new GoProjectToRoots(),
             new GoSignalToReception(), new GoStateMachineToTop(),
             new GoStatemachineToDiagram(), new GoStateMachineToState(),

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/ui/explorer/rules/GoProfileToModel.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/ui/explorer/rules/GoProfileToModel.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/ui/explorer/rules/GoProfileToModel.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/ui/explorer/rules/GoProfileToModel.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/ui/explorer/rules/GoProfileToModel.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/ui/explorer/rules/GoProfileToModel.java	2008-07-22 10:13:24-0700
@@ -33,7 +33,7 @@
 import org.argouml.profile.ProfileException;
 
 /**
- * Rule for Project->Profile.
+ * Rule for Profile->Model.
  *
  */
 public class GoProfileToModel extends AbstractPerspectiveRule {
@@ -51,7 +51,8 @@
     public Collection getChildren(Object parent) {
 	if (parent instanceof Profile) {
             try {
-                return ((Profile) parent).getProfilePackages();
+                Collection col = ((Profile) parent).getProfilePackages();
+                return col;
             } catch (ProfileException e) {
                 return Collections.EMPTY_SET;
             }

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrAlreadyRealizes.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrAlreadyRealizes.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrAlreadyRealizes.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrAlreadyRealizes.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrAlreadyRealizes.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrAlreadyRealizes.java	2008-07-22 10:13:24-0700
@@ -71,6 +71,15 @@
     }
 
     /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        ret.add(Model.getMetaTypes().getUMLClass());
+        return ret;
+    }
+    
+    /**
      * The UID.
      */
     private static final long serialVersionUID = -8264991005828634274L;

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrAssocNameConflict.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrAssocNameConflict.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrAssocNameConflict.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrAssocNameConflict.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrAssocNameConflict.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrAssocNameConflict.java	2008-07-22 10:13:24-0700
@@ -147,4 +147,14 @@
         }
         return list;
     }
+    
+    /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        ret.add(Model.getMetaTypes().getNamespace());
+        return ret;
+    }
+    
 }

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrAttrNameConflict.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrAttrNameConflict.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrAttrNameConflict.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrAttrNameConflict.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrAttrNameConflict.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrAttrNameConflict.java	2008-07-22 10:13:24-0700
@@ -26,7 +26,9 @@
 
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.HashSet;
 import java.util.Iterator;
+import java.util.Set;
 
 import javax.swing.Icon;
 
@@ -104,5 +106,14 @@
 	return ClAttributeCompartment.getTheInstance();
     }
 
+    /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        ret.add(Model.getMetaTypes().getClassifier());
+        return ret;
+    }
+    
 }
 

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrCircularAssocClass.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrCircularAssocClass.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrCircularAssocClass.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrCircularAssocClass.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrCircularAssocClass.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrCircularAssocClass.java	2008-07-22 10:13:24-0700
@@ -25,7 +25,9 @@
 package org.argouml.uml.cognitive.critics;
 
 import java.util.Collection;
+import java.util.HashSet;
 import java.util.Iterator;
+import java.util.Set;
 
 import org.argouml.cognitive.Critic;
 import org.argouml.cognitive.Designer;
@@ -76,7 +78,15 @@
         return NO_PROBLEM;
     }
 
-
+    /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        ret.add(Model.getMetaTypes().getAssociationClass());
+        return ret;
+    }
+    
     /**
      * The UID.
      */

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrCircularComposition.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrCircularComposition.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrCircularComposition.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrCircularComposition.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrCircularComposition.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrCircularComposition.java	2008-07-22 10:13:24-0700
@@ -24,6 +24,9 @@
 
 package org.argouml.uml.cognitive.critics;
 
+import java.util.HashSet;
+import java.util.Set;
+
 import org.apache.log4j.Logger;
 import org.argouml.cognitive.Critic;
 import org.argouml.cognitive.Designer;
@@ -119,4 +122,13 @@
 	return WizBreakCircularComp.class;
     }
 
+    /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        ret.add(Model.getMetaTypes().getUMLClass());
+        return ret;
+    }
+    
 }

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrCircularInheritance.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrCircularInheritance.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrCircularInheritance.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrCircularInheritance.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrCircularInheritance.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrCircularInheritance.java	2008-07-22 10:13:24-0700
@@ -24,6 +24,9 @@
 
 package org.argouml.uml.cognitive.critics;
 
+import java.util.HashSet;
+import java.util.Set;
+
 import org.apache.log4j.Logger;
 import org.argouml.cognitive.Critic;
 import org.argouml.cognitive.Designer;
@@ -73,5 +76,14 @@
 	return problem;
     }
 
+    /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        ret.add(Model.getMetaTypes().getGeneralizableElement());
+        return ret;
+    }
+    
 } /* end class CrCircularInheritance */
 

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrClassMustBeAbstract.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrClassMustBeAbstract.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrClassMustBeAbstract.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrClassMustBeAbstract.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrClassMustBeAbstract.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrClassMustBeAbstract.java	2008-07-22 10:13:24-0700
@@ -24,7 +24,9 @@
 
 package org.argouml.uml.cognitive.critics;
 
+import java.util.HashSet;
 import java.util.Iterator;
+import java.util.Set;
 
 import org.argouml.cognitive.Critic;
 import org.argouml.cognitive.Designer;
@@ -71,6 +73,16 @@
 	return NO_PROBLEM;
     }
 
+
+    /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        ret.add(Model.getMetaTypes().getUMLClass());
+        return ret;
+    }
+    
     /**
      * The UID.
      */

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrCrossNamespaceAssoc.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrCrossNamespaceAssoc.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrCrossNamespaceAssoc.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrCrossNamespaceAssoc.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrCrossNamespaceAssoc.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrCrossNamespaceAssoc.java	2008-07-22 10:13:24-0700
@@ -24,7 +24,9 @@
 
 package org.argouml.uml.cognitive.critics;
 
+import java.util.HashSet;
 import java.util.Iterator;
+import java.util.Set;
 
 import org.argouml.cognitive.Critic;
 import org.argouml.cognitive.Designer;
@@ -100,4 +102,14 @@
         // If we drop out there is no problem
         return NO_PROBLEM;
     }
+    
+    /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        ret.add(Model.getMetaTypes().getAssociationClass());
+        return ret;
+    }
+    
 } /* end class CrCrossNamespaceAssoc */

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrDisambigStateName.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrDisambigStateName.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrDisambigStateName.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrDisambigStateName.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrDisambigStateName.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrDisambigStateName.java	2008-07-22 10:13:24-0700
@@ -25,7 +25,9 @@
 package org.argouml.uml.cognitive.critics;
 
 import java.util.Collection;
+import java.util.HashSet;
 import java.util.Iterator;
+import java.util.Set;
 
 import javax.swing.Icon;
 
@@ -113,6 +115,15 @@
     }
 
     /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        ret.add(Model.getMetaTypes().getState());
+        return ret;
+    }
+    
+    /**
      * The UID.
      */
     private static final long serialVersionUID = 5027208502429769593L;

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrDupParamName.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrDupParamName.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrDupParamName.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrDupParamName.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrDupParamName.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrDupParamName.java	2008-07-22 10:13:24-0700
@@ -26,7 +26,9 @@
 
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.HashSet;
 import java.util.Iterator;
+import java.util.Set;
 
 import org.argouml.cognitive.Critic;
 import org.argouml.cognitive.Designer;
@@ -82,4 +84,13 @@
 	return NO_PROBLEM;
     }
 
+    /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        ret.add(Model.getMetaTypes().getOperation());
+        return ret;
+    }
+    
 }
\ No newline at end of file

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrDupRoleNames.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrDupRoleNames.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrDupRoleNames.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrDupRoleNames.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrDupRoleNames.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrDupRoleNames.java	2008-07-22 10:13:24-0700
@@ -26,7 +26,9 @@
 
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.HashSet;
 import java.util.Iterator;
+import java.util.Set;
 
 import org.argouml.cognitive.Designer;
 import org.argouml.model.Model;
@@ -143,5 +145,13 @@
         return NO_PROBLEM;
     }
 
+    /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        ret.add(Model.getMetaTypes().getAssociationClass());
+        return ret;
+    }    
 }
 

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrEmptyPackage.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrEmptyPackage.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrEmptyPackage.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrEmptyPackage.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrEmptyPackage.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrEmptyPackage.java	2008-07-22 10:13:24-0700
@@ -25,6 +25,8 @@
 package org.argouml.uml.cognitive.critics;
 
 import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
 
 import org.apache.log4j.Logger;
 import org.argouml.cognitive.Designer;
@@ -69,5 +71,14 @@
 	return NO_PROBLEM;
     }
 
+    /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        ret.add(Model.getMetaTypes().getPackage());
+        return ret;
+    }
+    
 }
 

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrFinalSubclassed.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrFinalSubclassed.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrFinalSubclassed.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrFinalSubclassed.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrFinalSubclassed.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrFinalSubclassed.java	2008-07-22 10:13:24-0700
@@ -24,7 +24,9 @@
 
 package org.argouml.uml.cognitive.critics;
 
+import java.util.HashSet;
 import java.util.Iterator;
+import java.util.Set;
 
 import org.argouml.cognitive.Critic;
 import org.argouml.cognitive.Designer;
@@ -69,5 +71,15 @@
 	return specs.hasNext() ? PROBLEM_FOUND : NO_PROBLEM;
     }
 
+    /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        ret.add(Model.getMetaTypes().getClassifier());
+        ret.add(Model.getMetaTypes().getInterface());
+        return ret;
+    }
+    
 } /* end class CrFinalSubclassed */
 

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrForkOutgoingTransition.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrForkOutgoingTransition.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrForkOutgoingTransition.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrForkOutgoingTransition.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrForkOutgoingTransition.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrForkOutgoingTransition.java	2008-07-22 10:13:24-0700
@@ -24,6 +24,9 @@
 
 package org.argouml.uml.cognitive.critics;
 
+import java.util.HashSet;
+import java.util.Set;
+
 import org.argouml.cognitive.Designer;
 import org.argouml.model.Model;
 import org.argouml.uml.cognitive.UMLDecision;
@@ -62,4 +65,13 @@
         return PROBLEM_FOUND;
     }
 
+    /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        ret.add(Model.getMetaTypes().getTransition());
+        return ret;
+    }
+    
 }

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrIllegalGeneralization.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrIllegalGeneralization.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrIllegalGeneralization.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrIllegalGeneralization.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrIllegalGeneralization.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrIllegalGeneralization.java	2008-07-22 10:13:24-0700
@@ -24,6 +24,9 @@
 
 package org.argouml.uml.cognitive.critics;
 
+import java.util.HashSet;
+import java.util.Set;
+
 import org.argouml.cognitive.Designer;
 import org.argouml.model.Model;
 import org.argouml.uml.cognitive.UMLDecision;
@@ -71,4 +74,13 @@
 	return NO_PROBLEM;
     }
 
+    /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        ret.add(Model.getMetaTypes().getGeneralizableElement());
+        return ret;
+    }
+    
 }

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrIllegalName.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrIllegalName.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrIllegalName.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrIllegalName.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrIllegalName.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrIllegalName.java	2008-07-22 10:13:24-0700
@@ -24,6 +24,9 @@
 
 package org.argouml.uml.cognitive.critics;
 
+import java.util.HashSet;
+import java.util.Set;
+
 import javax.swing.Icon;
 
 import org.argouml.cognitive.Designer;
@@ -81,4 +84,18 @@
 	return ClClassName.getTheInstance();
     }
 
+    /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        ret.add(Model.getMetaTypes().getUMLClass());
+        ret.add(Model.getMetaTypes().getInterface());
+        ret.add(Model.getMetaTypes().getAssociationClass());
+        ret.add(Model.getMetaTypes().getOperation());
+        ret.add(Model.getMetaTypes().getParameter());
+        ret.add(Model.getMetaTypes().getState());        
+        return ret;
+    }
+    
 } /* end class CrIllegalName */

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInterfaceAllPublic.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInterfaceAllPublic.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInterfaceAllPublic.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInterfaceAllPublic.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInterfaceAllPublic.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInterfaceAllPublic.java	2008-07-22 10:13:24-0700
@@ -25,7 +25,9 @@
 package org.argouml.uml.cognitive.critics;
 
 import java.util.Collection;
+import java.util.HashSet;
 import java.util.Iterator;
+import java.util.Set;
 
 import org.argouml.cognitive.Critic;
 import org.argouml.cognitive.Designer;
@@ -77,4 +79,13 @@
 	return NO_PROBLEM;
     }
 
+    /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        ret.add(Model.getMetaTypes().getInterface());
+        return ret;
+    }
+    
 } /* end class CrInterfaceAllPublic */

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInterfaceOperOnly.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInterfaceOperOnly.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInterfaceOperOnly.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInterfaceOperOnly.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInterfaceOperOnly.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInterfaceOperOnly.java	2008-07-22 10:13:24-0700
@@ -25,7 +25,9 @@
 package org.argouml.uml.cognitive.critics;
 
 import java.util.Collection;
+import java.util.HashSet;
 import java.util.Iterator;
+import java.util.Set;
 
 import org.argouml.cognitive.Critic;
 import org.argouml.cognitive.Designer;
@@ -66,4 +68,13 @@
 	return NO_PROBLEM;
     }
 
+    /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        ret.add(Model.getMetaTypes().getInterface());
+        return ret;
+    }
+    
 } /* end class CrInterfaceOperOnly */

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInvalidBranch.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInvalidBranch.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInvalidBranch.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInvalidBranch.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInvalidBranch.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInvalidBranch.java	2008-07-22 10:13:24-0700
@@ -25,6 +25,8 @@
 package org.argouml.uml.cognitive.critics;
 
 import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
 
 import org.argouml.cognitive.Designer;
 import org.argouml.model.Model;
@@ -87,5 +89,14 @@
 	return NO_PROBLEM;
     }
 
+    /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        ret.add(Model.getMetaTypes().getPseudostate());
+        return ret;
+    }
+    
 }
 

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInvalidFork.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInvalidFork.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInvalidFork.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInvalidFork.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInvalidFork.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInvalidFork.java	2008-07-22 10:13:24-0700
@@ -25,6 +25,8 @@
 package org.argouml.uml.cognitive.critics;
 
 import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
 
 import org.argouml.cognitive.Designer;
 import org.argouml.model.Model;
@@ -75,5 +77,14 @@
 	return NO_PROBLEM;
     }
 
+    /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        ret.add(Model.getMetaTypes().getPseudostate());
+        return ret;
+    }
+    
 }
 

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInvalidForkTriggerOrGuard.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInvalidForkTriggerOrGuard.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInvalidForkTriggerOrGuard.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInvalidForkTriggerOrGuard.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInvalidForkTriggerOrGuard.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInvalidForkTriggerOrGuard.java	2008-07-22 10:13:24-0700
@@ -24,6 +24,9 @@
 
 package org.argouml.uml.cognitive.critics;
 
+import java.util.HashSet;
+import java.util.Set;
+
 import org.argouml.cognitive.Designer;
 import org.argouml.model.Model;
 import org.argouml.uml.cognitive.UMLDecision;
@@ -86,6 +89,15 @@
     }
 
     /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        ret.add(Model.getMetaTypes().getTransition());
+        return ret;
+    }
+    
+    /**
      * The UID.
      */
     private static final long serialVersionUID = -713044875133409390L;

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInvalidHistory.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInvalidHistory.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInvalidHistory.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInvalidHistory.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInvalidHistory.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInvalidHistory.java	2008-07-22 10:13:24-0700
@@ -25,6 +25,8 @@
 package org.argouml.uml.cognitive.critics;
 
 import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
 
 import org.argouml.cognitive.Designer;
 import org.argouml.model.Model;
@@ -65,5 +67,14 @@
         return NO_PROBLEM;
     }
 
+    /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        ret.add(Model.getMetaTypes().getPseudostate());
+        return ret;
+    }
+    
 }
 

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInvalidInitial.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInvalidInitial.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInvalidInitial.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInvalidInitial.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInvalidInitial.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInvalidInitial.java	2008-07-22 10:13:24-0700
@@ -25,6 +25,8 @@
 package org.argouml.uml.cognitive.critics;
 
 import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
 
 import org.argouml.cognitive.Designer;
 import org.argouml.model.Model;
@@ -73,5 +75,14 @@
 	return NO_PROBLEM;
     }
 
+    /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        ret.add(Model.getMetaTypes().getPseudostate());
+        return ret;
+    }
+    
 }
 

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInvalidJoin.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInvalidJoin.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInvalidJoin.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInvalidJoin.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInvalidJoin.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInvalidJoin.java	2008-07-22 10:13:24-0700
@@ -25,6 +25,8 @@
 package org.argouml.uml.cognitive.critics;
 
 import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
 
 import org.argouml.cognitive.Designer;
 import org.argouml.model.Model;
@@ -75,5 +77,14 @@
 	return NO_PROBLEM;
     }
 
+    /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        ret.add(Model.getMetaTypes().getPseudostate());
+        return ret;
+    }
+    
 }
 

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInvalidJoinTriggerOrGuard.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInvalidJoinTriggerOrGuard.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInvalidJoinTriggerOrGuard.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInvalidJoinTriggerOrGuard.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInvalidJoinTriggerOrGuard.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInvalidJoinTriggerOrGuard.java	2008-07-22 10:13:24-0700
@@ -24,6 +24,9 @@
 
 package org.argouml.uml.cognitive.critics;
 
+import java.util.HashSet;
+import java.util.Set;
+
 import org.argouml.cognitive.Designer;
 import org.argouml.model.Model;
 import org.argouml.uml.cognitive.UMLDecision;
@@ -89,6 +92,15 @@
     }
 
     /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        ret.add(Model.getMetaTypes().getTransition());
+        return ret;
+    }
+    
+    /**
      * The UID.
      */
     private static final long serialVersionUID = 1052354516940735748L;

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInvalidPseudoStateTrigger.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInvalidPseudoStateTrigger.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInvalidPseudoStateTrigger.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInvalidPseudoStateTrigger.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInvalidPseudoStateTrigger.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInvalidPseudoStateTrigger.java	2008-07-22 10:13:24-0700
@@ -24,6 +24,9 @@
 
 package org.argouml.uml.cognitive.critics;
 
+import java.util.HashSet;
+import java.util.Set;
+
 import org.argouml.cognitive.Designer;
 import org.argouml.model.Model;
 import org.argouml.uml.cognitive.UMLDecision;
@@ -67,4 +70,13 @@
         return NO_PROBLEM;
     }
 
+    /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        ret.add(Model.getMetaTypes().getTransition());
+        return ret;
+    }
+    
 }

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInvalidSynch.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInvalidSynch.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInvalidSynch.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInvalidSynch.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInvalidSynch.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrInvalidSynch.java	2008-07-22 10:13:24-0700
@@ -24,7 +24,9 @@
 
 package org.argouml.uml.cognitive.critics;
 
+import java.util.HashSet;
 import java.util.Iterator;
+import java.util.Set;
 
 import org.argouml.cognitive.Designer;
 import org.argouml.model.Model;
@@ -92,5 +94,14 @@
         return NO_PROBLEM;
     }
 
+    /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        ret.add(Model.getMetaTypes().getSynchState());
+        return ret;
+    }
+    
 } /* end class CrInvalidSynch */
 

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrJoinIncomingTransition.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrJoinIncomingTransition.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrJoinIncomingTransition.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrJoinIncomingTransition.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrJoinIncomingTransition.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrJoinIncomingTransition.java	2008-07-22 10:13:24-0700
@@ -24,6 +24,9 @@
 
 package org.argouml.uml.cognitive.critics;
 
+import java.util.HashSet;
+import java.util.Set;
+
 import org.argouml.cognitive.Designer;
 import org.argouml.model.Model;
 import org.argouml.uml.cognitive.UMLDecision;
@@ -62,4 +65,13 @@
         return PROBLEM_FOUND;
     }
 
+    /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        ret.add(Model.getMetaTypes().getTransition());
+        return ret;
+    }
+    
 }

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrMergeClasses.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrMergeClasses.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrMergeClasses.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrMergeClasses.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrMergeClasses.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrMergeClasses.java	2008-07-22 10:13:24-0700
@@ -26,7 +26,9 @@
 
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 
 import org.argouml.cognitive.Designer;
 import org.argouml.cognitive.ToDoItem;
@@ -91,4 +93,13 @@
 	return NO_PROBLEM;
     }
 
+    /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        ret.add(Model.getMetaTypes().getUMLClass());
+        return ret;
+    }
+    
 } /* end class CrMergeClasses */

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrMissingAttrName.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrMissingAttrName.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrMissingAttrName.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrMissingAttrName.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrMissingAttrName.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrMissingAttrName.java	2008-07-22 10:13:24-0700
@@ -24,6 +24,9 @@
 
 package org.argouml.uml.cognitive.critics;
 
+import java.util.HashSet;
+import java.util.Set;
+
 import javax.swing.Icon;
 
 import org.argouml.cognitive.Critic;
@@ -97,4 +100,13 @@
      */
     public Class getWizardClass(ToDoItem item) { return WizMEName.class; }
 
+    /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        ret.add(Model.getMetaTypes().getAttribute());
+        return ret;
+    }
+    
 }

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrMissingClassName.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrMissingClassName.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrMissingClassName.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrMissingClassName.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrMissingClassName.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrMissingClassName.java	2008-07-22 10:13:24-0700
@@ -24,6 +24,9 @@
 
 package org.argouml.uml.cognitive.critics;
 
+import java.util.HashSet;
+import java.util.Set;
+
 import javax.swing.Icon;
 
 import org.argouml.cognitive.Critic;
@@ -98,4 +101,13 @@
      */
     public Class getWizardClass(ToDoItem item) { return WizMEName.class; }
 
+    /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        ret.add(Model.getMetaTypes().getModel());
+        return ret;
+    }
+    
 }

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrMissingOperName.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrMissingOperName.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrMissingOperName.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrMissingOperName.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrMissingOperName.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrMissingOperName.java	2008-07-22 10:13:24-0700
@@ -24,6 +24,9 @@
 
 package org.argouml.uml.cognitive.critics;
 
+import java.util.HashSet;
+import java.util.Set;
+
 import org.argouml.cognitive.Critic;
 import org.argouml.cognitive.Designer;
 import org.argouml.cognitive.ToDoItem;
@@ -92,4 +95,13 @@
         return WizMEName.class;
     }
 
+    /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        ret.add(Model.getMetaTypes().getOperation());
+        return ret;
+    }
+    
 }

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrMissingStateName.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrMissingStateName.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrMissingStateName.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrMissingStateName.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrMissingStateName.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrMissingStateName.java	2008-07-22 10:13:24-0700
@@ -24,6 +24,9 @@
 
 package org.argouml.uml.cognitive.critics;
 
+import java.util.HashSet;
+import java.util.Set;
+
 import javax.swing.Icon;
 
 import org.argouml.cognitive.Critic;
@@ -127,6 +130,15 @@
     }
 
     /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        ret.add(Model.getMetaTypes().getStateVertex());
+        return ret;
+    }
+    
+    /**
      * The UID.
      */
     private static final long serialVersionUID = 1181623952639408440L;

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrMultiComposite.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrMultiComposite.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrMultiComposite.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrMultiComposite.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrMultiComposite.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrMultiComposite.java	2008-07-22 10:13:24-0700
@@ -24,6 +24,9 @@
 
 package org.argouml.uml.cognitive.critics;
 
+import java.util.HashSet;
+import java.util.Set;
+
 import org.argouml.cognitive.Critic;
 import org.argouml.cognitive.Designer;
 import org.argouml.cognitive.ToDoItem;
@@ -72,4 +75,13 @@
         return WizAssocComposite.class;
     }
 
+    /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        ret.add(Model.getMetaTypes().getAssociationEnd());
+        return ret;
+    }
+    
 } /* end class CrMultiComposite */

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrMultipleAgg.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrMultipleAgg.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrMultipleAgg.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrMultipleAgg.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrMultipleAgg.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrMultipleAgg.java	2008-07-22 10:13:24-0700
@@ -25,7 +25,9 @@
 package org.argouml.uml.cognitive.critics;
 
 import java.util.Collection;
+import java.util.HashSet;
 import java.util.Iterator;
+import java.util.Set;
 
 import org.argouml.cognitive.Critic;
 import org.argouml.cognitive.Designer;
@@ -156,4 +158,13 @@
         return WizAssocComposite.class;
     }
 
+    /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        ret.add(Model.getMetaTypes().getAssociationClass());
+        return ret;
+    }
+    
 } /* end class CrMultipleAgg */

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrMultipleDeepHistoryStates.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrMultipleDeepHistoryStates.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrMultipleDeepHistoryStates.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrMultipleDeepHistoryStates.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrMultipleDeepHistoryStates.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrMultipleDeepHistoryStates.java	2008-07-22 10:13:24-0700
@@ -25,7 +25,9 @@
 package org.argouml.uml.cognitive.critics;
 
 import java.util.Collection;
+import java.util.HashSet;
 import java.util.Iterator;
+import java.util.Set;
 
 import org.apache.log4j.Logger;
 import org.argouml.cognitive.Designer;
@@ -143,6 +145,15 @@
     }
 
     /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        ret.add(Model.getMetaTypes().getPseudostate());
+        return ret;
+    }
+    
+    /**
      * The UID.
      */
     private static final long serialVersionUID = -4893102976661022514L;

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrMultipleInitialStates.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrMultipleInitialStates.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrMultipleInitialStates.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrMultipleInitialStates.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrMultipleInitialStates.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrMultipleInitialStates.java	2008-07-22 10:13:24-0700
@@ -25,6 +25,8 @@
 package org.argouml.uml.cognitive.critics;
 
 import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
 
 import org.apache.log4j.Logger;
 import org.argouml.cognitive.Designer;
@@ -148,6 +150,15 @@
     }
 
     /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        ret.add(Model.getMetaTypes().getPseudostate());
+        return ret;
+    }
+
+    /**
      * The UID.
      */
     private static final long serialVersionUID = 4151051235876065649L;

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrMultipleShallowHistoryStates.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrMultipleShallowHistoryStates.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrMultipleShallowHistoryStates.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrMultipleShallowHistoryStates.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrMultipleShallowHistoryStates.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrMultipleShallowHistoryStates.java	2008-07-22 10:13:24-0700
@@ -25,6 +25,8 @@
 package org.argouml.uml.cognitive.critics;
 
 import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
 
 import org.apache.log4j.Logger;
 import org.argouml.cognitive.Designer;
@@ -145,6 +147,15 @@
     }
 
     /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        ret.add(Model.getMetaTypes().getPseudostate());
+        return ret;
+    }
+    
+    /**
      * The UID.
      */
     private static final long serialVersionUID = -8324054401013865193L;

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNWayAgg.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNWayAgg.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNWayAgg.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNWayAgg.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNWayAgg.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNWayAgg.java	2008-07-22 10:13:24-0700
@@ -25,7 +25,9 @@
 package org.argouml.uml.cognitive.critics;
 
 import java.util.Collection;
+import java.util.HashSet;
 import java.util.Iterator;
+import java.util.Set;
 
 import org.argouml.cognitive.Critic;
 import org.argouml.cognitive.Designer;
@@ -141,6 +143,16 @@
         return NO_PROBLEM;
     }
 
+
+    /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        ret.add(Model.getMetaTypes().getAssociationClass());
+        return ret;
+    }
+
     /**
      * The UID.
      */

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNameConflict.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNameConflict.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNameConflict.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNameConflict.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNameConflict.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNameConflict.java	2008-07-22 10:13:24-0700
@@ -25,6 +25,8 @@
 package org.argouml.uml.cognitive.critics;
 
 import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Set;
 
 import org.argouml.cognitive.Critic;
 import org.argouml.cognitive.Designer;
@@ -128,4 +130,13 @@
         return res;
     }
 
+    /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        ret.add(Model.getMetaTypes().getNamespace());
+        return ret;
+    }
+    
 }

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNameConflictAC.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNameConflictAC.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNameConflictAC.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNameConflictAC.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNameConflictAC.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNameConflictAC.java	2008-07-22 10:13:24-0700
@@ -24,8 +24,12 @@
 
 package org.argouml.uml.cognitive.critics;
 
+import java.util.HashSet;
+import java.util.Set;
+
 import org.argouml.cognitive.Critic;
 import org.argouml.cognitive.Designer;
+import org.argouml.model.Model;
 import org.argouml.uml.cognitive.UMLDecision;
 
 /**
@@ -54,5 +58,14 @@
 	return NO_PROBLEM;
     }
 
+    /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        ret.add(Model.getMetaTypes().getAssociationClass());
+        return ret;
+    }
+    
 } /* end class CrNameConflictAC */
 

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNameConfusion.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNameConfusion.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNameConfusion.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNameConfusion.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNameConfusion.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNameConfusion.java	2008-07-22 10:13:24-0700
@@ -25,7 +25,9 @@
 package org.argouml.uml.cognitive.critics;
 
 import java.util.Collection;
+import java.util.HashSet;
 import java.util.Iterator;
+import java.util.Set;
 
 import javax.swing.Icon;
 
@@ -229,4 +231,14 @@
 	return WizManyNames.class;
     }
 
+    /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        ret.add(Model.getMetaTypes().getClassifier());
+        ret.add(Model.getMetaTypes().getState());
+        return ret;
+    }
+    
 }

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNavFromInterface.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNavFromInterface.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNavFromInterface.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNavFromInterface.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNavFromInterface.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNavFromInterface.java	2008-07-22 10:13:24-0700
@@ -24,7 +24,9 @@
 
 package org.argouml.uml.cognitive.critics;
 
+import java.util.HashSet;
 import java.util.Iterator;
+import java.util.Set;
 
 import org.argouml.cognitive.Critic;
 import org.argouml.cognitive.Designer;
@@ -147,6 +149,15 @@
     }
 
     /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        ret.add(Model.getMetaTypes().getAssociationClass());
+        return ret;
+    }
+
+    /**
      * The UID.
      */
     private static final long serialVersionUID = 2660051106458704056L;

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNoAssociations.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNoAssociations.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNoAssociations.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNoAssociations.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNoAssociations.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNoAssociations.java	2008-07-22 10:13:24-0700
@@ -25,7 +25,9 @@
 package org.argouml.uml.cognitive.critics;
 
 import java.util.Collection;
+import java.util.HashSet;
 import java.util.Iterator;
+import java.util.Set;
 
 import org.argouml.cognitive.Critic;
 import org.argouml.cognitive.Designer;
@@ -178,4 +180,15 @@
         return false;
     }
 
+    /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        ret.add(Model.getMetaTypes().getUMLClass());
+        ret.add(Model.getMetaTypes().getActor());
+        ret.add(Model.getMetaTypes().getUseCase());
+        return ret;
+    }
+    
 }

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNoGuard.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNoGuard.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNoGuard.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNoGuard.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNoGuard.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNoGuard.java	2008-07-22 10:13:24-0700
@@ -24,6 +24,9 @@
 
 package org.argouml.uml.cognitive.critics;
 
+import java.util.HashSet;
+import java.util.Set;
+
 import org.argouml.cognitive.Critic;
 import org.argouml.cognitive.Designer;
 import org.argouml.model.Model;
@@ -83,4 +86,13 @@
 	return NO_PROBLEM;
     }
 
+    /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        ret.add(Model.getMetaTypes().getTransition());
+        return ret;
+    }
+    
 }

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNoIncomingTransitions.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNoIncomingTransitions.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNoIncomingTransitions.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNoIncomingTransitions.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNoIncomingTransitions.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNoIncomingTransitions.java	2008-07-22 10:13:24-0700
@@ -25,6 +25,8 @@
 package org.argouml.uml.cognitive.critics;
 
 import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
 
 import org.argouml.cognitive.Designer;
 import org.argouml.model.Model;
@@ -90,4 +92,13 @@
 	return NO_PROBLEM;
     }
 
+    /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        ret.add(Model.getMetaTypes().getStateVertex());
+        return ret;
+    }
+    
 }

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNoInitialState.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNoInitialState.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNoInitialState.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNoInitialState.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNoInitialState.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNoInitialState.java	2008-07-22 10:13:24-0700
@@ -25,7 +25,9 @@
 package org.argouml.uml.cognitive.critics;
 
 import java.util.Collection;
+import java.util.HashSet;
 import java.util.Iterator;
+import java.util.Set;
 
 import org.argouml.cognitive.Designer;
 import org.argouml.model.Model;
@@ -83,4 +85,13 @@
 	return NO_PROBLEM;
     }
 
+    /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        ret.add(Model.getMetaTypes().getCompositeState());
+        return ret;
+    }
+    
 } /* end class CrNoInitialState */

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNoInstanceVariables.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNoInstanceVariables.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNoInstanceVariables.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNoInstanceVariables.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNoInstanceVariables.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNoInstanceVariables.java	2008-07-22 10:13:24-0700
@@ -24,7 +24,9 @@
 
 package org.argouml.uml.cognitive.critics;
 
+import java.util.HashSet;
 import java.util.Iterator;
+import java.util.Set;
 
 import javax.swing.Icon;
 
@@ -172,5 +174,16 @@
     public Class getWizardClass(ToDoItem item) {
 	return WizAddInstanceVariable.class;
     }
+    
+    /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        ret.add(Model.getMetaTypes().getUMLClass());
+        return ret;
+    }
+    
 }
 
+

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNoOperations.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNoOperations.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNoOperations.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNoOperations.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNoOperations.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNoOperations.java	2008-07-22 10:13:24-0700
@@ -24,7 +24,9 @@
 
 package org.argouml.uml.cognitive.critics;
 
+import java.util.HashSet;
 import java.util.Iterator;
+import java.util.Set;
 
 import javax.swing.Icon;
 
@@ -154,5 +156,16 @@
     public Class getWizardClass(ToDoItem item) {
         return WizAddOperation.class;
     }
+    
+    /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        ret.add(Model.getMetaTypes().getUMLClass());
+        ret.add(Model.getMetaTypes().getInterface());
+        return ret;
+    }
+    
 }
 

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNoOutgoingTransitions.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNoOutgoingTransitions.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNoOutgoingTransitions.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNoOutgoingTransitions.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNoOutgoingTransitions.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNoOutgoingTransitions.java	2008-07-22 10:13:24-0700
@@ -25,6 +25,8 @@
 package org.argouml.uml.cognitive.critics;
 
 import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
 
 import org.argouml.cognitive.Designer;
 import org.argouml.model.Model;
@@ -80,4 +82,13 @@
 	return NO_PROBLEM;
     }
 
+    /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        ret.add(Model.getMetaTypes().getStateVertex());
+        return ret;
+    }
+    
 }

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNoTransitions.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNoTransitions.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNoTransitions.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNoTransitions.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNoTransitions.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNoTransitions.java	2008-07-22 10:13:24-0700
@@ -25,6 +25,8 @@
 package org.argouml.uml.cognitive.critics;
 
 import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
 
 import org.argouml.cognitive.Critic;
 import org.argouml.cognitive.Designer;
@@ -90,4 +92,13 @@
 	return NO_PROBLEM;
     }
 
+    /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        ret.add(Model.getMetaTypes().getStateVertex());
+        return ret;
+    }
+
 }

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNoTriggerOrGuard.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNoTriggerOrGuard.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNoTriggerOrGuard.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNoTriggerOrGuard.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNoTriggerOrGuard.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNoTriggerOrGuard.java	2008-07-22 10:13:24-0700
@@ -25,6 +25,9 @@
 
 package org.argouml.uml.cognitive.critics;
 
+import java.util.HashSet;
+import java.util.Set;
+
 import org.argouml.cognitive.Critic;
 import org.argouml.cognitive.Designer;
 import org.argouml.model.Model;
@@ -104,6 +107,15 @@
     }
 
     /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        ret.add(Model.getMetaTypes().getTransition());
+        return ret;
+    }
+    
+    /**
      * The UID.
      */
     private static final long serialVersionUID = -301548543890007262L;

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNodesOverlap.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNodesOverlap.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNodesOverlap.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNodesOverlap.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNodesOverlap.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNodesOverlap.java	2008-07-22 10:13:24-0700
@@ -25,12 +25,15 @@
 package org.argouml.uml.cognitive.critics;
 
 import java.awt.Rectangle;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 
 import org.argouml.cognitive.Critic;
 import org.argouml.cognitive.Designer;
 import org.argouml.cognitive.ListSet;
 import org.argouml.cognitive.ToDoItem;
+import org.argouml.model.Model;
 import org.argouml.uml.cognitive.UMLDecision;
 import org.argouml.uml.diagram.deployment.ui.FigObject;
 import org.argouml.uml.diagram.deployment.ui.UMLDeploymentDiagram;
@@ -176,6 +179,14 @@
 	return offs;
     }
 
+    /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        return ret;
+    }
+    
 } 
 
 

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNonAggDataType.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNonAggDataType.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNonAggDataType.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNonAggDataType.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNonAggDataType.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrNonAggDataType.java	2008-07-22 10:13:24-0700
@@ -24,8 +24,12 @@
 
 package org.argouml.uml.cognitive.critics;
 
+import java.util.HashSet;
+import java.util.Set;
+
 import org.argouml.cognitive.Critic;
 import org.argouml.cognitive.Designer;
+import org.argouml.model.Model;
 import org.argouml.uml.cognitive.UMLDecision;
 
 /**
@@ -56,5 +60,14 @@
 	return NO_PROBLEM;
     }
 
+    /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        ret.add(Model.getMetaTypes().getDataType());
+        return ret;
+    }
+    
 } /* end class CrNonAggDataType */
 

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrOperNameConflict.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrOperNameConflict.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrOperNameConflict.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrOperNameConflict.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrOperNameConflict.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrOperNameConflict.java	2008-07-22 10:13:24-0700
@@ -26,7 +26,9 @@
 
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.HashSet;
 import java.util.Iterator;
+import java.util.Set;
 
 import javax.swing.Icon;
 
@@ -267,4 +269,13 @@
 	return false;
     }
 
+    /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        ret.add(Model.getMetaTypes().getClassifier());
+        return ret;
+    }
+    
 }

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrOppEndConflict.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrOppEndConflict.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrOppEndConflict.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrOppEndConflict.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrOppEndConflict.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrOppEndConflict.java	2008-07-22 10:13:24-0700
@@ -26,8 +26,10 @@
 
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Set;
 
 import org.argouml.cognitive.Critic;
 import org.argouml.cognitive.Designer;
@@ -80,4 +82,14 @@
         }
         return problem;
     }
+    
+    /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        ret.add(Model.getMetaTypes().getAssociationEnd());
+        return ret;
+    }
+    
 } /* end class CrOppEndConflict */

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrOppEndVsAttr.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrOppEndVsAttr.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrOppEndVsAttr.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrOppEndVsAttr.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrOppEndVsAttr.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrOppEndVsAttr.java	2008-07-22 10:13:24-0700
@@ -26,7 +26,9 @@
 
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.HashSet;
 import java.util.Iterator;
+import java.util.Set;
 
 import org.argouml.cognitive.Critic;
 import org.argouml.cognitive.Designer;
@@ -137,6 +139,15 @@
     }
 
     /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        ret.add(Model.getMetaTypes().getClassifier());
+        return ret;
+    }
+    
+    /**
      * The UID.
      */
     private static final long serialVersionUID = 5784567698177480475L;

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrReservedName.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrReservedName.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrReservedName.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrReservedName.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrReservedName.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrReservedName.java	2008-07-22 10:13:24-0700
@@ -25,7 +25,9 @@
 package org.argouml.uml.cognitive.critics;
 
 import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 
 import javax.swing.Icon;
 
@@ -220,6 +222,18 @@
     }
 
     /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        ret.add(Model.getMetaTypes().getClassifier());
+        ret.add(Model.getMetaTypes().getOperation());
+        ret.add(Model.getMetaTypes().getState());
+        ret.add(Model.getMetaTypes().getAssociation());
+        return ret;
+    }
+    
+    /**
      * The UID.
      */
     private static final long serialVersionUID = -5839267391209851505L;

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrSubclassReference.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrSubclassReference.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrSubclassReference.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrSubclassReference.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrSubclassReference.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrSubclassReference.java	2008-07-22 10:13:24-0700
@@ -27,7 +27,9 @@
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Enumeration;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 
 import org.argouml.cognitive.Critic;
 import org.argouml.cognitive.Designer;
@@ -147,4 +149,13 @@
 	return offs;
     }
 
+    /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        ret.add(Model.getMetaTypes().getUMLClass());
+        return ret;
+    }
+    
 }

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrTooManyAssoc.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrTooManyAssoc.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrTooManyAssoc.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrTooManyAssoc.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrTooManyAssoc.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrTooManyAssoc.java	2008-07-22 10:13:24-0700
@@ -25,6 +25,8 @@
 package org.argouml.uml.cognitive.critics;
 
 import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
 
 import org.argouml.cognitive.Designer;
 import org.argouml.model.Model;
@@ -64,4 +66,13 @@
 	return PROBLEM_FOUND;
     }
 
+    /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        ret.add(Model.getMetaTypes().getUMLClass());
+        return ret;
+    }
+    
 } /* end class CrTooManyAssoc */

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrTooManyAttr.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrTooManyAttr.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrTooManyAttr.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrTooManyAttr.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrTooManyAttr.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrTooManyAttr.java	2008-07-22 10:13:24-0700
@@ -25,7 +25,9 @@
 package org.argouml.uml.cognitive.critics;
 
 import java.util.Collection;
+import java.util.HashSet;
 import java.util.Iterator;
+import java.util.Set;
 
 import org.argouml.cognitive.Designer;
 import org.argouml.model.Model;
@@ -79,6 +81,15 @@
     }
 
     /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        ret.add(Model.getMetaTypes().getUMLClass());
+        return ret;
+    }
+    
+    /**
      * The UID.
      */
     private static final long serialVersionUID = 1281218975903539324L;

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrTooManyClasses.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrTooManyClasses.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrTooManyClasses.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrTooManyClasses.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrTooManyClasses.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrTooManyClasses.java	2008-07-22 10:13:24-0700
@@ -26,6 +26,8 @@
 
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
 
 import org.argouml.cognitive.Designer;
 import org.argouml.model.Model;
@@ -74,6 +76,15 @@
     }
 
     /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        ret.add(Model.getMetaTypes().getNamespace());
+        return ret;
+    }    
+    
+    /**
      * The UID.
      */
     private static final long serialVersionUID = -3270186791825482658L;

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrTooManyOper.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrTooManyOper.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrTooManyOper.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrTooManyOper.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrTooManyOper.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrTooManyOper.java	2008-07-22 10:13:24-0700
@@ -25,7 +25,9 @@
 package org.argouml.uml.cognitive.critics;
 
 import java.util.Collection;
+import java.util.HashSet;
 import java.util.Iterator;
+import java.util.Set;
 
 import org.argouml.cognitive.Designer;
 import org.argouml.model.Model;
@@ -80,6 +82,15 @@
     }
 
     /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        ret.add(Model.getMetaTypes().getUMLClass());
+        return ret;
+    }
+    
+    /**
      * The UID.
      */
     private static final long serialVersionUID = 3221965323817473947L;

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrTooManyStates.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrTooManyStates.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrTooManyStates.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrTooManyStates.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrTooManyStates.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrTooManyStates.java	2008-07-22 10:13:24-0700
@@ -25,6 +25,8 @@
 package org.argouml.uml.cognitive.critics;
 
 import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
 
 import org.argouml.cognitive.Designer;
 import org.argouml.model.Model;
@@ -68,6 +70,15 @@
     }
 
     /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        ret.add(Model.getMetaTypes().getCompositeState());
+        return ret;
+    }
+    
+    /**
      * The UID.
      */
     private static final long serialVersionUID = -7320341818814870066L;

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrTooManyTransitions.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrTooManyTransitions.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrTooManyTransitions.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrTooManyTransitions.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrTooManyTransitions.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrTooManyTransitions.java	2008-07-22 10:13:24-0700
@@ -25,6 +25,8 @@
 package org.argouml.uml.cognitive.critics;
 
 import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
 
 import org.argouml.cognitive.Designer;
 import org.argouml.model.Model;
@@ -72,6 +74,15 @@
     }
 
     /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        ret.add(Model.getMetaTypes().getStateVertex());
+        return ret;
+    }
+    
+    /**
      * The UID.
      */
     private static final long serialVersionUID = -5732942378849267065L;

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrUML.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrUML.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrUML.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrUML.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrUML.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrUML.java	2008-07-22 10:13:24-0700
@@ -24,6 +24,9 @@
 
 package org.argouml.uml.cognitive.critics;
 
+import java.util.HashSet;
+import java.util.Set;
+
 import org.apache.log4j.Logger;
 import org.argouml.cognitive.Critic;
 import org.argouml.cognitive.Designer;
@@ -54,6 +57,13 @@
      */
     private static final Logger LOG = Logger.getLogger(CrUML.class);
 
+   /**
+    * By default looks for the localized strings at the <code>critics</code>
+    * Resource, but critics defined elsewhere (out of ArgoUML main tree)
+    * may override this parameter
+    */  
+    private String localizationPrefix = "critics";
+    
     /**
      * The constructor for this class.
      */
@@ -61,6 +71,19 @@
     }
 
     /**
+     * The constructor for this class overriding the default
+     * localization resource.
+     * 
+     * @param localizationPrefix the overriding localization resource
+     */
+    public CrUML(String localizationPrefix) {
+        if (localizationPrefix != null) {
+            this.localizationPrefix = localizationPrefix;
+            setupHeadAndDesc();
+        }
+    }
+    
+    /**
      * Set the resources for this critic based on the class name.
      *
      * @param key is the class name.
@@ -88,7 +111,7 @@
      * @return the localized string
      */
     protected String getLocalizedString(String key, String suffix) {
-        return Translator.localize("critics." + key + suffix);
+        return Translator.localize(localizationPrefix + "." + key + suffix);
     }
     
     /**
@@ -118,11 +141,13 @@
      * appears in the to-do tab of the details pane).
      * 
      * MVW: Maybe we can make it part of the constructor CrUML()?
+     * 
+     * FIXME: why override if nobody uses?
      */
-    @Override
-    public final void setHeadline(String s) {
-        setupHeadAndDesc();
-    }
+    //@Override
+    //public final void setHeadline(String s) {
+        //setupHeadAndDesc();
+    //}
 
     /**
      * Set up the locale specific text for the critic headline
@@ -242,7 +267,17 @@
         return className.substring(className.lastIndexOf('.') + 1);
     }
 
-
+    /**
+     *  Get the metatypes to be criticized by this critic, no
+     *  metatype is assumed by default.
+     * 
+     * @return the metatypes 
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        return ret;
+    }
+    
     /**
      * The UID.
      */

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrUnconventionalAttrName.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrUnconventionalAttrName.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrUnconventionalAttrName.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrUnconventionalAttrName.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrUnconventionalAttrName.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrUnconventionalAttrName.java	2008-07-22 10:13:24-0700
@@ -24,6 +24,9 @@
 
 package org.argouml.uml.cognitive.critics;
 
+import java.util.HashSet;
+import java.util.Set;
+
 import javax.swing.Icon;
 
 import org.argouml.cognitive.Critic;
@@ -216,6 +219,15 @@
     }
 
     /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        ret.add(Model.getMetaTypes().getAttribute());
+        return ret;
+    }
+    
+    /**
      * The UID.
      */
     private static final long serialVersionUID = 4741909365018862474L;

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrUnconventionalClassName.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrUnconventionalClassName.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrUnconventionalClassName.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrUnconventionalClassName.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrUnconventionalClassName.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrUnconventionalClassName.java	2008-07-22 10:13:24-0700
@@ -24,6 +24,9 @@
 
 package org.argouml.uml.cognitive.critics;
 
+import java.util.HashSet;
+import java.util.Set;
+
 import javax.swing.Icon;
 
 import org.argouml.cognitive.Critic;
@@ -126,6 +129,15 @@
     public Class getWizardClass(ToDoItem item) { return WizMEName.class; }
 
     /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        ret.add(Model.getMetaTypes().getUMLClass());
+        return ret;
+    }
+    
+    /**
      * The UID.
      */
     private static final long serialVersionUID = -3341858698991522822L;

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrUnconventionalOperName.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrUnconventionalOperName.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrUnconventionalOperName.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrUnconventionalOperName.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrUnconventionalOperName.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrUnconventionalOperName.java	2008-07-22 10:13:24-0700
@@ -24,6 +24,9 @@
 
 package org.argouml.uml.cognitive.critics;
 
+import java.util.HashSet;
+import java.util.Set;
+
 import org.argouml.cognitive.Critic;
 import org.argouml.cognitive.Designer;
 import org.argouml.cognitive.ListSet;
@@ -193,4 +196,13 @@
         return WizOperName.class;
     }
 
+    /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        ret.add(Model.getMetaTypes().getOperation());
+        return ret;
+    }
+    
 } 

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrUnconventionalPackName.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrUnconventionalPackName.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrUnconventionalPackName.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrUnconventionalPackName.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrUnconventionalPackName.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrUnconventionalPackName.java	2008-07-22 10:13:24-0700
@@ -24,6 +24,9 @@
 
 package org.argouml.uml.cognitive.critics;
 
+import java.util.HashSet;
+import java.util.Set;
+
 import javax.swing.Icon;
 
 import org.argouml.cognitive.Critic;
@@ -124,6 +127,15 @@
         return sug.toString();
     }
 
+    /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        ret.add(Model.getMetaTypes().getPackage());
+        return ret;
+    }
+
     /*
      * @see org.argouml.cognitive.critics.Critic#getWizardClass(org.argouml.cognitive.ToDoItem)
      */

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrUnnavigableAssoc.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrUnnavigableAssoc.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrUnnavigableAssoc.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrUnnavigableAssoc.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrUnnavigableAssoc.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrUnnavigableAssoc.java	2008-07-22 10:13:24-0700
@@ -25,7 +25,9 @@
 package org.argouml.uml.cognitive.critics;
 
 import java.util.Collection;
+import java.util.HashSet;
 import java.util.Iterator;
+import java.util.Set;
 
 import org.argouml.cognitive.Designer;
 import org.argouml.cognitive.ToDoItem;
@@ -69,4 +71,13 @@
      */
     public Class getWizardClass(ToDoItem item) { return WizNavigable.class; }
 
+    /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        ret.add(Model.getMetaTypes().getAssociationClass());
+        return ret;
+    }
+    
 } /* end class CrUnnavigableAssoc */

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrUselessAbstract.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrUselessAbstract.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrUselessAbstract.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrUselessAbstract.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrUselessAbstract.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrUselessAbstract.java	2008-07-22 10:13:24-0700
@@ -28,7 +28,9 @@
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Enumeration;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 
 import org.argouml.cognitive.Designer;
 import org.argouml.cognitive.Goal;
@@ -78,6 +80,15 @@
 	return true; // no concrete subclasses defined, this class is "useless"
     }
 
+    /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        ret.add(Model.getMetaTypes().getUMLClass());
+        return ret;
+    }
+    
 } /* end class CrUselessAbstract */
 
 

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrUselessInterface.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrUselessInterface.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrUselessInterface.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrUselessInterface.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrUselessInterface.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrUselessInterface.java	2008-07-22 10:13:24-0700
@@ -24,7 +24,9 @@
 
 package org.argouml.uml.cognitive.critics;
 
+import java.util.HashSet;
 import java.util.Iterator;
+import java.util.Set;
 
 import org.argouml.cognitive.Critic;
 import org.argouml.cognitive.Designer;
@@ -78,6 +80,15 @@
     }
 
     /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        ret.add(Model.getMetaTypes().getInterface());
+        return ret;
+    }
+    
+    /**
      * The UID.
      */
     private static final long serialVersionUID = -6586457111453473553L;

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrUtilityViolated.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrUtilityViolated.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrUtilityViolated.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrUtilityViolated.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrUtilityViolated.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/CrUtilityViolated.java	2008-07-22 10:13:24-0700
@@ -26,7 +26,9 @@
 
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.HashSet;
 import java.util.Iterator;
+import java.util.Set;
 
 import org.argouml.cognitive.Designer;
 import org.argouml.model.Model;
@@ -94,4 +96,14 @@
 	}
         return NO_PROBLEM;
     }
+
+    /**
+     * @see org.argouml.uml.cognitive.critics.CrUML#getCriticizedMetatypes()
+     */
+    public Set<Object> getCriticizedMetatypes() {
+        Set<Object> ret = new HashSet<Object>();
+        ret.add(Model.getMetaTypes().getClassifier());
+        return ret;
+    }
+    
 }

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/InitCognitiveCritics.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/InitCognitiveCritics.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/InitCognitiveCritics.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/InitCognitiveCritics.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/InitCognitiveCritics.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/cognitive/critics/InitCognitiveCritics.java	2008-07-22 10:13:24-0700
@@ -33,7 +33,6 @@
 import org.argouml.cognitive.Agency;
 import org.argouml.cognitive.CompoundCritic;
 import org.argouml.cognitive.Critic;
-import org.argouml.model.Model;
 import org.argouml.uml.diagram.deployment.ui.UMLDeploymentDiagram;
 import org.argouml.uml.diagram.ui.FigEdgeModelElement;
 import org.argouml.uml.diagram.ui.UMLDiagram;
@@ -269,114 +268,22 @@
      * static initializer, register all appropriate critics.
      */
     public void init() {
-        Object modelCls = Model.getMetaTypes().getModel();
-        Object packageCls = Model.getMetaTypes().getPackage();
-        Object classCls = Model.getMetaTypes().getUMLClass();
-        Object classifierCls = Model.getMetaTypes().getClassifier();
-        Object interfaceCls = Model.getMetaTypes().getInterface();
-        Object attrCls = Model.getMetaTypes().getAttribute();
-        Object paramCls = Model.getMetaTypes().getParameter();
-        Object operCls = Model.getMetaTypes().getOperation();
-        Object assocCls = Model.getMetaTypes().getAssociation();
-        Object assocEndCls = Model.getMetaTypes().getAssociationEnd();
-        Object assocClassCls = Model.getMetaTypes().getAssociationClass();
-        Object namespaceCls = Model.getMetaTypes().getNamespace();
-        Object genElementCls = Model.getMetaTypes().getGeneralizableElement();
-        Object genCls = Model.getMetaTypes().getGeneralization();
-        Object datatypeCls = Model.getMetaTypes().getDataType();
-        Object useCaseCls = Model.getMetaTypes().getUseCase();
-        Object actorCls = Model.getMetaTypes().getActor();
-        Object stateVertexCls = Model.getMetaTypes().getStateVertex();
-        Object stateCls = Model.getMetaTypes().getState();
-        Object compositieStateCls = Model.getMetaTypes().getCompositeState();
-        Object synchStateCls = Model.getMetaTypes().getSynchState();
-	// Class stateDiagramCls   = UMLStateDiagram.class;
-	// Class useCaseDiagramCls = UMLUseCaseDiagram.class;
-        // Class classDiagramCls   = UMLClassDiagram.class;
-
 	// TODO: Agency should allow registration by interface
 	// useful for MAssociation.
-        Agency.register(crAssocNameConflict, namespaceCls);
-	Agency.register(crAttrNameConflict, classifierCls);
-	Agency.register(crOperNameConflict, classifierCls);
-	Agency.register(crCircularAssocClass, assocClassCls);
-	Agency.register(crCircularInheritance, genElementCls);
-	Agency.register(crCircularComposition, classCls);
-	Agency.register(crClassMustBeAbstract, classCls);
-	Agency.register(crCrossNamespaceAssoc, assocCls);
-	Agency.register(crDupParamName, operCls);
-	Agency.register(crDupRoleNames, assocCls);
-	Agency.register(crFinalSubclassed, classCls);
-	Agency.register(crFinalSubclassed, interfaceCls);
-	Agency.register(crIllegalGeneralization, genCls);
-	Agency.register(crAlreadyRealizes, classCls);
-	Agency.register(crInterfaceAllPublic, interfaceCls);
-	Agency.register(crInterfaceOperOnly, interfaceCls);
-	Agency.register(crMultipleAgg, assocCls);
-	Agency.register(crUnnavigableAssoc, assocCls);
-	Agency.register(crNWayAgg, assocCls);
-	Agency.register(crNavFromInterface, assocCls);
-	Agency.register(crNameConflictAC, assocClassCls);
-	Agency.register(clsNaming, classCls);
-        Agency.register(clsNaming, interfaceCls);
-	Agency.register(clsNaming, actorCls);
-	Agency.register(clsNaming, useCaseCls);
+
+	Agency.register(clsNaming);
+        Agency.register(clsNaming);
+	Agency.register(clsNaming);
+	Agency.register(clsNaming);
 
 	// TODO: should be just CrMissingName with a
 	// customized description
-	Agency.register(crMissingClassName, modelCls);
-	Agency.register(crMissingAttrName, attrCls);
-	Agency.register(crMissingOperName, operCls);
-	Agency.register(crMissingStateName, stateVertexCls);
-	Agency.register(crNoInstanceVariables, classCls);
-	Agency.register(crNoAssociations, classCls);
-	Agency.register(crNoAssociations, actorCls);
-	Agency.register(crNoAssociations, useCaseCls);
-	Agency.register(crNoOperations, classCls);
-        Agency.register(crNoOperations, interfaceCls);
-	Agency.register(crCompoundConstructorNeeded, classCls);
-	Agency.register(crEmptyPackage, packageCls);
-	Agency.register(crNonAggDataType, datatypeCls);
-	Agency.register(crUselessAbstract, classCls);
-	Agency.register(crUselessInterface, interfaceCls);
-	Agency.register(crDisambigStateName, stateCls);
-	Agency.register(crNameConfusion, classifierCls);
-	Agency.register(crNameConfusion, stateCls);
-	Agency.register(crMergeClasses, classCls);
-	Agency.register(crSubclassReference, classCls);
-	Agency.register(crIllegalName, classCls);
-	Agency.register(crIllegalName, interfaceCls);
-	Agency.register(crIllegalName, assocCls);
-	Agency.register(crIllegalName, operCls);
-	Agency.register(crIllegalName, attrCls);
-	Agency.register(crIllegalName, paramCls);
-	Agency.register(crIllegalName, stateCls);
-	Agency.register(crReservedName, classifierCls);
-	Agency.register(crReservedName, operCls);
-	Agency.register(crReservedName, attrCls);
-	Agency.register(crReservedName, stateCls);
-	Agency.register(crReservedName, assocCls);
-	Agency.register(crTooManyAssoc, classCls);
-	Agency.register(crTooManyAttr, classCls);
-	Agency.register(crTooManyOper, classCls);
-	Agency.register(crTooManyTransitions, stateVertexCls);
-	Agency.register(crTooManyStates, compositieStateCls);
-	Agency.register(crTooManyClasses, namespaceCls);
-	Object pseudostateCls = Model.getMetaTypes().getPseudostate();
-	Object transitionCls = Model.getMetaTypes().getTransition();
-	Agency.register(noTrans1, stateVertexCls);
-	Agency.register(noTrans2, stateVertexCls);
-	Agency.register(crMultipleInitialStates, pseudostateCls);
-	Agency.register(crNoInitialState, compositieStateCls);
-	Agency.register(crNoTriggerOrGuard, transitionCls);
-	Agency.register(crInvalidJoin, pseudostateCls);
-	Agency.register(crInvalidFork, pseudostateCls);
-	Agency.register(crInvalidBranch, pseudostateCls);
-	Agency.register(crNoGuard, transitionCls);
-	Agency.register(crUnconventionalOperName, operCls);
-	Agency.register(crUnconventionalAttrName, attrCls);
-	Agency.register(crUnconventionalClassName, classCls);
-	Agency.register(crUnconventionalPackName, packageCls);
+
+        Agency.register(crCompoundConstructorNeeded);
+        
+	Agency.register(noTrans1);
+	Agency.register(noTrans2);
+        
 	Class deploymentDiagramCls = UMLDeploymentDiagram.class;
 	Agency.register(crNodeInsideElement, deploymentDiagramCls);
 	Agency.register(crNodeInstanceInsideElement, deploymentDiagramCls);
@@ -387,37 +294,12 @@
 	Agency.register(crObjectWithoutComponent, deploymentDiagramCls);
 	Agency.register(crWrongLinkEnds, deploymentDiagramCls);
 	Agency.register(crInstanceWithoutClassifier, deploymentDiagramCls);
-
-	Agency.register(crMultipleDeepHistoryStates, pseudostateCls);
-	Agency.register(crMultipleShallowHistoryStates, pseudostateCls);
-	Agency.register(crInvalidHistory, pseudostateCls);
-	Agency.register(crInvalidSynch, synchStateCls);
-	Agency.register(crInvalidJoinTriggerOrGuard, transitionCls);
-	Agency.register(crInvalidForkTriggerOrGuard, transitionCls);
-	Agency.register(crInvalidPseudoStateTrigger, transitionCls);
-	Agency.register(crInvalidInitial, pseudostateCls);
-	Agency.register(crForkOutgoingTransition, transitionCls);
-	Agency.register(crJoinIncomingTransition, transitionCls);
-
-	// Class sequenceDiagramCls = UMLSequenceDiagram.class;
-	// Agency.register(crCallWithoutReturn, sequenceDiagramCls);
-	// Agency.register(crReturnWithoutCall, sequenceDiagramCls);
-	// Agency.register(crLinkWithoutStimulus, sequenceDiagramCls);
-	// Agency.register(crSeqInstanceWithoutClassifier, sequenceDiagramCls);
-	// Agency.register(crStimulusWithWrongPosition, sequenceDiagramCls);
-
-	// Class nodeCls           = FigNodeModelElement.class;
+        
 	Class edgeCls           = FigEdgeModelElement.class;
 
 	Class diagramCls        = UMLDiagram.class;
 	Agency.register(crNodesOverlap, diagramCls);
 	Agency.register(crZeroLengthEdge, edgeCls);
-	Agency.register(crOppEndConflict, assocEndCls);
-	Agency.register(new CrMultiComposite(), assocEndCls);
-	Agency.register(new CrNameConflict(), namespaceCls);
-	Agency.register(crAlreadyRealizes, classCls);
-	Agency.register(new CrUtilityViolated(), classifierCls);
-	Agency.register(new CrOppEndVsAttr(), classifierCls);
     }
 
     public List<GUISettingsTabInterface> getProjectSettingsTabs() {

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/diagram/static_structure/ui/FigEnumeration.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/diagram/static_structure/ui/FigEnumeration.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/diagram/static_structure/ui/FigEnumeration.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/diagram/static_structure/ui/FigEnumeration.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/diagram/static_structure/ui/FigEnumeration.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/diagram/static_structure/ui/FigEnumeration.java	2008-07-22 10:13:24-0700
@@ -27,7 +27,6 @@
 import java.awt.Dimension;
 import java.awt.Rectangle;
 import java.beans.PropertyChangeEvent;
-import java.beans.PropertyVetoException;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Iterator;
@@ -38,7 +37,6 @@
 import org.argouml.model.AttributeChangeEvent;
 import org.argouml.model.Model;
 import org.argouml.ui.ArgoJMenu;
-import org.argouml.uml.diagram.ui.CompartmentFigText;
 import org.argouml.uml.diagram.ui.EnumLiteralsCompartmentContainer;
 import org.argouml.uml.diagram.ui.FigEnumLiteralsCompartment;
 import org.argouml.uml.diagram.ui.FigStereotypesCompartment;
@@ -46,7 +44,6 @@
 import org.tigris.gef.base.Selection;
 import org.tigris.gef.graph.GraphModel;
 import org.tigris.gef.presentation.Fig;
-import org.tigris.gef.presentation.FigText;
 
 /**
  * Class to display graphics for a UML Enumeration in a diagram.

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/diagram/ui/TabDiagram.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/diagram/ui/TabDiagram.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/diagram/ui/TabDiagram.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/diagram/ui/TabDiagram.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/diagram/ui/TabDiagram.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/diagram/ui/TabDiagram.java	2008-07-22 10:13:24-0700
@@ -44,6 +44,7 @@
 import org.apache.log4j.Logger;
 import org.argouml.application.api.AbstractArgoJPanel;
 import org.argouml.application.api.Argo;
+import org.argouml.cognitive.Critic;
 import org.argouml.configuration.Configuration;
 import org.argouml.kernel.ProjectManager;
 import org.argouml.ui.TabModelTarget;

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/ui/ActionClassDiagram.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/ui/ActionClassDiagram.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/ui/ActionClassDiagram.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/ui/ActionClassDiagram.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/ui/ActionClassDiagram.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/ui/ActionClassDiagram.java	2008-07-22 10:13:24-0700
@@ -26,8 +26,8 @@
 
 import org.apache.log4j.Logger;
 import org.argouml.model.Model;
-import org.argouml.uml.diagram.DiagramFactory;
 import org.argouml.uml.diagram.ArgoDiagram;
+import org.argouml.uml.diagram.DiagramFactory;
 
 /**
  * Action to trigger creation of new class diagram.

Modified: branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/ui/TabProps.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/ui/TabProps.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/ui/TabProps.java&p2=branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/ui/TabProps.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/ui/TabProps.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/src/org/argouml/uml/ui/TabProps.java	2008-07-22 10:13:24-0700
@@ -33,6 +33,7 @@
 
 import org.apache.log4j.Logger;
 import org.argouml.application.api.AbstractArgoJPanel;
+import org.argouml.cognitive.Critic;
 import org.argouml.model.Model;
 import org.argouml.swingext.UpArrowIcon;
 import org.argouml.ui.TabModelTarget;
@@ -171,7 +172,9 @@
 
         target = (target instanceof Fig) ? ((Fig) target).getOwner() : target;
         if (!(target == null || Model.getFacade().isAUMLElement(target) 
-                || target instanceof ArgoDiagram)) {
+                || target instanceof ArgoDiagram
+                // TODO Improve extensibility of this!
+                || target instanceof Critic)) {
             return;
         }
         
@@ -269,8 +272,8 @@
 	        : PropPanelFactoryManager.getFactories()) {
 	    propPanel = factory.createPropPanel(targetObject);
 	    if (propPanel != null) return propPanel;
-	}
-
+	}        
+        
 	/* This does not work (anymore/yet?), 
 	 * since we never have a FigText here: */
 	if (targetObject instanceof FigText) {
@@ -327,7 +330,11 @@
         if (target instanceof Fig) {
             target = ((Fig) target).getOwner();
         }
-        return ((target instanceof Diagram || Model.getFacade().isAUMLElement(target))
+        
+        // TODO: this should be more extensible... may be only 
+        // "findPanelFor(target)" if there is a panel why not show it?
+        return ((target instanceof Diagram || Model.getFacade().isAUMLElement(
+                target)) || target instanceof Critic
                 && findPanelFor(target) != null);
     }
 

Modified: branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/ProfileMother.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/ProfileMother.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/ProfileMother.java&p2=branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/ProfileMother.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/ProfileMother.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/ProfileMother.java	2008-07-22 10:13:24-0700
@@ -45,27 +45,28 @@
 import org.argouml.persistence.UmlFilePersister;
 
 /**
- * Based on the 
- * <a href="http://www.xpuniverse.com/2001/pdfs/Testing03.pdf">ObjectMother 
- * design pattern</a>, provides reusable facilities to create profiles.
- *
+ * Based on the <a
+ * href="http://www.xpuniverse.com/2001/pdfs/Testing03.pdf">ObjectMother design
+ * pattern</a>, provides reusable facilities to create profiles.
+ * 
  * @author Luis Sergio Oliveira (euluis)
  */
 public class ProfileMother {
-    
+
     private static final Logger LOG = Logger.getLogger(ProfileMother.class);
 
     /**
      * "profile"
      */
     public static final String STEREOTYPE_NAME_PROFILE = "profile";
+
     /**
      * "st" the example stereotype name.
      */
     public static final String STEREOTYPE_NAME_ST = "st";
 
     /**
-     * Create a simple profile model with a class named "foo" and with a 
+     * Create a simple profile model with a class named "foo" and with a
      * stereotype named "st".
      * 
      * @return the profile model.
@@ -75,7 +76,7 @@
         Object profileStereotype = getProfileStereotype();
         getCoreHelper().addStereotype(model, profileStereotype);
         Object fooClass = Model.getCoreFactory().buildClass("foo", model);
-        getExtensionMechanismsFactory().buildStereotype(fooClass, 
+        getExtensionMechanismsFactory().buildStereotype(fooClass,
                 STEREOTYPE_NAME_ST, model);
         return model;
     }
@@ -85,22 +86,21 @@
         Collection<Object> models = new ArrayList<Object>();
         models.add(umlProfile);
         Collection stereotypes = getExtensionMechanismsHelper().getStereotypes(
-            models);
+                models);
         for (Object stereotype : stereotypes) {
-            if (STEREOTYPE_NAME_PROFILE.equals(
-                    Model.getFacade().getName(stereotype)))
-                return stereotype;
+            if (STEREOTYPE_NAME_PROFILE.equals(Model.getFacade().getName(
+                    stereotype))) return stereotype;
         }
         return null;
     }
-    
+
     private Object umlProfileModel;
 
     Object getUmlProfileModel() {
         if (ProfileFacade.isInitiated()) {
             try {
-                umlProfileModel = ProfileFacade.getManager().getUMLProfile().
-                    getProfilePackages().iterator().next();
+                umlProfileModel = ProfileFacade.getManager().getUMLProfile()
+                        .getProfilePackages().iterator().next();
                 TestCase.assertTrue(getFacade().isAModel(umlProfileModel));
             } catch (ProfileException e) {
                 LOG.error("Exception", e);
@@ -108,8 +108,8 @@
         }
         if (umlProfileModel == null) {
             umlProfileModel = getModelManagementFactory().createModel();
-            getExtensionMechanismsFactory().buildStereotype(
-                umlProfileModel, STEREOTYPE_NAME_PROFILE, umlProfileModel);
+            getExtensionMechanismsFactory().buildStereotype(umlProfileModel,
+                    STEREOTYPE_NAME_PROFILE, umlProfileModel);
         }
         return umlProfileModel;
     }
@@ -124,7 +124,7 @@
     public void saveProfileModel(Object model, File file) throws IOException {
         FileOutputStream fileOut = new FileOutputStream(file);
         try {
-            XmiWriter xmiWriter = Model.getXmiWriter(model, fileOut, "x(" 
+            XmiWriter xmiWriter = Model.getXmiWriter(model, fileOut, "x("
                     + UmlFilePersister.PERSISTENCE_VERSION + ")");
             xmiWriter.write();
             fileOut.flush();

Modified: branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/TestCoreProfileReference.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/TestCoreProfileReference.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/TestCoreProfileReference.java&p2=branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/TestCoreProfileReference.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/TestCoreProfileReference.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/TestCoreProfileReference.java	2008-07-22 10:13:24-0700
@@ -35,7 +35,7 @@
  * @author Luis Sergio Oliveira (euluis)
  */
 public class TestCoreProfileReference extends TestCase {
-    
+
     /**
      * Tests {@link CoreProfileReference#CoreProfileReference(String)}.
      * 
@@ -44,20 +44,19 @@
     public void testCtorHappyPath() throws MalformedURLException {
         String fileName = "profileName.xmi";
         ProfileReference reference = new CoreProfileReference(fileName);
-        assertEquals(CoreProfileReference.PROFILES_RESOURCE_PATH + fileName, 
-            reference.getPath());
+        assertEquals(CoreProfileReference.PROFILES_RESOURCE_PATH + fileName,
+                reference.getPath());
         assertEquals(
-            new URL(CoreProfileReference.PROFILES_BASE_URL + fileName), 
-            reference.getPublicReference());
+                new URL(CoreProfileReference.PROFILES_BASE_URL + fileName),
+                reference.getPublicReference());
     }
-    
+
     /**
      * Tests that the constructor checks for empty file name.
      * 
      * @throws MalformedURLException if the built URL is incorrect.
      */
-    public void testCtorFailsWhenFileNameIsEmpty() 
-        throws MalformedURLException {
+    public void testCtorFailsWhenFileNameIsEmpty() throws MalformedURLException {
         try {
             new CoreProfileReference("");
             // TODO: This requires that the tests be run with assertions
@@ -67,14 +66,13 @@
             // expected
         }
     }
-    
+
     /**
      * Tests that the constructor checks for null file name.
      * 
      * @throws MalformedURLException if the built URL is incorrect.
      */
-    public void testCtorFailsWhenFileNameIsNull() 
-        throws MalformedURLException {
+    public void testCtorFailsWhenFileNameIsNull() throws MalformedURLException {
         try {
             new CoreProfileReference(null);
             // TODO: This requires that the tests be run with assertions

Modified: branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/TestProfileFacade.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/TestProfileFacade.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/TestProfileFacade.java&p2=branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/TestProfileFacade.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/TestProfileFacade.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/TestProfileFacade.java	2008-07-22 10:13:24-0700
@@ -29,25 +29,24 @@
 import junit.framework.TestCase;
 
 /**
- *
  * @author Luis Sergio Oliveira (euluis)
  */
 public class TestProfileFacade extends TestCase {
 
     private MockControl managerCtrl;
+
     private ProfileManager manager;
 
-    /* 
+    /*
      * @see junit.framework.TestCase#setUp()
      */
     @Override
     protected void setUp() throws Exception {
-        managerCtrl = MockControl.createControl(
-                ProfileManager.class);
+        managerCtrl = MockControl.createControl(ProfileManager.class);
         manager = (ProfileManager) managerCtrl.getMock();
         ProfileFacade.setManager(manager);
     }
-    
+
     @Override
     protected void tearDown() throws Exception {
         ProfileFacade.reset();
@@ -66,14 +65,14 @@
             // expected
         }
     }
-    
+
     /**
      * Test {@link ProfileFacade#register(Profile)}.
      */
     public void testRegister() {
         manager.registerProfile(null);
         managerCtrl.replay();
-        
+
         ProfileFacade.register(null);
         managerCtrl.verify();
     }
@@ -84,7 +83,7 @@
     public void testRemove() {
         manager.removeProfile(null);
         managerCtrl.replay();
-        
+
         ProfileFacade.remove((Profile) null);
         managerCtrl.verify();
     }

Modified: branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/TestProfileManager.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/TestProfileManager.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/TestProfileManager.java&p2=branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/TestProfileManager.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/TestProfileManager.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/TestProfileManager.java	2008-07-22 10:13:24-0700
@@ -36,13 +36,15 @@
 
 /**
  * Tests for a ProfileManager implementation.
- *
+ * 
  * @author Luis Sergio Oliveira (euluis)
  */
 public class TestProfileManager extends TestCase {
-    
+
     private Profile mockProfile;
+
     private ProfileManager manager;
+
     private String mockProfileClassName;
 
     @Override
@@ -54,8 +56,9 @@
             public String getDisplayName() {
                 return null;
             }
+
             @Override
-            public Collection<Object> getProfilePackages() 
+            public Collection<Object> getProfilePackages()
                 throws ProfileException {
                 return Collections.emptyList();
             }
@@ -63,7 +66,7 @@
         manager = ProfileFacade.getManager();
         assertNotNull(manager);
     }
-    
+
     @Override
     protected void tearDown() throws Exception {
         ProfileFacade.reset();
@@ -77,7 +80,7 @@
         manager.registerProfile(mockProfile);
         assertTrue(manager.getRegisteredProfiles().contains(mockProfile));
     }
-    
+
     /**
      * Test the {@link ProfileManager#removeProfile(Profile)} method.
      */
@@ -96,30 +99,30 @@
         mockProfileClassName = mockProfile.getClass().getName();
         assertNull(manager.getProfileForClass(mockProfileClassName));
         manager.registerProfile(mockProfile);
-        assertEquals(mockProfile, manager.getProfileForClass(
-                mockProfileClassName));
+        assertEquals(mockProfile, manager
+                .getProfileForClass(mockProfileClassName));
         manager.removeProfile(mockProfile);
         assertNull(manager.getProfileForClass(mockProfileClassName));
     }
-    
+
     /**
-     * Tests the methods of {@link ProfileManager} related to default profiles 
+     * Tests the methods of {@link ProfileManager} related to default profiles
      * management.
      */
     public void testDefaultProfilesManagement() {
-        List<Object> initialDefaultProfiles = 
-            new ArrayList<Object>(manager.getDefaultProfiles());
+        List<Object> initialDefaultProfiles = new ArrayList<Object>(manager
+                .getDefaultProfiles());
         assertNull(manager.getProfileForClass(mockProfileClassName));
         manager.registerProfile(mockProfile);
         manager.addToDefaultProfiles(mockProfile);
-        assertEquals(initialDefaultProfiles.size() + 1, 
-                manager.getDefaultProfiles().size());
+        assertEquals(initialDefaultProfiles.size() + 1, manager
+                .getDefaultProfiles().size());
         manager.removeFromDefaultProfiles(mockProfile);
-        assertEquals(initialDefaultProfiles.size(), 
-                manager.getDefaultProfiles().size());
+        assertEquals(initialDefaultProfiles.size(), manager
+                .getDefaultProfiles().size());
         assertFalse(manager.getDefaultProfiles().contains(mockProfile));
     }
-    
+
     /**
      * Test the method {@link ProfileManager#getUMLProfile()}.
      */

Modified: branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/TestProfileMother.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/TestProfileMother.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/TestProfileMother.java&p2=branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/TestProfileMother.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/TestProfileMother.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/TestProfileMother.java	2008-07-22 10:13:24-0700
@@ -37,12 +37,12 @@
 import junit.framework.TestCase;
 
 /**
- *
  * @author Luis Sergio Oliveira (euluis)
  */
 public class TestProfileMother extends TestCase {
-    
+
     private ProfileMother mother;
+
     private File testDir;
 
     @Override
@@ -50,43 +50,57 @@
         InitializeModel.initializeDefault();
         mother = new ProfileMother();
     }
-    
+
+    /**
+     * test profile model creation
+     */
     public void testCreateProfileModel() {
         Object model = mother.createSimpleProfileModel();
         assertNotNull(model);
         Collection profileStereotypes = getFacade().getStereotypes(model);
         assertEquals(1, profileStereotypes.size());
-        assertEquals(ProfileMother.STEREOTYPE_NAME_PROFILE, 
-            getFacade().getName(profileStereotypes.iterator().next()));
+        assertEquals(ProfileMother.STEREOTYPE_NAME_PROFILE, getFacade()
+                .getName(profileStereotypes.iterator().next()));
     }
-    
+
+    /**
+     * test simple profile model creation
+     * 
+     * @throws Exception is something goes wrong
+     */
     public void testCreateSimpleProfileModel() throws Exception {
         final Object model = mother.createSimpleProfileModel();
-        Collection<Object> models = new ArrayList<Object>() { {
+        Collection<Object> models = new ArrayList<Object>() {
+            {
                 add(model);
             }
         };
-        Collection stereotypes = 
-            getExtensionMechanismsHelper().getStereotypes(models);
+        Collection stereotypes = getExtensionMechanismsHelper().getStereotypes(
+                models);
         Object st = null;
         for (Object stereotype : stereotypes) {
-            if (ProfileMother.STEREOTYPE_NAME_ST.equals(
-                    getFacade().getName(stereotype))) {
+            if (ProfileMother.STEREOTYPE_NAME_ST.equals(getFacade().getName(
+                    stereotype))) {
                 st = stereotype;
                 break;
             }
         }
         assertNotNull("\"st\" stereotype not found in model.", st);
-        assertTrue(Model.getExtensionMechanismsHelper().isStereotype(st, 
+        assertTrue(Model.getExtensionMechanismsHelper().isStereotype(st,
                 ProfileMother.STEREOTYPE_NAME_ST, "Class"));
     }
-    
+
+    /**
+     * test save profile model
+     * 
+     * @throws Exception if something goes wrong
+     */
     public void testSaveProfileModel() throws Exception {
         Object model = mother.createSimpleProfileModel();
         File file = new File(testDir, "testSaveProfileModel.xmi");
         mother.saveProfileModel(model, file);
-        assertTrue("The file to where the file was supposed to be saved " 
+        assertTrue("The file to where the file was supposed to be saved "
                 + "doesn't exist.", file.exists());
     }
-    
+
 }

Modified: branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/TestProfileReference.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/TestProfileReference.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/TestProfileReference.java&p2=branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/TestProfileReference.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/TestProfileReference.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/TestProfileReference.java	2008-07-22 10:13:24-0700
@@ -31,33 +31,32 @@
 
 /**
  * Tests for the ProfileReference class.
- *
+ * 
  * @author Luis Sergio Oliveira (euluis)
  */
 public class TestProfileReference extends TestCase {
-    
+
     /**
      * Test correct call to constructor.
      * 
      * @throws MalformedURLException if the URL is incorrect.
      */
     public void testCtorHappyPath() throws MalformedURLException {
-        new ProfileReference("systemId/name.xmi", 
-                new URL("file:///publicId/name.xmi"));
+        new ProfileReference("systemId/name.xmi", new URL(
+                "file:///publicId/name.xmi"));
     }
-    
+
     /**
-     * Test call to constructor with inconsistent file names in the path and 
-     * the publicReference arguments.
-     * 
-     * NOTE: to run successfully this test you'll have to enable assertions.
+     * Test call to constructor with inconsistent file names in the path and the
+     * publicReference arguments. NOTE: to run successfully this test you'll
+     * have to enable assertions.
      * 
      * @throws MalformedURLException if the URL is incorrect.
      */
-    public void testCtorInconsistentFileNameDetected() 
+    public void testCtorInconsistentFileNameDetected()
         throws MalformedURLException {
         try {
-            new ProfileReference("/org/argouml/language/x/profile/name.xmi", 
+            new ProfileReference("/org/argouml/language/x/profile/name.xmi",
                     new URL("http://argouml-x.tigris.org/iconsistentName.xmi"));
             fail("Expected an AssertionError to be thrown!");
         } catch (MalformedURLException e) {
@@ -66,22 +65,22 @@
             // expected
         }
     }
-    
+
     /**
-     * Checks that the path handed to the constructor is correctly returned by 
+     * Checks that the path handed to the constructor is correctly returned by
      * {@link ProfileReference#getPath()}.
      * 
      * @throws MalformedURLException if the URL is incorrect.
      */
     public void testGetPath() throws MalformedURLException {
         String path = "/org/argouml/language/x/profile/name.xmi";
-        ProfileReference profileReference = new ProfileReference(
-            path, new URL("http://x.org/name.xmi"));
+        ProfileReference profileReference = new ProfileReference(path, new URL(
+                "http://x.org/name.xmi"));
         assertEquals(path, profileReference.getPath());
     }
-    
+
     /**
-     * Checks that the publicReference handed to the constructor is correctly 
+     * Checks that the publicReference handed to the constructor is correctly
      * returned by {@link ProfileReference#getPublicReference()}.
      * 
      * @throws MalformedURLException if the URL is incorrect.
@@ -89,7 +88,7 @@
     public void testGetPublicReference() throws MalformedURLException {
         URL publicReference = new URL("http://x.org/name.xmi");
         ProfileReference profileReference = new ProfileReference(
-            "/org/argouml/language/x/profile/name.xmi", publicReference);
+                "/org/argouml/language/x/profile/name.xmi", publicReference);
         assertEquals(publicReference, profileReference.getPublicReference());
     }
 }

Modified: branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/TestReaderModelLoader.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/TestReaderModelLoader.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/TestReaderModelLoader.java&p2=branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/TestReaderModelLoader.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/TestReaderModelLoader.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/TestReaderModelLoader.java	2008-07-22 10:13:24-0700
@@ -38,7 +38,7 @@
 
 /**
  * Tests for the {@link ReaderModelLoader} class.
- *
+ * 
  * @author Luis Sergio Oliveira (euluis)
  */
 public class TestReaderModelLoader extends TestCase {
@@ -49,7 +49,7 @@
         Reader reader = new StringReader("dummy string");
         new ReaderModelLoader(reader);
     }
-    
+
     /**
      * Test {@link ReaderModelLoader#loadModel(ProfileReference)}.
      * 
@@ -64,10 +64,10 @@
         File file = new File(testDir, "testSaveProfileModel.xmi");
         mother.saveProfileModel(model, file);
         Reader reader = new FileReader(file);
-        ProfileReference profileReference = new UserProfileReference(
-            file.toURL().toExternalForm());
-        Collection models = new ReaderModelLoader(reader).
-            loadModel(profileReference);
+        ProfileReference profileReference = new UserProfileReference(file
+                .toURI().toURL().toExternalForm());
+        Collection models = new ReaderModelLoader(reader)
+                .loadModel(profileReference);
         assertNotNull(models);
         assertTrue(models.size() >= 1);
     }

Modified: branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/TestSubsystemInit.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/TestSubsystemInit.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/TestSubsystemInit.java&p2=branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/TestSubsystemInit.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/TestSubsystemInit.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/TestSubsystemInit.java	2008-07-22 10:13:24-0700
@@ -31,11 +31,11 @@
 
 /**
  * Test cases for the initialization of the profile subsystem.
- *
+ * 
  * @author Luis Sergio Oliveira (euluis)
  */
 public class TestSubsystemInit extends TestCase {
-    
+
     private InitProfileSubsystem initSubsystem;
 
     @Override
@@ -45,11 +45,15 @@
         initSubsystem = new InitProfileSubsystem();
     }
 
+    /**
+     * tests subsystem initialization 
+     */
     public void testInitMakesManagerAvailableInFacade() {
         try {
             ProfileFacade.getManager();
             fail("ProfileFacade shouldn't be initialized!");
-        } catch (RuntimeException e) { }
+        } catch (RuntimeException e) {
+        }
         initSubsystem.init();
         assertNotNull(ProfileFacade.getManager());
     }

Modified: branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/TestUserDefinedProfile.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/TestUserDefinedProfile.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/TestUserDefinedProfile.java&p2=branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/TestUserDefinedProfile.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/TestUserDefinedProfile.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/TestUserDefinedProfile.java	2008-07-22 10:13:24-0700
@@ -25,34 +25,42 @@
 package org.argouml.profile;
 
 import java.io.File;
+import java.util.HashSet;
+import java.util.Set;
 
 import junit.framework.TestCase;
 
 import org.argouml.FileHelper;
 import org.argouml.model.InitializeModel;
+import org.argouml.profile.internal.ProfileManagerImpl;
+import org.argouml.profile.internal.ocl.CrOCL;
+import org.argouml.uml.cognitive.critics.CrUML;
 
 /**
  * Some basic tests for the {@link UserDefinedProfile} class.
  * 
  * @author Luis Sergio Oliveira (euluis)
+ * @authos maurelio1234
  */
 public class TestUserDefinedProfile extends TestCase {
-    
+
     private File testDir;
 
     @Override
     protected void setUp() throws Exception {
         super.setUp();
         InitializeModel.initializeDefault();
+        ProfileFacade.setManager(new ProfileManagerImpl());
+
         testDir = FileHelper.setUpDir4Test(getClass());
     }
-    
+
     @Override
     protected void tearDown() throws Exception {
         FileHelper.deleteDir(testDir);
         super.tearDown();
     }
-    
+
     /**
      * Test loading of a very simple profile via its constructor. Check that its
      * display name contains the file name.
@@ -70,4 +78,35 @@
         assertTrue(profile.getDisplayName().contains(profileFile.getName()));
     }
 
+    /**
+     * Test the constructor used for loading a profile from a Jar file TODO Test
+     * FigNode!
+     * 
+     * @throws Exception if something goes wrong
+     */
+    public void testLoadingAsFromJar() throws Exception {
+        ProfileManager pm = ProfileFacade.getManager();
+
+        // create profile model
+        ProfileMother profileMother = new ProfileMother();
+        Object model = profileMother.createSimpleProfileModel();
+        // save the profile into a xmi file
+        File profileFile = new File(testDir, "testLoadingConstructor.xmi");
+        profileMother.saveProfileModel(model, profileFile);
+
+        CrOCL critic = new CrOCL("context Class inv: 3 > 2", null, null, null,
+                null, null, null);
+        Set<CrUML> critics = new HashSet<CrUML>();
+        critics.add(critic);
+
+        Set<String> profiles = new HashSet<String>();
+        profiles.add(pm.getUMLProfile().getProfileIdentifier());
+
+        Profile profile = new UserDefinedProfile("displayName", profileFile
+                .toURI().toURL(), critics, profiles);
+
+        assertEquals(profile.getDisplayName(), "displayName");
+        assertTrue(profile.getDependencies().contains(pm.getUMLProfile()));
+        assertTrue(profile.getCritics().contains(critic));
+    }
 }

Modified: branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/TestUserProfileReference.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/TestUserProfileReference.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/TestUserProfileReference.java&p2=branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/TestUserProfileReference.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/TestUserProfileReference.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/TestUserProfileReference.java	2008-07-22 10:13:24-0700
@@ -32,38 +32,35 @@
 
 /**
  * Unit tests for UserProfileReference class.
- *
+ * 
  * @author Luis Sergio Oliveira (euluis)
  */
 public class TestUserProfileReference extends TestCase {
-    
+
     /**
-     * Tests {@link UserProfileReference#UserProfileReference(String)} in the 
+     * Tests {@link UserProfileReference#UserProfileReference(String)} in the
      * happy path.
      * 
      * @throws MalformedURLException if the built URL is incorrect.
      */
     public void testCtorHappyPath() throws MalformedURLException {
         String fileName = "profileName.xmi";
-        // [euluis] Using Windows style initial path, don't know if this fails 
+        // [euluis] Using Windows style initial path, don't know if this fails
         // in *nixes.
-        String path = "C:" + File.separatorChar + "userProfilesDir" 
-            + File.separatorChar + fileName;
+        String path = "C:" + File.separatorChar + "userProfilesDir"
+                + File.separatorChar + fileName;
         ProfileReference reference = new UserProfileReference(path);
         assertEquals(path, reference.getPath());
-        assertEquals(
-            new URL(UserProfileReference.DEFAULT_USER_PROFILE_BASE_URL 
-                + fileName), 
-            reference.getPublicReference());
+        assertEquals(new URL(UserProfileReference.DEFAULT_USER_PROFILE_BASE_URL
+                + fileName), reference.getPublicReference());
     }
-    
+
     /**
      * Tests that the constructor checks for empty file name.
      * 
      * @throws MalformedURLException if the built URL is incorrect.
      */
-    public void testCtorFailsWhenFileNameIsEmpty() 
-        throws MalformedURLException {
+    public void testCtorFailsWhenFileNameIsEmpty() throws MalformedURLException {
         try {
             new UserProfileReference("");
             fail("Expecting AssertionError due to empty file name.");
@@ -71,14 +68,13 @@
             // expected
         }
     }
-    
+
     /**
      * Tests that the constructor checks for null file name.
      * 
      * @throws MalformedURLException if the built URL is incorrect.
      */
-    public void testCtorFailsWhenFileNameIsNull() 
-        throws MalformedURLException {
+    public void testCtorFailsWhenFileNameIsNull() throws MalformedURLException {
         try {
             new UserProfileReference(null);
             fail("Expecting NullPointerException due to null path.");
@@ -86,5 +82,5 @@
             // expected
         }
     }
-    
+
 }

Modified: branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/internal/TestProfileJava.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/internal/TestProfileJava.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/internal/TestProfileJava.java&p2=branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/internal/TestProfileJava.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/internal/TestProfileJava.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/internal/TestProfileJava.java	2008-07-22 10:13:24-0700
@@ -32,11 +32,11 @@
 
 /**
  * Tests for the ProfileJava class.
- *
+ * 
  * @author Luis Sergio Oliveira (euluis)
  */
 public class TestProfileJava extends TestCase {
-    
+
     @Override
     protected void setUp() throws Exception {
         super.setUp();
@@ -44,10 +44,20 @@
         new InitProfileSubsystem().init();
     }
 
+    /**
+     * test java profile creation
+     * 
+     * @throws ProfileException if something goes wrong
+     */
     public void testProfileJava() throws ProfileException {
         new ProfileJava(new ProfileUML());
     }
-    
+
+    /**
+     * test java profile creation
+     * 
+     * @throws Exception if something goes wrong
+     */
     public void testProfileJavaNoArgs() throws Exception {
         new ProfileJava();
     }

Modified: branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/internal/TestProfileManagerImpl.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/internal/TestProfileManagerImpl.java?view=diff&rev=15339&p1=branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/internal/TestProfileManagerImpl.java&p2=branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/internal/TestProfileManagerImpl.java&r1=15338&r2=15339
==============================================================================
--- branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/internal/TestProfileManagerImpl.java	(original)
+++ branches/gsoc2008/work_premerge_maurelio1234/tests/org/argouml/profile/internal/TestProfileManagerImpl.java	2008-07-22 10:13:24-0700
@@ -36,11 +36,11 @@
 
 /**
  * Tests for the ProfileManagerImpl class.
- *
+ * 
  * @author Luis Sergio Oliveira (euluis)
  */
 public class TestProfileManagerImpl extends TestCase {
-    
+
     private ProfileManager manager;
 
     @Override
@@ -50,30 +50,39 @@
         manager = new ProfileManagerImpl();
     }
 
+    /**
+     * test profile manager 
+     */
     public void testProfileManagerImpl() {
         List<Profile> registeredProfiles = manager.getRegisteredProfiles();
         assertTrue(2 <= registeredProfiles.size());
         Set<String> internalProfileNameSet = new HashSet<String>();
         for (Profile profile : registeredProfiles) {
-            if (profile.getDisplayName().equals(ProfileUML.NAME) 
+            if (profile.getDisplayName().equals(ProfileUML.NAME)
                     || profile.getDisplayName().equals(ProfileJava.NAME))
                 internalProfileNameSet.add(profile.getDisplayName());
         }
         assertEquals(2, internalProfileNameSet.size());
     }
-    
+
+    /**
+     * test remove profile
+     */
     public void testRemoveProfileThatIsntDefault() {
-        Profile javaProfile = manager.getProfileForClass(
-                ProfileJava.class.getName());
+        Profile javaProfile = manager.getProfileForClass(ProfileJava.class
+                .getName());
         assertNotNull(javaProfile);
         assertTrue(manager.getRegisteredProfiles().contains(javaProfile));
         manager.removeProfile(javaProfile);
         assertFalse(manager.getRegisteredProfiles().contains(javaProfile));
     }
-    
+
+    /**
+     * test remove profile
+     */
     public void testRemoveDefaultProfile() {
-        Profile umlProfile = manager.getProfileForClass(
-                ProfileUML.class.getName());
+        Profile umlProfile = manager.getProfileForClass(ProfileUML.class
+                .getName());
         assertNotNull(umlProfile);
         assertTrue(manager.getRegisteredProfiles().contains(umlProfile));
         assertTrue(manager.getDefaultProfiles().contains(umlProfile));
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.