feature[TW19120]: Add Auto-Save to XComboDam and XIntegerDam
Change-Id: I028a90b7fd5dfd46cbda6eb91518d9ef17d6fba1
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 2b2bc7a..cb4f765 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 @@
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 37b7034..f2ea877 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 @@
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 ecd3f84..7a2a8a2 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 @@
@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 de2eac4..95bd7a9 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.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 @@
}
@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 be1a8a1..f9a09a6 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.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 @@
}
@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 29dce90..a9520ce 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 @@
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 e45dd6c..f6a9582 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 @@
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 2a913c2..4eeb25f 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 @@
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 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 8630f4f..7d60f37 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 @@
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());