home *** CD-ROM | disk | FTP | other *** search
/ Computer Shopper 139 / dpcs0999.iso / Web / CFserver / data1.cab / Java / netscape / application / TargetChain.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-04-12  |  3.2 KB  |  179 lines

  1. package netscape.application;
  2.  
  3. import netscape.util.Vector;
  4.  
  5. public class TargetChain implements ExtendedTarget {
  6.    private Vector preTargets = new Vector();
  7.    private Vector postTargets = new Vector();
  8.    private static TargetChain applicationChain;
  9.  
  10.    private TargetChain() {
  11.    }
  12.  
  13.    public static TargetChain applicationChain() {
  14.       if (applicationChain == null) {
  15.          applicationChain = new TargetChain();
  16.       }
  17.  
  18.       return applicationChain;
  19.    }
  20.  
  21.    public synchronized void addTarget(ExtendedTarget var1, boolean var2) {
  22.       if (var2) {
  23.          this.preTargets.insertElementAt(var1, 0);
  24.       } else {
  25.          this.postTargets.addElement(var1);
  26.       }
  27.    }
  28.  
  29.    public synchronized void removeTarget(ExtendedTarget var1) {
  30.       this.preTargets.removeElement(var1);
  31.       this.postTargets.removeElement(var1);
  32.    }
  33.  
  34.    public synchronized Target targetForCommand(String var1) {
  35.       int var3 = this.preTargets.size();
  36.  
  37.       for(int var2 = 0; var2 < var3; ++var2) {
  38.          ExtendedTarget var13 = (ExtendedTarget)this.preTargets.elementAt(var2);
  39.          if (var13.canPerformCommand(var1)) {
  40.             return var13;
  41.          }
  42.       }
  43.  
  44.       Application var4 = Application.application();
  45.       View var12 = var4.modalView();
  46.       if (var12 == null) {
  47.          RootView var6 = var4.firstRootView();
  48.          if (var6 != null) {
  49.             View var5 = var6.focusedView();
  50.             if (this.objectCanPerformCommand(var5, var1)) {
  51.                return (Target)var5;
  52.             }
  53.          }
  54.  
  55.          Window var8 = var4.currentDocumentWindow();
  56.          if (var8 != null) {
  57.             View var16;
  58.             if (var8 instanceof InternalWindow) {
  59.                var16 = ((InternalWindow)var8).focusedView();
  60.             } else {
  61.                var16 = ((ExternalWindow)var8).rootView().focusedView();
  62.             }
  63.  
  64.             if (this.objectCanPerformCommand(var16, var1)) {
  65.                return (Target)var16;
  66.             }
  67.  
  68.             WindowOwner var10 = var8.owner();
  69.             if (this.objectCanPerformCommand(var10, var1)) {
  70.                return (Target)var10;
  71.             }
  72.  
  73.             if (this.objectCanPerformCommand(var8, var1)) {
  74.                return var8;
  75.             }
  76.          } else {
  77.             RootView var7;
  78.             if ((var7 = var4.mainRootView()) != null) {
  79.                View var17;
  80.                if (var7.mainWindow() == null) {
  81.                   var17 = var7.focusedView();
  82.                } else {
  83.                   var17 = var7.rootViewFocusedView();
  84.                }
  85.  
  86.                if (this.objectCanPerformCommand(var17, var1)) {
  87.                   return (Target)var17;
  88.                }
  89.             }
  90.          }
  91.  
  92.          if (var6 != null) {
  93.             ExternalWindow var9 = var6.externalWindow();
  94.             if (var9 != null) {
  95.                WindowOwner var11 = var9.owner();
  96.                if (this.objectCanPerformCommand(var11, var1)) {
  97.                   return (Target)var11;
  98.                }
  99.  
  100.                if (this.objectCanPerformCommand(var9, var1)) {
  101.                   return var9;
  102.                }
  103.             }
  104.  
  105.             if (this.objectCanPerformCommand(var6, var1)) {
  106.                return var6;
  107.             }
  108.          }
  109.  
  110.          if (this.objectCanPerformCommand(var4, var1)) {
  111.             return (Target)var4;
  112.          }
  113.       } else {
  114.          View var18;
  115.          RootView var19;
  116.          Object var20;
  117.          if (var12 instanceof RootView) {
  118.             var19 = (RootView)var12;
  119.             var18 = var19.focusedView();
  120.             var20 = var19.externalWindow();
  121.          } else if (var12 instanceof InternalWindow) {
  122.             var19 = null;
  123.             var18 = ((InternalWindow)var12).focusedView();
  124.             var20 = (Window)var12;
  125.          } else {
  126.             var19 = null;
  127.             var18 = var12;
  128.             var20 = null;
  129.          }
  130.  
  131.          if (this.objectCanPerformCommand(var18, var1)) {
  132.             return (Target)var18;
  133.          }
  134.  
  135.          if (var20 != null) {
  136.             WindowOwner var21 = ((Window)var20).owner();
  137.             if (this.objectCanPerformCommand(var21, var1)) {
  138.                return (Target)var21;
  139.             }
  140.  
  141.             if (this.objectCanPerformCommand(var20, var1)) {
  142.                return (Target)var20;
  143.             }
  144.          }
  145.  
  146.          if (var19 != null && this.objectCanPerformCommand(var19, var1)) {
  147.             return var19;
  148.          }
  149.       }
  150.  
  151.       var3 = this.postTargets.size();
  152.  
  153.       for(int var14 = 0; var14 < var3; ++var14) {
  154.          ExtendedTarget var22 = (ExtendedTarget)this.postTargets.elementAt(var14);
  155.          if (var22.canPerformCommand(var1)) {
  156.             return var22;
  157.          }
  158.       }
  159.  
  160.       return null;
  161.    }
  162.  
  163.    public boolean canPerformCommand(String var1) {
  164.       return this.targetForCommand(var1) != null;
  165.    }
  166.  
  167.    public void performCommand(String var1, Object var2) {
  168.       Target var3 = this.targetForCommand(var1);
  169.       if (var3 != null) {
  170.          var3.performCommand(var1, var2);
  171.       }
  172.  
  173.    }
  174.  
  175.    private boolean objectCanPerformCommand(Object var1, String var2) {
  176.       return var1 != null && var1 instanceof ExtendedTarget && ((ExtendedTarget)var1).canPerformCommand(var2);
  177.    }
  178. }
  179.