bug[TW19304]: Fix issues found in CR pre-demo for demo Change-Id: Ifff7358aacd649b81c0b61d328389e5a4793d944
diff --git a/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/util/AtsUtil.java b/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/util/AtsUtil.java index b6900b7..d11b06c 100644 --- a/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/util/AtsUtil.java +++ b/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/util/AtsUtil.java
@@ -63,7 +63,7 @@ } public static String getActionUrl(String atsIdOrid, AtsApi atsApi) { - return getActionUrl(atsIdOrid, ATS_DEFAULT_ACTION_URL, atsApi); + return getActionUrl(atsIdOrid, "", atsApi); } public static String getActionUrl(String atsIdOrid, String defaultUrl, AtsApi atsApi) { @@ -73,7 +73,11 @@ } public static String getBaseActionUiUrl(String defaultUrl, AtsApi atsApi) { - return atsApi.getConfigValue(AtsUtil.ATS_CONFIG_ACTION_URL_KEY, defaultUrl); + String configUrl = atsApi.getConfigValue(AtsUtil.ATS_CONFIG_ACTION_URL_KEY, defaultUrl); + if (Strings.isInValid(configUrl)) { + configUrl = System.getProperty("osee.application.server") + ATS_DEFAULT_ACTION_URL; + } + return configUrl; } public static String resolveAjaxToBaseApplicationServer(String html, AtsApi atsApi) {
diff --git a/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/validator/AtsCoreXWidgetValidatorProvider.java b/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/validator/AtsCoreXWidgetValidatorProvider.java index 908531a..e04c716 100644 --- a/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/validator/AtsCoreXWidgetValidatorProvider.java +++ b/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/validator/AtsCoreXWidgetValidatorProvider.java
@@ -34,7 +34,8 @@ atsValidators.add(new AtsXComboValidator()); atsValidators.add(new AtsXComboBooleanValidator()); atsValidators.add(new AtsXListValidator()); - atsValidators.add(new AtsXSignAndDateValidator()); + atsValidators.add(new AtsXWidgetAttrValidator()); + atsValidators.add(new AtsXPointsAttrValidator()); } @Override
diff --git a/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/validator/AtsXPointsAttrValidator.java b/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/validator/AtsXPointsAttrValidator.java new file mode 100644 index 0000000..62ddfa7 --- /dev/null +++ b/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/validator/AtsXPointsAttrValidator.java
@@ -0,0 +1,50 @@ +/********************************************************************* + * Copyright (c) 2021 Boeing + * + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Boeing - initial API and implementation + **********************************************************************/ + +package org.eclipse.osee.ats.core.validator; + +import java.util.Arrays; +import org.eclipse.osee.ats.api.AtsApi; +import org.eclipse.osee.ats.api.IAtsWorkItem; +import org.eclipse.osee.ats.api.data.AtsAttributeTypes; +import org.eclipse.osee.ats.api.util.IValueProvider; +import org.eclipse.osee.ats.api.workdef.IAtsStateDefinition; +import org.eclipse.osee.ats.api.workdef.IAtsWidgetDefinition; +import org.eclipse.osee.ats.api.workdef.WidgetResult; +import org.eclipse.osee.ats.api.workdef.WidgetStatus; +import org.eclipse.osee.framework.core.data.AttributeTypeToken; + +/** + * @author Donald G. Dunne + */ +public class AtsXPointsAttrValidator extends AtsXWidgetValidator { + + @Override + public WidgetResult validateTransition(IAtsWorkItem workItem, IValueProvider provider, IAtsWidgetDefinition widgetDef, IAtsStateDefinition fromStateDef, IAtsStateDefinition toStateDef, AtsApi atsApi) { + WidgetResult result = WidgetResult.Success; + if ("XEstimatedPointsWidget".equals(widgetDef.getXWidgetName())) { + boolean found = false; + for (AttributeTypeToken attrType : Arrays.asList(AtsAttributeTypes.Points, AtsAttributeTypes.PointsNumeric)) { + if (atsApi.getAttributeResolver().getAttributeCount(workItem, attrType) > 0) { + found = true; + break; + } + } + if (!found) { + result = new WidgetResult(WidgetStatus.Invalid_Incompleted, "[%s] is required for transition to [%s]", + widgetDef.getName(), toStateDef.getName()); + } + } + return result; + } +}
diff --git a/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/validator/AtsXSignAndDateValidator.java b/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/validator/AtsXWidgetAttrValidator.java similarity index 80% rename from plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/validator/AtsXSignAndDateValidator.java rename to plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/validator/AtsXWidgetAttrValidator.java index 80e6354..eacbe24 100644 --- a/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/validator/AtsXSignAndDateValidator.java +++ b/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/validator/AtsXWidgetAttrValidator.java
@@ -23,28 +23,23 @@ import org.eclipse.osee.ats.api.workdef.IAtsWidgetDefinition; import org.eclipse.osee.ats.api.workdef.WidgetResult; import org.eclipse.osee.ats.api.workdef.WidgetStatus; -import org.eclipse.osee.ats.core.internal.AtsApiService; import org.eclipse.osee.framework.core.data.AttributeTypeToken; /** + * Add any xwidgets that need attr type(s) to be valid + * * @author Donald G. Dunne */ -public class AtsXSignAndDateValidator extends AtsXWidgetValidator { +public class AtsXWidgetAttrValidator extends AtsXWidgetValidator { - AtsApi atsApi; - - private final List<SignAndDateWidget> widgets = Arrays.asList( // - new SignAndDateWidget("XTleReviewedWidget", AtsAttributeTypes.TleReviewedBy, AtsAttributeTypes.TleReviewedDate) // + private final List<AttributeWidget> widgets = Arrays.asList( // + new AttributeWidget("XTleReviewedWidget", AtsAttributeTypes.TleReviewedBy, AtsAttributeTypes.TleReviewedDate) // ); - public AtsXSignAndDateValidator() { - atsApi = AtsApiService.get(); - } - @Override - public WidgetResult validateTransition(IAtsWorkItem workItem, IValueProvider provider, IAtsWidgetDefinition widgetDef, IAtsStateDefinition fromStateDef, IAtsStateDefinition toStateDef, AtsApi atsServices) { + public WidgetResult validateTransition(IAtsWorkItem workItem, IValueProvider provider, IAtsWidgetDefinition widgetDef, IAtsStateDefinition fromStateDef, IAtsStateDefinition toStateDef, AtsApi atsApi) { WidgetResult result = WidgetResult.Success; - for (SignAndDateWidget sdWidget : widgets) { + for (AttributeWidget sdWidget : widgets) { if (sdWidget.getWidgetName().equals(widgetDef.getXWidgetName())) { result = validateWidgetIsRequired(provider, widgetDef, fromStateDef, toStateDef); if (!result.isSuccess()) {
diff --git a/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/validator/SignAndDateWidget.java b/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/validator/AttributeWidget.java similarity index 91% rename from plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/validator/SignAndDateWidget.java rename to plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/validator/AttributeWidget.java index dcda016..8f74c41 100644 --- a/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/validator/SignAndDateWidget.java +++ b/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/validator/AttributeWidget.java
@@ -19,11 +19,11 @@ /** * @author Donald G. Dunne */ -public class SignAndDateWidget { +public class AttributeWidget { private String widgetName; private List<AttributeTypeToken> attrTypes = new ArrayList<>(); - public SignAndDateWidget(String widgetName, AttributeTypeToken... attrTypes) { + public AttributeWidget(String widgetName, AttributeTypeToken... attrTypes) { this.widgetName = widgetName; for (AttributeTypeToken type : attrTypes) { this.attrTypes.add(type);
diff --git a/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/workdef/WorkDefTaskDemoForCrEstimating.java b/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/workdef/WorkDefTaskDemoForCrEstimating.java index ea9992e..afe93c3 100644 --- a/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/workdef/WorkDefTaskDemoForCrEstimating.java +++ b/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/workdef/WorkDefTaskDemoForCrEstimating.java
@@ -59,7 +59,7 @@ new WidgetDefinition(Description, "XTextDam", FILL_VERTICALLY, AUTO_SAVE), // new WidgetDefinition(Assumptions, "XTextDam", FILL_VERTICALLY, AUTO_SAVE), // new CompositeLayoutItem(4, // - new WidgetDefinition("Estimated Points", "XPointsWidget", AUTO_SAVE), // + new WidgetDefinition("Estimated Points", "XEstimatedPointsWidget", REQUIRED_FOR_TRANSITION, AUTO_SAVE), // new WidgetDefinition(EstimatedCompletionDate, "XDateDam", AUTO_SAVE) // ), // new WidgetDefinition("TLE Reviewed Estimate", AtsAttributeTypes.TleReviewedDate, "XTleReviewedWidget",
diff --git a/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/editor/tab/workflow/header/WfeTransitionHeader.java b/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/editor/tab/workflow/header/WfeTransitionHeader.java index 2d72a16..70708d1 100644 --- a/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/editor/tab/workflow/header/WfeTransitionHeader.java +++ b/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/editor/tab/workflow/header/WfeTransitionHeader.java
@@ -281,10 +281,12 @@ @Override public void done(IJobChangeEvent event) { TransitionResults results = operation.getResults(); - results.setAtsApi(AtsApiService.get()); - if (results.isErrors()) { - TransitionResultsUi.reportDialog("Transition Failed", results); - AtsUtilClient.logExceptions(results); + if (results != null) { + results.setAtsApi(AtsApiService.get()); + if (results.isErrors()) { + TransitionResultsUi.reportDialog("Transition Failed", results); + AtsUtilClient.logExceptions(results); + } } editor.getWorkFlowTab().setLoading(false); transitionHeader.refresh();
diff --git a/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/util/widgets/AtsWidgetProvider.java b/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/util/widgets/AtsWidgetProvider.java index ced00f3..bd10662 100644 --- a/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/util/widgets/AtsWidgetProvider.java +++ b/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/util/widgets/AtsWidgetProvider.java
@@ -216,8 +216,8 @@ return new XHyperlinkFeatureDam(name); } else if (widgetName.equals(XDateWithValidateDam.WIDGET_ID)) { return new XDateWithValidateDam(name); - } else if (widgetName.equals(XPointsWidget.WIDGET_ID)) { - return new XPointsWidget(); + } else if (widgetName.equals(XEstimatedPointsWidget.WIDGET_ID)) { + return new XEstimatedPointsWidget(); } else if (widgetName.equals(XTleReviewedWidget.WIDGET_ID)) { return new XTleReviewedWidget(); }
diff --git a/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/util/widgets/XPointsWidget.java b/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/util/widgets/XEstimatedPointsWidget.java similarity index 90% rename from plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/util/widgets/XPointsWidget.java rename to plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/util/widgets/XEstimatedPointsWidget.java index 9a2ce08..0e282d6 100644 --- a/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/util/widgets/XPointsWidget.java +++ b/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/util/widgets/XEstimatedPointsWidget.java
@@ -28,29 +28,29 @@ import org.eclipse.osee.framework.skynet.core.artifact.Artifact; import org.eclipse.osee.framework.ui.plugin.util.ListSelectionDialog; import org.eclipse.osee.framework.ui.skynet.widgets.ArtifactWidget; -import org.eclipse.osee.framework.ui.skynet.widgets.XHyperlinkLabelCmdValueSelection; +import org.eclipse.osee.framework.ui.skynet.widgets.XHyperlinkLabelValueSelDam; import org.eclipse.osee.framework.ui.skynet.widgets.dialog.EntryDialog; import org.eclipse.osee.framework.ui.swt.Displays; /** * @author Donald G. Dunne */ -public class XPointsWidget extends XHyperlinkLabelCmdValueSelection implements ArtifactWidget { +public class XEstimatedPointsWidget extends XHyperlinkLabelValueSelDam implements ArtifactWidget { - public static final Object WIDGET_ID = XPointsWidget.class.getSimpleName(); + public static final Object WIDGET_ID = XEstimatedPointsWidget.class.getSimpleName(); public float points = 0; private final AtsApi atsApi; private IAtsWorkItem workItem; private AttributeTypeToken pointsAttrType = AttributeTypeToken.SENTINEL; - public XPointsWidget() { - super("Points", true, 50); + public XEstimatedPointsWidget() { + super("Estimated Points", true, 50); atsApi = AtsApiService.get(); } @Override public String getCurrentValue() { - AttributeTypeToken pointsAttrType = getPointsAttrType(); + AttributeTypeToken pointsAttrType = getAttributeType(); if (pointsAttrType == null) { pointsAttrType = AtsAttributeTypes.PointsNumeric; } @@ -59,7 +59,7 @@ @Override public boolean handleSelection() { - AttributeTypeToken pointsAttrType = getPointsAttrType(); + AttributeTypeToken pointsAttrType = getAttributeType(); if (pointsAttrType == AtsAttributeTypes.PointsNumeric) { EntryDialog dialog = new EntryDialog("Enter Points", "Enter Points"); if (dialog.open() == Window.OK) { @@ -99,12 +99,13 @@ @Override public boolean handleClear() { IAtsChangeSet changes = atsApi.createChangeSet("Remove Points"); - changes.deleteAttributes(workItem, getPointsAttrType()); + changes.deleteAttributes(workItem, getAttributeType()); changes.executeIfNeeded(); return true; } - public AttributeTypeToken getPointsAttrType() { + @Override + public AttributeTypeToken getAttributeType() { if (pointsAttrType.isInvalid()) { IAtsTeamWorkflow teamWf = workItem.getParentTeamWorkflow(); if (teamWf != null) {
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 b78216d..3872e9f 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
@@ -13,6 +13,7 @@ package org.eclipse.osee.ats.ide.workflow.cr; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.Date; @@ -184,10 +185,12 @@ descWidget = (XText) xWidget; } else if (xWidget.getLabel().equals(CHANGE_TYPE)) { changeWidget = (XCombo) xWidget; + changeWidget.setDataStrings(Arrays.asList("Improvement", "Problem")); } else if (xWidget.getLabel().equals(PRIORITY)) { priorityWidget = (XCombo) xWidget; } else if (xWidget.getLabel().equals(PROGRAM)) { XCombo programCombo = (XCombo) xWidget; + programCombo.setToolTip("Selection if multiple Change Request programs exist"); List<String> aiStrs = new ArrayList<String>(); for (IAtsActionableItem ai : getProgramCrAis()) { aiStrs.add(ai.getName()); @@ -196,6 +199,9 @@ if (aiStrs.size() == 1) { programCombo.getComboBox().select(1); } + if (aiStrs.size() == 1) { + programCombo.setEditable(false); + } programCombo.getLabelWidget().addMouseListener(new MouseAdapter() { @Override @@ -242,6 +248,11 @@ } @Override + public String getTitle() { + return getName(); + } + + @Override public boolean showInBlamSection() { return false; }
diff --git a/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/workflow/task/widgets/estimates/TaskEstFactory.java b/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/workflow/task/widgets/estimates/TaskEstFactory.java index 1ce00e6..4bf62fe 100644 --- a/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/workflow/task/widgets/estimates/TaskEstFactory.java +++ b/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/workflow/task/widgets/estimates/TaskEstFactory.java
@@ -35,8 +35,10 @@ public static XViewerColumn Assignee_Col = new XViewerColumn("ats.taskest.assignee", "Assignees", 120, XViewerAlign.Left, true, SortDataType.String, false, "Assignee(s) of Estimating task. Double-click to open task."); - public static XViewerColumn Estimated_Points_Col = new XViewerColumn("ats.taskest.est.points", "Est Points", 40, + public static XViewerColumn Estimated_Points_Col = new XViewerColumn("ats.taskest.est.points", "Est Points", 70, XViewerAlign.Left, true, SortDataType.Float, false, "Double-click to open task."); + public static XViewerColumn Tle_Reviewed_Col = new XViewerColumn("ats.taskest.tle.reviewed", "TLE Reviewed", 50, + XViewerAlign.Left, true, SortDataType.Boolean, false, "Double-click to open task."); public static XViewerColumn Estimated_Completion_Date_Col = new XViewerColumn("ats.taskest.est.completion.date", "Est Completion Date", 60, XViewerAlign.Left, true, SortDataType.Date, false, null); public static XViewerColumn Description_Col = new XViewerColumn("ats.taskest.description", "Description", 120, @@ -50,7 +52,7 @@ public TaskEstFactory(IOseeTreeReportProvider reportProvider) { super(NAMESPACE, reportProvider); - registerColumns(Check_Col, Name_Col, Status_Col, Assignee_Col, Estimated_Points_Col, + registerColumns(Check_Col, Name_Col, Status_Col, Assignee_Col, Estimated_Points_Col, Tle_Reviewed_Col, Estimated_Completion_Date_Col, Description_Col, Assumptions_Col, Notes_Col, Attachments_Col); }
diff --git a/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/workflow/task/widgets/estimates/TaskEstLabelProvider.java b/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/workflow/task/widgets/estimates/TaskEstLabelProvider.java index cc4d8a3..622d710 100644 --- a/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/workflow/task/widgets/estimates/TaskEstLabelProvider.java +++ b/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/workflow/task/widgets/estimates/TaskEstLabelProvider.java
@@ -49,24 +49,27 @@ @Override public Image getColumnImage(Object element, XViewerColumn xCol, int columnIndex) { - TaskEstDefinition taskDef = (TaskEstDefinition) element; + TaskEstDefinition ted = (TaskEstDefinition) element; if (xCol.equals(TaskEstFactory.Check_Col)) { - if (taskDef.isManual()) { + if (ted.isManual()) { return ImageManager.getImage(AtsImage.TASK); } - if (taskDef.hasTask()) { + if (ted.hasTask()) { return null; } - if (taskDef.isChecked()) { + if (ted.isChecked()) { return ImageManager.getImage(FrameworkImage.CHECKBOX_CHECK_TRUE); } else { return ImageManager.getImage(FrameworkImage.CHECKBOX_CHECK_UNSET); } - } - if (xCol.equals(TaskEstFactory.Assignee_Col)) { - if (taskDef.hasTask()) { - return AssigneeColumnUI.instance.getColumnImage(taskDef.getTask(), xCol, columnIndex); + } else if (xCol.equals(TaskEstFactory.Assignee_Col)) { + if (ted.hasTask()) { + return AssigneeColumnUI.instance.getColumnImage(ted.getTask(), xCol, columnIndex); } + } else if (atsApi.getAttributeResolver().getAttributeCount(ted.getTask(), + AtsAttributeTypes.TleReviewedDate) == 1) { + return ImageManager.getImage(FrameworkImage.CHECKBOX_CHECK_TRUE); + } return null; } @@ -118,6 +121,14 @@ xTaskEstViewer.getPointsAttrType(), "")); } return ""; + } else if (xCol.equals(TaskEstFactory.Tle_Reviewed_Col)) { + if (ted.hasTask()) { + if (atsApi.getAttributeResolver().getAttributeCount(ted.getTask(), + AtsAttributeTypes.TleReviewedDate) == 1) { + return "Reviewed"; + } + } + return ""; } else if (xCol.equals(TaskEstFactory.Attachments_Col)) { if (ted.hasTask()) { int count = atsApi.getRelationResolver().getRelated(ted.getTask(),
diff --git a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XHyperlinkLabelCmdValueSelection.java b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XHyperlinkLabelCmdValueSelection.java index cc227c0..1e17b27 100644 --- a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XHyperlinkLabelCmdValueSelection.java +++ b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XHyperlinkLabelCmdValueSelection.java
@@ -34,8 +34,8 @@ Label valueLabel; Hyperlink selectHyperLinkLabel, clearHyperLinkLabel; - private final boolean supportClear; - private Integer truncateValueLength = null; + protected boolean supportClear; + protected Integer truncateValueLength = null; public XHyperlinkLabelCmdValueSelection(String label) { this(label, false); @@ -214,4 +214,5 @@ clearHyperLinkLabel.setEnabled(true); } } + }
diff --git a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XHyperlinkLabelValueSelDam.java b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XHyperlinkLabelValueSelDam.java new file mode 100644 index 0000000..817e93b --- /dev/null +++ b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XHyperlinkLabelValueSelDam.java
@@ -0,0 +1,108 @@ +/******************************************************************************* + * Copyright (c) 2021 Boeing. + * + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * Boeing - initial API and implementation + *******************************************************************************/ +package org.eclipse.osee.framework.ui.skynet.widgets; + +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.Status; +import org.eclipse.osee.framework.core.data.AttributeTypeToken; +import org.eclipse.osee.framework.core.util.Result; +import org.eclipse.osee.framework.jdk.core.type.OseeCoreException; +import org.eclipse.osee.framework.jdk.core.util.Strings; +import org.eclipse.osee.framework.skynet.core.artifact.Artifact; +import org.eclipse.osee.framework.skynet.core.validation.IOseeValidator; +import org.eclipse.osee.framework.skynet.core.validation.OseeValidator; +import org.eclipse.osee.framework.ui.skynet.internal.Activator; + +/** + * @author Donald G. Dunne + */ +public abstract class XHyperlinkLabelValueSelDam extends XHyperlinkLabelCmdValueSelection implements AttributeWidget { + + private Artifact artifact; + private AttributeTypeToken attributeType; + + public XHyperlinkLabelValueSelDam(String label) { + this(label, false); + } + + public XHyperlinkLabelValueSelDam(String label, boolean supportClear, Integer truncateValueLength) { + super(label); + this.supportClear = supportClear; + this.truncateValueLength = truncateValueLength; + } + + public XHyperlinkLabelValueSelDam(String label, boolean supportClear) { + this(label, supportClear, null); + } + + @Override + public Artifact getArtifact() { + return artifact; + } + + /** + * Hyperlink Selection is save on selection + */ + @Override + public void saveToArtifact() { + // do nothing + } + + /** + * Hyperlink Selection is save on selection + */ + @Override + public void revert() { + // do nothing + } + + /** + * Hyperlink Selection is save on selection + */ + @Override + public Result isDirty() { + return Result.FalseResult; + } + + @Override + public void setAttributeType(Artifact artifact, AttributeTypeToken attributeType) { + this.artifact = artifact; + this.attributeType = attributeType; + } + + @Override + public AttributeTypeToken getAttributeType() { + return attributeType; + } + + @Override + public IStatus isValid() { + IStatus status = super.isValid(); + if (status.isOK()) { + try { + if (getArtifact() != null && getAttributeType() != null) { + status = OseeValidator.getInstance().validate(IOseeValidator.SHORT, getArtifact(), getAttributeType(), + getCurrentValue()); + if (status.isOK() && isRequiredEntry() && Strings.isInValid(getCurrentValue())) { + status = new Status(IStatus.ERROR, Activator.PLUGIN_ID, + String.format("Must enter [%s]", attributeType.getUnqualifiedName())); + } + } + } catch (OseeCoreException ex) { + status = new Status(IStatus.ERROR, Activator.PLUGIN_ID, "Error getting Artifact", ex); + } + } + return status; + } + +}