unit uEditorElegirMontajes;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, uDADataTable, Menus, JvAppStorage, JvAppRegistryStorage,
  JvComponentBase, JvFormPlacement, ImgList, PngImageList, StdActns,
  ActnList, uCustomView, uViewBase, uViewGridBase, uViewGrid,
  uViewMontajes, ComCtrls, TB2ExtItems, TBXExtItems, TBX,
  TB2Item, TB2Dock, TB2Toolbar, pngimage, ExtCtrls, JvExControls, JvComponent,
  JvNavigationPane, uIEditorElegirMontajes, uViewBarraSeleccion, JvgWizardHeader,
  StdCtrls, uBizMontajes, uEditorMontajes, JvExComCtrls, JvStatusBar;

type
  TfEditorElegirMontajes = class(TfEditorMontajes, IEditorElegirMontajes)
    frViewBarraSeleccion1: TfrViewBarraSeleccion;
    JvgWizardHeader1: TJvgWizardHeader;
    procedure frViewBarraSeleccion1actSeleccionarUpdate(Sender: TObject);
    procedure frViewBarraSeleccion1actCancelarExecute(Sender: TObject);
    procedure frViewBarraSeleccion1actSeleccionarExecute(Sender: TObject);
    procedure FormShow(Sender: TObject);
  protected
    procedure SetMultiSelect (AValue : Boolean);
    function GetMultiSelect : Boolean;
    function GetMontajesSeleccionados: IBizMontaje;
    procedure SetViewGrid(const Value: IViewGridBase); override;
    procedure SetMensaje (const AValue: String);
    function GetMensaje: String;
  public
    property Mensaje : String read GetMensaje write SetMensaje;
    property MontajesSeleccionados: IBizMontaje read GetMontajesSeleccionados;
    property MultiSelect : Boolean read GetMultiSelect write SetMultiSelect;
  end;

implementation

uses
  uEditorGridBase, cxGridCustomTableView, uIntegerListUtils, 
  uGridUtils, uEditorBase;

{$R *.dfm}

{ TfEditorElegirMontajes }

procedure TfEditorElegirMontajes.FormShow(Sender: TObject);
begin
  inherited;
  EditorActionList.State := asSuspended;
  frViewMontajes1.cxViewGridPopupMenu.PopupMenus.Items[0].HitTypes := [];
end;

procedure TfEditorElegirMontajes.frViewBarraSeleccion1actCancelarExecute(
  Sender: TObject);
begin
  inherited;
  Close;
end;

procedure TfEditorElegirMontajes.frViewBarraSeleccion1actSeleccionarExecute(
  Sender: TObject);
begin
  inherited;
  ModalResult := mrOk;
end;

procedure TfEditorElegirMontajes.frViewBarraSeleccion1actSeleccionarUpdate(
  Sender: TObject);
begin
  inherited;
  (Sender as TAction).Enabled := (ViewGrid._FocusedView.Controller.SelectedRowCount > 0)
end;

function TfEditorElegirMontajes.GetMontajesSeleccionados: IBizMontaje;
begin
  SeleccionarFilasDesdeGrid(ViewGrid._FocusedView, Montajes.SelectedRecords.SelectedRecordsObj);
  // En Montajes.SelectedRecords tengo los ID de las filas seleccionadas del grid
  Result := Controller.ExtraerSeleccionados(Montajes);
end;

function TfEditorElegirMontajes.GetMensaje: String;
begin
  Result := JvgWizardHeader1.Comments.Text;
end;

function TfEditorElegirMontajes.GetMultiSelect: Boolean;
begin
  Result := ViewGrid.MultiSelect;  
end;

procedure TfEditorElegirMontajes.SetMensaje(const AValue: String);
begin
  JvgWizardHeader1.Comments.CommaText := AValue;
end;

procedure TfEditorElegirMontajes.SetMultiSelect(AValue: Boolean);
begin
  ViewGrid.MultiSelect := AValue;
end;

procedure TfEditorElegirMontajes.SetViewGrid(const Value: IViewGridBase);
begin
  inherited;
  ViewGrid.OnDblClick := frViewBarraSeleccion1.actSeleccionar.OnExecute;
end;

end.
