diff options
author | donald.g.dunne | 2021-05-04 03:39:02 +0000 |
---|---|---|
committer | Ryan T. Baldwin | 2021-05-04 03:39:02 +0000 |
commit | b6135d51abe3b8da83a80c1bb5097190246a44cf (patch) | |
tree | c9c333ef7d2a4b627cf804b541edf1a184e444c1 | |
parent | cbb2a41b50d47edfa0b5cfbc366a1bf34c20fece (diff) | |
download | org.eclipse.osee-b6135d51abe3b8da83a80c1bb5097190246a44cf.tar.gz org.eclipse.osee-b6135d51abe3b8da83a80c1bb5097190246a44cf.tar.xz org.eclipse.osee-b6135d51abe3b8da83a80c1bb5097190246a44cf.zip |
feature[TW19120]: Add Auto-Save to XComboDam and XIntegerDam
Change-Id: I028a90b7fd5dfd46cbda6eb91518d9ef17d6fba1
9 files changed, 69 insertions, 1 deletions
diff --git a/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/workdef/WidgetOption.java b/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/workdef/WidgetOption.java index 2b2bc7a3076..cb4f765ad0f 100644 --- a/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/workdef/WidgetOption.java +++ b/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/workdef/WidgetOption.java @@ -22,6 +22,9 @@ public enum WidgetOption { REQUIRED_FOR_TRANSITION, NOT_REQUIRED_FOR_TRANSITION, + AUTO_SAVE, + NOT_AUTO_SAVE, + REQUIRED_FOR_COMPLETION, NOT_REQUIRED_FOR_COMPLETION, diff --git a/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/workdef/WidgetOptionHandler.java b/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/workdef/WidgetOptionHandler.java index 37b70343136..f2ea87775f6 100644 --- a/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/workdef/WidgetOptionHandler.java +++ b/plugins/org.eclipse.osee.ats.api/src/org/eclipse/osee/ats/api/workdef/WidgetOptionHandler.java @@ -62,6 +62,10 @@ public class WidgetOptionHandler implements IAtsWidgetOptionHandler { options.remove(WidgetOption.REQUIRED_FOR_TRANSITION); } else if (xOption == WidgetOption.REQUIRED_FOR_TRANSITION) { options.remove(WidgetOption.NOT_REQUIRED_FOR_TRANSITION); + } else if (xOption == WidgetOption.AUTO_SAVE) { + options.remove(WidgetOption.NOT_AUTO_SAVE); + } else if (xOption == WidgetOption.NOT_AUTO_SAVE) { + options.remove(WidgetOption.AUTO_SAVE); } else if (xOption == WidgetOption.NOT_ENABLED) { options.remove(WidgetOption.ENABLED); } else if (xOption == WidgetOption.ENABLED) { diff --git a/plugins/org.eclipse.osee.ats.core.test/src/org/eclipse/osee/ats/core/workdef/WidgetOptionTest.java b/plugins/org.eclipse.osee.ats.core.test/src/org/eclipse/osee/ats/core/workdef/WidgetOptionTest.java index ecd3f84dec6..7a2a8a2baa6 100644 --- a/plugins/org.eclipse.osee.ats.core.test/src/org/eclipse/osee/ats/core/workdef/WidgetOptionTest.java +++ b/plugins/org.eclipse.osee.ats.core.test/src/org/eclipse/osee/ats/core/workdef/WidgetOptionTest.java @@ -26,7 +26,7 @@ public class WidgetOptionTest { @Test public void testValues() { - Assert.assertEquals(32, WidgetOption.values().length); + Assert.assertEquals(34, WidgetOption.values().length); } @Test diff --git a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XComboDam.java b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XComboDam.java index de2eac4a98e..95bd7a95b32 100644 --- a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XComboDam.java +++ b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XComboDam.java @@ -26,6 +26,7 @@ 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; +import org.eclipse.swt.widgets.Composite; /** * @author Donald G. Dunne @@ -45,6 +46,25 @@ public class XComboDam extends XCombo implements AttributeWidget { } @Override + protected void createControls(Composite parent, int horizontalSpan) { + super.createControls(parent, horizontalSpan); + if (isAutoSave()) { + addXModifiedListener(new XModifiedListener() { + + @Override + public void widgetModified(XWidget widget) { + if (artifact != null && artifact.isValid()) { + saveToArtifact(); + if (artifact.isDirty()) { + artifact.persist("XComboDam Auto-Save"); + } + } + } + }); + } + } + + @Override public AttributeTypeToken getAttributeType() { return attributeType; } diff --git a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XIntegerDam.java b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XIntegerDam.java index be1a8a11d51..f9a09a6eb51 100644 --- a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XIntegerDam.java +++ b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XIntegerDam.java @@ -21,6 +21,9 @@ 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.internal.Activator; +import org.eclipse.swt.events.FocusAdapter; +import org.eclipse.swt.events.FocusEvent; +import org.eclipse.swt.widgets.Composite; /** * @author Donald G. Dunne @@ -36,6 +39,26 @@ public class XIntegerDam extends XInteger implements AttributeWidget { } @Override + protected void createControls(Composite parent, int horizontalSpan) { + super.createControls(parent, horizontalSpan); + if (isAutoSave()) { + getStyledText().addFocusListener(new FocusAdapter() { + + @Override + public void focusLost(FocusEvent e) { + if (artifact != null && artifact.isValid()) { + saveToArtifact(); + if (artifact.isDirty()) { + artifact.persist("XIntegerDam Auto-Save"); + } + } + } + + }); + } + } + + @Override public Artifact getArtifact() { return artifact; } diff --git a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XOption.java b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XOption.java index 29dce906cb7..a9520cedc0d 100644 --- a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XOption.java +++ b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XOption.java @@ -22,6 +22,8 @@ import java.util.EnumSet; public enum XOption { NONE("", ""), + AUTO_SAVE("autoSave", "true"), + NOT_AUTO_SAVE("autoSave", "false"), REQUIRED("required", "true"), NOT_REQUIRED("required", "false"), REQUIRED_FOR_COMPLETION("requiredForCompletion", "true"), diff --git a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XOptionHandler.java b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XOptionHandler.java index e45dd6c75c4..f6a9582e7d1 100644 --- a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XOptionHandler.java +++ b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XOptionHandler.java @@ -54,6 +54,12 @@ public class XOptionHandler { case REQUIRED: xOptions.remove(XOption.NOT_REQUIRED); break; + case AUTO_SAVE: + xOptions.remove(XOption.NOT_AUTO_SAVE); + break; + case NOT_AUTO_SAVE: + xOptions.remove(XOption.AUTO_SAVE); + break; case NOT_REQUIRED_FOR_COMPLETION: xOptions.remove(XOption.REQUIRED_FOR_COMPLETION); break; diff --git a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XWidget.java b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XWidget.java index 2a913c25d04..4eeb25f6793 100644 --- a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XWidget.java +++ b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XWidget.java @@ -69,6 +69,7 @@ public abstract class XWidget { private ArtifactTypeId artifactType; private String id; protected Object defaultValueObj; + private boolean autoSave = false; public XWidget(String label) { this.label = label; @@ -454,4 +455,12 @@ public abstract class XWidget { public void setDefaultValueObj(Object defaultValueObj) { this.defaultValueObj = defaultValueObj; } + + public boolean isAutoSave() { + return autoSave; + } + + public void setAutoSave(boolean autoSave) { + this.autoSave = autoSave; + } }
\ No newline at end of file diff --git a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/util/SwtXWidgetRenderer.java b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/util/SwtXWidgetRenderer.java index 8630f4fe219..7d60f37673a 100644 --- a/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/util/SwtXWidgetRenderer.java +++ b/plugins/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/util/SwtXWidgetRenderer.java @@ -129,6 +129,7 @@ public class SwtXWidgetRenderer { xWidget.setRequiredEntry(xWidgetLayoutData.isRequired()); xWidget.setEditable(xWidgetLayoutData.getXOptionHandler().contains(XOption.EDITABLE) && isEditable); xWidget.setNoSelect(xWidgetLayoutData.getXOptionHandler().contains(XOption.NO_SELECT)); + xWidget.setAutoSave(xWidgetLayoutData.getXOptionHandler().contains(XOption.AUTO_SAVE)); xWidget.setArtifactType(xWidgetLayoutData.getArtifactType()); |