feature[TW19120]: Add Change Request artifact type and image

Change-Id: I35e179a908a1811b9257f30bcb9eb330d7d1fbe4
diff --git a/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/IAtsWorkItem.java b/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/IAtsWorkItem.java
index f7f18a2..57a8c4f 100644
--- a/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/IAtsWorkItem.java
+++ b/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/IAtsWorkItem.java
@@ -144,6 +144,10 @@
 
    }
 
+   default boolean isChangeRequest() {
+      return getArtifactType().inheritsFrom(AtsArtifactTypes.AbstractChangeRequestWorkflow);
+   }
+
    public static IAtsWorkItem createSentinel() {
       final class IAtsWorkItemSentinel extends NamedIdBase implements IAtsWorkItem {
 
diff --git a/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/data/AtsArtifactTypes.java b/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/data/AtsArtifactTypes.java
index d4a2b3a..9097eb1 100644
--- a/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/data/AtsArtifactTypes.java
+++ b/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/data/AtsArtifactTypes.java
@@ -17,6 +17,7 @@
 import static org.eclipse.osee.ats.api.data.AtsTypeTokenProvider.ats;
 import static org.eclipse.osee.ats.api.util.AtsImage.ACTION;
 import static org.eclipse.osee.ats.api.util.AtsImage.ACTIONABLE_ITEM;
+import static org.eclipse.osee.ats.api.util.AtsImage.CHANGE_REQUEST;
 import static org.eclipse.osee.ats.api.util.AtsImage.DECISION_REVIEW;
 import static org.eclipse.osee.ats.api.util.AtsImage.GOAL;
 import static org.eclipse.osee.ats.api.util.AtsImage.INSERTION;
@@ -34,6 +35,7 @@
 import static org.eclipse.osee.framework.core.enums.CoreAttributeTypes.GitChangeId;
 import static org.eclipse.osee.framework.core.enums.CoreAttributeTypes.GitRepoName;
 import static org.eclipse.osee.framework.core.enums.CoreAttributeTypes.Notes;
+import static org.eclipse.osee.framework.core.enums.CoreTypeTokenProvider.osee;
 import org.eclipse.osee.framework.core.data.ArtifactTypeToken;
 
 /**
@@ -255,6 +257,10 @@
       .zeroOrOne(WcafeImpact)
       .zeroOrOne(UsesResolutionOptions));
 
+   // Change Request
+   ArtifactTypeToken AbstractChangeRequestWorkflow = osee.add(osee.artifactType(458278L, "Abstract Change Request", true, Artifact));
+   ArtifactTypeToken ChangeRequestTeamWorkflow = ats.add(ats.artifactType(4938L, "Change Request Workflow", false, CHANGE_REQUEST, TeamWorkflow, AbstractChangeRequestWorkflow));
+
    // Reviews
    ArtifactTypeToken AbstractReview = ats.add(ats.artifactType(64L, "ats.Review", true, AbstractWorkflowArtifact)
       .any(AtsAttributeTypes.ActionableItem)
diff --git a/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/demo/AtsDemoOseeTypes.java b/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/demo/AtsDemoOseeTypes.java
index 16441d3..f988172 100644
--- a/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/demo/AtsDemoOseeTypes.java
+++ b/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/demo/AtsDemoOseeTypes.java
@@ -15,8 +15,10 @@
 
 import static org.eclipse.osee.ats.api.data.AtsArtifactTypes.TeamWorkflow;
 import static org.eclipse.osee.ats.api.data.AtsTypeTokenProvider.atsDemo;
+import static org.eclipse.osee.ats.api.util.AtsImage.CHANGE_REQUEST;
 import static org.eclipse.osee.framework.core.enums.CoreAttributeTypes.Partition;
 import javax.ws.rs.core.MediaType;
+import org.eclipse.osee.ats.api.data.AtsArtifactTypes;
 import org.eclipse.osee.ats.api.demo.enums.token.CodeCategoryAttributeType;
 import org.eclipse.osee.ats.api.demo.enums.token.CodeDefectCodeAttributeType;
 import org.eclipse.osee.ats.api.demo.enums.token.CodeDetectionAttributeType;
@@ -68,7 +70,8 @@
    AttributeTypeString ReworkLetter = atsDemo.createStringNoTag(1152921504606847276L, "demo.code.Rework Letter", MediaType.TEXT_PLAIN, "");
    AttributeTypeString ProblemNo = atsDemo.createStringNoTag(1152921504606847277L, "demo.code.Problem No", MediaType.TEXT_PLAIN, "");
 
-   ArtifactTypeToken DemoChangeRequestTeamWorkflow = atsDemo.add(atsDemo.artifactType(3456L, "Demo Change Request", false, TeamWorkflow));
+   ArtifactTypeToken DemoChangeRequestTeamWorkflow = atsDemo.add(atsDemo.artifactType(3456L, "Demo Change Request", false,
+      CHANGE_REQUEST, AtsArtifactTypes.ChangeRequestTeamWorkflow));
 
    ArtifactTypeToken DemoCodeTeamWorkflow = atsDemo.add(atsDemo.artifactType(79L, "Demo Code Team Workflow", false, TeamWorkflow)
       .zeroOrOne(ChangeType)
diff --git a/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/demo/DemoArtifactToken.java b/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/demo/DemoArtifactToken.java
index a6ce383..1b64a8f 100644
--- a/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/demo/DemoArtifactToken.java
+++ b/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/demo/DemoArtifactToken.java
@@ -78,7 +78,9 @@
 
    public static final IAtsProgramArtifactToken SAW_PL_Program = AtsProgramArtifactToken.valueOf(1917773L, "SAW PL Program");
 
+   //////////////////////////////////
    // SAW PL Team Definitions
+   //////////////////////////////////
    public static final IAtsTeamDefinitionArtifactToken SAW_PL_TeamDef = AtsTeamDefinitionArtifactToken.valueOf(283478888L, "SAW PL");
    public static final IAtsTeamDefinitionArtifactToken SAW_PL_CR_TeamDef = AtsTeamDefinitionArtifactToken.valueOf(35712349L, "SAW PL Change Request");
    public static final IAtsTeamDefinitionArtifactToken SAW_PL_HW_TeamDef = AtsTeamDefinitionArtifactToken.valueOf(123913578L, "SAW PL HW");
@@ -88,7 +90,9 @@
    public static final IAtsTeamDefinitionArtifactToken SAW_PL_Requirements_TeamDef = AtsTeamDefinitionArtifactToken.valueOf(86758678L, "SAW PL Requirements");
    public static final IAtsTeamDefinitionArtifactToken SAW_PL_ARB_TeamDef = AtsTeamDefinitionArtifactToken.valueOf(150338509L, "SAW PL ARB");
 
+   //////////////////////////////////
    // SAW PL Actionable Items
+   //////////////////////////////////
    public static final IAtsActionableItemArtifactToken SAW_PL_CSCI_AI = AtsActionableItemArtifactToken.valueOf(3234255L, "SAW PL CSCI");
    public static final IAtsActionableItemArtifactToken SAW_PL_CR_AI = AtsActionableItemArtifactToken.valueOf(428487777L, "SAW PL Change Request");
    public static final IAtsActionableItemArtifactToken SAW_PL_HW_AI = AtsActionableItemArtifactToken.valueOf(95849383L, "SAW PL HW");
@@ -105,10 +109,11 @@
    //////////////////////////////////
    // SAW Leagacy Configuration
    //////////////////////////////////
-
    public static final IAtsProgramArtifactToken SAW_Program = AtsProgramArtifactToken.valueOf(19196003L, "SAW Program");
 
+   //////////////////////////////////
    // SAW Team Definitions
+   //////////////////////////////////
    public static final IAtsTeamDefinitionArtifactToken SAW_HW = AtsTeamDefinitionArtifactToken.valueOf(2876840L, "SAW HW");
    public static final IAtsTeamDefinitionArtifactToken SAW_Code = AtsTeamDefinitionArtifactToken.valueOf(30013695L, "SAW Code");
    public static final IAtsTeamDefinitionArtifactToken SAW_Test = AtsTeamDefinitionArtifactToken.valueOf(31608252L, "SAW Test");
@@ -118,7 +123,9 @@
    public static final IAtsTeamDefinitionArtifactToken SAW_SubSystems_TeamDef = AtsTeamDefinitionArtifactToken.valueOf(4354624L, "SAW Sub-Systems");
    public static final IAtsTeamDefinitionArtifactToken SAW_SW = AtsTeamDefinitionArtifactToken.valueOf(3902389L, "SAW SW");
 
+   //////////////////////////////////
    // SAW Actionable Items
+   //////////////////////////////////
    public static final IAtsActionableItemArtifactToken SAW_HW_AI = AtsActionableItemArtifactToken.valueOf(4687946L, "SAW HW");
    public static final IAtsActionableItemArtifactToken SAW_CSCI_AI = AtsActionableItemArtifactToken.valueOf(1866L, "SAW CSCI");
    public static final IAtsActionableItemArtifactToken Adapter_AI = AtsActionableItemArtifactToken.valueOf(456465465L, "Adapter");
@@ -129,18 +136,24 @@
    public static final IAtsActionableItemArtifactToken SAW_SubSystems_AI = AtsActionableItemArtifactToken.valueOf(323423423L, "SAW Sub-Systems");
    public static final IAtsActionableItemArtifactToken SAW_SW_Design_AI = AtsActionableItemArtifactToken.valueOf(98129283L, "SAW SW Design");
 
+   //////////////////////////////////
    // SAW_SW Versions
+   //////////////////////////////////
    public static final IAtsVersionArtifactToken SAW_Bld_1 = AtsVersionArtifactToken.valueOf(2749182L, "SAW_Bld_1");
    public static final IAtsVersionArtifactToken SAW_Bld_2 = AtsVersionArtifactToken.valueOf(7632957L, "SAW_Bld_2");
    public static final IAtsVersionArtifactToken SAW_Bld_3 = AtsVersionArtifactToken.valueOf(577781L, "SAW_Bld_3");
 
+   //////////////////////////////////
    //SAW Agile
+   //////////////////////////////////
    public static final ArtifactToken SAW_Agile_Team = ArtifactToken.valueOf(111, "SAW Agile Team", COMMON, AtsArtifactTypes.AgileTeam);
    public static final ArtifactToken SAW_Sprint_1 = ArtifactToken.valueOf(222, "SAW Sprint 1", COMMON, AtsArtifactTypes.AgileSprint);
    public static final ArtifactToken SAW_Sprint_2 = ArtifactToken.valueOf(333, "SAW Sprint 2", COMMON, AtsArtifactTypes.AgileSprint);
    public static final ArtifactToken SAW_Backlog = ArtifactToken.valueOf(444, "SAW Backlog", COMMON, AtsArtifactTypes.AgileBacklog);
 
+   //////////////////////////////////
    // SAW Actions
+   //////////////////////////////////
    public static final ArtifactToken SAW_Code_Team_WorkPackage_01 = ArtifactToken.valueOf(38512616, "AZp8M1dPuESWYBPPbDgA", "Work Pkg 01", COMMON, AtsArtifactTypes.WorkPackage);
    public static final ArtifactToken SAW_Code_Team_WorkPackage_02 = ArtifactToken.valueOf(513994, "AZp8M1d7TCJiBw6A5bgA", "Work Pkg 02", COMMON, AtsArtifactTypes.WorkPackage);
    public static final ArtifactToken SAW_Code_Team_WorkPackage_03 = ArtifactToken.valueOf(304908, "AZp8M1em4EC1xE6bPEwA", "Work Pkg 03", COMMON, AtsArtifactTypes.WorkPackage);
diff --git a/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/util/AtsImage.java b/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/util/AtsImage.java
index 05618e7..662c586 100644
--- a/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/util/AtsImage.java
+++ b/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/util/AtsImage.java
@@ -36,6 +36,7 @@
    public static AtsImage CENTER = new AtsImage("center.gif");
    public static AtsImage CHECK_BLUE = new AtsImage("check.gif");
    public static AtsImage CHECK_CLIPBOARD = new AtsImage("checkClipboard.gif");
+   public static AtsImage CHANGE_REQUEST = new AtsImage("changeRequest.gif");
    public static AtsImage COMPOSITE_STATE_ITEM = new AtsImage("compositeStateItem.gif");
    public static AtsImage CHECKBOX_ENABLED = new AtsImage("chkbox_enabled.gif");
    public static AtsImage CHECKBOX_DISABLED = new AtsImage("chkbox_disabled.gif");
diff --git a/plugins/org.eclipse.osee.ats.ide/OSEE-INF/images/changeRequest.gif b/plugins/org.eclipse.osee.ats.ide/OSEE-INF/images/changeRequest.gif
new file mode 100644
index 0000000..f988003
--- /dev/null
+++ b/plugins/org.eclipse.osee.ats.ide/OSEE-INF/images/changeRequest.gif
Binary files differ
diff --git a/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/AtsArtifactImageProvider.java b/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/AtsArtifactImageProvider.java
index f224def..f726aaa 100644
--- a/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/AtsArtifactImageProvider.java
+++ b/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/AtsArtifactImageProvider.java
@@ -90,12 +90,12 @@
          }
       }
       if (artifact instanceof AbstractWorkflowArtifact) {
-         AbstractWorkflowArtifact stateMachine = (AbstractWorkflowArtifact) artifact;
-         if (SubscribeManager.isSubscribed(stateMachine, AtsApiService.get().getUserService().getCurrentUser())) {
+         AbstractWorkflowArtifact wfArt = (AbstractWorkflowArtifact) artifact;
+         if (SubscribeManager.isSubscribed(wfArt, AtsApiService.get().getUserService().getCurrentUser())) {
             // was 8,6
             return ArtifactImageManager.setupImage(artifact, AtsImage.SUBSCRIBED_OVERLAY, Location.BOT_RIGHT);
          }
-         if (FavoritesManager.isFavorite(stateMachine, AtsApiService.get().getUserService().getCurrentUser())) {
+         if (FavoritesManager.isFavorite(wfArt, AtsApiService.get().getUserService().getCurrentUser())) {
             // was 7,0
             return ArtifactImageManager.setupImage(artifact, AtsImage.FAVORITE_OVERLAY, Location.TOP_RIGHT);
          }
diff --git a/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/editor/tab/WfeAbstractTab.java b/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/editor/tab/WfeAbstractTab.java
index 30546d8..1754885 100644
--- a/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/editor/tab/WfeAbstractTab.java
+++ b/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/editor/tab/WfeAbstractTab.java
@@ -72,7 +72,12 @@
          String titleString = editor.getTitleStr();
          String displayableTitle = Strings.escapeAmpersands(titleString);
          managedForm.getForm().setToolTipText(displayableTitle);
-         String artifactTypeName = workItem.isTeamWorkflow() ? "Team Workflow" : workItem.getArtifactTypeName();
+         String artifactTypeName = workItem.getArtifactTypeName();
+         if (workItem.isChangeRequest()) {
+            artifactTypeName = "CR";
+         } else if (workItem.isTeamWorkflow()) {
+            artifactTypeName = "Team Workflow";
+         }
          String formTitle = getFormTitle(managedForm, artifactTypeName);
          managedForm.getForm().setText(formTitle);
          if (AtsApiService.get().getAgileService().isBacklog(workItem)) {
diff --git a/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/editor/tab/reload/WfeReloadTab.java b/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/editor/tab/reload/WfeReloadTab.java
index 01c1d58..d176849 100644
--- a/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/editor/tab/reload/WfeReloadTab.java
+++ b/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/editor/tab/reload/WfeReloadTab.java
@@ -168,7 +168,6 @@
                if (Widgets.isAccessible(editor.getReloadButton())) {
                   editor.getReloadButton().setText("Reloading...");
                   editor.getReloadButton().getParent().layout(true);
-
                }
                IManagedForm managedForm = getManagedForm();
                if (managedForm != null && Widgets.isAccessible(getManagedForm().getForm())) {
diff --git a/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/navigate/NavigateViewItems.java b/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/navigate/NavigateViewItems.java
index db9ca82..37df048 100644
--- a/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/navigate/NavigateViewItems.java
+++ b/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/navigate/NavigateViewItems.java
@@ -217,7 +217,7 @@
                   AtsApiService.get().getUserGroupService().getMyUserGroups();
                Collection<IUserGroupArtifactToken> blamUserGroups = blam.getUserGroups();
                if (isOverrideAccess || !Collections.setIntersection(blamUserGroups, myUserGroups).isEmpty()) {
-                  items.add(new XNavigateItemBlam(item, blam, AtsImage.NEW_ACTION));
+                  items.add(new XNavigateItemBlam(item, blam, AtsImage.CHANGE_REQUEST));
                }
             }
          }
diff --git a/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/workflow/cr/CreateNewChangeRequestBlam.java b/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/workflow/cr/CreateNewChangeRequestBlam.java
index e2e4b32..b66fcba 100644
--- a/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/workflow/cr/CreateNewChangeRequestBlam.java
+++ b/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/workflow/cr/CreateNewChangeRequestBlam.java
@@ -247,12 +247,12 @@
 
    @Override
    public Image getImage() {
-      return ImageManager.getImage(AtsImage.ACTION);
+      return ImageManager.getImage(AtsImage.CHANGE_REQUEST);
    }
 
    @Override
    public ImageDescriptor getImageDescriptor() {
-      return ImageManager.getImageDescriptor(AtsImage.ACTION);
+      return ImageManager.getImageDescriptor(AtsImage.CHANGE_REQUEST);
    }
 
 }
\ No newline at end of file