unit uEditorPedidoMontaje;

interface

uses
  dxLayoutLookAndFeels, DB, uDADataTable, JvAppStorage, JvAppRegistryStorage,
  JvComponentBase, JvFormPlacement, ImgList, Controls, PngImageList, StdActns,
  Classes, ActnList, Forms, ComCtrls, TBX, TB2Item, TB2Dock, TB2Toolbar, pngimage,
  ExtCtrls, JvExControls, JvComponent, JvNavigationPane,

  uCustomView, uViewBase, uViewTotalPedido, uViewDetallesBase, uViewIncidencias,
  uViewDocumentosAsociados, uEditorPedidoProveedor, uViewDetallesPedidoProveedor,
  uIEditorPedidoMontaje, uPedidosProveedorController, uBizPedidosProveedor,
  JvExComCtrls, JvStatusBar;

type
  TfEditorPedidoMontaje = class(TfEditorPedidoProveedor, IEditorPedidoMontaje)
  protected
    procedure OnMontajeChanged(Sender : TObject);

    //Si queremos crear otra vista para el editor heredado solo tendriamos que
    //sobreescribir este metodo
    procedure AsignarVista; override;
    //Para asignar los objetos de negocio que necesita la vista
    procedure SetController (const Value : IPedidosProveedorController); override;
    procedure SetPedido(const Value: IBizPedidoProveedor); override;
  end;

implementation
{$R *.dfm}

uses uBizPedidosMontaje, uViewPedidoMontaje, uPedidosMontajeController, uBizMontajesDetalles,
  uViewPedidoProveedor;

{ TfEditorPedidoProveedor1 }

procedure TfEditorPedidoMontaje.AsignarVista;
var
  AViewPedidoMontaje: TfrViewPedidoMontaje;
begin
  AViewPedidoMontaje := TfrViewPedidoMontaje.create(Self);
  with AViewPedidoMontaje do
  begin
    Parent := pagGeneral;
    Align := alClient;
    dxLayoutControl1.LookAndFeel := dxLayoutOfficeLookAndFeel1;
  end;
  ViewPedido := AViewPedidoMontaje;
end;

procedure TfEditorPedidoMontaje.OnMontajeChanged(Sender: TObject);
begin
  (Pedido as IBizPedidoMontaje).Montaje := ((ViewPedido as IViewPedidoMontaje).ViewMontajePedido.Montaje as IBizMontajeDetalles);
end;

procedure TfEditorPedidoMontaje.SetController(const Value: IPedidosProveedorController);
begin
  inherited;
  if Assigned(FController) then
     (ViewPedido as IViewPedidoMontaje).ViewMontajePedido.Controller := (FController as IPedidosMontajeController).MontajeController;
end;

procedure TfEditorPedidoMontaje.SetPedido(const Value: IBizPedidoProveedor);
begin
  inherited;

  if Assigned(FViewPedido) then
  begin
    (ViewPedido as IViewPedidoMontaje).ViewMontajePedido.Montaje := (FPedido as IBizPedidoMontaje).Montaje;
    (ViewPedido as IViewPedidoMontaje).ViewMontajePedido.OnMontajeChanged := OnMontajeChanged;
  end;
end;

end.
