public static AbstractCommandModel FromButtonWrapper(AbstractDialogModel dialog, AbstractButton wrapper) { var result = MapButtonWrapperToModel(dialog, wrapper); if (result == null) { Log.WarnFormat("Cannot instatiate model for wrapper of type {0}", wrapper.GetType().Name); return null; } result.Enabled = wrapper.Enabled; result.Text = wrapper.Text; result.Visibility = wrapper.Visible ? Visibility.Visible : Visibility.Collapsed; result.Target = wrapper.Target; result.IsDefaultButton = wrapper.IsDefaultButton; result.IsCancelButton = wrapper.IsCancelButton; return result; }
private static AbstractCommandModel MapButtonWrapperToModel(AbstractDialogModel dialog, AbstractButton wrapper) { var kernal = Application.Current.CurrentKernel(); var modelParameter = new ConstructorArgument("model", dialog); if (wrapper is ResultButton) return kernal.Get<ReturnResultModel>( new IParameter[] { modelParameter, new ConstructorArgument("result", (wrapper as ResultButton).TaskResult) }); if (wrapper is UrlButton) { var link = kernal.Get<UrlLink>(); link.Target = (wrapper as UrlButton).Value; return kernal.Get<OpenLinkModel>( new IParameter[] { modelParameter, new ConstructorArgument("link", link) } ); } if (wrapper is SettingsButton) { var link = kernal.Get<SettingsLink>(); link.Target = (wrapper as SettingsButton).Key; link.Value = "true"; return kernal.Get<ModifySettingsModel>( new IParameter[] { modelParameter, new ConstructorArgument("wrapper", link) } ); } if (wrapper is TopicButton) { var value = (wrapper as TopicButton).Value; return kernal.Get<OpenTopicModel>( new IParameter[] { modelParameter, new ConstructorArgument("topic",value) } ); } if (wrapper is StoredResultButton) { return kernal.Get<ReturnStoredResultModel>( new IParameter[] { modelParameter, new ConstructorArgument("key",(wrapper as StoredResultButton).Key) }); } if (wrapper is OpenAdvancedMenuButton) { var group = (wrapper as OpenAdvancedMenuButton).Group; return kernal.Get<OpenAdvancedButtonModel>( new IParameter[] { modelParameter, new ConstructorArgument("group", group) }); } if (wrapper is DisabledButton) return kernal.Get<DisabledCommandModel>(modelParameter); if (wrapper is CancelButton) return kernal.Get<CancelButtonModel>(modelParameter); if (wrapper is DoNothingButton) return kernal.Get<DoNothingCommandModel>(modelParameter); return null; }