home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 1998 September / dppcpro0998.iso / Rwc / Sybase / Install.exe / samples.z / Form_SortableVector.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-03-25  |  9.4 KB  |  378 lines

  1. import java.awt.Color;
  2. import java.awt.Component;
  3. import java.awt.Container;
  4. import java.awt.Event;
  5. import java.awt.Font;
  6. import java.awt.FontMetrics;
  7. import java.awt.Frame;
  8. import java.awt.Insets;
  9. import java.awt.Label;
  10. import java.awt.List;
  11. import java.awt.Menu;
  12. import java.awt.MenuBar;
  13. import java.awt.MenuItem;
  14. import java.awt.Rectangle;
  15. import java.awt.TextField;
  16. import java.awt.Window;
  17. import java.awt.event.ActionEvent;
  18. import java.awt.event.ActionListener;
  19. import java.awt.event.WindowEvent;
  20. import java.awt.event.WindowListener;
  21. import java.util.Enumeration;
  22. import java.util.EventObject;
  23. import powersoft.powerj.event.AWTEvent;
  24. import powersoft.powerj.event.EventData;
  25. import powersoft.powerj.ui.ResizePercentLayout;
  26. import powersoft.powerj.util.CompareRoutine;
  27. import powersoft.powerj.util.SortableVector;
  28. import powersoft.powerj.util.StringUtility;
  29.  
  30. class Form_SortableVector extends Frame implements WindowListener, ActionListener {
  31.    boolean __mainForm;
  32.    private MenuBar menu_SortableVector = new MenuBar();
  33.    private Menu menu_SortableVector_Sort = new Menu("");
  34.    private MenuItem menu_SortableVector_AlphaSort = new MenuItem("");
  35.    private MenuItem menu_SortableVector_NameLengthSort = new MenuItem("");
  36.    private MenuItem menu_SortableVector_Scramble = new MenuItem("");
  37.    private Menu menu_SortableVector_Name = new Menu("");
  38.    private MenuItem menu_SortableVector_AddWaldo = new MenuItem("");
  39.    private MenuItem menu_SortableVector_RemoveWaldo = new MenuItem("");
  40.    private MenuItem menu_SortableVector_FindWaldo = new MenuItem("");
  41.    private MenuItem menu_SortableVector_RemoveThirdName = new MenuItem("");
  42.    private List lb_nameList = new List();
  43.    private TextField textf_messages = new TextField();
  44.    private Label label_1 = new Label();
  45.    private Label label_2 = new Label();
  46.    private Label label_3 = new Label();
  47.    final int ELEMENTS;
  48.    SortableVector _nameVector = new SortableVector();
  49.    String _sortType = new String("none");
  50.    String[] _nameList = new String[]{"John", "Brad", "Jim", "Greg", "Dan", "Dave", "Wesley", "Eric", "Chris", "Geno", "Rob", "David", "Ivan", "Waldo", "Mark", "Kevin", "Paul", "Bill", "Eugene", "Tim", "Asif", "Michael", "Thorsten", "Graham", "Jack", "Lisa", "Anthony", "Brian"};
  51.  
  52.    public Rectangle DURectangle(int var1, int var2, int var3, int var4) {
  53.       String var5 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
  54.       FontMetrics var6 = ((Component)this).getFontMetrics(((Component)this).getFont());
  55.       double var7 = (double)(var6 != null ? var6.stringWidth(var5) / var5.length() : 0);
  56.       double var9 = var6 != null ? (double)var6.getHeight() / (double)2.0F : (double)0.0F;
  57.       return new Rectangle((int)Math.round(var7 * (double)var1 / (double)4.0F), (int)Math.round(var9 * (double)var2 / (double)4.0F), (int)Math.round(var7 * (double)var3 / (double)4.0F), (int)Math.round(var9 * (double)var4 / (double)4.0F));
  58.    }
  59.  
  60.    public void DUPositionComponent(Component var1, int var2, int var3, int var4, int var5, Insets var6) {
  61.       Rectangle var7 = this.DURectangle(var2, var3, var4, var5);
  62.       if (var1 != this && var6 != null) {
  63.          var7.x += var6.left;
  64.          var7.y += var6.top;
  65.       }
  66.  
  67.       if (var1 == this && var6 != null && var6.bottom > 0) {
  68.          var7.height += var6.bottom;
  69.       }
  70.  
  71.       var1.setBounds(var7);
  72.    }
  73.  
  74.    public void setMainForm(boolean var1) {
  75.       this.__mainForm = var1;
  76.    }
  77.  
  78.    public boolean isMainForm() {
  79.       return this.__mainForm;
  80.    }
  81.  
  82.    public boolean create() throws Exception {
  83.       ((Frame)this).setTitle("Sortable Vector");
  84.       ((Frame)this).setResizable(true);
  85.       Container var1 = this.getContentPane();
  86.       Font var2 = new Font("Dialog", 0, 12);
  87.       ((Component)this).setFont(var2);
  88.       boolean var3 = true;
  89.       ((Frame)this).addNotify();
  90.       this.menu_SortableVector_Sort.setLabel("Sort");
  91.       this.menu_SortableVector.add(this.menu_SortableVector_Sort);
  92.       this.menu_SortableVector_AlphaSort.setLabel("Alpha Sort");
  93.       this.menu_SortableVector_Sort.add(this.menu_SortableVector_AlphaSort);
  94.       this.menu_SortableVector_NameLengthSort.setLabel("Name Length Sort");
  95.       this.menu_SortableVector_Sort.add(this.menu_SortableVector_NameLengthSort);
  96.       this.menu_SortableVector_Scramble.setLabel("Scramble");
  97.       this.menu_SortableVector_Sort.add(this.menu_SortableVector_Scramble);
  98.       this.menu_SortableVector_Name.setLabel("Name");
  99.       this.menu_SortableVector.add(this.menu_SortableVector_Name);
  100.       this.menu_SortableVector_AddWaldo.setLabel("Add Waldo");
  101.       this.menu_SortableVector_Name.add(this.menu_SortableVector_AddWaldo);
  102.       this.menu_SortableVector_RemoveWaldo.setLabel("Remove Waldo");
  103.       this.menu_SortableVector_Name.add(this.menu_SortableVector_RemoveWaldo);
  104.       this.menu_SortableVector_FindWaldo.setLabel("Find Waldo");
  105.       this.menu_SortableVector_Name.add(this.menu_SortableVector_FindWaldo);
  106.       this.menu_SortableVector_RemoveThirdName.setLabel("Remove Third Name");
  107.       this.menu_SortableVector_Name.add(this.menu_SortableVector_RemoveThirdName);
  108.       ((Frame)this).setMenuBar(this.menu_SortableVector);
  109.       Insets var4 = (Insets)var1.getInsets().clone();
  110.       ((Component)var1).setBackground(Color.lightGray);
  111.       ((Component)var1).setForeground(Color.black);
  112.       ResizePercentLayout var5 = new ResizePercentLayout();
  113.       var1.setLayout(var5);
  114.       var1.add(this.lb_nameList);
  115.       var1.add(this.textf_messages);
  116.       var1.add(this.label_1);
  117.       var1.add(this.label_2);
  118.       var1.add(this.label_3);
  119.       this.DUPositionComponent(this, 59, 36, 293, 224, var4);
  120.       ((Window)this).addWindowListener(this);
  121.       this.menu_SortableVector_AlphaSort.addActionListener(this);
  122.       this.menu_SortableVector_NameLengthSort.addActionListener(this);
  123.       this.menu_SortableVector_Scramble.addActionListener(this);
  124.       this.menu_SortableVector_AddWaldo.addActionListener(this);
  125.       this.menu_SortableVector_RemoveWaldo.addActionListener(this);
  126.       this.menu_SortableVector_FindWaldo.addActionListener(this);
  127.       this.menu_SortableVector_RemoveThirdName.addActionListener(this);
  128.       this.DUPositionComponent(this.lb_nameList, 5, 40, 275, 135, var4);
  129.       this.lb_nameList.setFont(var2);
  130.       this.lb_nameList.setBackground(Color.white);
  131.       this.lb_nameList.setForeground(Color.black);
  132.       this.lb_nameList.setEnabled(true);
  133.       this.lb_nameList.setVisible(true);
  134.       this.DUPositionComponent(this.textf_messages, 5, 180, 275, 13, var4);
  135.       this.textf_messages.setFont(var2);
  136.       this.textf_messages.setBackground(Color.white);
  137.       this.textf_messages.setForeground(Color.black);
  138.       this.textf_messages.setEnabled(true);
  139.       this.textf_messages.setVisible(true);
  140.       this.DUPositionComponent(this.label_1, 5, 5, 275, 10, var4);
  141.       this.label_1.setText("This sample demonstrates some of the use of the SortableVector class.");
  142.       this.label_1.setAlignment(0);
  143.       this.label_1.setFont(var2);
  144.       this.label_1.setBackground(Color.lightGray);
  145.       this.label_1.setForeground(Color.black);
  146.       this.label_1.setEnabled(true);
  147.       this.label_1.setVisible(true);
  148.       this.DUPositionComponent(this.label_2, 5, 15, 275, 10, var4);
  149.       this.label_2.setText("The menu items perform operations on the vector and display the results");
  150.       this.label_2.setAlignment(0);
  151.       this.label_2.setFont(var2);
  152.       this.label_2.setBackground(Color.lightGray);
  153.       this.label_2.setForeground(Color.black);
  154.       this.label_2.setEnabled(true);
  155.       this.label_2.setVisible(true);
  156.       this.DUPositionComponent(this.label_3, 5, 25, 275, 10, var4);
  157.       this.label_3.setText("in the list box below.");
  158.       this.label_3.setAlignment(0);
  159.       this.label_3.setFont(var2);
  160.       this.label_3.setBackground(Color.lightGray);
  161.       this.label_3.setForeground(Color.black);
  162.       this.label_3.setEnabled(true);
  163.       this.label_3.setVisible(true);
  164.       var5.setResizePercent(this.lb_nameList, new Rectangle(0, 0, 0, 0));
  165.       var5.setResizePercent(this.textf_messages, new Rectangle(0, 0, 0, 0));
  166.       var5.setResizePercent(this.label_1, new Rectangle(0, 0, 0, 0));
  167.       var5.setResizePercent(this.label_2, new Rectangle(0, 0, 0, 0));
  168.       var5.setResizePercent(this.label_3, new Rectangle(0, 0, 0, 0));
  169.       ((Component)this).setVisible(true);
  170.       this.Form_SortableVector_objectCreated(new EventData(this));
  171.       return var3;
  172.    }
  173.  
  174.    public synchronized boolean destroy() {
  175.       if (this instanceof Window) {
  176.          ((Window)this).dispose();
  177.       } else {
  178.          ((Container)this).removeNotify();
  179.       }
  180.  
  181.       if (this.isMainForm()) {
  182.          System.gc();
  183.          System.runFinalization();
  184.          System.exit(0);
  185.       }
  186.  
  187.       return true;
  188.    }
  189.  
  190.    public boolean defaultHandleEvent(Event var1) {
  191.       this.defaultProcessEvent(new AWTEvent(var1));
  192.       return false;
  193.    }
  194.  
  195.    public void defaultProcessEvent(java.awt.AWTEvent var1) {
  196.       super.processEvent(var1);
  197.    }
  198.  
  199.    public void windowClosed(WindowEvent var1) {
  200.    }
  201.  
  202.    public void windowOpened(WindowEvent var1) {
  203.    }
  204.  
  205.    public void windowClosing(WindowEvent var1) {
  206.       Object var2 = ((EventObject)var1).getSource();
  207.       if (var2 == this) {
  208.          this.Form_SortableVector_windowClosing(var1);
  209.       } else {
  210.          this.unhandledEvent("java.awt.event.WindowListener", "windowClosing", var1);
  211.       }
  212.  
  213.    }
  214.  
  215.    public void windowIconified(WindowEvent var1) {
  216.    }
  217.  
  218.    public void windowActivated(WindowEvent var1) {
  219.    }
  220.  
  221.    public void windowDeiconified(WindowEvent var1) {
  222.    }
  223.  
  224.    public void windowDeactivated(WindowEvent var1) {
  225.    }
  226.  
  227.    public void actionPerformed(ActionEvent var1) {
  228.       Object var2 = ((EventObject)var1).getSource();
  229.       if (var2 == this.menu_SortableVector_AlphaSort) {
  230.          this.menu_SortableVector_AlphaSort_actionPerformed(var1);
  231.       } else if (var2 == this.menu_SortableVector_NameLengthSort) {
  232.          this.menu_SortableVector_NameLengthSort_actionPerformed(var1);
  233.       } else if (var2 == this.menu_SortableVector_Scramble) {
  234.          this.menu_SortableVector_Scramble_actionPerformed(var1);
  235.       } else if (var2 == this.menu_SortableVector_AddWaldo) {
  236.          this.menu_SortableVector_AddWaldo_actionPerformed(var1);
  237.       } else if (var2 == this.menu_SortableVector_RemoveWaldo) {
  238.          this.menu_SortableVector_RemoveWaldo_actionPerformed(var1);
  239.       } else if (var2 == this.menu_SortableVector_FindWaldo) {
  240.          this.menu_SortableVector_FindWaldo_actionPerformed(var1);
  241.       } else if (var2 == this.menu_SortableVector_RemoveThirdName) {
  242.          this.menu_SortableVector_RemoveThirdName_actionPerformed(var1);
  243.       } else {
  244.          this.unhandledEvent("java.awt.event.ActionListener", "actionPerformed", var1);
  245.       }
  246.  
  247.    }
  248.  
  249.    public Form_SortableVector() {
  250.    }
  251.  
  252.    public void unhandledEvent(String var1, String var2, Object var3) {
  253.    }
  254.  
  255.    public void processEvent(java.awt.AWTEvent var1) {
  256.       this.defaultProcessEvent(var1);
  257.    }
  258.  
  259.    public Container getContentPane() {
  260.       return this;
  261.    }
  262.  
  263.    void loadVector() {
  264.       this._nameVector.clear();
  265.  
  266.       for(int var1 = 0; var1 < 28; ++var1) {
  267.          this._nameVector.append(this._nameList[var1]);
  268.       }
  269.  
  270.    }
  271.  
  272.    public int sequentialSearch(String var1) {
  273.       int var3 = 0;
  274.  
  275.       for(Enumeration var2 = this._nameVector.getElements(); var2.hasMoreElements(); ++var3) {
  276.          String var4 = (String)var2.nextElement();
  277.          if (var4.equals(var1)) {
  278.             return var3;
  279.          }
  280.       }
  281.  
  282.       return -1;
  283.    }
  284.  
  285.    public void updateListbox() {
  286.       this.lb_nameList.clear();
  287.       Enumeration var1 = this._nameVector.getElements();
  288.  
  289.       while(var1.hasMoreElements()) {
  290.          String var2 = (String)var1.nextElement();
  291.          this.lb_nameList.addItem(var2);
  292.       }
  293.  
  294.    }
  295.  
  296.    public boolean Form_SortableVector_objectCreated(EventData var1) {
  297.       this.loadVector();
  298.       this.updateListbox();
  299.       return false;
  300.    }
  301.  
  302.    public void Form_SortableVector_windowClosing(WindowEvent var1) {
  303.       ((Component)this).setVisible(false);
  304.       this.destroy();
  305.    }
  306.  
  307.    public void menu_SortableVector_AlphaSort_actionPerformed(ActionEvent var1) {
  308.       CompareRoutine var2 = StringUtility.getCompareRoutine(false);
  309.       this._nameVector.setCompareRoutine(var2);
  310.       this._sortType = "alpha";
  311.       this._nameVector.sort();
  312.       this.updateListbox();
  313.    }
  314.  
  315.    public void menu_SortableVector_NameLengthSort_actionPerformed(ActionEvent var1) {
  316.       this._nameVector.setCompareRoutine(new StringLengthSort());
  317.       this._sortType = "namelength";
  318.       this._nameVector.sort();
  319.       this.updateListbox();
  320.    }
  321.  
  322.    public void menu_SortableVector_Scramble_actionPerformed(ActionEvent var1) {
  323.       this._nameVector = new SortableVector();
  324.       this.loadVector();
  325.       this.updateListbox();
  326.       this._sortType = "none";
  327.    }
  328.  
  329.    public void menu_SortableVector_AddWaldo_actionPerformed(ActionEvent var1) {
  330.       if (this._sortType.equals("none")) {
  331.          this._nameVector.insert((int)(Math.random() * (double)this._nameVector.getCount()), "Waldo");
  332.       } else {
  333.          this._nameVector.insert("Waldo");
  334.       }
  335.  
  336.       this.updateListbox();
  337.    }
  338.  
  339.    public void menu_SortableVector_RemoveWaldo_actionPerformed(ActionEvent var1) {
  340.       int var2 = -1;
  341.       if (!this._sortType.equals("alpha")) {
  342.          var2 = this.sequentialSearch("Waldo");
  343.       } else {
  344.          var2 = this._nameVector.binarySearch("Waldo");
  345.       }
  346.  
  347.       if (var2 > -1) {
  348.          this._nameVector.removeAt(var2);
  349.          this.updateListbox();
  350.       }
  351.  
  352.    }
  353.  
  354.    public void menu_SortableVector_FindWaldo_actionPerformed(ActionEvent var1) {
  355.       int var2 = 0;
  356.       if (!this._sortType.equals("alpha")) {
  357.          var2 = this.sequentialSearch("Waldo") + 1;
  358.       } else {
  359.          var2 = this._nameVector.binarySearch("Waldo") + 1;
  360.       }
  361.  
  362.       if (var2 != 0) {
  363.          this.textf_messages.setText("Waldo found at position " + var2 + ".");
  364.       } else {
  365.          this.textf_messages.setText("Waldo not found.");
  366.       }
  367.  
  368.    }
  369.  
  370.    public void menu_SortableVector_RemoveThirdName_actionPerformed(ActionEvent var1) {
  371.       if (this._nameVector.getCount() > 2) {
  372.          this._nameVector.removeAt(2);
  373.          this.updateListbox();
  374.       }
  375.  
  376.    }
  377. }
  378.