//kt -- Modified with SourceScanner on 8/8/2007
unit fTemplateAutoGen;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ORCtrls, ExtCtrls, ORFn, DKLang;

type
  TfrmTemplateAutoGen = class(TForm)
    rgSource: TKeyClickRadioGroup;
    cbxObjects: TORComboBox;
    btnOK: TButton;
    btnCancel: TButton;
    lblTop: TMemo;
    cbxTitles: TORComboBox;
    lblSelect: TStaticText;
    DKLanguageController1: TDKLanguageController;
    procedure rgSourceClick(Sender: TObject);
    procedure cbxTitlesNeedData(Sender: TObject; const StartFrom: String;
      Direction, InsertAt: Integer);
    procedure cbxTitlesDblClick(Sender: TObject);
    procedure cbxObjectsDblClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
  private
    FTitlesDone: boolean;
    FObjectsDone: boolean;
  public
    { Public declarations }
  end;

procedure GetAutoGenText(var AName, AText: string; InList: TStringList);

implementation

uses dShared, rTemplates, uTemplates;

{$R *.DFM}

var
  PersObjects: TStringList;

const
  idxTitle = 0;
  idxObject = 1;

procedure GetAutoGenText(var AName, AText: string; InList: TStringList);
var
  frmTemplateAutoGen: TfrmTemplateAutoGen;

begin
  AName := '';
  AText := '';
  PersObjects := InList;
  frmTemplateAutoGen := TfrmTemplateAutoGen.Create(Application);
  try
    ResizeAnchoredFormToFont(frmTemplateAutoGen);
    with frmTemplateAutoGen do
    begin
      ShowModal;
      if(ModalResult = mrOK) then
      begin
        if(rgSource.ItemIndex = idxTitle) then
        begin
          if(cbxTitles.ItemID <> '') then
          begin
            AName := MixedCase(cbxTitles.DisplayText[cbxTitles.ItemIndex]);
            AText := GetTitleBoilerplate(cbxTitles.ItemID);
          end;
        end
        else
        if(rgSource.ItemIndex = idxObject) then
        begin
          if(cbxObjects.Text <> '') then
          begin
            AName := cbxObjects.Text;
            AText := '|'+Piece(cbxObjects.Items[cbxObjects.ItemIndex],U,3)+'|'
          end;
        end;
      end;
    end;
  finally
    frmTemplateAutoGen.Free;
  end;
end;

procedure TfrmTemplateAutoGen.rgSourceClick(Sender: TObject);
var
  idx,i: integer;
  DoIt: boolean;

begin
  idx := rgSource.ItemIndex;
  rgSource.TabStop := (idx < 0);
  if(idx < 0) then exit;
  if(idx = idxTitle) then
  begin
    cbxTitles.Visible := TRUE;
    cbxObjects.Visible := FALSE;
    if(not FTitlesDone) then
    begin
      cbxTitles.InitLongList('');
      FTitlesDone := TRUE
    end;
    cbxTitles.SetFocus;
  end
  else
  if(idx = idxObject) then
  begin
    cbxObjects.Visible := TRUE;
    cbxTitles.Visible := FALSE;
    if(not FObjectsDone) then
    begin
      DoIt := TRUE;                                        //10/31/01 S Monson-- Added
      if (UserTemplateAccessLevel <> taEditor) then        //UserTemplateAccessLevel check and
        if PersObjects.Count > 0 then                      //PersObjects modification of the list
          begin                                            //in response to NOIS HUN-0701-22052
          DoIt := FALSE;
          for i := 0 to dmodShared.TIUObjects.Count-1 do
            if PersObjects.IndexOf(Piece(dmodShared.TIUObjects[i],U,2)) >= 0 then
              cbxObjects.Items.Add(dmodShared.TIUObjects[i]);
          end;
      if DoIt then
        cbxObjects.Items.Assign(dmodShared.TIUObjects);
      FObjectsDone := TRUE;
    end;
    cbxObjects.SetFocus;
  end;
end;

procedure TfrmTemplateAutoGen.cbxTitlesNeedData(Sender: TObject;
  const StartFrom: String; Direction, InsertAt: Integer);
begin
  cbxTitles.ForDataUse(SubSetOfBoilerplatedTitles(StartFrom, Direction));
end;

procedure TfrmTemplateAutoGen.cbxTitlesDblClick(Sender: TObject);
begin
  if(cbxTitles.ItemIndex >= 0) then
    ModalResult := mrOK;
end;

procedure TfrmTemplateAutoGen.cbxObjectsDblClick(Sender: TObject);
begin
  if(cbxObjects.ItemIndex >= 0) then
    ModalResult := mrOK;
end;

procedure TfrmTemplateAutoGen.FormShow(Sender: TObject);
begin
  //pre-select the first radio item
  rgSource.ItemIndex := 0;
end;

end.
