home *** CD-ROM | disk | FTP | other *** search
/ CD Actual Thematic 7: Programming / CDAT7.iso / Share / Java / JDesignerPro / Jdp3_0.exe / data1.cab / Program_Files / JDPSearchHelp.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-04-09  |  7.5 KB  |  285 lines

  1. import java.awt.BorderLayout;
  2. import java.awt.Checkbox;
  3. import java.awt.CheckboxGroup;
  4. import java.awt.Component;
  5. import java.awt.Container;
  6. import java.awt.Event;
  7. import java.awt.GridLayout;
  8. import java.awt.Label;
  9. import java.awt.Panel;
  10. import java.awt.TextField;
  11. import java.util.Enumeration;
  12. import java.util.Hashtable;
  13. import java.util.StringTokenizer;
  14. import java.util.Vector;
  15.  
  16. public class JDPSearchHelp extends JDPClassLayout {
  17.    JDPUser user;
  18.    JDPJagg jaggSQL;
  19.    JDPPopupMessage popuppanel;
  20.    JDPMaskEdit JDPMaskEditMain;
  21.    String moduleParameter;
  22.    Panel Main;
  23.    Panel Panel3;
  24.    Panel Panel4;
  25.    Label Label1;
  26.    Label Label2;
  27.    Panel Panel5;
  28.    Panel Panel7;
  29.    TextField searchFor;
  30.    JDPButton JDPButton1;
  31.    JDPChoice titles;
  32.    Vector valuetitles;
  33.    Panel Panel8;
  34.    Label Label4;
  35.    Panel Panel6;
  36.    Panel Panel1;
  37.    Checkbox containsAll;
  38.    Checkbox containsAny;
  39.    Checkbox matchWholeWords;
  40.    String[] keyWords;
  41.    Hashtable allTitles;
  42.  
  43.    public void InitClass(JDPUser var1, Panel var2, String var3) {
  44.       this.user = var1;
  45.       this.moduleParameter = var3;
  46.       super.targetPanel = var2;
  47.       this.jaggSQL = new JDPJagg(var1.jaggPath);
  48.       ((Container)this).setLayout(new BorderLayout());
  49.       this.popuppanel = new JDPPopupMessage(var1, this);
  50.       ((Container)this).add(this.popuppanel);
  51.       this.JDPMaskEditMain = new JDPMaskEdit();
  52.       CheckboxGroup var4 = new CheckboxGroup();
  53.       this.Main = new Panel();
  54.       this.Panel3 = new Panel();
  55.       this.Panel4 = new Panel();
  56.       this.Label1 = new Label("Search for:", 0);
  57.       this.Label2 = new Label("Topics:", 0);
  58.       this.Panel5 = new Panel();
  59.       this.Panel7 = new Panel();
  60.       this.searchFor = new TextField("", 40);
  61.       this.JDPButton1 = new JDPButton(JDPButton.getIconValue("Search"), "null", JDPButton.getAlignmentValue("Center"));
  62.       this.titlesMain();
  63.       this.Panel8 = new Panel();
  64.       this.Label4 = new Label("", 0);
  65.       this.Panel6 = new Panel();
  66.       this.Panel1 = new Panel();
  67.       this.containsAll = new Checkbox("Match all", var4, true);
  68.       this.containsAny = new Checkbox("Match any", var4, false);
  69.       this.matchWholeWords = new Checkbox("Match whole words only");
  70.       this.matchWholeWords.setState(true);
  71.       this.Main.setLayout(new BorderLayout());
  72.       ((Container)this).add("Center", this.Main);
  73.       this.Main.add("Center", this.Panel3);
  74.       this.Panel3.setLayout(new JDPLineLayout());
  75.       this.Panel3.add("Left", this.Panel4);
  76.       this.Panel4.setLayout(new JDPRowLayout());
  77.       this.Panel4.add("Left", this.Label1);
  78.       this.Panel4.add("Left", this.Label2);
  79.       this.Panel3.add("Left", this.Panel5);
  80.       this.Panel5.setLayout(new GridLayout(2, 2));
  81.       this.Panel5.add(this.Panel7);
  82.       this.Panel7.setLayout(new BorderLayout());
  83.       this.Panel7.add("Center", this.searchFor);
  84.       this.Panel7.add("East", this.JDPButton1);
  85.       this.Panel5.add(this.titles);
  86.       this.Panel3.add("Left", this.Panel8);
  87.       this.Panel8.setLayout(new BorderLayout());
  88.       this.Panel8.add("Center", this.Label4);
  89.       this.Panel3.add("Left", this.Panel6);
  90.       this.Panel6.setLayout(new JDPRowLayout());
  91.       this.Panel6.add("Left", this.Panel1);
  92.       this.Panel1.setLayout(new JDPLineLayout());
  93.       this.Panel1.add("Left", this.containsAll);
  94.       this.Panel1.add("Left", this.containsAny);
  95.       this.Panel6.add("Left", this.matchWholeWords);
  96.       this.titles.setMinimumWidth(300);
  97.       this.matchWholeWords.setState(true);
  98.       var1.gParm.addElement(this);
  99.       this.InitComponents();
  100.    }
  101.  
  102.    public boolean handleEvent(Event var1) {
  103.       switch (var1.id) {
  104.          case 503:
  105.          case 504:
  106.          case 505:
  107.             this.popuppanel.postEvent(var1);
  108.             return false;
  109.          case 1001:
  110.             if (var1.target.equals(this.searchFor)) {
  111.                this.loadMatchingTitles();
  112.                return true;
  113.             } else if (var1.target.equals(this.JDPButton1)) {
  114.                this.loadMatchingTitles();
  115.                return true;
  116.             } else {
  117.                if (var1.target.equals(this.titles)) {
  118.                   Event var2 = new Event(this, 1001, this.titles.getSelectedKey());
  119.                   ((Component)this).postEvent(var2);
  120.                   return true;
  121.                }
  122.  
  123.                return false;
  124.             }
  125.          default:
  126.             return false;
  127.       }
  128.    }
  129.  
  130.    public void InitComponents() {
  131.       this.jaggSQL.setKeepConnectionOpen(false);
  132.       this.loadTitles();
  133.    }
  134.  
  135.    public String getSearchText() {
  136.       return this.searchFor.getText();
  137.    }
  138.  
  139.    public void setSearchText(String var1) {
  140.       this.searchFor.setText(var1);
  141.    }
  142.  
  143.    public boolean getContainsAll() {
  144.       return this.containsAll.getState();
  145.    }
  146.  
  147.    public void setContainsAll(boolean var1) {
  148.       this.containsAll.setState(var1);
  149.    }
  150.  
  151.    public JDPChoice getTitlesHandle() {
  152.       return this.titles;
  153.    }
  154.  
  155.    public void loadMatchingTitles() {
  156.       this.jaggSQL.loadSettings(this.user);
  157.       this.titles.clear();
  158.       int var1 = 0;
  159.       Vector var3 = new Vector();
  160.       String var4 = "SELECT keyword, docindex FROM JDPKeyWd ";
  161.       boolean var5 = true;
  162.       if (this.matchWholeWords.getState()) {
  163.          var4 = var4 + "WHERE keyword IN ('";
  164.          StringTokenizer var2 = new StringTokenizer(this.searchFor.getText().toLowerCase(), " \t");
  165.  
  166.          for(this.keyWords = new String[var2.countTokens()]; var2.hasMoreTokens(); var4 = var4 + this.keyWords[var1 - 1]) {
  167.             if (!var5) {
  168.                var4 = var4 + "','";
  169.             }
  170.  
  171.             var5 = false;
  172.             this.keyWords[var1++] = var2.nextToken();
  173.          }
  174.  
  175.          var4 = var4 + "')";
  176.       } else {
  177.          var4 = var4 + "WHERE keyword LIKE '%";
  178.          StringTokenizer var16 = new StringTokenizer(this.searchFor.getText().toLowerCase(), " \t");
  179.  
  180.          for(this.keyWords = new String[var16.countTokens()]; var16.hasMoreTokens(); var4 = var4 + this.keyWords[var1 - 1]) {
  181.             if (!var5) {
  182.                var4 = var4 + "%' OR keyword LIKE '%";
  183.             }
  184.  
  185.             var5 = false;
  186.             this.keyWords[var1++] = var16.nextToken();
  187.          }
  188.  
  189.          var4 = var4 + "%'";
  190.       }
  191.  
  192.       this.jaggSQL.execSQL(var4, var3);
  193.       Hashtable var10 = new Hashtable();
  194.  
  195.       for(int var11 = 0; var11 < var3.size(); ++var11) {
  196.          StringTokenizer var17 = new StringTokenizer((String)var3.elementAt(var11), this.jaggSQL.getSEP());
  197.          String var6 = var17.nextToken();
  198.          String var8 = var17.nextToken();
  199.          byte[] var12 = new byte[var8.length()];
  200.          var8.getBytes(0, var12.length, var12, 0);
  201.  
  202.          for(int var13 = 0; var13 < var12.length; ++var13) {
  203.             String var9 = Integer.toString(var12[var13]);
  204.             char[] var7 = (char[])var10.get(var9);
  205.             if (var7 == null) {
  206.                var7 = new char[this.keyWords.length];
  207.  
  208.                for(int var14 = 0; var14 < this.keyWords.length; ++var14) {
  209.                   var7[var14] = '0';
  210.                }
  211.             }
  212.  
  213.             for(int var25 = 0; var25 < this.keyWords.length; ++var25) {
  214.                if (var6.indexOf(this.keyWords[var25]) >= 0) {
  215.                   var7[var25] = '1';
  216.                }
  217.             }
  218.  
  219.             var10.put(var9, var7);
  220.          }
  221.       }
  222.  
  223.       Enumeration var26 = var10.keys();
  224.  
  225.       while(var26.hasMoreElements()) {
  226.          String var22 = (String)var26.nextElement();
  227.          char[] var21 = (char[])var10.get(var22);
  228.          var1 = 0;
  229.          boolean var24 = true;
  230.  
  231.          while(var24 && var1 < var21.length) {
  232.             if (var21[var1++] == '0') {
  233.                var24 = false;
  234.             }
  235.          }
  236.  
  237.          if (this.containsAll.getState() && var24 || this.containsAny.getState()) {
  238.             String[] var23 = (String[])this.allTitles.get(var22);
  239.             if (var23 != null) {
  240.                this.titles.addItem(var23[1], var23[0]);
  241.             }
  242.          }
  243.       }
  244.  
  245.       this.titles.sortItems();
  246.       this.titles.select(0);
  247.    }
  248.  
  249.    public void loadTitles() {
  250.       this.jaggSQL.loadSettings(this.user);
  251.       this.allTitles = new Hashtable();
  252.       Vector var1 = new Vector();
  253.       String var2 = "SELECT docindex, filename, title FROM JDPDocIx ";
  254.       this.jaggSQL.execSQL(var2, var1);
  255.  
  256.       for(int var5 = 0; var5 < var1.size(); ++var5) {
  257.          StringTokenizer var4 = new StringTokenizer((String)var1.elementAt(var5), this.jaggSQL.getSEP());
  258.          String var3 = var4.nextToken();
  259.          String[] var6 = new String[]{var4.nextToken(), var4.nextToken()};
  260.          this.allTitles.put(var3, var6);
  261.       }
  262.  
  263.    }
  264.  
  265.    public String getSelectedDocument() {
  266.       this.user.JDesignerPro.wwwroot.substring(this.user.JDesignerPro.JDPDomain.length() - 1);
  267.       return "/Docs/" + this.titles.getSelectedKey();
  268.    }
  269.  
  270.    public String[] getKeyWords() {
  271.       return this.keyWords;
  272.    }
  273.  
  274.    public boolean getMatchComplete() {
  275.       return this.matchWholeWords.getState();
  276.    }
  277.  
  278.    public void titlesMain() {
  279.       if (this.titles == null) {
  280.          this.titles = new JDPChoice();
  281.       }
  282.  
  283.    }
  284. }
  285.