home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1997 May / Pcwk0597.iso / borland / ib / setups / intrabld / data.z / SERVER.JFM < prev    next >
Text File  |  1996-11-13  |  13KB  |  464 lines

  1. /****************************************************************************\
  2. *                                                                            *
  3. * Server.jfm  --  Server Configuration Sample Form                           *
  4. *                                                                            *
  5. * Server.jfm is a stand-alone sample file. But it is more than just a sample.*
  6. * You can actually use this form to configure the system registry settings   *
  7. * for the IntraBuilder server. The form demonstrates the use of external     *
  8. * functions, in this case Windows 32 API functions. The Form_onServerLoad    *
  9. * method creates a Registry object, which is used in that method as well as  *
  10. * the saveButton_onServerClick method to read and write registry values.     *
  11. *                                                                            *
  12. * Dependencies:  Registry.js  (contains the Registry class definition)       *
  13. *                                                                            *
  14. * Updated 11/13/96 by IntraBuilder Samples Group                             *
  15. * $Revision:   1.14  $                                                       *
  16. *                                                                            *
  17. * Copyright (c) 1996, Borland International, Inc. All rights reserved.       *
  18. *                                                                            *
  19. \****************************************************************************/
  20. #include "WINREG.H"
  21. //
  22. // Define the registry key for the IntraBuilder settings
  23. //
  24. #define SERVER_REG_KEY  "SOFTWARE\\Borland\\IntraBuilder\\1.0"
  25.  
  26. // {End Header} Do not remove this comment//
  27. // Generated on 11/13/96
  28. //
  29. var f = new serverForm();
  30. f.open();
  31. class serverForm extends Form {
  32.    with (this) {
  33.       onServerLoad = class::form_onServerLoad;
  34.       height = 15;
  35.       left = 0;
  36.       top = 0;
  37.       width = 78;
  38.       title = "IntraBuilder Server Configuration";
  39.    }
  40.  
  41.  
  42.    with (this.rule1 = new Rule(this)){
  43.       top = 2;
  44.       size = 2;
  45.       right = 74;
  46.       pageno = 0;
  47.    }
  48.  
  49.  
  50.    with (this.rule2 = new Rule(this)){
  51.       top = 13.5;
  52.       size = 2;
  53.       right = 74;
  54.       pageno = 0;
  55.    }
  56.  
  57.  
  58.    with (this.rule3 = new Rule(this)){
  59.       top = 7;
  60.       size = 2;
  61.       right = 74;
  62.       pageno = 2;
  63.    }
  64.  
  65.  
  66.    with (this.Title = new HTML(this)){
  67.       height = 2;
  68.       width = 74;
  69.       color = "black";
  70.       alignHorizontal = 1;
  71.       text = "<H1>IntraBuilder Server Configuration</H1>";
  72.    }
  73.  
  74.  
  75.    with (this.pathHTML = new HTML(this)){
  76.       height = 1.1667;
  77.       top = 3;
  78.       width = 34;
  79.       color = "black";
  80.       text = "Path to IntraBuilder Server Agent";
  81.    }
  82.  
  83.  
  84.    with (this.pathText = new Text(this)){
  85.       left = 34;
  86.       top = 3;
  87.       width = 40;
  88.       value = "";
  89.    }
  90.  
  91.  
  92.    with (this.instancesHTML = new HTML(this)){
  93.       height = 1.1667;
  94.       top = 4.4167;
  95.       width = 34;
  96.       color = "black";
  97.       text = "Number of IntraBuilder Server Agents";
  98.    }
  99.  
  100.  
  101.    with (this.instancesText = new Text(this)){
  102.       left = 34;
  103.       top = 4.4167;
  104.       width = 10;
  105.       template = "999";
  106.       value = "";
  107.    }
  108.  
  109.  
  110.    with (this.sessionsHTML = new HTML(this)){
  111.       height = 1.1667;
  112.       top = 6;
  113.       width = 34;
  114.       color = "black";
  115.       text = "Maximum Number of Sessions";
  116.    }
  117.  
  118.  
  119.    with (this.sessionsText = new Text(this)){
  120.       left = 34;
  121.       top = 6;
  122.       width = 10;
  123.       template = "999";
  124.       value = "";
  125.    }
  126.  
  127.  
  128.    with (this.timeoutHTML = new HTML(this)){
  129.       height = 1.1667;
  130.       top = 7.5;
  131.       width = 34;
  132.       color = "black";
  133.       text = "Session Timeout";
  134.    }
  135.  
  136.  
  137.    with (this.timeoutText = new Text(this)){
  138.       left = 34;
  139.       top = 7.4167;
  140.       width = 10;
  141.       template = "9999999";
  142.       value = "";
  143.    }
  144.  
  145.  
  146.    with (this.IntraBuilderHTML = new HTML(this)){
  147.       height = 1;
  148.       top = 14;
  149.       width = 74;
  150.       color = "black";
  151.       text = {||"<ADDRESS>Generated by IntraBuilder on " + new Date() + "</ADDRESS>"};
  152.       pageno = 0;
  153.    }
  154.  
  155.  
  156.    with (this.saveButton = new Button(this)){
  157.       onServerClick = class::saveButton_onServerClick;
  158.       top = 9;
  159.       width = 10.5;
  160.       text = "Save";
  161.    }
  162.  
  163.  
  164.    with (this.resetButton = new Reset(this)){
  165.       onClick = class::resetButton_onClick;
  166.       left = 18;
  167.       top = 9;
  168.       width = 9;
  169.       text = "Reset";
  170.    }
  171.  
  172.  
  173.    with (this.noteHTML = new HTML(this)){
  174.       height = 1;
  175.       top = 12;
  176.       width = 74;
  177.       color = "red";
  178.       text = "(Note: changes do not take effect until you restart the IntraBuilder Server)";
  179.       pageno = 0;
  180.    }
  181.  
  182.  
  183.    with (this.remoteAgentsButton = new Button(this)){
  184.       onServerClick = {;this.form.pageno = 2};
  185.       left = 48;
  186.       top = 4.4167;
  187.       width = 24;
  188.       text = "Define Remote Agents...";
  189.    }
  190.  
  191.  
  192.    with (this.html1 = new HTML(this)){
  193.       height = 2;
  194.       width = 74;
  195.       color = "black";
  196.       alignHorizontal = 1;
  197.       text = "<H1>Remote Agent Configuration</H1>";
  198.       pageno = 2;
  199.    }
  200.  
  201.  
  202.    with (this.remoteAgentsListBox = new ListBox(this)){
  203.       height = 3;
  204.       left = 24;
  205.       top = 3;
  206.       width = 32;
  207.       pageno = 2;
  208.    }
  209.  
  210.  
  211.    with (this.agentIDHTML = new HTML(this)){
  212.       height = 1;
  213.       top = 8;
  214.       width = 18;
  215.       visible = false;
  216.       color = "black";
  217.       alignVertical = 1;
  218.       alignHorizontal = 2;
  219.       text = "Agent ID: ";
  220.       pageno = 2;
  221.    }
  222.  
  223.  
  224.    with (this.agentIDText = new Text(this)){
  225.       visible = false;
  226.       left = 20;
  227.       top = 8;
  228.       width = 4;
  229.       value = "";
  230.       pageno = 2;
  231.    }
  232.  
  233.  
  234.    with (this.userNameHTML = new HTML(this)){
  235.       height = 1;
  236.       top = 9;
  237.       width = 18;
  238.       visible = false;
  239.       color = "black";
  240.       alignVertical = 1;
  241.       alignHorizontal = 2;
  242.       text = "User Name: ";
  243.       pageno = 2;
  244.    }
  245.  
  246.  
  247.    with (this.userNameText = new Text(this)){
  248.       visible = false;
  249.       left = 20;
  250.       top = 9;
  251.       width = 16;
  252.       value = "";
  253.       pageno = 2;
  254.    }
  255.  
  256.  
  257.    with (this.machineNameHTML = new HTML(this)){
  258.       height = 1;
  259.       top = 10;
  260.       width = 18;
  261.       visible = false;
  262.       color = "black";
  263.       alignVertical = 1;
  264.       alignHorizontal = 2;
  265.       text = "Machine Name: ";
  266.       pageno = 2;
  267.    }
  268.  
  269.  
  270.    with (this.machineNameText = new Text(this)){
  271.       visible = false;
  272.       left = 20;
  273.       top = 10;
  274.       width = 16;
  275.       value = "";
  276.       pageno = 2;
  277.    }
  278.  
  279.  
  280.    with (this.deleteButton = new Button(this)){
  281.       onServerClick = class::deleteButton_onServerClick;
  282.       left = 12;
  283.       top = 4.5;
  284.       width = 10.5;
  285.       text = "Delete";
  286.       pageno = 2;
  287.    }
  288.  
  289.  
  290.    with (this.updateButton = new Button(this)){
  291.       onServerClick = class::updateButton_onServerClick;
  292.       left = 12;
  293.       top = 3;
  294.       width = 10.5;
  295.       text = "Update";
  296.       pageno = 2;
  297.    }
  298.  
  299.  
  300.    with (this.addButton = new Button(this)){
  301.       onServerClick = class::addButton_onServerClick;
  302.       top = 3;
  303.       width = 10.5;
  304.       text = "Add";
  305.       pageno = 2;
  306.    }
  307.  
  308.  
  309.    with (this.backButton = new Button(this)){
  310.       onServerClick = {;this.form.pageno = 1};
  311.       top = 4.5;
  312.       width = 10.5;
  313.       text = "Back";
  314.       pageno = 2;
  315.    }
  316.  
  317.  
  318.    with (this.saveAgentButton = new Button(this)){
  319.       onServerClick = class::saveAgentButton_onServerClick;
  320.       visible = false;
  321.       left = 42;
  322.       top = 8;
  323.       width = 14;
  324.       text = "Save Agent";
  325.       pageno = 2;
  326.    }
  327.  
  328.  
  329.    with (this.abandonAgentButton = new Button(this)){
  330.       onServerClick = class::abandonAgentButton_onServerClick;
  331.       visible = false;
  332.       left = 42;
  333.       top = 9.5;
  334.       width = 14;
  335.       text = "Abandon";
  336.       pageno = 2;
  337.    }
  338.  
  339.  
  340.    function form_onServerLoad()
  341.    {
  342.       // load the registry class library
  343.       _sys.scripts.load("registry.js");
  344.       // load the registry values
  345.       form.registry = new Registry(HKEY_LOCAL_MACHINE, SERVER_REG_KEY + "\\Server" );
  346.       form.remoteAgents = new Array();
  347.       form.maxAgentID = -1;
  348.       if (form.registry.error == 0) {
  349.          form.pathText.value      = form.resetPath      = form.registry.queryValue("IntraPath");
  350.          form.instancesText.value = form.resetInstances = form.registry.queryValue("Agents");
  351.          form.sessionsText.value  = form.resetSessions  = form.registry.queryValue("MaxSessions");
  352.          form.timeoutText.value   = form.resetTimeout   = form.registry.queryValue("Timeout");
  353.          // load remote agent information
  354.          form.readRemoteAgents(form);
  355.       }
  356.       else {
  357.          form.pathText.value      = "Error reading system registry";
  358.          form.instancesText.value = "Error";
  359.          form.sessionsText.value  = "Error";
  360.          form.timeoutText.value   = "Error";
  361.          form.saveButton.visible  = false;
  362.          // disable remote agent button
  363.          this.remoteAgentsButton.visible = false;
  364.       }
  365.    }
  366.  
  367.    function readRemoteAgents(oForm)
  368.    {
  369.       oForm.remoteAgents = new Array();
  370.       oForm.maxAgentID = -1;
  371.       var nAgentId = -1;
  372.       var aValues = oForm.registry.enumValue();
  373.       aValues.sort();
  374.       for (var i = 0; i < aValues.length; i++)
  375.          if (aValues[i].substring(0,6).toUpperCase() == 'REMOTE') {
  376.             nAgentID = aValues[i].substring(6,aValues[i].length)
  377.             oForm.remoteAgents.add(nAgentID + ", " +
  378.                                    oForm.registry.queryValue(aValues[i]));
  379.             if (parseInt(nAgentID) > oForm.maxAgentID)
  380.                oForm.maxAgentID = parseInt(nAgentID);
  381.          }
  382.       oForm.remoteAgentsListBox.options = "array form.remoteAgents";
  383.       if (oForm.remoteAgents.length == 0) {
  384.          oForm.updateButton.visible = false;
  385.          oForm.deleteButton.visible = false;
  386.       }
  387.       else {
  388.          oForm.updateButton.visible = true;
  389.          oForm.deleteButton.visible = true;
  390.       }
  391.    }
  392.  
  393.    function saveButton_onServerClick()
  394.    {
  395.       this.form.registry.setValue("IntraPath",form.pathText.value);
  396.       this.form.registry.setValue("Agents",form.instancesText.value);
  397.       this.form.registry.setValue("MaxSessions",form.sessionsText.value);
  398.       this.form.registry.setValue("Timeout",form.timeoutText.value);
  399.    }
  400.  
  401.    function resetButton_onClick()
  402.    {
  403.       //Note: this only executes when run in the IntraBuilder IDE
  404.       this.form.pathText.value      = this.form.resetPath;
  405.       this.form.instancesText.value = this.form.resetInstances;
  406.       this.form.sessionsText.value  = this.form.resetSessions;
  407.       this.form.timeoutText.value   = this.form.resetTimeout;
  408.    }
  409.  
  410.    function showAgentControls(oForm, bShowThem)
  411.    {
  412.       oForm.agentIDHTML.visible = bShowThem;
  413.       oForm.agentIDText.visible = bShowThem;
  414.       oForm.userNameHTML.visible = bShowThem;
  415.       oForm.userNameText.visible = bShowThem;
  416.       oForm.machineNameHTML.visible = bShowThem;
  417.       oForm.machineNameText.visible = bShowThem;
  418.       oForm.saveAgentButton.visible = bShowThem;
  419.       oForm.abandonAgentButton.visible = bShowThem;
  420.    }
  421.  
  422.    function addButton_onServerClick()
  423.    {
  424.       this.form.agentIDText.value = "" + (this.form.maxAgentID + 1);
  425.       this.form.userNameText.value = "";
  426.       this.form.machineNameText.value = "";
  427.       this.form.showAgentControls(this.form, true);
  428.    }
  429.  
  430.    function updateButton_onServerClick()
  431.    {
  432.       var agent = this.form.remoteAgentsListBox.value;
  433.       if (agent.length > 0) {
  434.          this.form.agentIDText.value = agent.substring(0,agent.indexOf(","));
  435.          this.form.userNameText.value = agent.substring(agent.indexOf(",") + 2, agent.indexOf("@"));
  436.          this.form.machineNameText.value = agent.substring(agent.indexOf("@") + 1, agent.length);
  437.          this.form.showAgentControls(this.form, true);
  438.       }
  439.    }
  440.  
  441.    function deleteButton_onServerClick()
  442.    {
  443.       var agent = this.form.remoteAgentsListBox.value;
  444.       if (agent.length > 0) {
  445.          this.form.registry.deleteValue("Remote" + agent.substring(0,agent.indexOf(",")));
  446.          this.form.readRemoteAgents(this.form);
  447.       }
  448.    }
  449.  
  450.    function saveAgentButton_onServerClick()
  451.    {
  452.       this.form.registry.setValue("Remote" + this.form.agentIDText.value,
  453.           this.form.userNameText.value + "@" + this.form.machineNameText.value);
  454.       this.form.showAgentControls(this.form, false);
  455.       this.form.readRemoteAgents(this.form);
  456.    }
  457.  
  458.    function abandonAgentButton_onServerClick()
  459.    {
  460.       this.form.showAgentControls(this.form, false);
  461.    }
  462.  
  463. }
  464.