home *** CD-ROM | disk | FTP | other *** search
/ PC Online 1998 September / PCO_0998.ISO / browser / ns405lyc / netcast.z / ncjava10.jar / netscape / netcast / application / DataItem.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-03-09  |  11.9 KB  |  610 lines

  1. package netscape.netcast.application;
  2.  
  3. import java.applet.Applet;
  4. import java.net.MalformedURLException;
  5. import java.net.URL;
  6. import java.util.Vector;
  7. import netscape.javascript.JSObject;
  8.  
  9. public abstract class DataItem implements Alarmable {
  10.    static final int CONTAINER = -1;
  11.    static final int CATEGORY_CONTAINER = -2;
  12.    static final int CONTENT_PAGE = -3;
  13.    static final int POLLED_CHANNEL = 1;
  14.    static final int CASTANET_CHANNEL = 2;
  15.    static final int POLLED_MCF_CHANNEL = 3;
  16.    static final int STATE_NONE = 0;
  17.    static final int STATE_ERROR = -1;
  18.    static final int STATE_CRITICAL_ERROR = -2;
  19.    static final int STATE_UPDATED = 1;
  20.    static final long PERM_SCHEDULED = 1L;
  21.    static final long PERM_DELETABLE = 2L;
  22.    static final long PERM_EDITABLE = 4L;
  23.    protected ConstPR4 m_Applet;
  24.    protected CategoryData parent;
  25.    protected String m_PrefsKey;
  26.    protected int m_Type;
  27.    protected String m_Name;
  28.    protected String m_URL;
  29.    protected String m_Description;
  30.    protected long m_Permissions;
  31.    protected int m_Frequency;
  32.    protected long m_LastUpdate;
  33.    protected int m_UpdateTime;
  34.    protected int m_StartTime;
  35.    protected int m_EndTime;
  36.    protected String m_Mode;
  37.    protected int m_MaxSize;
  38.    protected int m_State;
  39.    protected int m_Status;
  40.    protected JSObject m_ItemView;
  41.    protected String m_Error;
  42.    protected Boolean m_webtopStatus;
  43.    protected Boolean m_Changed;
  44.    protected static int m_AdminStart;
  45.    protected static int m_AdminEnd;
  46.    protected static int m_AdminUpdateTimes;
  47.    protected static int m_NumItems;
  48.  
  49.    protected DataItem() {
  50.       this.m_Applet = null;
  51.       this.m_Type = 0;
  52.       this.m_Name = "";
  53.       this.m_Permissions = 7L;
  54.       this.m_webtopStatus = Boolean.FALSE;
  55.    }
  56.  
  57.    public DataItem(Applet var1, int var2, String var3) {
  58.       this.m_Applet = (ConstPR4)var1;
  59.       this.m_Type = var2;
  60.       this.m_Name = var3;
  61.       this.m_Permissions = 7L;
  62.       this.m_webtopStatus = Boolean.FALSE;
  63.    }
  64.  
  65.    public String getItemName() {
  66.       return this.m_Name;
  67.    }
  68.  
  69.    public String getPrefsKey() {
  70.       return this.m_PrefsKey;
  71.    }
  72.  
  73.    public String getURL() {
  74.       return this.m_URL;
  75.    }
  76.  
  77.    public int getFrequency() {
  78.       return this.m_Frequency;
  79.    }
  80.  
  81.    public long getLastUpdate() {
  82.       return this.m_LastUpdate;
  83.    }
  84.  
  85.    public int getType() {
  86.       return this.m_Type;
  87.    }
  88.  
  89.    public int getUpdateTime() {
  90.       return this.m_UpdateTime;
  91.    }
  92.  
  93.    public String getMode() {
  94.       return this.m_Mode;
  95.    }
  96.  
  97.    public String getDescription() {
  98.       return this.m_Description;
  99.    }
  100.  
  101.    public int getMaxSize() {
  102.       return this.m_MaxSize;
  103.    }
  104.  
  105.    public int getState() {
  106.       return this.m_State;
  107.    }
  108.  
  109.    public int getStatus() {
  110.       return this.m_Status;
  111.    }
  112.  
  113.    public String getError() {
  114.       return this.m_Error;
  115.    }
  116.  
  117.    public JSObject getItemView() {
  118.       return this.m_ItemView;
  119.    }
  120.  
  121.    public CategoryData getParent() {
  122.       return this.parent;
  123.    }
  124.  
  125.    public Boolean getWebtopStatus() {
  126.       return this.m_webtopStatus;
  127.    }
  128.  
  129.    public boolean isScheduled() {
  130.       return (this.m_Permissions & 1L) != 0L;
  131.    }
  132.  
  133.    public Boolean getScheduled() {
  134.       return new Boolean(this.isScheduled());
  135.    }
  136.  
  137.    public boolean isDeletable() {
  138.       boolean var1 = true;
  139.       if (this.parent != null) {
  140.          var1 = this.parent.canRemove();
  141.       }
  142.  
  143.       return var1 && (this.m_Permissions & 2L) != 0L;
  144.    }
  145.  
  146.    public Boolean getDeletable() {
  147.       return new Boolean(this.isDeletable());
  148.    }
  149.  
  150.    public boolean isEditable() {
  151.       return (this.m_Permissions & 4L) != 0L;
  152.    }
  153.  
  154.    public String getPrefsName() {
  155.       if (this.m_PrefsKey != null) {
  156.          String var1 = this.m_PrefsKey.substring(this.m_PrefsKey.lastIndexOf(46) + 1);
  157.          return var1;
  158.       } else {
  159.          return null;
  160.       }
  161.    }
  162.  
  163.    public void setItemName(String var1) {
  164.       this.m_Name = var1;
  165.    }
  166.  
  167.    public void setPrefsKey(String var1) {
  168.       this.m_PrefsKey = var1;
  169.    }
  170.  
  171.    public void setFrequency(int var1) {
  172.       this.m_Frequency = var1;
  173.    }
  174.  
  175.    public void setLastUpdate(long var1) {
  176.       this.m_LastUpdate = var1;
  177.    }
  178.  
  179.    public void setType(int var1) {
  180.       this.m_Type = var1;
  181.    }
  182.  
  183.    public void setUpdateTime(int var1) {
  184.       this.m_UpdateTime = var1;
  185.    }
  186.  
  187.    public void setDescription(String var1) {
  188.       this.m_Description = var1;
  189.    }
  190.  
  191.    public void setState(int var1) {
  192.       this.m_State = var1;
  193.    }
  194.  
  195.    public void setStatus(int var1) {
  196.       this.m_Status = var1;
  197.    }
  198.  
  199.    public void setMaxSize(int var1) {
  200.       this.m_MaxSize = var1;
  201.    }
  202.  
  203.    public void setWebtopStatus(Boolean var1) {
  204.       this.m_webtopStatus = var1;
  205.    }
  206.  
  207.    public void setMode(String var1) {
  208.       this.m_Mode = var1;
  209.       if (this.m_Mode.compareTo("webtop") == 0) {
  210.          this.setWebtopIcon();
  211.       }
  212.  
  213.    }
  214.  
  215.    public void setScheduled(Boolean var1) {
  216.       if (var1) {
  217.          this.m_Permissions |= 1L;
  218.       } else {
  219.          this.m_Permissions &= -2L;
  220.       }
  221.    }
  222.  
  223.    public void setURL(String var1) {
  224.       try {
  225.          new URL(var1);
  226.       } catch (MalformedURLException var4) {
  227.          var1 = "http://" + var1;
  228.  
  229.          try {
  230.             new URL(var1);
  231.          } catch (MalformedURLException var3) {
  232.             this.m_URL = "about:larubbio";
  233.             return;
  234.          }
  235.       }
  236.  
  237.       this.m_URL = var1;
  238.    }
  239.  
  240.    protected int loadDataSetup(Vector var1, Vector var2) throws IllegalArgumentException {
  241.       if (var1.size() != var2.size()) {
  242.          throw new IllegalArgumentException("Different count of preference keys and values");
  243.       } else {
  244.          String var3 = this.getPrefsKey();
  245.          var1.addElement(var3 + ".type");
  246.          var2.addElement("" + 1);
  247.          var1.addElement(var3 + ".url");
  248.          var2.addElement("");
  249.          var1.addElement(var3 + ".name");
  250.          var2.addElement("None");
  251.          var1.addElement(var3 + ".description");
  252.          var2.addElement("None");
  253.          var1.addElement(var3 + ".mode");
  254.          var2.addElement("window");
  255.          var1.addElement(var3 + ".lastUpdate");
  256.          var2.addElement("0");
  257.          var1.addElement(var3 + ".permissions");
  258.          var2.addElement("" + 7L);
  259.          return 7;
  260.       }
  261.    }
  262.  
  263.    protected void reflectLoadedData(String[] var1, String[] var2) {
  264.       for(int var3 = 0; var3 < var1.length; ++var3) {
  265.          String var4 = var1[var3].substring(var1[var3].lastIndexOf(46) + 1);
  266.          if (var4.compareTo("type") == 0) {
  267.             this.m_Type = Integer.parseInt(var2[var3]);
  268.          } else if (var4.compareTo("url") == 0) {
  269.             this.m_URL = var2[var3];
  270.          } else if (var4.compareTo("name") == 0) {
  271.             this.m_Name = var2[var3];
  272.          } else if (var4.compareTo("description") == 0) {
  273.             this.m_Description = var2[var3];
  274.          } else if (var4.compareTo("mode") == 0) {
  275.             this.m_Mode = var2[var3];
  276.          } else if (var4.compareTo("lastUpdate") == 0) {
  277.             this.m_LastUpdate = Long.parseLong(var2[var3]);
  278.          } else if (var4.compareTo("permissions") == 0) {
  279.             this.m_Permissions = Long.parseLong(var2[var3]);
  280.          }
  281.       }
  282.  
  283.    }
  284.  
  285.    public void loadData(String var1) {
  286.       this.setPrefsKey(var1);
  287.       Vector var2 = new Vector(15, 10);
  288.       Vector var3 = new Vector(15, 10);
  289.       int var4 = 0;
  290.  
  291.       try {
  292.          var4 = this.loadDataSetup(var2, var3);
  293.          String[] var5 = new String[var4];
  294.          String[] var6 = new String[var4];
  295.          var2.copyInto(var5);
  296.          var3.copyInto(var6);
  297.          NCPrefsManager.GetBatchData(var5, var6);
  298.          this.reflectLoadedData(var5, var6);
  299.       } catch (Exception var7) {
  300.          System.out.println("An error occurred while trying to load an item");
  301.       }
  302.    }
  303.  
  304.    protected int saveDataSetup(Vector var1, Vector var2) throws IllegalArgumentException {
  305.       if (var1.size() != var2.size()) {
  306.          throw new IllegalArgumentException("Different count of preference keys and values");
  307.       } else {
  308.          String var3 = this.getPrefsKey();
  309.          var1.addElement(var3 + ".type");
  310.          var2.addElement("" + this.m_Type);
  311.          var1.addElement(var3 + ".url");
  312.          var2.addElement(this.m_URL);
  313.          var1.addElement(var3 + ".name");
  314.          var2.addElement("" + this.m_Name);
  315.          var1.addElement(var3 + ".description");
  316.          var2.addElement(this.m_Description);
  317.          var1.addElement(var3 + ".mode");
  318.          var2.addElement(this.m_Mode);
  319.          var1.addElement(var3 + ".lastUpdate");
  320.          var2.addElement("" + this.m_LastUpdate);
  321.          var1.addElement(var3 + ".permissions");
  322.          var2.addElement("" + this.m_Permissions);
  323.          return 7;
  324.       }
  325.    }
  326.  
  327.    public void saveData(String var1) {
  328.       Vector var2 = new Vector(15, 10);
  329.       Vector var3 = new Vector(15, 10);
  330.       int var4 = 0;
  331.  
  332.       try {
  333.          var4 = this.saveDataSetup(var2, var3);
  334.          String[] var5 = new String[var4];
  335.          String[] var6 = new String[var4];
  336.          var2.copyInto(var5);
  337.          var3.copyInto(var6);
  338.          NCPrefsManager.SetBatchData(var5, var6);
  339.       } catch (Exception var7) {
  340.          System.out.println("An error occurred while trying to save \"" + this.m_Name + "\"");
  341.       }
  342.    }
  343.  
  344.    public void update() {
  345.    }
  346.  
  347.    public void cancelUpdate() {
  348.    }
  349.  
  350.    public void deleteMe() {
  351.       if (this.parent != null) {
  352.          this.parent.deleteItem(this, true);
  353.       }
  354.  
  355.    }
  356.  
  357.    public void properties() {
  358.       if (this.m_Applet != null && this.m_ItemView != null) {
  359.          JSObject var1 = JSObject.getWindow(this.m_Applet);
  360.          Object[] var2 = new Object[]{this};
  361.          var1.call("handleProperties", var2);
  362.       }
  363.  
  364.    }
  365.  
  366.    public void close() {
  367.       this.m_ItemView = null;
  368.       this.m_Applet = null;
  369.    }
  370.  
  371.    public void createView() {
  372.       if (this.m_Applet != null) {
  373.          JSObject var1 = JSObject.getWindow(this.m_Applet);
  374.          Object[] var2 = new Object[]{this};
  375.          var1.call("createItemLayer", var2);
  376.       }
  377.  
  378.    }
  379.  
  380.    public void deleteView() {
  381.       if (this.m_Applet != null && this.m_ItemView != null) {
  382.          JSObject var1 = JSObject.getWindow(this.m_Applet);
  383.          Object[] var2 = new Object[]{this, this.m_ItemView};
  384.          var1.call("deleteItemLayer", var2);
  385.       }
  386.  
  387.    }
  388.  
  389.    public void setItemView(JSObject var1) {
  390.       this.m_ItemView = var1;
  391.    }
  392.  
  393.    public void refreshView() {
  394.       if (this.m_Applet != null && this.m_ItemView != null) {
  395.          JSObject var1 = JSObject.getWindow(this.m_Applet);
  396.          Object[] var2 = new Object[]{this, this.m_ItemView};
  397.          var1.call("refreshItemLayer", var2);
  398.       }
  399.  
  400.    }
  401.  
  402.    public String[][] getMenuItems() {
  403.       String[][] var1 = new String[3][2];
  404.       var1[0][0] = "Delete";
  405.       var1[0][1] = "delete";
  406.       var1[1][0] = "-";
  407.       var1[1][1] = "";
  408.       var1[2][0] = "Properties";
  409.       var1[2][1] = "props";
  410.       return var1;
  411.    }
  412.  
  413.    public void processMenuItem(String var1) {
  414.       if (var1.compareTo("delete") == 0) {
  415.          this.deleteMe();
  416.       } else {
  417.          if (var1.compareTo("props") == 0) {
  418.             this.properties();
  419.          }
  420.  
  421.       }
  422.    }
  423.  
  424.    public void added(CategoryData var1, boolean var2) {
  425.       this.parent = var1;
  426.       if (var2) {
  427.          boolean var3 = false;
  428.          if (NCPrefsManager.m_defaultChannelName != null && !NCPrefsManager.m_defaultChannelName.equals("")) {
  429.             if (NCPrefsManager.m_defaultChannelName.indexOf(46) == -1 && NCPrefsManager.m_defaultChannelName.equals(this.getPrefsName())) {
  430.                var3 = true;
  431.             } else if (NCPrefsManager.m_defaultChannelName.equals(this.getPrefsKey())) {
  432.                var3 = true;
  433.             }
  434.  
  435.             if (var3 && this.m_Applet != null) {
  436.                JSObject var4 = JSObject.getWindow(this.m_Applet);
  437.                Object[] var5 = new Object[]{this};
  438.                var4.call("setDefaultChannel", var5);
  439.             }
  440.          }
  441.       }
  442.  
  443.       if (var1 != null) {
  444.          this.createView();
  445.       }
  446.  
  447.    }
  448.  
  449.    public void deleted(CategoryData var1) {
  450.       this.deleteView();
  451.       NCPrefsManager.DelPref(this.m_PrefsKey);
  452.    }
  453.  
  454.    public void changed() {
  455.       this.refreshView();
  456.       this.saveData("");
  457.    }
  458.  
  459.    public boolean opening() {
  460.       boolean var1 = this.handleState();
  461.       if (var1 && this.m_Mode.equals("webtop")) {
  462.          this.setWebtopStatus(Boolean.TRUE);
  463.          this.setWebtopIcon();
  464.       }
  465.  
  466.       return var1;
  467.    }
  468.  
  469.    public void closing() {
  470.       if (this.m_Mode.equals("webtop")) {
  471.          this.setWebtopStatus(Boolean.FALSE);
  472.          this.setWebtopIcon();
  473.       }
  474.  
  475.    }
  476.  
  477.    public void setWebtopIcon() {
  478.       Object[] var1 = new Object[2];
  479.       if (this.m_Applet != null && this.m_ItemView != null) {
  480.          JSObject var2 = JSObject.getWindow(this.m_Applet);
  481.          var1[0] = this.m_ItemView;
  482.          var1[1] = this.m_webtopStatus == Boolean.TRUE ? "true" : "false";
  483.          var2.call("contextSetWebtopStatus", var1);
  484.       }
  485.  
  486.    }
  487.  
  488.    public int getAdminUpdateTimes() {
  489.       if (m_AdminUpdateTimes == -1) {
  490.          return m_AdminUpdateTimes;
  491.       } else if (m_AdminUpdateTimes == 0) {
  492.          return 0;
  493.       } else {
  494.          int var1;
  495.          int var2;
  496.          if ((var1 = this.getAdminStartTime()) < (var2 = this.getAdminEndTime())) {
  497.             return 1;
  498.          } else {
  499.             return var1 > var2 ? 2 : 0;
  500.          }
  501.       }
  502.    }
  503.  
  504.    public int getAdminStartTime() {
  505.       return m_AdminStart;
  506.    }
  507.  
  508.    public int getAdminEndTime() {
  509.       return m_AdminEnd;
  510.    }
  511.  
  512.    public synchronized void autoUpdate() {
  513.    }
  514.  
  515.    public int getUpdateTimes() {
  516.       if (this.isScheduled()) {
  517.          int var1 = this.getFrequency();
  518.          if (var1 != -5 && var1 != -6) {
  519.             int var2;
  520.             int var3;
  521.             if ((var2 = this.getStartTime()) < (var3 = this.getEndTime())) {
  522.                return 1;
  523.             } else {
  524.                return var2 > var3 ? 2 : 0;
  525.             }
  526.          } else {
  527.             return 0;
  528.          }
  529.       } else {
  530.          return -1;
  531.       }
  532.    }
  533.  
  534.    public int getStartTime() {
  535.       return this.m_StartTime;
  536.    }
  537.  
  538.    public int getEndTime() {
  539.       return this.m_EndTime;
  540.    }
  541.  
  542.    public String toString() {
  543.       return "DataItem: " + this.m_Name;
  544.    }
  545.  
  546.    public synchronized void setError(String var1) {
  547.       this.m_Error = var1;
  548.       if (var1 == null && this.getState() != 1) {
  549.          this.setState(0);
  550.       }
  551.  
  552.    }
  553.  
  554.    public synchronized void updateLEDImage(boolean var1) {
  555.       if (this.parent != null) {
  556.          Object[] var2 = new Object[2];
  557.          if (this.m_Applet != null && this.m_ItemView != null) {
  558.             JSObject var3 = JSObject.getWindow(this.m_Applet);
  559.             var2[0] = this.m_ItemView;
  560.             var2[1] = new Integer(this.m_State);
  561.             var3.call("contextSetChannelStatus", var2);
  562.          }
  563.       }
  564.  
  565.    }
  566.  
  567.    public synchronized boolean handleState() {
  568.       JSObject var1 = null;
  569.       if (this.m_Applet != null) {
  570.          var1 = JSObject.getWindow(this.m_Applet);
  571.       }
  572.  
  573.       String var3 = this.getError();
  574.       boolean var2;
  575.       if (this.m_State < 0) {
  576.          String[] var4 = new String[]{var3};
  577.          if (var1 != null) {
  578.             var1.call("showError", var4);
  579.          }
  580.  
  581.          if (this.m_State == -2) {
  582.             var2 = false;
  583.             this.setState(-2);
  584.          } else {
  585.             var2 = true;
  586.             this.setState(0);
  587.          }
  588.       } else {
  589.          var2 = true;
  590.          this.setState(0);
  591.       }
  592.  
  593.       this.updateLEDImage(true);
  594.       return var2;
  595.    }
  596.  
  597.    static {
  598.       String[] var0 = new String[]{""};
  599.       var0[0] = "netcaster.admin.startTime";
  600.       String var1 = NCPrefsManager.GetData(var0[0], "9");
  601.       m_AdminStart = Integer.parseInt(var1);
  602.       var0[0] = "netcaster.admin.endTime";
  603.       var1 = NCPrefsManager.GetData(var0[0], "17");
  604.       m_AdminEnd = Integer.parseInt(var1);
  605.       var0[0] = "netcaster.admin.times";
  606.       var1 = NCPrefsManager.GetData(var0[0], "0");
  607.       m_AdminUpdateTimes = Integer.parseInt(var1);
  608.    }
  609. }
  610.