home *** CD-ROM | disk | FTP | other *** search
/ Australian PC Authority 1999 May / may1999.iso / INTERNET / COMMUNIC / NETCAST.Z / ncjava10.jar / netscape / netcast / application / CategoryData.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-02-27  |  8.4 KB  |  443 lines

  1. package netscape.netcast.application;
  2.  
  3. import java.applet.Applet;
  4. import java.util.Enumeration;
  5. import java.util.StringTokenizer;
  6. import java.util.Vector;
  7. import marimba.castanet.client.CastanetChannel;
  8. import netscape.javascript.JSObject;
  9.  
  10. public class CategoryData extends DataItem {
  11.    private Vector m_data;
  12.    private Vector m_types;
  13.    private String parameters;
  14.    private String m_UserData;
  15.    static final long PERM_DELETE_ITEMS = 8192L;
  16.    static final long PERM_ADD_ITEMS = 16384L;
  17.  
  18.    public CategoryData(Applet var1, String var2) {
  19.       super.m_Applet = (ConstPR4)var1;
  20.       super.m_Type = -1;
  21.       super.m_Name = var2;
  22.       super.m_PrefsKey = "netcaster.containers." + super.m_Name;
  23.       super.m_Description = var2;
  24.       this.m_UserData = "";
  25.       this.m_data = new Vector(0);
  26.       this.m_UserData = NCPrefsManager.GetData(super.m_PrefsKey + ".userData", "");
  27.       String var3 = NCPrefsManager.GetData(super.m_PrefsKey + ".permissions", String.valueOf(24576L));
  28.       super.m_Permissions = Long.parseLong(var3);
  29.    }
  30.  
  31.    public CategoryData(Applet var1, String var2, String var3) {
  32.       this(var1, var2);
  33.       super.m_Description = var3;
  34.    }
  35.  
  36.    public static String getDefaultContainerName() {
  37.       String var0 = NCPrefsManager.GetData("netcaster.defaultContainer", "");
  38.       return var0;
  39.    }
  40.  
  41.    public String getUserData() {
  42.       return this.m_UserData;
  43.    }
  44.  
  45.    public boolean canRemove() {
  46.       return (super.m_Permissions & 8192L) != 0L;
  47.    }
  48.  
  49.    public Boolean getCanRmvItems() {
  50.       return new Boolean(this.canRemove());
  51.    }
  52.  
  53.    public boolean canAdd() {
  54.       return (super.m_Permissions & 16384L) != 0L;
  55.    }
  56.  
  57.    public Boolean getCanAddItems() {
  58.       return new Boolean(this.canAdd());
  59.    }
  60.  
  61.    public void setUserData(String var1) {
  62.       this.m_UserData = var1;
  63.       NCPrefsManager.SaveData(super.m_PrefsKey + ".userData", var1);
  64.    }
  65.  
  66.    public void LoadData(String var1, String var2) {
  67.       this.m_types = new Vector(0);
  68.       this.parameters = var2;
  69.       int var3 = 0;
  70.       int var4 = var1.indexOf(",");
  71.  
  72.       do {
  73.          String var5;
  74.          if (var4 == -1) {
  75.             var5 = var1.substring(var3);
  76.             var3 = -1;
  77.          } else {
  78.             var5 = var1.substring(var3, var4);
  79.             var3 = var4 + 1;
  80.             var4 = var1.indexOf(",", var3);
  81.          }
  82.  
  83.          this.m_types.addElement(var5);
  84.          if (Integer.parseInt(var5) == -3) {
  85.             StringTokenizer var6 = new StringTokenizer(var2, "'\"");
  86.             PageData var7 = new PageData(super.m_Applet, var6.nextToken());
  87.             this.addItem(var7, true);
  88.             return;
  89.          }
  90.       } while(var3 != -1);
  91.  
  92.    }
  93.  
  94.    public void LoadItems() {
  95.       Enumeration var6 = this.m_types.elements();
  96.  
  97.       while(var6.hasMoreElements()) {
  98.          int var2 = Integer.parseInt((String)var6.nextElement());
  99.          String var1;
  100.          switch (var2) {
  101.             case -3:
  102.                return;
  103.             case 1:
  104.             case 2:
  105.                var1 = "channel";
  106.                break;
  107.             default:
  108.                var1 = super.m_Name;
  109.          }
  110.  
  111.          String var7 = NCPrefsManager.GetData("netcaster." + var1 + ".count", "0");
  112.          int var3 = Integer.parseInt(var7);
  113.          String[] var8 = new String[var3];
  114.          String[] var9 = new String[var3];
  115.          String[] var10 = new String[var3];
  116.  
  117.          for(int var4 = 0; var4 < var3; ++var4) {
  118.             var8[var4] = "netcaster." + var1 + "." + var1 + "_" + (var4 + 1);
  119.             var9[var4] = null;
  120.          }
  121.  
  122.          NCPrefsManager.GetBatchData(var8, var9);
  123.  
  124.          for(int var12 = 0; var12 < var3; ++var12) {
  125.             if (var9[var12] == null) {
  126.                var8[var12] = null;
  127.             } else {
  128.                var10[var12] = "netcaster." + var1 + "." + var9[var12];
  129.                var8[var12] = var10[var12] + ".type";
  130.             }
  131.  
  132.             var9[var12] = null;
  133.          }
  134.  
  135.          NCPrefsManager.GetBatchData(var8, var9);
  136.  
  137.          for(int var13 = 0; var13 < var3; ++var13) {
  138.             if (var9[var13] != null) {
  139.                int var11 = Integer.parseInt(var9[var13]);
  140.                Object var5;
  141.                if (var11 == 2) {
  142.                   var5 = new CastanetDataItem(super.m_Applet, var10[var13]);
  143.                } else {
  144.                   var5 = new SiteData(super.m_Applet, var10[var13]);
  145.                }
  146.  
  147.                this.addItem((DataItem)var5, true);
  148.             }
  149.          }
  150.       }
  151.  
  152.    }
  153.  
  154.    public void Save(boolean var1) {
  155.       String var3 = super.m_Name;
  156.       int var4 = 0;
  157.       Enumeration var6 = this.m_data.elements();
  158.  
  159.       while(var6.hasMoreElements()) {
  160.          DataItem var5 = (DataItem)var6.nextElement();
  161.          int var2 = var5.getType();
  162.          switch (var2) {
  163.             case 1:
  164.             case 2:
  165.                var3 = super.m_Name;
  166.                ++var4;
  167.                NCPrefsManager.SaveData("netcaster." + var3 + "." + var3 + "_" + var4, var5.getPrefsName());
  168.                if (var1) {
  169.                   var5.saveData("netcaster." + var3);
  170.                }
  171.                break;
  172.             default:
  173.                return;
  174.          }
  175.       }
  176.  
  177.       NCPrefsManager.SaveData("netcaster." + var3 + ".count", String.valueOf(var4));
  178.       NCPrefsManager.writePrefs();
  179.    }
  180.  
  181.    public boolean canClose() {
  182.       boolean var2 = true;
  183.       Enumeration var3 = this.m_data.elements();
  184.  
  185.       while(var3.hasMoreElements() && var2) {
  186.          DataItem var1 = (DataItem)var3.nextElement();
  187.          if (var1.getType() != -1) {
  188.             if (var1.getStatus() == 1 && super.m_Applet != null) {
  189.                JSObject var4 = JSObject.getWindow(super.m_Applet);
  190.                Object[] var5 = new Object[]{Boolean.TRUE, super.m_Applet.getLocalString("quitWhileCrawl")};
  191.                if ((Boolean)var4.call("confirmQuit", var5)) {
  192.                   return true;
  193.                }
  194.  
  195.                return false;
  196.             }
  197.          } else {
  198.             var2 = var2 && ((CategoryData)var1).canClose();
  199.          }
  200.       }
  201.  
  202.       return var2;
  203.    }
  204.  
  205.    public void close() {
  206.       Enumeration var2 = this.m_data.elements();
  207.  
  208.       while(var2.hasMoreElements()) {
  209.          DataItem var1 = (DataItem)var2.nextElement();
  210.          if (var1.getType() == -1) {
  211.             ((CategoryData)var1).close();
  212.          } else {
  213.             var1.close();
  214.          }
  215.       }
  216.  
  217.    }
  218.  
  219.    public String keyString() {
  220.       String var1 = "";
  221.       Enumeration var2 = this.m_types.elements();
  222.  
  223.       while(var2.hasMoreElements()) {
  224.          var1 = var1 + (String)var2.nextElement();
  225.          if (var2.hasMoreElements()) {
  226.             var1 = var1 + ",";
  227.          }
  228.       }
  229.  
  230.       var1 = var1 + ";" + super.m_Name + ";" + this.parameters + ";" + super.m_Description;
  231.       return var1;
  232.    }
  233.  
  234.    public synchronized void addItem(DataItem var1, boolean var2) {
  235.       this.m_data.addElement(var1);
  236.       var1.added(this, var2);
  237.    }
  238.  
  239.    public void createView() {
  240.       if (super.m_Applet != null) {
  241.          JSObject var1 = JSObject.getWindow(super.m_Applet);
  242.          Object[] var2 = new Object[]{this};
  243.          var1.call("createContainerLayer", var2);
  244.       }
  245.  
  246.    }
  247.  
  248.    public void createViews() {
  249.       Enumeration var2 = this.m_data.elements();
  250.  
  251.       while(var2.hasMoreElements()) {
  252.          DataItem var1 = (DataItem)var2.nextElement();
  253.          var1.createView();
  254.          if (var1.getType() == -1) {
  255.             ((CategoryData)var1).createViews();
  256.          }
  257.       }
  258.  
  259.    }
  260.  
  261.    public void openAllCaches() {
  262.       if (this.m_data != null) {
  263.          Enumeration var2 = this.m_data.elements();
  264.  
  265.          while(var2.hasMoreElements()) {
  266.             DataItem var1 = (DataItem)var2.nextElement();
  267.             if (var1 instanceof SiteData) {
  268.                ((SiteData)var1).openCache();
  269.             } else if (var1.getType() == -1) {
  270.                ((CategoryData)var1).openAllCaches();
  271.             }
  272.          }
  273.       }
  274.  
  275.    }
  276.  
  277.    public DataItem FindItemByPrefKey(String var1) {
  278.       Enumeration var4 = this.m_data.elements();
  279.  
  280.       while(var4.hasMoreElements()) {
  281.          DataItem var2 = (DataItem)var4.nextElement();
  282.          if (var1.compareTo(var2.getPrefsName()) == 0) {
  283.             return var2;
  284.          }
  285.  
  286.          if (var2.getType() == -1) {
  287.             DataItem var3 = ((CategoryData)var2).FindItemByPrefKey(var1);
  288.             if (var3 != null) {
  289.                return var3;
  290.             }
  291.          }
  292.       }
  293.  
  294.       return null;
  295.    }
  296.  
  297.    public DataItem findItemByName(String var1) {
  298.       Enumeration var4 = this.m_data.elements();
  299.  
  300.       while(var4.hasMoreElements()) {
  301.          DataItem var2 = (DataItem)var4.nextElement();
  302.          if (var1.equals(var2.getItemName())) {
  303.             return var2;
  304.          }
  305.  
  306.          if (var2.getType() == -1) {
  307.             DataItem var3 = ((CategoryData)var2).findItemByName(var1);
  308.             if (var3 != null) {
  309.                return var3;
  310.             }
  311.          }
  312.       }
  313.  
  314.       return null;
  315.    }
  316.  
  317.    public CastanetDataItem findCastanetChannel(String var1) {
  318.       Enumeration var3 = this.m_data.elements();
  319.  
  320.       while(var3.hasMoreElements()) {
  321.          DataItem var4 = (DataItem)var3.nextElement();
  322.          switch (var4.getType()) {
  323.             case -1:
  324.                CastanetDataItem var7 = ((CategoryData)var4).findCastanetChannel(var1);
  325.                if (var7 != null) {
  326.                   return var7;
  327.                }
  328.                break;
  329.             case 2:
  330.                CastanetDataItem var2 = (CastanetDataItem)var4;
  331.                String var5 = ((DataItem)var2).getURL();
  332.                if (var5 != null) {
  333.                   int var6 = var5.indexOf(63);
  334.                   if (var6 >= 0) {
  335.                      var5 = var5.substring(0, var6);
  336.                   }
  337.  
  338.                   if (var1.startsWith(var5)) {
  339.                      return var2;
  340.                   }
  341.                }
  342.          }
  343.       }
  344.  
  345.       return null;
  346.    }
  347.  
  348.    public CastanetDataItem findCastanetChannel(CastanetChannel var1) {
  349.       Enumeration var3 = this.m_data.elements();
  350.  
  351.       while(var3.hasMoreElements()) {
  352.          DataItem var4 = (DataItem)var3.nextElement();
  353.          switch (var4.getType()) {
  354.             case -1:
  355.                CastanetDataItem var5 = ((CategoryData)var4).findCastanetChannel(var1);
  356.                if (var5 != null) {
  357.                   return var5;
  358.                }
  359.                break;
  360.             case 2:
  361.                CastanetDataItem var2 = (CastanetDataItem)var4;
  362.                if (var2.channel == var1) {
  363.                   return var2;
  364.                }
  365.          }
  366.       }
  367.  
  368.       return null;
  369.    }
  370.  
  371.    public void deleteItem(DataItem var1, boolean var2) {
  372.       JSObject var3 = JSObject.getWindow(super.m_Applet);
  373.       if (var1.isDeletable()) {
  374.          boolean var4 = true;
  375.          if (var2) {
  376.             var4 = true;
  377.             if (super.m_Applet != null) {
  378.                Object[] var5 = new Object[]{var1.getItemName(), super.m_ItemView};
  379.                var4 = (Boolean)var3.call("confirmDelete", var5);
  380.             }
  381.          }
  382.  
  383.          if (var4) {
  384.             this.m_data.removeElement(var1);
  385.             var1.deleted(this);
  386.             Object var6 = null;
  387.             NCPrefsManager var8 = new NCPrefsManager();
  388.             var8.threadedSaveChannelList(Const.getData());
  389.             return;
  390.          }
  391.       } else {
  392.          Object[] var7 = new Object[]{var1.getItemName(), super.m_ItemView};
  393.          var3.call("cantDelete", var7);
  394.       }
  395.  
  396.    }
  397.  
  398.    public int size() {
  399.       return this.m_data.size();
  400.    }
  401.  
  402.    public Vector getVector() {
  403.       return this.m_data;
  404.    }
  405.  
  406.    public boolean allReady() {
  407.       boolean var2 = true;
  408.       Enumeration var3 = this.m_data.elements();
  409.  
  410.       while(var3.hasMoreElements()) {
  411.          DataItem var1 = (DataItem)var3.nextElement();
  412.          if (var1.getType() == -1) {
  413.             var2 = var2 && ((CategoryData)var1).isReady();
  414.          }
  415.       }
  416.  
  417.       return var2;
  418.    }
  419.  
  420.    public boolean isReady() {
  421.       if (super.m_Applet != null && super.m_ItemView != null) {
  422.          JSObject var1 = JSObject.getWindow(super.m_Applet);
  423.          Object[] var2 = new Object[]{new Integer(this.m_data.size()), super.m_ItemView};
  424.          return (Boolean)var1.call("containerIsReady", var2);
  425.       } else {
  426.          return false;
  427.       }
  428.    }
  429.  
  430.    public CategoryData FindContainer(String var1) {
  431.       Enumeration var3 = this.m_data.elements();
  432.  
  433.       while(var3.hasMoreElements()) {
  434.          DataItem var2 = (DataItem)var3.nextElement();
  435.          if (var2.getType() == -1 && var1.compareTo(var2.getItemName()) == 0) {
  436.             return (CategoryData)var2;
  437.          }
  438.       }
  439.  
  440.       return null;
  441.    }
  442. }
  443.