feature[TW19451]: Confirm transition validation
Change-Id: I38b3f144b22c2d39650601503fa33bc0b63d4d1d
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 e04c716..436edbe 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
@@ -36,6 +36,7 @@
atsValidators.add(new AtsXListValidator());
atsValidators.add(new AtsXWidgetAttrValidator());
atsValidators.add(new AtsXPointsAttrValidator());
+ atsValidators.add(new AtsXHyperlinkLabelValueSelectionDamValidator());
}
@Override
diff --git a/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/validator/AtsXHyperlinkLabelValueSelectionDamValidator.java b/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/validator/AtsXHyperlinkLabelValueSelectionDamValidator.java
new file mode 100644
index 0000000..a1a6266
--- /dev/null
+++ b/plugins/org.eclipse.osee.ats.core/src/org/eclipse/osee/ats/core/validator/AtsXHyperlinkLabelValueSelectionDamValidator.java
@@ -0,0 +1,39 @@
+/*********************************************************************
+ * 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 org.eclipse.osee.ats.api.AtsApi;
+import org.eclipse.osee.ats.api.IAtsWorkItem;
+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;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class AtsXHyperlinkLabelValueSelectionDamValidator extends AtsXWidgetValidator {
+
+ @Override
+ public WidgetResult validateTransition(IAtsWorkItem workItem, IValueProvider provider, IAtsWidgetDefinition widgetDef, IAtsStateDefinition fromStateDef, IAtsStateDefinition toStateDef, AtsApi atsApi) {
+ WidgetResult result = WidgetResult.Success;
+ if ("XHyperlinkLabelValueSelectionDam".equals(widgetDef.getXWidgetName())) {
+ result = validateWidgetIsRequired(provider, widgetDef, fromStateDef, toStateDef);
+ if (!result.isSuccess()) {
+ return result;
+ }
+ }
+ return result;
+ }
+}
diff --git a/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/editor/tab/workflow/section/WfeWorkflowSection.java b/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/editor/tab/workflow/section/WfeWorkflowSection.java
index ffff8f2..f44bda0 100644
--- a/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/editor/tab/workflow/section/WfeWorkflowSection.java
+++ b/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/editor/tab/workflow/section/WfeWorkflowSection.java
@@ -88,7 +88,6 @@
isEditable = WorkflowManagerCore.isEditable(AtsApiService.get().getUserService().getCurrentUser(), sma,
page.getStateDefinition(), AtsApiService.get().getUserService());
isGlobalEditable = !sma.isReadOnly() && sma.isAccessControlWrite();
- // parent.setBackground(Displays.getSystemColor(SWT.COLOR_CYAN));
}
public boolean isCurrentState() {
@@ -104,7 +103,6 @@
try {
refreshStateTitle();
section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- // section.setBackground(Displays.getSystemColor(SWT.COLOR_MAGENTA));
boolean isCurrentSectionExpanded = isCurrentSectionExpanded(statePage);
createSection(section);
@@ -177,7 +175,6 @@
// Create Page
Composite workComp = toolkit.createContainer(comp, 1);
workComp.setLayoutData(new GridData(GridData.FILL_BOTH | GridData.VERTICAL_ALIGN_BEGINNING));
- // workComp.setBackground(Displays.getSystemColor(SWT.COLOR_GREEN));
if (sma.getWorkDefinition().isShowStateMetrics()) {
createMetricsHeader(workComp);
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 af5f09f..7c3a81ce 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
@@ -89,6 +89,8 @@
toReturn = new XStateSearchCombo();
} else if (widgetName.equals(XFoundInVersionWidget.WIDGET_ID)) {
toReturn = new XFoundInVersionWidget(name);
+ } else if (widgetName.equals(XTargetedVersionWidget.WIDGET_ID)) {
+ toReturn = new XTargetedVersionWidget(name);
} else if (widgetName.equals(XIntroducedInVersionWidget.WIDGET_ID)) {
toReturn = new XIntroducedInVersionWidget(name);
} else if (widgetName.equals(XCommitManager.WIDGET_NAME)) {
diff --git a/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/util/widgets/XFoundInVersionWidget.java b/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/util/widgets/XFoundInVersionWidget.java
index d4eb332..8fab991 100644
--- a/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/util/widgets/XFoundInVersionWidget.java
+++ b/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/util/widgets/XFoundInVersionWidget.java
@@ -13,106 +13,20 @@
package org.eclipse.osee.ats.ide.util.widgets;
-import java.util.Collection;
-import java.util.HashSet;
import org.eclipse.osee.ats.api.data.AtsRelationTypes;
-import org.eclipse.osee.ats.api.util.IAtsChangeSet;
-import org.eclipse.osee.ats.api.version.Version;
-import org.eclipse.osee.ats.ide.column.FoundInVersionColumnUI;
-import org.eclipse.osee.ats.ide.internal.Activator;
-import org.eclipse.osee.ats.ide.internal.AtsApiService;
-import org.eclipse.osee.ats.ide.workflow.teamwf.TeamWorkFlowArtifact;
import org.eclipse.osee.framework.core.data.RelationTypeSide;
-import org.eclipse.osee.framework.core.util.Result;
-import org.eclipse.osee.framework.jdk.core.util.Collections;
-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.ArtifactWidget;
/**
* @author Jeremy A. Midvidy
+ * @author Donald G. Dunne
*/
-public class XFoundInVersionWidget extends XHyperlabelVersionSelection implements ArtifactWidget {
+public class XFoundInVersionWidget extends XHyperlabelVersionSelection {
public static final String WIDGET_ID = XFoundInVersionWidget.class.getSimpleName();
public static RelationTypeSide FOUND_VERSION_RELATION = AtsRelationTypes.TeamWorkflowToFoundInVersion_Version;
- public Collection<Version> selectedVersions = new HashSet<>();
- private Artifact artifact;
public XFoundInVersionWidget(String label) {
- super(label);
- }
-
- public XFoundInVersionWidget() {
- this("Found In Version");
- }
-
- private RelationTypeSide getRelation() {
- return FOUND_VERSION_RELATION;
- }
-
- @Override
- public String getCurrentValue() {
- selectedVersions = (Collections.castAll(getArtifact().getRelatedArtifacts(getRelation())));
- return Collections.toString(",", selectedVersions);
- }
-
- @Override
- public boolean handleClear() {
- selectedVersions.clear();
- IAtsChangeSet changes = AtsApiService.get().createChangeSet("Update Found-In-Version");
- changes.unrelateAll(getArtifact(), getRelation());
- changes.executeIfNeeded();
- notifyXModifiedListeners();
- return true;
- }
-
- @Override
- public boolean handleSelection() {
- try {
- if (FoundInVersionColumnUI.getInstance().promptChangeVersion((TeamWorkFlowArtifact) getArtifact())) {
- notifyXModifiedListeners();
- refresh();
- return true;
- }
- return false;
- } catch (Exception ex) {
- OseeLog.log(Activator.class, OseeLevel.SEVERE_POPUP, ex);
- }
- return false;
- }
-
- @Override
- public boolean isEmpty() {
- return selectedVersions.isEmpty();
- }
-
- @Override
- public void setArtifact(Artifact art) {
- if (art instanceof TeamWorkFlowArtifact) {
- this.artifact = art;
- }
- }
-
- @Override
- public Artifact getArtifact() {
- return this.artifact;
- }
-
- @Override
- public void revert() {
- //
- }
-
- @Override
- public void saveToArtifact() {
- //
- }
-
- @Override
- public Result isDirty() {
- return Result.FalseResult;
+ super("Found In Version", FOUND_VERSION_RELATION);
}
}
diff --git a/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/util/widgets/XHyperlabelVersionSelection.java b/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/util/widgets/XHyperlabelVersionSelection.java
index b4c71bc..c970d89 100644
--- a/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/util/widgets/XHyperlabelVersionSelection.java
+++ b/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/util/widgets/XHyperlabelVersionSelection.java
@@ -15,36 +15,48 @@
import java.util.Collection;
import java.util.HashSet;
+import org.eclipse.osee.ats.api.AtsApi;
import org.eclipse.osee.ats.api.team.IAtsTeamDefinition;
+import org.eclipse.osee.ats.api.util.IAtsChangeSet;
import org.eclipse.osee.ats.api.version.IAtsVersion;
import org.eclipse.osee.ats.api.version.Version;
+import org.eclipse.osee.ats.api.workflow.IAtsTeamWorkflow;
import org.eclipse.osee.ats.ide.internal.Activator;
-import org.eclipse.osee.ats.ide.util.widgets.dialog.VersionTreeDialog;
-import org.eclipse.osee.ats.ide.world.WorldEditor;
-import org.eclipse.osee.framework.core.enums.Active;
+import org.eclipse.osee.ats.ide.internal.AtsApiService;
+import org.eclipse.osee.ats.ide.util.widgets.dialog.VersionListDialog;
+import org.eclipse.osee.ats.ide.workflow.teamwf.TeamWorkFlowArtifact;
+import org.eclipse.osee.framework.core.data.RelationTypeSide;
+import org.eclipse.osee.framework.core.data.TransactionToken;
+import org.eclipse.osee.framework.core.util.Result;
import org.eclipse.osee.framework.jdk.core.util.Collections;
import org.eclipse.osee.framework.logging.OseeLevel;
import org.eclipse.osee.framework.logging.OseeLog;
-import org.eclipse.osee.framework.ui.skynet.widgets.XHyperlinkLabelCmdValueSelection;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.ui.skynet.widgets.ArtifactWidget;
+import org.eclipse.osee.framework.ui.skynet.widgets.XHyperlinkLabelValueSelection;
+import org.eclipse.osee.framework.ui.swt.Widgets;
/**
+ * Single version selection dialog that persists upon selection. Clear and Close button shown by default to un-select.
+ *
* @author Megumi Telles
+ * @author Donald G. Dunne
*/
-public class XHyperlabelVersionSelection extends XHyperlinkLabelCmdValueSelection {
+public abstract class XHyperlabelVersionSelection extends XHyperlinkLabelValueSelection implements ArtifactWidget {
public static final String WIDGET_ID = XHyperlabelVersionSelection.class.getSimpleName();
Collection<Version> selectedVersions = new HashSet<>();
Collection<IAtsVersion> versions;
- VersionTreeDialog dialog = null;
- IAtsTeamDefinition teamDef;
+ VersionListDialog dialog = null;
+ private Artifact artifact;
+ private final RelationTypeSide relType;
+ protected AtsApi atsApi;
+ protected boolean removeAllAllowed = true;
- public XHyperlabelVersionSelection(String label) {
- super(label, true, WorldEditor.TITLE_MAX_LENGTH);
- }
-
- public XHyperlabelVersionSelection(String label, IAtsTeamDefinition teamDef) {
- super(label, true, WorldEditor.TITLE_MAX_LENGTH);
- this.teamDef = teamDef;
+ public XHyperlabelVersionSelection(String label, RelationTypeSide relType) {
+ super(label);
+ this.relType = relType;
+ atsApi = AtsApiService.get();
}
public Collection<Version> getSelectedVersions() {
@@ -58,9 +70,24 @@
@Override
public String getCurrentValue() {
+ if (getArtifact() != null) {
+ selectedVersions = (Collections.castAll(getArtifact().getRelatedArtifacts(relType)));
+ }
+ if (selectedVersions.isEmpty()) {
+ return "Not Set";
+ }
return Collections.toString(",", selectedVersions);
}
+ public boolean handleClear() {
+ selectedVersions.clear();
+ IAtsChangeSet changes = AtsApiService.get().createChangeSet("Update Found-In-Version");
+ changes.unrelateAll(getArtifact(), relType);
+ changes.executeIfNeeded();
+ notifyXModifiedListeners();
+ return true;
+ }
+
public void setSelectedVersions(Collection<Version> selectedVersions) {
this.selectedVersions = selectedVersions;
refresh();
@@ -68,27 +95,22 @@
}
@Override
- public boolean handleClear() {
- selectedVersions.clear();
- notifyXModifiedListeners();
- return true;
- }
-
- @Override
public boolean handleSelection() {
try {
if (versions == null) {
- dialog = new VersionTreeDialog(Active.Both);
+ dialog = new VersionListDialog("Select Version", "Select Version", getSelectableVersions());
} else {
- dialog = new VersionTreeDialog(Active.Both, versions);
+ dialog = new VersionListDialog("Select Version", "Select Version", getSelectableVersions());
}
+ dialog.setRemoveAllAllowed(removeAllAllowed);
int result = dialog.open();
if (result == 0) {
- selectedVersions.clear();
- for (Object obj : dialog.getResultVersions()) {
- selectedVersions.add((Version) obj);
+ IAtsChangeSet changes = AtsApiService.get().createChangeSet("Update Found-In-Version");
+ changes.setRelation(getArtifact(), relType, dialog.getSelectedFirst());
+ TransactionToken transaction = changes.executeIfNeeded();
+ if (transaction.isValid()) {
+ notifyXModifiedListeners();
}
- notifyXModifiedListeners();
}
return true;
} catch (Exception ex) {
@@ -97,6 +119,17 @@
return false;
}
+ private Collection<IAtsVersion> getSelectableVersions() {
+ if (artifact instanceof IAtsTeamWorkflow) {
+ IAtsTeamDefinition teamDefHoldingVersion = atsApi.getTeamDefinitionService().getTeamDefHoldingVersions(
+ ((IAtsTeamWorkflow) artifact).getTeamDefinition());
+ if (teamDefHoldingVersion != null) {
+ return atsApi.getTeamDefinitionService().getVersions(teamDefHoldingVersion);
+ }
+ }
+ return java.util.Collections.emptyList();
+ }
+
public void setVersions(Collection<IAtsVersion> versions) {
this.versions = versions;
if (dialog != null) {
@@ -109,4 +142,51 @@
return selectedVersions.isEmpty();
}
+ public void setEnableHyperLink() {
+ if (Widgets.isAccessible(labelHyperlink)) {
+ labelHyperlink.setEnabled(true);
+ }
+ }
+
+ public void setDisableHyperLink() {
+ if (Widgets.isAccessible(labelHyperlink)) {
+ labelHyperlink.setEnabled(false);
+ }
+ }
+
+ @Override
+ public void setArtifact(Artifact art) {
+ if (art instanceof TeamWorkFlowArtifact) {
+ this.artifact = art;
+ }
+ }
+
+ @Override
+ public Artifact getArtifact() {
+ return this.artifact;
+ }
+
+ @Override
+ public void revert() {
+ //
+ }
+
+ @Override
+ public void saveToArtifact() {
+ //
+ }
+
+ @Override
+ public Result isDirty() {
+ return Result.FalseResult;
+ }
+
+ public boolean isRemoveAllAllowed() {
+ return removeAllAllowed;
+ }
+
+ public void setRemoveAllAllowed(boolean removeAllAllowed) {
+ this.removeAllAllowed = removeAllAllowed;
+ }
+
}
diff --git a/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/util/widgets/XIntroducedInVersionWidget.java b/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/util/widgets/XIntroducedInVersionWidget.java
index d34da92..45bd173 100644
--- a/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/util/widgets/XIntroducedInVersionWidget.java
+++ b/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/util/widgets/XIntroducedInVersionWidget.java
@@ -13,107 +13,24 @@
package org.eclipse.osee.ats.ide.util.widgets;
-import java.util.Collection;
-import java.util.HashSet;
import org.eclipse.osee.ats.api.data.AtsRelationTypes;
-import org.eclipse.osee.ats.api.util.IAtsChangeSet;
-import org.eclipse.osee.ats.api.version.Version;
-import org.eclipse.osee.ats.ide.column.IntroducedInVersionColumnUI;
-import org.eclipse.osee.ats.ide.internal.Activator;
-import org.eclipse.osee.ats.ide.internal.AtsApiService;
-import org.eclipse.osee.ats.ide.workflow.teamwf.TeamWorkFlowArtifact;
import org.eclipse.osee.framework.core.data.RelationTypeSide;
-import org.eclipse.osee.framework.core.util.Result;
-import org.eclipse.osee.framework.jdk.core.util.Collections;
-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.ArtifactWidget;
/**
* @author Donald G. Dunne
*/
-public class XIntroducedInVersionWidget extends XHyperlabelVersionSelection implements ArtifactWidget {
+public class XIntroducedInVersionWidget extends XHyperlabelVersionSelection {
public static final String WIDGET_ID = XIntroducedInVersionWidget.class.getSimpleName();
public static RelationTypeSide INTRODUCED_VERSION_RELATION =
AtsRelationTypes.TeamWorkflowToIntroducedInVersion_Version;
- public Collection<Version> selectedVersions = new HashSet<>();
- private Artifact artifact;
-
- public XIntroducedInVersionWidget(String label) {
- super(label);
- }
public XIntroducedInVersionWidget() {
this("Introduced In Version");
}
- private RelationTypeSide getRelation() {
- return INTRODUCED_VERSION_RELATION;
- }
-
- @Override
- public String getCurrentValue() {
- selectedVersions = (Collections.castAll(getArtifact().getRelatedArtifacts(getRelation())));
- return Collections.toString(",", selectedVersions);
- }
-
- @Override
- public boolean handleClear() {
- selectedVersions.clear();
- IAtsChangeSet changes = AtsApiService.get().createChangeSet("Update Introduced-In-Version");
- changes.unrelateAll(getArtifact(), getRelation());
- changes.executeIfNeeded();
- notifyXModifiedListeners();
- return true;
- }
-
- @Override
- public boolean handleSelection() {
- try {
- if (IntroducedInVersionColumnUI.getInstance().promptChangeVersion((TeamWorkFlowArtifact) getArtifact())) {
- notifyXModifiedListeners();
- refresh();
- return true;
- }
- return false;
- } catch (Exception ex) {
- OseeLog.log(Activator.class, OseeLevel.SEVERE_POPUP, ex);
- }
- return false;
- }
-
- @Override
- public boolean isEmpty() {
- return selectedVersions.isEmpty();
- }
-
- @Override
- public void setArtifact(Artifact art) {
- if (art instanceof TeamWorkFlowArtifact) {
- this.artifact = art;
- }
- }
-
- @Override
- public Artifact getArtifact() {
- return this.artifact;
- }
-
- @Override
- public void revert() {
- //
- }
-
- @Override
- public void saveToArtifact() {
- //
- }
-
- @Override
- public Result isDirty() {
- return Result.FalseResult;
+ public XIntroducedInVersionWidget(String label) {
+ super(label, INTRODUCED_VERSION_RELATION);
}
}
diff --git a/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/util/widgets/XTargetedVersionWidget.java b/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/util/widgets/XTargetedVersionWidget.java
new file mode 100644
index 0000000..9c1a807
--- /dev/null
+++ b/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/util/widgets/XTargetedVersionWidget.java
@@ -0,0 +1,35 @@
+/*********************************************************************
+ * 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.ide.util.widgets;
+
+import org.eclipse.osee.ats.api.data.AtsRelationTypes;
+import org.eclipse.osee.framework.core.data.RelationTypeSide;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class XTargetedVersionWidget extends XHyperlabelVersionSelection {
+
+ public static final String WIDGET_ID = XTargetedVersionWidget.class.getSimpleName();
+ public static RelationTypeSide TARGETED_VERSION_RELATION = AtsRelationTypes.TeamWorkflowTargetedForVersion_Version;
+
+ public XTargetedVersionWidget() {
+ this("Targeted Version");
+ }
+
+ public XTargetedVersionWidget(String label) {
+ super(label, TARGETED_VERSION_RELATION);
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/util/widgets/dialog/VersionListDialog.java b/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/util/widgets/dialog/VersionListDialog.java
index 2f9b10b..0206eda 100644
--- a/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/util/widgets/dialog/VersionListDialog.java
+++ b/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/util/widgets/dialog/VersionListDialog.java
@@ -24,6 +24,7 @@
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
@@ -34,6 +35,8 @@
XCheckBox showReleased = new XCheckBox("Show Released Versions");
private final Collection<IAtsVersion> verArts;
+ private boolean removeAllAllowed = false;
+ private boolean removeAllSelected = false;
public VersionListDialog(String title, String message, Collection<IAtsVersion> verArts) {
super(title, message, new VersionContentProvider(false), new VersionLabelProvider(),
@@ -44,13 +47,27 @@
@Override
protected Control createDialogArea(Composite container) {
- Control control = super.createDialogArea(container);
+ Composite composite = new Composite(container, SWT.None);
+ composite.setLayout(new GridLayout(1, false));
+ composite.setLayoutData(new GridData(SWT.FILL, SWT.NONE, true, false));
- Composite comp = new Composite(control.getParent(), SWT.NONE);
- comp.setLayout(new GridLayout(2, false));
- comp.setLayoutData(new GridData(GridData.FILL_BOTH));
+ if (removeAllAllowed) {
+ final Button button = new Button(composite, SWT.PUSH);
+ button.setText("Un-Set and Close");
+ button.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ removeAllSelected = true;
+ close();
+ }
+ });
+ }
- showReleased.createWidgets(comp, 2);
+ Composite checkComp = new Composite(composite, SWT.NONE);
+ checkComp.setLayout(new GridLayout(2, false));
+ checkComp.setLayoutData(new GridData(GridData.FILL_BOTH));
+
+ showReleased.createWidgets(checkComp, 2);
showReleased.set(false);
showReleased.addSelectionListener(new SelectionAdapter() {
@Override
@@ -63,9 +80,19 @@
};
});
+ Control control = super.createDialogArea(composite);
+
return control;
}
+ public boolean isRemoveAllSelected() {
+ if (!removeAllAllowed) {
+ return false;
+ } else {
+ return removeAllSelected;
+ }
+ }
+
public static class VersionContentProvider extends ArrayTreeContentProvider {
boolean showReleased = false;
@@ -99,4 +126,12 @@
this.showReleased = showReleased;
}
}
+
+ public boolean isRemoveAllAllowed() {
+ return removeAllAllowed;
+ }
+
+ public void setRemoveAllAllowed(boolean removeAllAllowed) {
+ this.removeAllAllowed = removeAllAllowed;
+ }
}
diff --git a/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/workflow/AbstractWorkflowArtifact.java b/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/workflow/AbstractWorkflowArtifact.java
index f89c421..3b39089 100644
--- a/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/workflow/AbstractWorkflowArtifact.java
+++ b/plugins/org.eclipse.osee.ats.ide/src/org/eclipse/osee/ats/ide/workflow/AbstractWorkflowArtifact.java
@@ -472,6 +472,7 @@
return getWorkTypes().contains(workType);
}
+ @Override
public void setTags(List<String> tags) {
throw new UnsupportedOperationException();
}
diff --git a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/EnumSingletonSelectionDialog.java b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/EnumSingletonSelectionDialog.java
index 7d82ae2..731946d 100644
--- a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/EnumSingletonSelectionDialog.java
+++ b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/artifact/EnumSingletonSelectionDialog.java
@@ -26,13 +26,13 @@
import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
import org.eclipse.osee.framework.skynet.core.attribute.AttributeTypeManager;
import org.eclipse.osee.framework.ui.plugin.util.StringLabelProvider;
-import org.eclipse.osee.framework.ui.skynet.widgets.XCheckBox;
-import org.eclipse.osee.framework.ui.skynet.widgets.XModifiedListener;
-import org.eclipse.osee.framework.ui.skynet.widgets.XWidget;
import org.eclipse.osee.framework.ui.swt.Displays;
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.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.ui.dialogs.ListDialog;
@@ -42,7 +42,7 @@
*/
public class EnumSingletonSelectionDialog extends ListDialog {
- private boolean isRemoveAllAllowed = true;
+ private boolean removeAllAllowed = true;
private boolean removeAllSelected = false;
public EnumSingletonSelectionDialog(AttributeTypeToken attributeType, Collection<? extends Artifact> artifacts) {
@@ -57,43 +57,50 @@
for (EnumToken enumTok : validEnumValues) {
options.add(enumTok.getName());
}
- isRemoveAllAllowed = AttributeTypeManager.checkIfRemovalAllowed(attributeType, artifacts);
+ removeAllAllowed = AttributeTypeManager.checkIfRemovalAllowed(attributeType, artifacts);
} catch (OseeCoreException ex) {
options.add(ex.getLocalizedMessage());
}
setInput(options);
setTitle("Select Option (Singleton)");
- setMessage("Select option or Remove All.");
+ if (removeAllAllowed) {
+ setMessage("OR Select Option");
+ } else {
+ setMessage("Select Option");
+ }
setContentProvider(new ArrayContentProvider());
setLabelProvider(new StringLabelProvider());
}
@Override
protected Control createDialogArea(Composite container) {
- Control control = super.createDialogArea(container);
- Composite composite = new Composite(container, SWT.None);
- composite.setLayout(new GridLayout(2, false));
- composite.setLayoutData(new GridData(SWT.FILL, SWT.NONE, true, false));
+ Control control = null;
+ if (removeAllAllowed) {
+ Composite composite = new Composite(container, SWT.None);
+ composite.setLayout(new GridLayout(1, false));
+ composite.setLayoutData(new GridData(SWT.FILL, SWT.NONE, true, false));
- final XCheckBox checkBox = new XCheckBox("Remove All");
- checkBox.setEditable(isRemoveAllAllowed);
- checkBox.setVerticalLabel(false);
- checkBox.createWidgets(composite, 2);
- checkBox.addXModifiedListener(new XModifiedListener() {
-
- @Override
- public void widgetModified(XWidget widget) {
- removeAllSelected = checkBox.isChecked();
- }
- });
-
+ final Button button = new Button(composite, SWT.PUSH);
+ button.setText("Remove All and Close");
+ button.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ removeAllSelected = true;
+ close();
+ }
+ });
+ super.createDialogArea(composite);
+ control = composite;
+ } else {
+ control = super.createDialogArea(container);
+ }
return control;
}
public boolean isRemoveAllSelected() {
- if (!isRemoveAllAllowed) {
+ if (!removeAllAllowed) {
return false;
} else {
return removeAllSelected;
@@ -101,9 +108,20 @@
}
public String getSelectedOption() {
+ if (removeAllSelected) {
+ return "";
+ }
if (getResult().length == 0) {
return "";
}
return (String) getResult()[0];
}
+
+ public boolean isRemoveAllAllowed() {
+ return removeAllAllowed;
+ }
+
+ public void setRemoveAllAllowed(boolean removeAllAllowed) {
+ this.removeAllAllowed = removeAllAllowed;
+ }
}
diff --git a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XHyperlinkLabelValueSelection.java b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XHyperlinkLabelValueSelection.java
index 5819bb8..b51ae3a 100644
--- a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XHyperlinkLabelValueSelection.java
+++ b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XHyperlinkLabelValueSelection.java
@@ -18,6 +18,7 @@
import org.eclipse.osee.framework.ui.swt.ALayout;
import org.eclipse.osee.framework.ui.swt.Widgets;
import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.MouseListener;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
@@ -75,7 +76,7 @@
labelHyperlink.addListener(SWT.MouseUp, new Listener() {
@Override
public void handleEvent(Event event) {
- if (handleSelection()) {
+ if (event.button == 1 && handleSelection()) {
refresh();
notifyXModifiedListeners();
}
@@ -147,4 +148,16 @@
this.includeColon = includeColon;
}
+ public void addLabelWidgetListener(MouseListener listener) {
+ if (Widgets.isAccessible(labelHyperlink)) {
+ labelHyperlink.addMouseListener(listener);
+ }
+ }
+
+ public void addLabelMouseListener(MouseListener listener) {
+ if (Widgets.isAccessible(labelHyperlink)) {
+ labelHyperlink.addMouseListener(listener);
+ }
+ }
+
}
diff --git a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XHyperlinkLabelValueSelectionDam.java b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XHyperlinkLabelValueSelectionDam.java
index ae8abea..3441c30 100644
--- a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XHyperlinkLabelValueSelectionDam.java
+++ b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XHyperlinkLabelValueSelectionDam.java
@@ -22,8 +22,6 @@
import org.eclipse.osee.framework.jdk.core.util.DateUtil;
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.artifact.ArtifactPromptChange;
import org.eclipse.osee.framework.ui.skynet.internal.Activator;
@@ -38,6 +36,7 @@
protected Artifact artifact;
protected AttributeTypeToken attributeType;
+ public static String NOT_SET = "Not Set";
public XHyperlinkLabelValueSelectionDam() {
super("");
@@ -61,7 +60,7 @@
}
String value = artifact.getAttributesToString(attributeType);
if (Strings.isInValid(value)) {
- value = "No Set";
+ value = NOT_SET;
}
return value;
}
@@ -114,9 +113,15 @@
IStatus status = super.isValid();
if (status.isOK()) {
try {
- if (getArtifact() != null && getAttributeType() != null && Strings.isValid(getCurrentValue())) {
- status = OseeValidator.getInstance().validate(IOseeValidator.SHORT, getArtifact(), getAttributeType(),
- getCurrentValue());
+ if (getArtifact() != null && getAttributeType() != null) {
+ String currValue = getCurrentValue();
+ if (NOT_SET.equals(currValue)) {
+ currValue = "";
+ }
+ if (isRequiredEntry() && Strings.isInValid(currValue)) {
+ status = new Status(IStatus.ERROR, Activator.PLUGIN_ID,
+ String.format("Must select [%s]", getAttributeType().getUnqualifiedName()));
+ }
}
} catch (OseeCoreException ex) {
status = new Status(IStatus.ERROR, Activator.PLUGIN_ID, "Error getting Artifact", ex);
diff --git a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/dialog/FilteredCheckboxTreeDialog.java b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/dialog/FilteredCheckboxTreeDialog.java
index 4006acf..9c521f7 100644
--- a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/dialog/FilteredCheckboxTreeDialog.java
+++ b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/dialog/FilteredCheckboxTreeDialog.java
@@ -136,7 +136,7 @@
SWT.CHECK | (multiSelect ? SWT.MULTI : SWT.NONE) | SWT.READ_ONLY | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER,
patternFilter);
GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true);
- gd.heightHint = 500;
+ gd.heightHint = 350;
treeViewer.getViewer().getTree().setLayoutData(gd);
treeViewer.getViewer().setContentProvider(contentProvider);
treeViewer.getViewer().setLabelProvider(labelProvider);
diff --git a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/dialog/FilteredTreeDialog.java b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/dialog/FilteredTreeDialog.java
index 9ab71cc..6c626ee 100644
--- a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/dialog/FilteredTreeDialog.java
+++ b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/dialog/FilteredTreeDialog.java
@@ -131,7 +131,7 @@
(multiSelect ? SWT.MULTI : SWT.NONE) | SWT.READ_ONLY | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER, patternFilter,
true);
GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true);
- gd.heightHint = 500;
+ gd.heightHint = 350;
treeViewer.getViewer().getTree().setLayoutData(gd);
treeViewer.getViewer().setContentProvider(contentProvider);
treeViewer.getViewer().setLabelProvider(labelProvider);