Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
using DevExpress.Data.Filtering;
using DevExpress.Data.Filtering.Helpers;
using DevExpress.ExpressApp;
using DevExpress.ExpressApp.Actions;
Expand All @@ -22,7 +23,7 @@ public void ActionsInDetailViewTest(Priority priority, bool result) {
using ViewController testedController = new ViewController();

SimpleAction testedAction = new SimpleAction(testedController, "High Priority", string.Empty);
testedAction.TargetObjectsCriteria = "Priority = 2";
testedAction.TargetObjectsCriteria = CriteriaOperator.FromLambda<DemoTask>(t => t.Priority == Priority.High).ToString();

DemoTask task = new DemoTask();
task.Priority = priority;
Expand Down Expand Up @@ -54,7 +55,7 @@ public void ActionsInListViewTest(SelectionDependencyType dependencyType, Target
using ViewController testedController = new ViewController();

SimpleAction testedAction = new SimpleAction(testedController, "High Priority", string.Empty);
testedAction.TargetObjectsCriteria = "Priority = 2";
testedAction.TargetObjectsCriteria = CriteriaOperator.FromLambda<DemoTask>(t => t.Priority == Priority.High).ToString(); ;
testedAction.SelectionDependencyType = dependencyType;
testedAction.TargetObjectsCriteriaMode = criteriaMode;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,29 +5,26 @@
namespace XAFUnitTestEFCore.Module.Controllers;

public class CreateLinkedSaleBaseDescendantController :ViewController {
private NewObjectViewController newObjectController;

protected override void OnActivated() {
base.OnActivated();
newObjectController = Frame.GetController<NewObjectViewController>();
newObjectController.ObjectCreated += CreateLinkedSaleBaseDescendantController_ObjectCreated;
}
NewObjectViewController newObjectController;

public void CreateLinkedSaleBaseDescendantController_ObjectCreated(object sender, ObjectCreatedEventArgs e) {
SaleBase createdObject = e.CreatedObject as SaleBase;
IObjectSpace objectSpace = e.ObjectSpace;
CreateLinkedSaleBase(objectSpace, createdObject);
CreateLinkedSaleBase(e.ObjectSpace, e.CreatedObject as SaleBase);
}

public void CreateLinkedSaleBase(IObjectSpace objectSpace, SaleBase createdObject) {
NestedFrame nestedFrame = Frame as NestedFrame;
if(nestedFrame != null) {
SaleBase parentObject = objectSpace.GetObject(nestedFrame.ViewItem.CurrentObject as SaleBase);
if(createdObject != null) {
parentObject?.Copy(createdObject);
}
public void CreateLinkedSaleBase(IObjectSpace objectSpace, SaleBase newSale) {
if(Frame is NestedFrame { ViewItem.CurrentObject: SaleBase currentSale } && newSale != null) {
objectSpace.GetObject(currentSale)?.Copy(newSale);
}
}

protected override void OnDeactivated() {
base.OnDeactivated();
newObjectController.ObjectCreated -= CreateLinkedSaleBaseDescendantController_ObjectCreated;
base.OnDeactivated();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,20 +17,14 @@ public FindBySubjectController() {
}

private void FindBySubjectAction_Execute(object sender, ParametrizedActionExecuteEventArgs e) {
string paramValue = e.ParameterCurrentValue as string;
var createdView = CreateObjectViewBySubject(View.ObjectTypeInfo.Type, paramValue as string);
e.ShowViewParameters.CreatedView = createdView;
e.ShowViewParameters.CreatedView = CreateObjectViewBySubject(View.ObjectTypeInfo.Type, e.ParameterCurrentValue as string);
}

public View CreateObjectViewBySubject(Type objectType, string subject) {
CriteriaOperator criteria = CriteriaOperator.FromLambda<DemoTask>(t => t.Subject.Contains(subject));

IObjectSpace objectSpace = Application.CreateObjectSpace(objectType);
object obj = objectSpace.FindObject(objectType, criteria);
DetailView createdView = null;
if(obj != null) {
createdView = Application.CreateDetailView(objectSpace, obj);
}
return createdView;
return obj == null ? null : Application.CreateDetailView(objectSpace, obj);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,44 +13,51 @@ public class TaskActionsController :ViewController {
public ChoiceActionItem setPriorityItem;
public ChoiceActionItem setStatusItem;
public SingleChoiceAction SetTaskAction;
public SecurityStrategy securityStrategy;

public TaskActionsController() {
TargetObjectType = typeof(DemoTask);

SetTaskAction = new SingleChoiceAction(this, "SetTaskAction", PredefinedCategory.Edit);

setPriorityItem = new ChoiceActionItem(CaptionHelper.GetMemberCaption(typeof(DemoTask), nameof(DemoTask.Priority)), null);
setPriorityItem = new ChoiceActionItem("Priority", null);
SetTaskAction.Items.Add(setPriorityItem);
FillItemWithEnumValues(setPriorityItem, typeof(Priority));

setStatusItem = new ChoiceActionItem(CaptionHelper.GetMemberCaption(typeof(DemoTask), nameof(DemoTask.Status)), null);
setStatusItem = new ChoiceActionItem("Status", null);
SetTaskAction.Items.Add(setStatusItem);
FillItemWithEnumValues(setStatusItem, typeof(TaskStatus));

SetTaskAction.Execute += SetTaskAction_Execute;
}
protected override void OnActivated() {
base.OnActivated();
View.SelectionChanged += new EventHandler(View_SelectionChanged);
View.SelectionChanged += View_SelectionChanged;
securityStrategy = Application.GetSecurityStrategy();
UpdateSetTaskActionState();
}

protected override void OnDeactivated() {
View.SelectionChanged -= View_SelectionChanged;
base.OnDeactivated();
}

void View_SelectionChanged(object sender, EventArgs e) {
UpdateSetTaskActionState();
}

public void UpdateSetTaskActionState() {
bool isGranted = true;
foreach(object selectedObject in View.SelectedObjects) {
bool isPriorityGranted = SecuritySystem.IsGranted(new PermissionRequest(ObjectSpace, typeof(DemoTask), SecurityOperations.Write, selectedObject, nameof(DemoTask.Priority)));
bool isStatusGranted = SecuritySystem.IsGranted(new PermissionRequest(ObjectSpace, typeof(DemoTask), SecurityOperations.Write, selectedObject, nameof(DemoTask.Status)));
bool isPriorityGranted = securityStrategy.CanWrite(ObjectSpace, selectedObject, nameof(DemoTask.Priority));
bool isStatusGranted = securityStrategy.CanWrite(ObjectSpace, selectedObject, nameof(DemoTask.Status));
if(!isPriorityGranted || !isStatusGranted) {
isGranted = false;
}
}
SetTaskAction.Enabled.SetItemValue("SecurityAllowance", isGranted);
}

private void SetTaskAction_Execute(object sender, SingleChoiceActionExecuteEventArgs args) {
bool viewIsListview = View is ListView;

Expand Down Expand Up @@ -78,13 +85,13 @@ private void FillItemWithEnumValues(ChoiceActionItem parentItem, Type enumType)
public void SetupDemoTaskProperties(IList selectedObjects, ChoiceActionItem selectedChoiceActionItem, IObjectSpace objectSpace, bool shouldCommitChanges) {
foreach(object obj in selectedObjects) {
if(objectSpace.GetObject(obj) is DemoTask objInNewObjectSpace) {
if(selectedChoiceActionItem.ParentItem == setPriorityItem) {
objInNewObjectSpace.Priority = (Priority)selectedChoiceActionItem.Data;
} else if(selectedChoiceActionItem.ParentItem == setStatusItem) {
objInNewObjectSpace.Status = (TaskStatus)selectedChoiceActionItem.Data;
}
if(selectedChoiceActionItem.ParentItem == setPriorityItem) {
objInNewObjectSpace.Priority = (Priority)selectedChoiceActionItem.Data;
} else if(selectedChoiceActionItem.ParentItem == setStatusItem) {
objInNewObjectSpace.Status = (TaskStatus)selectedChoiceActionItem.Data;
}
}
}
if(shouldCommitChanges) {
objectSpace.CommitChanges();
}
Expand Down