Index: oup/rewrite/DataAccess/Access_OUP_ADB.pas
===================================================================
--- oup/rewrite/DataAccess/Access_OUP_ADB.pas	(revision 105)
+++ oup/rewrite/DataAccess/Access_OUP_ADB.pas	(revision 106)
@@ -17,4 +17,7 @@
 
     procedure UpdateListCache;
+
+    function GetLinksToFile(FileID: Integer): TLinks;
+    function GetLinksFromFile(FileID: Integer): TLinks;
 
     function GetFileInfo(FileID: Integer): TFileInfo; override;
@@ -167,4 +170,49 @@
   FQuery.Close;
 end;
+
+
+
+function TAccess_OUP_ADB.GetLinksToFile(FileID: Integer): TLinks;
+var
+  i: Integer;
+begin
+  SetLength(Result.ByName, 0);
+  FQuery.SQL.Text := 'SELECT src_link_offset, src_id FROM linkmap WHERE target_id = ' + IntToStr(FileID) + ' ORDER BY src_id ASC;';
+  FQuery.Open;
+  SetLength(Result.ByID, FQuery.RecordCount);
+  if FQuery.RecordCount > 0 then
+  begin
+    i := 0;
+    repeat
+      Result.ByID[i].SrcOffset := FQuery.FieldByName('src_link_offset').AsInteger;
+      Result.ByID[i].Destination := FQuery.FieldByName('src_id').AsInteger;
+      Inc(i);
+      FQuery.Next;
+    until FQuery.EOF;
+  end;
+  FQuery.Close;
+end;
+
+function TAccess_OUP_ADB.GetLinksFromFile(FileID: Integer): TLinks;
+var
+  i: Integer;
+begin
+  SetLength(Result.ByName, 0);
+  FQuery.SQL.Text := 'SELECT src_link_offset, target_id FROM linkmap WHERE src_id = ' + IntToStr(FileID) + ' ORDER BY target_id ASC;';
+  FQuery.Open;
+  SetLength(Result.ByID, FQuery.RecordCount);
+  if FQuery.RecordCount > 0 then
+  begin
+    i := 0;
+    repeat
+      Result.ByID[i].SrcOffset := FQuery.FieldByName('src_link_offset').AsInteger;
+      Result.ByID[i].Destination := FQuery.FieldByName('target_id').AsInteger;
+      Inc(i);
+      FQuery.Next;
+    until FQuery.EOF;
+  end;
+  FQuery.Close;
+end;
+
 
 
Index: oup/rewrite/Global/TypeDefs.pas
===================================================================
--- oup/rewrite/Global/TypeDefs.pas	(revision 105)
+++ oup/rewrite/Global/TypeDefs.pas	(revision 106)
@@ -73,7 +73,20 @@
 
   TToolList = array of record
-    context: String;
-    name: String;
-    exts: String;
+      context: String;
+      name: String;
+      exts: String;
+  end;
+
+  TLinkByName = record
+      SrcOffset: Integer;
+      Destination: String;
+  end;
+  TLinkByID = record
+      SrcOffset: Integer;
+      Destination: Integer;
+  end;
+  TLinks = record
+      ByName: array of TLinkByName;
+      ByID: array of TLinkByID;
   end;
 
Index: oup/rewrite/OniUnPacker.bdsproj
===================================================================
--- oup/rewrite/OniUnPacker.bdsproj	(revision 105)
+++ oup/rewrite/OniUnPacker.bdsproj	(revision 106)
@@ -178,4 +178,5 @@
 		</Language>  
     
+    
     <Excluded_Packages>
       <Excluded_Packages Name="d:\programme\borland\bds\3.0\Bin\dbwebxprt.bpl">Borland Web Wizard Package</Excluded_Packages>
Index: oup/rewrite/OniUnPacker.dpr
===================================================================
--- oup/rewrite/OniUnPacker.dpr	(revision 105)
+++ oup/rewrite/OniUnPacker.dpr	(revision 106)
@@ -25,5 +25,6 @@
   RawEdit in 'Tools\RawEdit.pas' {Form_RawEdit},
   Extractor in 'Tools\Extractor.pas' {Form_Extractor},
-  TxmpReplace in 'Tools\TxmpReplace.pas' {Form_TxmpReplace};
+  TxmpReplace in 'Tools\TxmpReplace.pas' {Form_TxmpReplace},
+  WhatLinksHere in 'Helper\WhatLinksHere.pas' {Form1};
 
 {$R *.res}
@@ -36,4 +37,5 @@
   Application.CreateForm(TForm_Settings, Form_Settings);
   Application.CreateForm(TForm_ValueEdit, Form_ValueEdit);
+  Application.CreateForm(TForm1, Form1);
   Application.Run;
 end.
Index: oup/rewrite/Tools/Template.dfm
===================================================================
--- oup/rewrite/Tools/Template.dfm	(revision 105)
+++ oup/rewrite/Tools/Template.dfm	(revision 106)
@@ -308,4 +308,12 @@
     Left = 72
     Top = 216
+    object popup_separator2: TMenuItem
+      Caption = '-'
+    end
+    object popup_linkshere: TMenuItem
+      Caption = 'What links here?'
+      Enabled = False
+      OnClick = popup_linkshereClick
+    end
     object popup_separator: TMenuItem
       Caption = '-'
Index: oup/rewrite/Tools/Template.pas
===================================================================
--- oup/rewrite/Tools/Template.pas	(revision 105)
+++ oup/rewrite/Tools/Template.pas	(revision 106)
@@ -41,4 +41,6 @@
     combo_connection: TComboBox;
     Bevel1: TBevel;
+    popup_linkshere: TMenuItem;
+    popup_separator2: TMenuItem;
     procedure RecreateExtList;
     procedure UpdateConList;
@@ -62,4 +64,5 @@
     procedure FormActivate(Sender: TObject);
     procedure combo_connectionChange(Sender: TObject);
+    procedure popup_linkshereClick(Sender: TObject);
   private
     FSortBy: TSortType;
@@ -94,5 +97,5 @@
 implementation
 {$R *.dfm}
-uses Main, ConnectionManager, Exporters, Functions;
+uses Main, ConnectionManager, Exporters, Functions, WhatLinksHere;
 
 
@@ -258,4 +261,12 @@
 end;
 
+procedure TForm_ToolTemplate.popup_linkshereClick(Sender: TObject);
+begin
+  Form_WhatLinksHere.ConID := FConnectionID;
+  Form_WhatLinksHere.FileID := FSelectedFile.ID;
+  Form_WhatLinksHere.SenderForm := Self;
+  Form_WhatLinksHere.Show;
+end;
+
 procedure TForm_ToolTemplate.popup_opentool(Sender: TObject);
 var
@@ -335,4 +346,6 @@
         filepopup.Items.Items[i].Enabled := False;
   end;
+  filepopup.Items.Find('What links here?').Enabled :=
+      ConManager.Connection[FConnectionID].Backend = DB_ADB;
 end;
 
@@ -386,6 +399,9 @@
   pt.X := x;
   pt.Y := y;
-//  filelist.ItemIndex := filelist.ItemAtPos(pt, true);
-//  Self.listClick(Self);
+  if Shift = [ssRight] then
+  begin
+    filelist.ItemIndex := filelist.ItemAtPos(pt, true);
+    Self.listClick(Self);
+  end;
 end;
 
