Michael Epstein wrote:
> Has anyone using the Mozilla Webclient Java interface to embedding tried
> setting a proxy server via the org.mozilla.webclient.Preferences interface?
> I'm trying something along the lines of the following:
> 
>     // prefs is a reference to org.mozilla.webclient.Preferences
>     prefs.setPref("network.proxy.type", "1");
>     prefs.setPref("network.proxy.http", "proxy.somehost.net");
>     prefs.setPref("network.proxy.http_port", "8080");
> 
> What seems to happen is that the type and port are set just fine, but the
> host setting does not take. Sometimes it works the first time, but if I then
> change it while Webclient is running, it does not use the new proxy host.
> 
> I know cross-posting is a no no, but I think the problem is occurring below
> the Java Webclient interface. I used Java because that's what I'm familiar
> with. A similar issue seemed to occur in May 2000, but I did not see any
> responses to it (see
> http://groups.google.com/groups?q=mozilla+embedding+proxy&hl=en&ie=ISO-8859-
> 1&oe=ISO-8859-1&selm=8gn6di%24ppu1%40secnews.netscape.com&rnum=2   the
> message id is <8gn6di$[EMAIL PROTECTED]>#1/1 and the post was sent
> by [EMAIL PROTECTED] to the netscape.public.mozilla.embedding
> newsgroup).
> 
> I'm using Webclient 1.1 with Netscape 6.1 with JDK 1.3.1 on Windows 2000. I
> know this is far from the latest version of the browser and it's not even a
> Mozilla.org build, but this is the version recommended for use with
> Webclient andthe Mozilla equivalent of NS 6.1 does not seem to work). If
> this problem was corrected with a later version, I would implore the
> Webclient team to release a new build that works with a later version of
> Mozilla.
> 
> I've included some sample code that lets you play with the settings. If you
> run the application, enter new settings in the rightmost column of the table
> and press the button. The middle column should then show the new settings.
> Also be sure to enter only integers for the proxy type and port; you'll get
> an exception otherwise. If it works the way it did on my setup, the type and
> port will take hold, but the hostname will not. Even stranger, if you click
> on "network.proxy.http" (in the leftmost column) after you've set new
> values, you'll get a weird string that includes the new value. This probably
> happens when the TableCellRenderer redraws, but that value is very strange,
> given that the only value I ever put in that cell was a literal string.
> Could the proxy host be added as a key instead?
> 
> Thanks in advance for wading through this lengthy message,
> -Michael Epstein
> 
> ----------------------------------------------------------------------------
> ------------
> 
> /*
>  * MozProxyPrefsTester.java
>  *
>  * Created on March 15, 2002, 2:54 PM
>  */
> 
> import java.awt.*;
> import java.awt.event.*;
> 
> import java.io.FileNotFoundException;
> 
> import java.util.Properties;
> 
> import javax.swing.table.TableModel;
> 
> import org.mozilla.webclient.*;
> 
> public class MozProxyPrefsTester extends javax.swing.JFrame {
> 
>     private static final int CURRENT_SETTINGS_COL = 1,
>                              NEW_SETTINGS_COL = 2,
>                              TYPE_ROW = 0,
>                              NAME_ROW = 1,
>                              PORT_ROW = 2;
> 
>     /** Creates new form MozProxyPrefsTester */
>     public MozProxyPrefsTester(String mozillaFiveHome)
>            throws ClassNotFoundException, FileNotFoundException,
>                   IllegalAccessException, InstantiationException {
>         BrowserControlFactory.setAppData(mozillaFiveHome);
>         moz = BrowserControlFactory.newBrowserControl();
>         navigator = (Navigation)
> moz.queryInterface(BrowserControl.NAVIGATION_NAME);
>         prefs = (Preferences)
> moz.queryInterface(BrowserControl.PREFERENCES_NAME);
> 
>         browserWin = new Frame("Simple Browser");
>         browserWin.setLayout(new BorderLayout());
>         browserWin.add(((Component) moz.queryInterface(
>                         BrowserControl.BROWSER_CONTROL_CANVAS_NAME)),
>                         BorderLayout.CENTER);
>         browserWin.addWindowListener(new WindowAdapter() {
>             public void windowClosing(WindowEvent we) {
>                 shutdown();
>             }
>         });
> /* Uncommenting the follwoing lines will add a navigation bar to the browser
>  * window. Since displaying a browser in a window other than this class
>  * (which is a subclass of Frame) seems to cause an
>  * org.mozilla.util.AssertionFailureException, this window is not shown, so
>  * this section is not used and thus commented out.
>  */
> /*
>         Panel navPanel = new Panel();
>         navPanel.add(new Label("Location: "));
>         browserWin.add(navPanel, BorderLayout.NORTH);
> 
>         navField = new TextField(30);
>         navField.addActionListener(new ActionListener() {
>             public void actionPerformed(ActionEvent ae) {
>                 navigator.loadURL(navField.getText());
>             }
>         });
>         navPanel.add(navField);
> */
>         initComponents();
>         browserWin.show();
> /* Navigating to a page in this window causes an exception (see comment
> above),
>  * so since we don't need to show it to test preferences, we'll hide to keep
> it
>  * out of trouble.
>  */
> browserWin.hide();
>         getProxySettings();
>         this.show();
>     }
> 
>     private void getProxySettings() {
>         Properties mozPrefs = prefs.getPrefs();
>         TableModel model = prefsTable.getModel();
>         model.setValueAt(mozPrefs.getProperty("network.proxy.type"),
> TYPE_ROW, CURRENT_SETTINGS_COL);
>         model.setValueAt(mozPrefs.getProperty("network.proxy.http"),
> NAME_ROW, CURRENT_SETTINGS_COL);
>         model.setValueAt(mozPrefs.getProperty("network.proxy.http_port"),
> PORT_ROW, CURRENT_SETTINGS_COL);
>     } // getProxySettings
> 
>     private void setProxySettings() {
>         prefsTable.getCellEditor().stopCellEditing(); // finish an editing
> session if one is in progress
>         TableModel model = prefsTable.getModel();
>         prefs.setPref("network.proxy.type",
> String.valueOf(model.getValueAt(TYPE_ROW, NEW_SETTINGS_COL)));
>         model.setValueAt("", TYPE_ROW, NEW_SETTINGS_COL);
>         prefs.setPref("network.proxy.http",
> String.valueOf(model.getValueAt(NAME_ROW, NEW_SETTINGS_COL)));
>         model.setValueAt("", NAME_ROW, NEW_SETTINGS_COL);
>         prefs.setPref("network.proxy.http_port",
> String.valueOf(model.getValueAt(PORT_ROW, NEW_SETTINGS_COL)));
>         model.setValueAt("", PORT_ROW, NEW_SETTINGS_COL);
>         getProxySettings();
>     } // setProxySettings
> 
>     private void shutdown() {
>         try {
>             this.hide();
>             this.dispose();
>             browserWin.hide();
>             browserWin.dispose();
>             BrowserControlFactory.deleteBrowserControl(moz);
>             System.exit(0);
>         } // try
>         catch (Exception e) {
>             System.exit(1);
>         }
>     } // shutdown
> 
>     /** This method is called from within the constructor to
>      * initialize the form.
>      * WARNING: Do NOT modify this code. The content of this method is
>      * always regenerated by the Form Editor.
>      */
>     private void initComponents() {
>             infoPanel = new javax.swing.JPanel();
>             prefsTableScroller = new javax.swing.JScrollPane();
>             prefsTable = new javax.swing.JTable();
>             applySettingsButton = new javax.swing.JButton();
> 
>             setTitle("Mozilla Proxy Preferences Tester");
> 
> setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);
>             addWindowListener(new java.awt.event.WindowAdapter() {
>                 public void windowClosing(java.awt.event.WindowEvent evt) {
>                     exitForm(evt);
>                 }
>             });
> 
>             infoPanel.setLayout(new java.awt.GridBagLayout());
>             java.awt.GridBagConstraints gridBagConstraints1;
> 
>             prefsTable.setModel(new javax.swing.table.DefaultTableModel(
>             new Object [][] {
>                 {"network.proxy.type", null, null},
>                 {"network.proxy.http", null, null},
>                 {"network.proxy.http_port", null, null}
>             },
>             new String [] {
>                 "Property", "Current Value", "New Value"
>             }
>             ) {
>                 boolean[] canEdit = new boolean [] {
>                     false, false, true
>                 };
> 
>                 public boolean isCellEditable(int rowIndex, int columnIndex)
> {
>                     return canEdit [columnIndex];
>                 }
>             });
>             prefsTableScroller.setViewportView(prefsTable);
> 
>             gridBagConstraints1 = new java.awt.GridBagConstraints();
>           gridBagConstraints1.gridx = 0;
>           gridBagConstraints1.gridy = 0;
>           gridBagConstraints1.insets = new java.awt.Insets(0, 0, 3, 0);
>           infoPanel.add(prefsTableScroller, gridBagConstraints1);
> 
>           applySettingsButton.setText("Apply New Settings");
>           applySettingsButton.addActionListener(new
> java.awt.event.ActionListener() {
>               public void actionPerformed(java.awt.event.ActionEvent evt) {
>                   applySettingsButtonActionPerformed(evt);
>               }
>           });
> 
>           gridBagConstraints1 = new java.awt.GridBagConstraints();
>           gridBagConstraints1.gridx = 0;
>           gridBagConstraints1.gridy = 1;
>           gridBagConstraints1.insets = new java.awt.Insets(3, 0, 0, 0);
>           infoPanel.add(applySettingsButton, gridBagConstraints1);
> 
>           getContentPane().add(infoPanel, java.awt.BorderLayout.CENTER);
> 
>         pack();
>     }
> 
>     private void
> applySettingsButtonActionPerformed(java.awt.event.ActionEvent evt) {
>         setProxySettings();
>     }
> 
>     private void exitForm(java.awt.event.WindowEvent evt) {
>         shutdown();
>     }
> 
>     public static void main(String args[]) {
>         try {
>             if (args.length > 0) {
>                 new MozProxyPrefsTester(args[0]);
>             }
>             else {
>                 new MozProxyPrefsTester("C:\\PROGRA~1\\Netscape\\NETSCA~1");
>             }
>         } // try
>         catch (Exception e) {
>             e.printStackTrace();
>         }
>     }
> 
> 
>     // Variables declaration - do not modify
>     private javax.swing.JPanel infoPanel;
>     private javax.swing.JScrollPane prefsTableScroller;
>     private javax.swing.JTable prefsTable;
>     private javax.swing.JButton applySettingsButton;
>     // End of variables declaration
> 
>     private Frame browserWin;
>     private BrowserControl moz;
>     private TextField navField;
>     private Navigation navigator;
>     private Preferences prefs;
> }
> 
> 
> 
Mike,

That should work..could be a bug.

I can suggest a workaround, not sure if that will work in your case.
How about changing these settings through java?  I mean using the System 
class instead?

-Jeet



Reply via email to