diff options
author | donald.g.dunne | 2017-05-15 18:48:35 +0000 |
---|---|---|
committer | Donald Dunne | 2017-05-16 21:08:41 +0000 |
commit | 92d0debb9640fda47f22c8c5a44f36a82eeb153a (patch) | |
tree | a1e0389fea5ae24de2789feb9fe19178df7f3faf /plugins | |
parent | 727f5fe5291a44db035f0277aece97f3187242ee (diff) | |
download | org.eclipse.osee-92d0debb9640fda47f22c8c5a44f36a82eeb153a.tar.gz org.eclipse.osee-92d0debb9640fda47f22c8c5a44f36a82eeb153a.tar.xz org.eclipse.osee-92d0debb9640fda47f22c8c5a44f36a82eeb153a.zip |
feature[ats_ATS401973]: HLR - Add additional New Action fields for OSEE Team
Change-Id: I466374736539e84360d648762795fedf19d115a1
Diffstat (limited to 'plugins')
13 files changed, 317 insertions, 129 deletions
diff --git a/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/util/AtsObjects.java b/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/util/AtsObjects.java index b0cf739b5b4..f3630509818 100644 --- a/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/util/AtsObjects.java +++ b/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/util/AtsObjects.java @@ -14,6 +14,7 @@ import java.util.ArrayList; import java.util.Collection; import java.util.LinkedList; import java.util.List; +import org.eclipse.osee.ats.api.IAtsConfigObject; import org.eclipse.osee.ats.api.IAtsObject; import org.eclipse.osee.ats.api.IAtsServices; import org.eclipse.osee.ats.api.IAtsWorkItem; @@ -123,4 +124,15 @@ public class AtsObjects { return artifacts; } + @SuppressWarnings("unchecked") + public static <T> Collection<T> getActive(Collection<? extends IAtsConfigObject> objects) { + List<T> active = new LinkedList<>(); + for (IAtsConfigObject obj : objects) { + if (obj.isActive()) { + active.add((T) obj); + } + } + return active; + } + } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/IAtsWizardItem.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/IAtsWizardItem.java index 56fbbcbd2ea..cd2f91f6cad 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/IAtsWizardItem.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/IAtsWizardItem.java @@ -13,12 +13,12 @@ package org.eclipse.osee.ats.actions.wizard; import java.util.Collection; import org.eclipse.osee.ats.api.ai.IAtsActionableItem; import org.eclipse.osee.ats.api.util.IAtsChangeSet; +import org.eclipse.osee.ats.api.workflow.ActionResult; import org.eclipse.osee.framework.core.util.Result; -import org.eclipse.osee.framework.skynet.core.artifact.Artifact; /** * Allows the New Action wizard to be extended with custom widgets when the appropriate Actionable Items are selected - * + * * @author Donald G. Dunne */ public interface IAtsWizardItem { @@ -38,7 +38,7 @@ public interface IAtsWizardItem { /** * Determine if Action is valid to create based on wizard data entered. hasWizardXWidgetExtenstions will be called to * determine if this method should be called. - * + * * @return result of validation. if true, action will be created; if not, error will popup and action will not be * created */ @@ -48,16 +48,22 @@ public interface IAtsWizardItem { * Callback with created action upon completion and creation of the action and it's workflows. * hasWizardXWidgetExtenstions will be called to determine if this method should be called. */ - void wizardCompleted(Artifact actionArt, NewActionWizard wizard, IAtsChangeSet changes) throws Exception; + void wizardCompleted(ActionResult actionResult, NewActionWizard wizard, IAtsChangeSet changes) throws Exception; /** * Validation that the data entered is valid and the wizard can be finished. This will be called after every * character is entered, so extensive processing should not be performed during this check. Extensive processing can * be performed during isActionValidToCreate(). hasWizardXWidgetExtenstions will be called to determine if this * method should be called. - * + * * @return true if widget data entered is valid */ Result isWizardXWidgetsComplete(NewActionWizard wizard); + /** + * @return Name of the product or team that uses these fields. This will display in Page3 of the wizard to separate + * out different fields for different teams. + */ + String getName(); + } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/NewActionJob.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/NewActionJob.java index 57ebda09599..780264b85dc 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/NewActionJob.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/NewActionJob.java @@ -76,7 +76,7 @@ public class NewActionJob extends Job { AtsClientService.get().getUserService().getCurrentUser(), newActionListener, changes); if (wizard != null) { - wizard.notifyAtsWizardItemExtensions((Artifact) result.getFirstTeam().getStoreObject(), changes); + wizard.notifyAtsWizardItemExtensions(result, changes); } if (monitor != null) { diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/NewActionPage1.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/NewActionPage1.java index 63a145c9d1a..a866bb21977 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/NewActionPage1.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/NewActionPage1.java @@ -112,7 +112,7 @@ public class NewActionPage1 extends WizardPage { } }); - Pair<FilteredCheckboxTree, Text> results = createActionableItemTreeViewer(comp); + Pair<FilteredCheckboxTree, Text> results = createActionableItemTreeViewer(comp, wizard.getSelectableAis()); treeViewer = results.getFirst(); descriptionLabel = results.getSecond(); treeViewer.getCheckboxTreeViewer().addCheckStateListener(new ICheckStateListener() { @@ -136,7 +136,7 @@ public class NewActionPage1 extends WizardPage { } } - public static Pair<FilteredCheckboxTree, Text> createActionableItemTreeViewer(Composite comp) { + public static Pair<FilteredCheckboxTree, Text> createActionableItemTreeViewer(Composite comp, Collection<IAtsActionableItem> selectableAis) { Composite aiComp = new Composite(comp, SWT.NONE); aiComp.setLayout(new GridLayout(1, false)); aiComp.setLayoutData(new GridData(GridData.FILL_BOTH)); @@ -148,9 +148,13 @@ public class NewActionPage1 extends WizardPage { treeViewer.getViewer().setContentProvider(new AITreeContentProvider(Active.Active)); treeViewer.getViewer().setLabelProvider(new AtsObjectLabelProvider()); try { - List<IAtsActionableItem> topLevelActionableItems = - ActionableItems.getTopLevelActionableItems(Active.Active, AtsClientService.get().getQueryService()); - treeViewer.getViewer().setInput(topLevelActionableItems); + if (selectableAis == null) { + List<IAtsActionableItem> topLevelActionableItems = + ActionableItems.getTopLevelActionableItems(Active.Active, AtsClientService.get().getQueryService()); + treeViewer.getViewer().setInput(topLevelActionableItems); + } else { + treeViewer.getViewer().setInput(selectableAis); + } } catch (Exception ex) { OseeLog.log(Activator.class, Level.SEVERE, ex); } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/NewActionPage3.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/NewActionPage3.java index 9066fd37892..093eee4e4cd 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/NewActionPage3.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/NewActionPage3.java @@ -22,6 +22,7 @@ import org.eclipse.core.runtime.Platform; import org.eclipse.jface.wizard.WizardPage; import org.eclipse.osee.ats.api.ai.IAtsActionableItem; import org.eclipse.osee.ats.api.util.IAtsChangeSet; +import org.eclipse.osee.ats.api.workflow.ActionResult; import org.eclipse.osee.ats.internal.Activator; import org.eclipse.osee.ats.workflow.ATSXWidgetOptionResolver; import org.eclipse.osee.framework.core.util.Result; @@ -29,9 +30,9 @@ import org.eclipse.osee.framework.jdk.core.type.OseeCoreException; import org.eclipse.osee.framework.jdk.core.util.Conditions; import org.eclipse.osee.framework.logging.OseeLevel; import org.eclipse.osee.framework.logging.OseeLog; -import org.eclipse.osee.framework.skynet.core.artifact.Artifact; import org.eclipse.osee.framework.ui.skynet.widgets.XModifiedListener; import org.eclipse.osee.framework.ui.skynet.widgets.XWidget; +import org.eclipse.osee.framework.ui.skynet.widgets.util.IDynamicWidgetLayoutListener; import org.eclipse.osee.framework.ui.skynet.widgets.util.XWidgetPage; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; @@ -59,11 +60,11 @@ public class NewActionPage3 extends WizardPage { getWizardXWidgetExtensions(); } - public void notifyAtsWizardItemExtensions(Artifact action, IAtsChangeSet changes) { + public void notifyAtsWizardItemExtensions(ActionResult actionResult, IAtsChangeSet changes) { for (IAtsWizardItem item : wizardExtensionItems) { try { if (item.hasWizardXWidgetExtensions(wizard.getSelectedIAtsActionableItems())) { - item.wizardCompleted(action, wizard, changes); + item.wizardCompleted(actionResult, wizard, changes); } } catch (Exception ex) { OseeLog.log(Activator.class, OseeLevel.SEVERE_POPUP, ex); @@ -90,18 +91,26 @@ public class NewActionPage3 extends WizardPage { if (page == null) { StringBuffer stringBuffer = new StringBuffer(500); stringBuffer.append("<WorkPage>"); + IDynamicWidgetLayoutListener dynamicWidgetLayoutListener = null; for (IAtsWizardItem item : wizardExtensionItems) { - try { - if (item.hasWizardXWidgetExtensions(wizard.getSelectedIAtsActionableItems())) { + boolean hasWizardXWidgetExtensions = + item.hasWizardXWidgetExtensions(wizard.getSelectedIAtsActionableItems()); + if (hasWizardXWidgetExtensions) { + stringBuffer.append( + "<XWidget displayName=\"--- Extra fields for " + item.getName() + " ---\" xwidgetType=\"XLabel\" horizontalLabel=\"true\" toolTip=\"These fields are available for only the team workflow specified here.\"/>"); + try { + if (item instanceof IDynamicWidgetLayoutListener) { + dynamicWidgetLayoutListener = (IDynamicWidgetLayoutListener) item; + } item.getWizardXWidgetExtensions(wizard.getSelectedIAtsActionableItems(), stringBuffer); + } catch (Exception ex) { + OseeLog.log(Activator.class, OseeLevel.SEVERE_POPUP, ex); } - } catch (Exception ex) { - OseeLog.log(Activator.class, OseeLevel.SEVERE_POPUP, ex); } } stringBuffer.append("</WorkPage>"); - - page = new XWidgetPage(stringBuffer.toString(), ATSXWidgetOptionResolver.getInstance()); + page = new XWidgetPage(stringBuffer.toString(), ATSXWidgetOptionResolver.getInstance(), + dynamicWidgetLayoutListener); page.createBody(null, comp, null, xModListener, true); comp.layout(); diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/NewActionWizard.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/NewActionWizard.java index 87434b0573d..1e0d8d22634 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/NewActionWizard.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/actions/wizard/NewActionWizard.java @@ -19,13 +19,13 @@ import org.eclipse.jface.wizard.Wizard; import org.eclipse.osee.ats.api.ai.IAtsActionableItem; import org.eclipse.osee.ats.api.team.ChangeType; import org.eclipse.osee.ats.api.util.IAtsChangeSet; +import org.eclipse.osee.ats.api.workflow.ActionResult; import org.eclipse.osee.ats.api.workflow.INewActionListener; import org.eclipse.osee.ats.internal.Activator; import org.eclipse.osee.framework.core.util.Result; import org.eclipse.osee.framework.jdk.core.type.OseeCoreException; import org.eclipse.osee.framework.logging.OseeLevel; import org.eclipse.osee.framework.logging.OseeLog; -import org.eclipse.osee.framework.skynet.core.artifact.Artifact; import org.eclipse.osee.framework.ui.plugin.util.AWorkbench; import org.eclipse.osee.framework.ui.skynet.widgets.XCheckBox; import org.eclipse.osee.framework.ui.skynet.widgets.XCombo; @@ -42,7 +42,7 @@ public class NewActionWizard extends Wizard implements INewWizard { protected NewActionPage1 page1; protected NewActionPage2 page2; protected NewActionPage3 page3; - private Collection<IAtsActionableItem> initialAias; + private Collection<IAtsActionableItem> initialAias, selectableAis; private String initialDescription; private NewActionJob job = null; private INewActionListener newActionListener; @@ -128,9 +128,9 @@ public class NewActionWizard extends Wizard implements INewWizard { return ((XDate) page2.getXWidget(NewActionPage2.DEADLINE)).getDate(); } - public void notifyAtsWizardItemExtensions(Artifact action, IAtsChangeSet changes) { + public void notifyAtsWizardItemExtensions(ActionResult actionResult, IAtsChangeSet changes) { if (page3 != null) { - page3.notifyAtsWizardItemExtensions(action, changes); + page3.notifyAtsWizardItemExtensions(actionResult, changes); } } @@ -176,4 +176,12 @@ public class NewActionWizard extends Wizard implements INewWizard { this.openOnComplete = openOnComplete; } + public void getSelectableAis(Collection<IAtsActionableItem> ais) { + this.selectableAis = ais; + } + + public Collection<IAtsActionableItem> getSelectableAis() { + return selectableAis; + } + } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/AbstractXAssigneesListWidget.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/AbstractXAssigneesListWidget.java new file mode 100644 index 00000000000..1840aab37db --- /dev/null +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/AbstractXAssigneesListWidget.java @@ -0,0 +1,107 @@ +/******************************************************************************* + * Copyright (c) 2017 Boeing. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Boeing - initial API and implementation + *******************************************************************************/ +package org.eclipse.osee.ats.editor.widget; + +import java.util.List; +import org.eclipse.jface.viewers.ArrayContentProvider; +import org.eclipse.osee.ats.api.user.IAtsUser; +import org.eclipse.osee.ats.core.users.AtsCoreUsers; +import org.eclipse.osee.ats.util.AtsUserLabelProvider; +import org.eclipse.osee.framework.ui.skynet.FrameworkImage; +import org.eclipse.osee.framework.ui.skynet.widgets.XListViewer; +import org.eclipse.osee.framework.ui.swt.ALayout; +import org.eclipse.osee.framework.ui.swt.ImageManager; +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.SelectionAdapter; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Composite; + +/** + * @author Donald G. Dunne + */ +public abstract class AbstractXAssigneesListWidget extends XListViewer { + + public AbstractXAssigneesListWidget(String displayLabel) { + super(displayLabel); + } + + @Override + protected void createControls(Composite parent, int horizontalSpan) { + setLabelProvider(new AtsUserLabelProvider()); + setContentProvider(new ArrayContentProvider()); + + super.createControls(parent, horizontalSpan); + + setVerticalLabel(true); + + List<IAtsUser> assignees = getCurrentAssignees(); + assignees.remove(AtsCoreUsers.UNASSIGNED_USER); + setInput(assignees); + + GridData gd = new GridData(SWT.FILL, SWT.NONE, true, false); + gd.horizontalSpan = 2; + gd.heightHint = 60; + gd.widthHint = 60; + getTable().setLayoutData(gd); + + } + + public abstract List<IAtsUser> getCurrentAssignees(); + + public abstract void handleModifySelection(); + + public abstract void handleEmailSelection(); + + public abstract boolean includeEmailButton(); + + @Override + protected void createControlsAfterLabel(Composite parent, int horizontalSpan) { + + Composite mComp = new Composite(parent, SWT.FLAT); + GridData gd = new GridData(SWT.FILL, SWT.NONE, false, false); + gd.horizontalSpan = 2; + mComp.setLayoutData(gd); + mComp.setLayout(ALayout.getZeroMarginLayout(2, false)); + mComp.setBackgroundMode(SWT.INHERIT_FORCE); + + Button modifyList = new Button(mComp, SWT.PUSH); + modifyList.setImage(ImageManager.getImage(FrameworkImage.EDIT)); + modifyList.setToolTipText("Select to modify"); + modifyList.setLayoutData(new GridData(SWT.LEFT, SWT.NONE, false, false)); + modifyList.addSelectionListener(new SelectionAdapter() { + + @Override + public void widgetSelected(SelectionEvent e) { + handleModifySelection(); + } + + }); + + if (includeEmailButton()) { + Button emailSelected = new Button(mComp, SWT.PUSH); + emailSelected.setImage(ImageManager.getImage(FrameworkImage.EMAIL)); + emailSelected.setToolTipText("Email"); + emailSelected.setLayoutData(new GridData(SWT.LEFT, SWT.NONE, false, false)); + emailSelected.addSelectionListener(new SelectionAdapter() { + + @Override + public void widgetSelected(SelectionEvent e) { + handleEmailSelection(); + } + + }); + } + + } + +} diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/XAssigneesListWidget.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/XAssigneesListWidget.java index c3b82ad5f6c..429de72ec66 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/XAssigneesListWidget.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/XAssigneesListWidget.java @@ -10,137 +10,75 @@ *******************************************************************************/ package org.eclipse.osee.ats.editor.widget; +import java.util.LinkedList; import java.util.List; -import org.eclipse.jface.viewers.ArrayContentProvider; -import org.eclipse.jface.wizard.WizardDialog; +import org.eclipse.jface.window.Window; +import org.eclipse.osee.ats.api.team.IAtsTeamDefinition; import org.eclipse.osee.ats.api.user.IAtsUser; -import org.eclipse.osee.ats.column.AssigneeColumnUI; -import org.eclipse.osee.ats.core.client.workflow.AbstractWorkflowArtifact; -import org.eclipse.osee.ats.core.users.AtsCoreUsers; import org.eclipse.osee.ats.internal.Activator; -import org.eclipse.osee.ats.notify.ArtifactEmailWizard; -import org.eclipse.osee.ats.util.AtsUserLabelProvider; -import org.eclipse.osee.framework.core.util.Result; -import org.eclipse.osee.framework.jdk.core.type.OseeCoreException; +import org.eclipse.osee.ats.internal.AtsClientService; +import org.eclipse.osee.framework.core.enums.Active; import org.eclipse.osee.framework.logging.OseeLevel; import org.eclipse.osee.framework.logging.OseeLog; -import org.eclipse.osee.framework.skynet.core.artifact.Artifact; -import org.eclipse.osee.framework.ui.skynet.FrameworkImage; -import org.eclipse.osee.framework.ui.skynet.widgets.IArtifactWidget; -import org.eclipse.osee.framework.ui.skynet.widgets.XListViewer; -import org.eclipse.osee.framework.ui.swt.ALayout; -import org.eclipse.osee.framework.ui.swt.Displays; -import org.eclipse.osee.framework.ui.swt.ImageManager; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.SelectionAdapter; -import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.widgets.Button; -import org.eclipse.swt.widgets.Composite; +import org.eclipse.osee.framework.ui.skynet.widgets.dialog.UserCheckTreeDialog; /** * @author Donald G. Dunne */ -public class XAssigneesListWidget extends XListViewer implements IArtifactWidget { +public class XAssigneesListWidget extends AbstractXAssigneesListWidget { - private AbstractWorkflowArtifact awa; + public static final String WIDGET_ID = XAssigneesListWidget.class.getSimpleName(); + List<IAtsUser> assignees = new LinkedList<>(); + IAtsTeamDefinition teamDef = null; - public XAssigneesListWidget(String displayLabel) { - super(displayLabel); + public XAssigneesListWidget() { + super("Assignees"); } @Override - protected void createControls(Composite parent, int horizontalSpan) { - setLabelProvider(new AtsUserLabelProvider()); - setContentProvider(new ArrayContentProvider()); - - super.createControls(parent, horizontalSpan); - - setVerticalLabel(true); - - List<IAtsUser> assignees = awa.getAssignees(); - assignees.remove(AtsCoreUsers.UNASSIGNED_USER); - setInput(assignees); - - GridData gd = new GridData(SWT.FILL, SWT.NONE, false, false); - gd.horizontalSpan = 2; - gd.heightHint = 60; - getTable().setLayoutData(gd); - + public List<IAtsUser> getCurrentAssignees() { + return assignees; } @Override - protected void createControlsAfterLabel(Composite parent, int horizontalSpan) { - - Composite mComp = new Composite(parent, SWT.FLAT); - GridData gd = new GridData(SWT.FILL, SWT.NONE, false, false); - gd.horizontalSpan = 2; - mComp.setLayoutData(gd); - mComp.setLayout(ALayout.getZeroMarginLayout(2, false)); - mComp.setBackgroundMode(SWT.INHERIT_FORCE); - - Button modifyList = new Button(mComp, SWT.PUSH); - modifyList.setImage(ImageManager.getImage(FrameworkImage.EDIT)); - modifyList.setToolTipText("Select to modify"); - modifyList.setLayoutData(new GridData(SWT.LEFT, SWT.NONE, false, false)); - modifyList.addSelectionListener(new SelectionAdapter() { - - @Override - public void widgetSelected(SelectionEvent e) { - try { - AssigneeColumnUI.promptChangeAssignees(awa, true); - } catch (Exception ex) { - OseeLog.log(Activator.class, OseeLevel.SEVERE_POPUP, ex); - } + public void handleModifySelection() { + try { + UserCheckTreeDialog uld = new UserCheckTreeDialog("Select Assigness", "Select to assign.", + AtsClientService.get().getUserServiceClient().getOseeUsers( + AtsClientService.get().getUserService().getUsers(Active.Active))); + if (teamDef != null) { + uld.setTeamMembers( + AtsClientService.get().getUserServiceClient().getOseeUsers(teamDef.getMembersAndLeads())); } - }); - - Button emailSelected = new Button(mComp, SWT.PUSH); - emailSelected.setImage(ImageManager.getImage(FrameworkImage.EMAIL)); - emailSelected.setToolTipText("Email"); - emailSelected.setLayoutData(new GridData(SWT.LEFT, SWT.NONE, false, false)); - emailSelected.addSelectionListener(new SelectionAdapter() { + uld.setInitialSelections(AtsClientService.get().getUserServiceClient().getOseeUsers(assignees)); - @Override - public void widgetSelected(SelectionEvent e) { - try { - ArtifactEmailWizard wizard = new ArtifactEmailWizard(awa); - WizardDialog dialog = new WizardDialog(Displays.getActiveShell(), wizard); - dialog.create(); - dialog.open(); - } catch (Exception ex) { - OseeLog.log(Activator.class, OseeLevel.SEVERE_POPUP, ex); - } + if (uld.open() == Window.OK) { + assignees.clear(); + assignees.addAll(AtsClientService.get().getUserServiceClient().getAtsUsers(uld.getUsersSelected())); + setInput(assignees); } - - }); - - } - - @Override - public void saveToArtifact() { - // do nothing + } catch (Exception ex) { + OseeLog.log(Activator.class, OseeLevel.SEVERE_POPUP, ex); + } } @Override - public void revert() { + public void handleEmailSelection() { // do nothing } @Override - public Result isDirty() { - return Result.FalseResult; + public boolean includeEmailButton() { + return false; } - @Override - public Artifact getArtifact() throws OseeCoreException { - return awa; + public IAtsTeamDefinition getTeamDef() { + return teamDef; } - @Override - public void setArtifact(Artifact artifact) throws OseeCoreException { - this.awa = (AbstractWorkflowArtifact) artifact; + public void setTeamDef(IAtsTeamDefinition teamDef) { + this.teamDef = teamDef; } } diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/XAssigneesListWorkItemWidget.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/XAssigneesListWorkItemWidget.java new file mode 100644 index 00000000000..9e9bc78e3c4 --- /dev/null +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/XAssigneesListWorkItemWidget.java @@ -0,0 +1,96 @@ +/******************************************************************************* + * Copyright (c) 2017 Boeing. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Boeing - initial API and implementation + *******************************************************************************/ +package org.eclipse.osee.ats.editor.widget; + +import java.util.List; +import org.eclipse.jface.wizard.WizardDialog; +import org.eclipse.osee.ats.api.user.IAtsUser; +import org.eclipse.osee.ats.column.AssigneeColumnUI; +import org.eclipse.osee.ats.core.client.workflow.AbstractWorkflowArtifact; +import org.eclipse.osee.ats.internal.Activator; +import org.eclipse.osee.ats.notify.ArtifactEmailWizard; +import org.eclipse.osee.framework.core.util.Result; +import org.eclipse.osee.framework.jdk.core.type.OseeCoreException; +import org.eclipse.osee.framework.logging.OseeLevel; +import org.eclipse.osee.framework.logging.OseeLog; +import org.eclipse.osee.framework.skynet.core.artifact.Artifact; +import org.eclipse.osee.framework.ui.skynet.widgets.IArtifactWidget; +import org.eclipse.osee.framework.ui.swt.Displays; + +/** + * @author Donald G. Dunne + */ +public class XAssigneesListWorkItemWidget extends AbstractXAssigneesListWidget implements IArtifactWidget { + + private AbstractWorkflowArtifact awa; + public static final String WIDGET_ID = XAssigneesListWorkItemWidget.class.getSimpleName(); + + public XAssigneesListWorkItemWidget(String displayLabel) { + super(displayLabel); + } + + @Override + public List<IAtsUser> getCurrentAssignees() { + return awa.getAssignees(); + } + + @Override + public void handleModifySelection() { + try { + AssigneeColumnUI.promptChangeAssignees(awa, true); + } catch (Exception ex) { + OseeLog.log(Activator.class, OseeLevel.SEVERE_POPUP, ex); + } + } + + @Override + public void handleEmailSelection() { + try { + ArtifactEmailWizard wizard = new ArtifactEmailWizard(awa); + WizardDialog dialog = new WizardDialog(Displays.getActiveShell(), wizard); + dialog.create(); + dialog.open(); + } catch (Exception ex) { + OseeLog.log(Activator.class, OseeLevel.SEVERE_POPUP, ex); + } + } + + @Override + public boolean includeEmailButton() { + return true; + } + + @Override + public void saveToArtifact() { + // do nothing + } + + @Override + public void revert() { + // do nothing + } + + @Override + public Result isDirty() { + return Result.FalseResult; + } + + @Override + public Artifact getArtifact() throws OseeCoreException { + return awa; + } + + @Override + public void setArtifact(Artifact artifact) throws OseeCoreException { + this.awa = (AbstractWorkflowArtifact) artifact; + } + +} diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/goal/NewActionToGoalAction.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/goal/NewActionToGoalAction.java index 45607d50de7..b0552eb0667 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/goal/NewActionToGoalAction.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/goal/NewActionToGoalAction.java @@ -86,7 +86,7 @@ public class NewActionToGoalAction extends Action { } NewActionWizard wizard = new NewActionWizard(); if (!ais.isEmpty()) { - wizard.setInitialAias(ais); + wizard.getSelectableAis(ais); } wizard.setNewActionListener(new NewActionAdapter() { diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/review/NewPeerReviewDialog.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/review/NewPeerReviewDialog.java index a4b4b767728..5f1ddb31995 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/review/NewPeerReviewDialog.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/review/NewPeerReviewDialog.java @@ -83,7 +83,7 @@ public class NewPeerReviewDialog extends EntryDialog { } private void createAisSelection(Composite parent) { - Pair<FilteredCheckboxTree, Text> results = NewActionPage1.createActionableItemTreeViewer(parent); + Pair<FilteredCheckboxTree, Text> results = NewActionPage1.createActionableItemTreeViewer(parent, null); aiFilteredTree = results.getFirst(); descriptionLabel = results.getSecond(); aiFilteredTree.getCheckboxTreeViewer().addCheckStateListener(new CheckStateListener()); diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/AtsWidgetProvider.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/AtsWidgetProvider.java index 6973abaf3a0..3336e2213df 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/AtsWidgetProvider.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/AtsWidgetProvider.java @@ -23,6 +23,7 @@ import org.eclipse.osee.ats.core.client.review.defect.AtsXDefectValidator; import org.eclipse.osee.ats.core.client.review.role.AtsXUserRoleValidator; import org.eclipse.osee.ats.core.client.validator.AtsOperationalImpactValidator; import org.eclipse.osee.ats.core.client.validator.AtsOperationalImpactWithWorkaroundValidator; +import org.eclipse.osee.ats.editor.widget.XAssigneesListWidget; import org.eclipse.osee.ats.internal.Activator; import org.eclipse.osee.ats.internal.AtsClientService; import org.eclipse.osee.ats.util.XVersionList; @@ -149,6 +150,8 @@ public class AtsWidgetProvider implements IXWidgetProvider { return new XWorkPackageWidget(); } else if (widgetName.equals(XHyperlabelWorkflowApplicabilitySelection.WIDGET_ID)) { return new XHyperlabelWorkflowApplicabilitySelection(); + } else if (widgetName.equals(XAssigneesListWidget.WIDGET_ID)) { + return new XAssigneesListWidget(); } return toReturn; diff --git a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/util/IDynamicWidgetLayoutListener.java b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/util/IDynamicWidgetLayoutListener.java index 4ecc73a07de..dc0c78e03bc 100644 --- a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/util/IDynamicWidgetLayoutListener.java +++ b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/util/IDynamicWidgetLayoutListener.java @@ -10,7 +10,6 @@ *******************************************************************************/ package org.eclipse.osee.framework.ui.skynet.widgets.util; -import org.eclipse.osee.framework.jdk.core.type.OseeCoreException; import org.eclipse.osee.framework.skynet.core.artifact.Artifact; import org.eclipse.osee.framework.ui.skynet.widgets.XModifiedListener; import org.eclipse.osee.framework.ui.skynet.widgets.XWidget; @@ -21,10 +20,16 @@ import org.eclipse.ui.forms.widgets.FormToolkit; */ public interface IDynamicWidgetLayoutListener { - public void widgetCreating(XWidget xWidget, FormToolkit toolkit, Artifact art, SwtXWidgetRenderer dynamicXWidgetLayout, XModifiedListener xModListener, boolean isEditable) throws OseeCoreException; + public default void widgetCreating(XWidget xWidget, FormToolkit toolkit, Artifact art, SwtXWidgetRenderer dynamicXWidgetLayout, XModifiedListener xModListener, boolean isEditable) { + // do nothing + }; - public void widgetCreated(XWidget xWidget, FormToolkit toolkit, Artifact art, SwtXWidgetRenderer dynamicXWidgetLayout, XModifiedListener xModListener, boolean isEditable) throws OseeCoreException; + public default void widgetCreated(XWidget xWidget, FormToolkit toolkit, Artifact art, SwtXWidgetRenderer dynamicXWidgetLayout, XModifiedListener xModListener, boolean isEditable) { + // do nothing + }; - public void createXWidgetLayoutData(XWidgetRendererItem layoutData, XWidget xWidget, FormToolkit toolkit, Artifact art, XModifiedListener xModListener, boolean isEditable) throws OseeCoreException; + public default void createXWidgetLayoutData(XWidgetRendererItem layoutData, XWidget xWidget, FormToolkit toolkit, Artifact art, XModifiedListener xModListener, boolean isEditable) { + // do nothing + } } |