Hi, i find a bug in the java.awt.List, when i remove an item from the
list, the List doesn't refresh apropiatelly, and the item persist
appearing, in windows this doesn't have that behavior.

p.d. i send you the main application that show a frame with the list and
tries to remove an item selected from the list.

Nestor A. Diaz Lizarazo                     Universidad de Los Andes
mailto:[EMAIL PROTECTED]         Ingenieria de Sistemas y Computacion
http://wwwest.uniandes.edu.co/~n-diaz   Santafe de Bogota D.C., Colombia
        PGP Public Key: finger -l [EMAIL PROTECTED]

/**
 * JFW.java
 *
 *
 * Created: Wed Dec  2 17:08:13 1998
 *
 * @author Nestor A. Diaz L.
 * @version $Id: JFW.java,v 1.1 1998/12/03 01:45:25 nestor Exp $
 */

package jfw;

import java.awt.*;
import java.awt.event.*;

public class JFW extends java.awt.Frame {

  AboutJFW aboutJFW_;
  boolean inAnApplet_ = true;
  FWServer fwServer;
  TextField port_textfield;
List ip_deny_list;
TextField ip_deny_textfield;
List ip_permit_list;
TextField ip_permit_textfield;

  public JFW() {
    final Frame THIS = this;
    MenuBar mb;
    Menu file, help;
    MenuItem file_quit;
    MenuItem help_about;

    mb = new MenuBar();
    setMenuBar(mb);
    
    file = new Menu("File", true);
    mb.add (file);
    file_quit = new MenuItem ("Quit");
    file.add (file_quit);

    help = new Menu ("Help", true);
    mb.add (help);
    mb.setHelpMenu (help);
    help_about = new MenuItem ("About JFW...");
    help.add (help_about);

    GridBagLayout gridbag = new GridBagLayout();
    GridBagConstraints c = new GridBagConstraints();

    setLayout(gridbag);

    c.fill = GridBagConstraints.BOTH;
    c.insets = new Insets(5,5,5,5); //beautyfing
    c.weightx = 1.0;

    c.gridwidth = GridBagConstraints.REMAINDER; //end of row
    Label jfirewall_label = new Label ("JFirewall", Label.CENTER);
    gridbag.setConstraints(jfirewall_label, c);
    add(jfirewall_label);

    c.weighty = 1.0;

    Panel deny_panel = new Panel();
    gridbag.setConstraints(deny_panel, c);
    add (deny_panel);

    Panel permit_panel = new Panel();
    gridbag.setConstraints(permit_panel, c);
    add (permit_panel);

    c.weighty = 0.0;

    Panel startstop_panel = new Panel();
    gridbag.setConstraints(startstop_panel, c);
    add (startstop_panel);
      
    // Deny Panel  (deny_panel)

    GridBagLayout deny_gridbag = new GridBagLayout();
    GridBagConstraints deny_c = new GridBagConstraints();

    deny_panel.setLayout(deny_gridbag);

    deny_c.fill = GridBagConstraints.BOTH;
    deny_c.insets = new Insets(5,5,5,5); // beautyfing
    deny_c.weightx = 1.0;

    Label deny_label = new Label ("Deny", Label.LEFT);
    deny_c.gridwidth = 3;
    deny_c.gridwidth = GridBagConstraints.REMAINDER; //end of row
    deny_gridbag.setConstraints(deny_label, deny_c);
    deny_panel.add (deny_label);

    deny_c.gridwidth = 1;

    Panel p1_deny_panel = new Panel ();
    deny_gridbag.setConstraints(p1_deny_panel, deny_c);
    deny_panel.add (p1_deny_panel);

    Panel p2_deny_panel = new Panel ();
    deny_gridbag.setConstraints(p2_deny_panel, deny_c);
    deny_panel.add (p2_deny_panel);

    Panel p3_deny_panel = new Panel ();
    deny_c.weighty = 1.0;
    deny_c.gridwidth = GridBagConstraints.REMAINDER; //end of row
    deny_gridbag.setConstraints(p3_deny_panel, deny_c);
    deny_panel.add (p3_deny_panel);
    deny_c.weighty = 0.0;

    // Deny Panel p1

    GridBagLayout p1_deny_gridbag = new GridBagLayout();
    GridBagConstraints p1_deny_c = new GridBagConstraints();
    p1_deny_panel.setLayout(p1_deny_gridbag);
    p1_deny_c.fill = GridBagConstraints.BOTH;
    p1_deny_c.insets = new Insets(5,5,5,5); // beautyfing
    p1_deny_c.weightx = 1.0;
    p1_deny_panel.setLayout(p1_deny_gridbag);

    ip_deny_textfield = new TextField (12);
    p1_deny_c.gridwidth = GridBagConstraints.REMAINDER;
    p1_deny_gridbag.setConstraints (ip_deny_textfield, p1_deny_c);
    p1_deny_panel.add (ip_deny_textfield);

    // Deny panel p2

    GridBagLayout p2_deny_gridbag = new GridBagLayout();
    GridBagConstraints p2_deny_c = new GridBagConstraints();
    p2_deny_panel.setLayout(p2_deny_gridbag);
    p2_deny_c.fill = GridBagConstraints.BOTH;
    p2_deny_c.insets = new Insets(5,5,5,5); // beautyfing
    p2_deny_c.weightx = 1.0;
    p2_deny_panel.setLayout(p2_deny_gridbag);

    Button add_deny_button = new Button ("Add");
    p2_deny_c.gridwidth = GridBagConstraints.REMAINDER; //end of row
    p2_deny_gridbag.setConstraints (add_deny_button, p2_deny_c);
    p2_deny_panel.add (add_deny_button);

    Button del_deny_button = new Button ("Del");
    p2_deny_gridbag.setConstraints (del_deny_button, p2_deny_c);
    p2_deny_panel.add (del_deny_button);

    // Deny panel p3

    GridBagLayout p3_deny_gridbag = new GridBagLayout();
    GridBagConstraints p3_deny_c = new GridBagConstraints();
    p3_deny_panel.setLayout(p3_deny_gridbag);
    p3_deny_c.fill = GridBagConstraints.BOTH;
    p3_deny_c.insets = new Insets(5,5,5,5); // beautyfing
    p3_deny_c.weightx = 1.0;
    p3_deny_c.weighty = 1.0;
    p3_deny_panel.setLayout(p3_deny_gridbag);

    ip_deny_list = new List (4, false);
    p3_deny_c.weightx = 1.0;
    p3_deny_gridbag.setConstraints (ip_deny_list, p3_deny_c);
    p3_deny_panel.add (ip_deny_list);

    // Permit Panel  (deny_panel)

    GridBagLayout permit_gridbag = new GridBagLayout();
    GridBagConstraints permit_c = new GridBagConstraints();

    permit_panel.setLayout(permit_gridbag);

    permit_c.fill = GridBagConstraints.BOTH;
    permit_c.insets = new Insets(5,5,5,5); // beautyfing
    permit_c.weightx = 1.0;

    Label permit_label = new Label ("Permit", Label.LEFT);
    permit_c.gridwidth = 3;
    permit_c.gridwidth = GridBagConstraints.REMAINDER; //end of row
    permit_gridbag.setConstraints(permit_label, permit_c);
    permit_panel.add (permit_label);

    permit_c.gridwidth = 1;

    Panel p1_permit_panel = new Panel ();
    permit_gridbag.setConstraints(p1_permit_panel, permit_c);
    permit_panel.add (p1_permit_panel);

    Panel p2_permit_panel = new Panel ();
    permit_gridbag.setConstraints(p2_permit_panel, permit_c);
    permit_panel.add (p2_permit_panel);

    Panel p3_permit_panel = new Panel ();
    permit_c.weighty = 1.0;
    permit_c.gridwidth = GridBagConstraints.REMAINDER; //end of row
    permit_gridbag.setConstraints(p3_permit_panel, permit_c);
    permit_panel.add (p3_permit_panel);
    permit_c.weighty = 0.0;

    // Permit Panel p1

    GridBagLayout p1_permit_gridbag = new GridBagLayout();
    GridBagConstraints p1_permit_c = new GridBagConstraints();
    p1_permit_panel.setLayout(p1_permit_gridbag);
    p1_permit_c.fill = GridBagConstraints.BOTH;
    p1_permit_c.insets = new Insets(5,5,5,5); // beautyfing
    p1_permit_c.weightx = 1.0;
    p1_permit_panel.setLayout(p1_permit_gridbag);

    ip_permit_textfield = new TextField (12);
    p1_permit_c.gridwidth = GridBagConstraints.REMAINDER;
    p1_permit_gridbag.setConstraints (ip_permit_textfield, p1_permit_c);
    p1_permit_panel.add (ip_permit_textfield);

    // Permit panel p2

    GridBagLayout p2_permit_gridbag = new GridBagLayout();
    GridBagConstraints p2_permit_c = new GridBagConstraints();
    p2_permit_panel.setLayout(p2_permit_gridbag);
    p2_permit_c.fill = GridBagConstraints.BOTH;
    p2_permit_c.insets = new Insets(5,5,5,5); // beautyfing
    p2_permit_c.weightx = 1.0;
    p2_permit_panel.setLayout(p2_permit_gridbag);

    Button add_permit_button = new Button ("Add");
    p2_permit_c.gridwidth = GridBagConstraints.REMAINDER; //end of row
    p2_permit_gridbag.setConstraints (add_permit_button, p2_permit_c);
    p2_permit_panel.add (add_permit_button);

    Button del_permit_button = new Button ("Del");
    p2_permit_gridbag.setConstraints (del_permit_button, p2_permit_c);
    p2_permit_panel.add (del_permit_button);

    // Permit panel p3

    GridBagLayout p3_permit_gridbag = new GridBagLayout();
    GridBagConstraints p3_permit_c = new GridBagConstraints();
    p3_permit_panel.setLayout(p3_permit_gridbag);
    p3_permit_c.fill = GridBagConstraints.BOTH;
    p3_permit_c.insets = new Insets(5,5,5,5); // beautyfing
    p3_permit_c.weightx = 1.0;
    p3_permit_panel.setLayout(p3_permit_gridbag);

    ip_permit_list = new List (4, false);
    p3_permit_c.weightx = 1.0;
    p3_permit_c.weighty = 1.0;
    p3_permit_gridbag.setConstraints (ip_permit_list, p3_permit_c);
    p3_permit_panel.add (ip_permit_list);

    // Start Stop Panel  (startstop_panel)

    GridBagLayout startstop_gridbag = new GridBagLayout();
    GridBagConstraints startstop_c = new GridBagConstraints();

    startstop_panel.setLayout(startstop_gridbag);

    startstop_c.fill = GridBagConstraints.BOTH;
    startstop_c.insets = new Insets(5,5,5,5); // beautyfing
    startstop_c.weightx = 1.0;

    Label port_label = new Label ("Port Number:", Label.CENTER);
    startstop_gridbag.setConstraints (port_label, startstop_c);
    startstop_panel.add (port_label);

    port_textfield = new TextField (4);
    startstop_c.gridwidth = GridBagConstraints.REMAINDER; //end of row
    startstop_gridbag.setConstraints(port_textfield, startstop_c);
    startstop_panel.add (port_textfield);

    Button start_button = new Button ("Start");
    startstop_c.gridwidth = GridBagConstraints.RELATIVE; //end of row
    startstop_gridbag.setConstraints(start_button, startstop_c);
    startstop_panel.add (start_button);

    Button stop_button = new Button ("Stop");
    startstop_c.gridwidth = GridBagConstraints.RELATIVE; //end of row
    startstop_gridbag.setConstraints(stop_button, startstop_c);
    startstop_panel.add (stop_button);

    // Ready to show

    pack();
    setTitle("Java Firewall Manager");

    // Listeners

    addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent e) {
	if (inAnApplet_) {
	  dispose();
	} else {
	  System.exit(0);
	}
      }
    });
    
    // File Menu Items

    file_quit.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
	if (inAnApplet_) {
	  dispose();
	} else {
	  System.exit(0);
	}
      }});

    help_about.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
	aboutJFW_ = new AboutJFW (THIS);
	aboutJFW_.setVisible(true);
      }});

    // Actions

    add_deny_button.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
	ip_deny_list.add (ip_deny_textfield.getText());
	}});

    del_deny_button.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
	String index = ip_deny_list.getSelectedItem();
	if (index != null) {
	  ip_deny_list.remove (index);
	}
	else {
	  System.err.println ("No item Selected");
	}
// 	int index = ip_deny_list.getSelectedIndex();
// 	if (index != -1) {
// 	  ip_deny_list.replaceItem("", index);
// 	  ip_deny_list.delItem (index);
// 	}
// 	else {
// 	  System.err.println ("No item Selected");
// 	}
      }});
    
    add_permit_button.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
	ip_permit_list.add (ip_permit_textfield.getText());
      }});

    del_permit_button.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
	String index = ip_permit_list.getSelectedItem();
	if (index != null) {
	  ip_permit_list.remove (index);
	}
	else {
	  System.err.println ("No item Selected");
	}
      }});
    
    start_button.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
	try {
	  fwServer = new FWServer (Integer.parseInt (port_textfield.getText()));
	}
	catch (java.io.IOException ex) {
	  ex.printStackTrace();
	  System.out.println (ex);
	}
      }});
 
  }    

  public static void main(String[] args) {
   
    JFW jfw = new JFW();

    jfw.inAnApplet_ = false;
    jfw.pack();
    jfw.setVisible(true);
  }

} // JFW

Reply via email to