unit uEditorMontajeDetalle;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, uEditorMontaje, dxLayoutLookAndFeels, DB, uDADataTable, JvAppStorage,
  JvAppRegistryStorage, JvComponentBase, JvFormPlacement, ImgList, PngImageList,
  StdActns, ActnList, ComCtrls, TBX, TB2Item, TB2Dock, TB2Toolbar, pngimage,
  ExtCtrls, JvExControls, JvComponent, JvNavigationPane, uCustomView, uViewBase,
  uViewDetallesBase, uViewDetallesMontaje, uBizMontajes, uMontajesController,
  uIEditorMontajeDetalle, JvExComCtrls, JvStatusBar;

type
  TfEditorMontajeDetalle = class(TfEditorMontaje, IEditorMontajeDetalle)
    PagContenido: TTabSheet;
    frViewDetallesMontaje1: TfrViewDetallesMontaje;
  protected
    procedure OnPresupuestoChanged(Sender : TObject);
    //Si queremos crear otra vista para el editor heredado solo tendriamos que
    //sobreescribir este metodo
    procedure AsignarVista; override;

    procedure SetController (const Value : IMontajesController); override;
    procedure SetMontaje(const Value: IBizMontaje); override;
  end;

implementation
{$R *.dfm}

uses uBizMontajesDetalles, uMontajesDetallesController, ViewMontajeDetalle,
  uViewMontaje;

{ TfEditorMontajeDetalle }

procedure TfEditorMontajeDetalle.AsignarVista;
var
  AViewMontajeDetalle: TfrViewMontajeDetalle;
begin
  AViewMontajeDetalle := TfrViewMontajeDetalle.create(Self);
  with AViewMontajeDetalle do
  begin
    Parent := pagGeneral;
    Align := alClient;
    dxLayoutControlMontaje.LookAndFeel := dxLayoutOfficeLookAndFeel1;
  end;
  ViewMontaje := AViewMontajeDetalle;
end;

procedure TfEditorMontajeDetalle.OnPresupuestoChanged(Sender: TObject);
begin
  (Montaje as IBizMontajeDetalles).Presupuesto := (ViewMontaje as IViewMontajeDetalle).ViewPresupuestoMontaje.Presupuesto;

  if (Application.MessageBox('¿Desea asignar el cliente del presupuesto seleccionado al montaje?', 'Atención', MB_YESNO) = IDYES) then
  begin
    (Controller as IMontajesDetallesController).PresupuestoController.RecuperarCliente((Montaje as IBizMontajeDetalles).Presupuesto);
     ViewMontaje.ViewClienteMontaje.Cliente := (Montaje as IBizMontajeDetalles).Presupuesto.Cliente;
  end;
end;

procedure TfEditorMontajeDetalle.SetController(const Value: IMontajesController);
begin
  inherited;
  if Assigned(FController) then
  begin
     frViewDetallesMontaje1.Controller := (Controller as IMontajesDetallesController).DetallesController;
     (ViewMontaje as IViewMontajeDetalle).ViewPresupuestoMontaje.Controller := (FController as IMontajesDetallesController).PresupuestoController;
  end;
end;

procedure TfEditorMontajeDetalle.SetMontaje(const Value: IBizMontaje);
begin
  inherited;
  if Assigned(FViewMontaje) then
  begin
     frViewDetallesMontaje1.Detalles := (FMontaje as IBizMontajeDetalles).Detalles;
    (ViewMontaje as IViewMontajeDetalle).ViewPresupuestoMontaje.Presupuesto := (FMontaje as IBizMontajeDetalles).Presupuesto;
    (ViewMontaje as IViewMontajeDetalle).ViewPresupuestoMontaje.OnPresupuestoChanged := OnPresupuestoChanged;
  end;
end;

end.
