Changeset 8830


Ignore:
Timestamp:
01/21/11 19:20:05 (9 years ago)
Author:
mlg
Message:

Adds proxy support for the connection.

Location:
extensions/jiwigo/trunk/src/main/java/fr/mael/jiwigo
Files:
2 added
4 edited

Legend:

Unmodified
Added
Removed
  • extensions/jiwigo/trunk/src/main/java/fr/mael/jiwigo/transverse/enumeration/PreferencesEnum.java

    r6821 r8830  
    3636 
    3737    CHUNK_SIZE("chunk_size"), WIDTH_ORIGINALE("width_original"), HEIGHT_ORIGINAL("height_original"), PASSWORD( 
    38             "password"), LOGIN("login"), URL_SITE("url"); 
     38            "password"), LOGIN("login"), URL_SITE("url"), USE_PROXY("use_proxy"), URL_PROXY("url_proxy"), PORT_PROXY( 
     39            "port_proxy"), USER_PROXY("user_proxy"), PASS_PROXY("password_proxy"); 
    3940 
    4041    protected String label; 
  • extensions/jiwigo/trunk/src/main/java/fr/mael/jiwigo/transverse/session/SessionManager.java

    r7219 r8830  
    44import java.io.InputStream; 
    55import java.io.UnsupportedEncodingException; 
     6 
    67import javax.swing.JOptionPane; 
     8 
     9import org.apache.commons.httpclient.Credentials; 
     10import org.apache.commons.httpclient.HostConfiguration; 
    711import org.apache.commons.httpclient.HttpClient; 
    812import org.apache.commons.httpclient.HttpException; 
     13import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager; 
     14import org.apache.commons.httpclient.UsernamePasswordCredentials; 
     15import org.apache.commons.httpclient.auth.AuthScope; 
    916import org.apache.commons.httpclient.methods.PostMethod; 
     17import org.apache.commons.lang.StringUtils; 
    1018import org.jdom.Document; 
    1119import org.jdom.JDOMException; 
     20 
    1221import fr.mael.jiwigo.transverse.enumeration.MethodsEnum; 
    1322import fr.mael.jiwigo.transverse.util.Messages; 
    1423import fr.mael.jiwigo.transverse.util.Outil; 
    15  
    1624 
    1725/** 
     
    4654public class SessionManager { 
    4755 
    48         /** 
    49          * Logger 
    50          */ 
    51         public static final org.apache.commons.logging.Log LOG = org.apache.commons.logging.LogFactory.getLog(SessionManager.class); 
    52         /** 
    53          * the entered login 
    54          */ 
    55         private String login; 
    56         /** 
    57          * the entered password 
    58          */ 
    59         private String motDePasse; 
    60         /** 
    61          * the url of the site 
    62          */ 
    63         private String url; 
    64         /** 
    65          * the http client 
    66          */ 
    67         private HttpClient client; 
    68  
    69  
    70         /** 
    71          * Constructor 
    72          * @param login the login 
    73          * @param motDePasse the password 
    74          * @param url the url of the site 
    75          */ 
    76         public SessionManager(String login, String motDePasse, String url) { 
    77                 this.login = login; 
    78                 this.motDePasse = motDePasse; 
    79                 this.url = url + "/ws.php"; 
    80                 client = new HttpClient(); 
    81                 //Using of a Linux user agent. cause... it's better 8) 
    82                 client.getParams().setParameter("http.useragent", 
    83                                 "Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1"); 
    84         } 
    85  
    86  
    87         /** 
    88          * Connection method 
    89          * @return true if successful 
    90          */ 
    91         public boolean processLogin() { 
    92                 Document doc; 
    93                 try { 
    94                         doc = executerReturnDocument(MethodsEnum.LOGIN.getLabel(), "username", login, "password", motDePasse); 
    95                         return Outil.checkOk(doc); 
    96                 } catch (Exception e) { 
    97                         LOG.error(Outil.getStackTrace(e)); 
    98                 } 
    99                 return false; 
    100  
    101         } 
    102  
    103  
    104         /** 
    105          * Executes a method on the webservice and returns the result as a string 
    106          * @param methode the method to execute 
    107          * @param parametres the parameters of the method. Must be even : the name of the parameter followed by its value 
    108          * @return the result 
    109          * @throws UnsupportedEncodingException  
    110          */ 
    111         public String executerReturnString(String methode, String... parametres) throws UnsupportedEncodingException { 
    112                 if (parametres.length % 2 != 0 && !(parametres == null)) { 
    113                         try { 
    114                                 throw new Exception("Le nombre de parametres doit etre pair"); 
    115                         } catch (Exception e) { 
    116                                 LOG.error(Outil.getStackTrace(e)); 
    117                                 return null; 
    118                         } 
    119                 } 
    120                 PostMethod method = new PostMethod(url); 
    121                 method.addParameter("method", methode); 
    122                 for (int i = 0; i < parametres.length; i += 2) { 
    123                         method.addParameter(parametres[i], parametres[i + 1]); 
    124  
    125                 } 
    126                 //begin bug:0001833 
    127                 method.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8"); 
    128                 //end 
    129  
    130                 try { 
    131                         client.executeMethod(method); 
    132                         InputStream streamResponse = method.getResponseBodyAsStream(); 
    133                         //          System.out.println(Outil.readInputStreamAsString(streamResponse)); 
    134                         //          String toReturn = method.getResponseBodyAsString(); 
    135                         String toReturn = Outil.readInputStreamAsString(streamResponse); 
    136                         LOG.debug(toReturn); 
    137                         return toReturn; 
    138                 } catch (HttpException e) { 
    139                         // TODO Auto-generated catch block 
    140                         LOG.error(Outil.getStackTrace(e)); 
    141                 } catch (IOException e) { 
    142                         // TODO Auto-generated catch block 
    143                         LOG.error(Outil.getStackTrace(e)); 
    144                 } catch (IllegalArgumentException e) { 
    145                         LOG.error(Outil.getStackTrace(e)); 
    146                         JOptionPane.showMessageDialog(null, Messages.getMessage("connexionDialog_connexionError"), 
    147                                         Messages.getMessage("error"), JOptionPane.ERROR_MESSAGE); 
    148                 } finally { 
    149                         method.releaseConnection(); 
    150                 } 
     56    /** 
     57     * Logger 
     58     */ 
     59    public static final org.apache.commons.logging.Log LOG = org.apache.commons.logging.LogFactory 
     60            .getLog(SessionManager.class); 
     61    /** 
     62     * the entered login 
     63     */ 
     64    private String login; 
     65    /** 
     66     * the entered password 
     67     */ 
     68    private String motDePasse; 
     69    /** 
     70     * the url of the site 
     71     */ 
     72    private String url; 
     73    /** 
     74     * the http client 
     75     */ 
     76    private HttpClient client; 
     77 
     78    /** 
     79     * defines if the user uses a proxy 
     80     */ 
     81    private boolean usesProxy; 
     82 
     83    /** 
     84     * url of the proxy 
     85     */ 
     86    private String urlProxy; 
     87 
     88    /** 
     89     * port of the proxy 
     90     */ 
     91    private int portProxy; 
     92 
     93    /** 
     94     * login for the proxy 
     95     */ 
     96    private String loginProxy; 
     97 
     98    /** 
     99     * pass for the proxy 
     100     */ 
     101    private String passProxy; 
     102 
     103    /** 
     104     * true : an error was found for the proxy 
     105     */ 
     106    private boolean erreurProxy; 
     107 
     108    /** 
     109     * Constructor 
     110     * @param login the login 
     111     * @param motDePasse the password 
     112     * @param url the url of the site 
     113     */ 
     114    public SessionManager(String login, String motDePasse, String url) { 
     115        this.login = login; 
     116        this.motDePasse = motDePasse; 
     117        this.url = url + "/ws.php"; 
     118        MultiThreadedHttpConnectionManager connectionManager = new MultiThreadedHttpConnectionManager(); 
     119        client = new HttpClient(connectionManager); 
     120        //Using of a Linux user agent. cause... it's better 8) 
     121        client.getParams().setParameter("http.useragent", 
     122                "Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1"); 
     123 
     124    } 
     125 
     126    /** 
     127     * Connection method 
     128     * @return true if successful 
     129     */ 
     130    public boolean processLogin() { 
     131        Document doc; 
     132        //configures the proxy 
     133        if (usesProxy) { 
     134            HostConfiguration config = client.getHostConfiguration(); 
     135            config.setProxy(urlProxy, portProxy); 
     136            if (!StringUtils.isEmpty(loginProxy) && !StringUtils.isEmpty(passProxy)) { 
     137                Credentials credentials = new UsernamePasswordCredentials(loginProxy, passProxy); 
     138                AuthScope authScope = new AuthScope(urlProxy, portProxy); 
     139                client.getState().setProxyCredentials(authScope, credentials); 
     140            } 
     141        } 
     142        try { 
     143            doc = executerReturnDocument(MethodsEnum.LOGIN.getLabel(), "username", login, "password", motDePasse); 
     144            return Outil.checkOk(doc); 
     145        } catch (Exception e) { 
     146            LOG.error(Outil.getStackTrace(e)); 
     147        } 
     148        return false; 
     149    } 
     150 
     151    /** 
     152     * Executes a method on the webservice and returns the result as a string 
     153     * @param methode the method to execute 
     154     * @param parametres the parameters of the method. Must be even : the name of the parameter followed by its value 
     155     * @return the result 
     156     * @throws UnsupportedEncodingException  
     157     */ 
     158    public String executerReturnString(String methode, String... parametres) throws UnsupportedEncodingException { 
     159        if (parametres.length % 2 != 0 && !(parametres == null)) { 
     160            try { 
     161                throw new Exception("Le nombre de parametres doit etre pair"); 
     162            } catch (Exception e) { 
     163                LOG.error(Outil.getStackTrace(e)); 
    151164                return null; 
    152  
    153         } 
    154  
    155  
    156         /** 
    157          * Executes a method on the webservice and returns the result as a Dom document 
    158          * @param methode the method to execute 
    159          * @param parametres the parameters of the method. Must be even : the name of the parameter followed by its value 
    160          * @return the result 
    161          * @throws IOException  
    162          */ 
    163         public Document executerReturnDocument(String methode, String... parametres) throws IOException { 
    164                 try { 
    165                         return Outil.stringToDocument(executerReturnString(methode, parametres)); 
    166                 } catch (JDOMException e) { 
    167                         // TODO Auto-generated catch block 
    168                         LOG.error(Outil.getStackTrace(e)); 
    169                 } 
    170                 return null; 
    171  
    172         } 
    173  
    174  
    175         /** 
    176          * Executes a method on the webservice and returns the result as a Dom document 
    177          * @param methode the method to execute 
    178          * @return the result 
    179          */ 
    180         public Document executerReturnDocument(String methode) { 
    181                 try { 
    182                         return Outil.stringToDocument(executerReturnString(methode)); 
    183                 } catch (JDOMException e) { 
    184                         // TODO Auto-generated catch block 
    185                         LOG.error(Outil.getStackTrace(e)); 
    186                 } catch (IOException e) { 
    187                         // TODO Auto-generated catch block 
    188                         LOG.error(Outil.getStackTrace(e)); 
    189                 } 
    190                 return null; 
    191  
    192         } 
    193  
    194  
    195         /** 
    196          * @return the login 
    197          */ 
    198         public String getLogin() { 
    199                 return login; 
    200         } 
    201  
    202  
    203         /** 
    204          * @param login the login to set 
    205          */ 
    206         public void setLogin(String login) { 
    207                 this.login = login; 
    208         } 
    209  
    210  
    211         /** 
    212          * @return the motDePasse 
    213          */ 
    214         public String getMotDePasse() { 
    215                 return motDePasse; 
    216         } 
    217  
    218  
    219         /** 
    220          * @param motDePasse the motDePasse to set 
    221          */ 
    222         public void setMotDePasse(String motDePasse) { 
    223                 this.motDePasse = motDePasse; 
    224         } 
    225  
    226  
    227         /** 
    228          * @return the url 
    229          */ 
    230         public String getUrl() { 
    231                 return url; 
    232         } 
    233  
    234  
    235         /** 
    236          * @param url the url to set 
    237          */ 
    238         public void setUrl(String url) { 
    239                 this.url = url; 
    240         } 
     165            } 
     166        } 
     167        PostMethod method = new PostMethod(url); 
     168        method.addParameter("method", methode); 
     169        for (int i = 0; i < parametres.length; i += 2) { 
     170            method.addParameter(parametres[i], parametres[i + 1]); 
     171 
     172        } 
     173        //begin bug:0001833 
     174        method.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8"); 
     175        //end 
     176 
     177        try { 
     178            client.executeMethod(method); 
     179            InputStream streamResponse = method.getResponseBodyAsStream(); 
     180            //      System.out.println(Outil.readInputStreamAsString(streamResponse)); 
     181            //      String toReturn = method.getResponseBodyAsString(); 
     182            String toReturn = Outil.readInputStreamAsString(streamResponse); 
     183            LOG.debug(toReturn); 
     184            return toReturn; 
     185        } catch (HttpException e) { 
     186            // TODO Auto-generated catch block 
     187            LOG.error(Outil.getStackTrace(e)); 
     188        } catch (IOException e) { 
     189            // TODO Auto-generated catch block 
     190            LOG.error(Outil.getStackTrace(e)); 
     191        } catch (IllegalArgumentException e) { 
     192            LOG.error(Outil.getStackTrace(e)); 
     193            JOptionPane.showMessageDialog(null, Messages.getMessage("connexionDialog_connexionError"), Messages 
     194                    .getMessage("error"), JOptionPane.ERROR_MESSAGE); 
     195        } finally { 
     196            method.releaseConnection(); 
     197        } 
     198        return null; 
     199 
     200    } 
     201 
     202    /** 
     203     * Executes a method on the webservice and returns the result as a Dom document 
     204     * @param methode the method to execute 
     205     * @param parametres the parameters of the method. Must be even : the name of the parameter followed by its value 
     206     * @return the result 
     207     * @throws IOException  
     208     */ 
     209    public Document executerReturnDocument(String methode, String... parametres) throws IOException { 
     210        try { 
     211            return Outil.stringToDocument(executerReturnString(methode, parametres)); 
     212        } catch (JDOMException e) { 
     213            // TODO Auto-generated catch block 
     214            LOG.error(Outil.getStackTrace(e)); 
     215        } 
     216        return null; 
     217 
     218    } 
     219 
     220    /** 
     221     * Executes a method on the webservice and returns the result as a Dom document 
     222     * @param methode the method to execute 
     223     * @return the result 
     224     */ 
     225    public Document executerReturnDocument(String methode) { 
     226        try { 
     227            return Outil.stringToDocument(executerReturnString(methode)); 
     228        } catch (JDOMException e) { 
     229            // TODO Auto-generated catch block 
     230            LOG.error(Outil.getStackTrace(e)); 
     231        } catch (IOException e) { 
     232            // TODO Auto-generated catch block 
     233            LOG.error(Outil.getStackTrace(e)); 
     234        } 
     235        return null; 
     236 
     237    } 
     238 
     239    /** 
     240     * @return the login 
     241     */ 
     242    public String getLogin() { 
     243        return login; 
     244    } 
     245 
     246    /** 
     247     * @param login the login to set 
     248     */ 
     249    public void setLogin(String login) { 
     250        this.login = login; 
     251    } 
     252 
     253    /** 
     254     * @return the motDePasse 
     255     */ 
     256    public String getMotDePasse() { 
     257        return motDePasse; 
     258    } 
     259 
     260    /** 
     261     * @param motDePasse the motDePasse to set 
     262     */ 
     263    public void setMotDePasse(String motDePasse) { 
     264        this.motDePasse = motDePasse; 
     265    } 
     266 
     267    /** 
     268     * @return the url 
     269     */ 
     270    public String getUrl() { 
     271        return url; 
     272    } 
     273 
     274    /** 
     275     * @param url the url to set 
     276     */ 
     277    public void setUrl(String url) { 
     278        this.url = url; 
     279    } 
     280 
     281    /** 
     282     * @param usesProxy the usesProxy to set 
     283     */ 
     284    public void setUsesProxy(boolean usesProxy) { 
     285        this.usesProxy = usesProxy; 
     286    } 
     287 
     288    /** 
     289     * @param urlProxy the urlProxy to set 
     290     */ 
     291    public void setUrlProxy(String urlProxy) { 
     292        this.urlProxy = urlProxy; 
     293    } 
     294 
     295    /** 
     296     * @param portProxy the portProxy to set 
     297     */ 
     298    public void setPortProxy(int portProxy) { 
     299        this.portProxy = portProxy; 
     300    } 
     301 
     302    /** 
     303     * @param loginProxy the loginProxy to set 
     304     */ 
     305    public void setLoginProxy(String loginProxy) { 
     306        this.loginProxy = loginProxy; 
     307    } 
     308 
     309    /** 
     310     * @param passProxy the passProxy to set 
     311     */ 
     312    public void setPassProxy(String passProxy) { 
     313        this.passProxy = passProxy; 
     314    } 
     315 
     316    /** 
     317     * @return the erreurProxy 
     318     */ 
     319    public boolean isErreurProxy() { 
     320        return erreurProxy; 
     321    } 
    241322 
    242323} 
  • extensions/jiwigo/trunk/src/main/java/fr/mael/jiwigo/transverse/util/preferences/PreferencesManagement.java

    r6980 r8830  
    66 
    77import org.jdom.Document; 
     8import org.jdom.Element; 
    89import org.jdom.input.SAXBuilder; 
     10import org.jdom.output.XMLOutputter; 
    911 
    1012import fr.mael.jiwigo.transverse.util.Outil; 
     
    7375            xml.append("        <login></login>\n"); 
    7476            xml.append("        <url></url>\n"); 
     77            xml.append("        <use_proxy>false</use_proxy>\n"); 
     78            xml.append("        <url_proxy></url_proxy>\n"); 
     79            xml.append("        <port_proxy></port_proxy>\n"); 
     80            xml.append("        <user_proxy></user_proxy>\n"); 
     81            xml.append("        <password_proxy></password_proxy>\n"); 
    7582            xml.append("</config>"); 
    76  
    7783            FileWriter out = new FileWriter(outFile); 
    7884            out.write(xml.toString()); 
     
    106112        try { 
    107113            Document document = sxb.build(new File(getConfigFilePath())); 
    108             document.getRootElement().getChild(key).setText(text); 
    109             FileWriter out = new FileWriter(getConfigFilePath()); 
    110             out.write(Outil.documentToString(document)); 
    111             out.close(); 
     114            try { 
     115                document.getRootElement().getChild(key).setText(text); 
     116            } catch (NullPointerException e) { 
     117                Element element = new Element(key); 
     118                element.addContent(text); 
     119                document.getRootElement().addContent(element); 
     120            } 
     121            XMLOutputter out = new XMLOutputter(); 
     122            FileWriter writer = new FileWriter(getConfigFilePath()); 
     123            out.output(document, writer); 
     124            writer.flush(); 
     125            writer.close(); 
    112126        } catch (Exception e) { 
    113127            LOG.error(Outil.getStackTrace(e)); 
  • extensions/jiwigo/trunk/src/main/java/fr/mael/jiwigo/ui/ConnexionDialog.java

    r7221 r8830  
    11package fr.mael.jiwigo.ui; 
    22 
     3import java.awt.BorderLayout; 
    34import java.awt.Dimension; 
     5import java.awt.FlowLayout; 
    46import java.awt.GridBagConstraints; 
    57import java.awt.GridBagLayout; 
     
    1618import java.util.Arrays; 
    1719import java.util.Locale; 
     20 
    1821import javax.swing.AbstractListModel; 
    1922import javax.swing.ComboBoxModel; 
     
    2427import javax.swing.JLabel; 
    2528import javax.swing.JOptionPane; 
     29import javax.swing.JPanel; 
    2630import javax.swing.JPasswordField; 
    2731import javax.swing.JTextField; 
     32 
    2833import fr.mael.jiwigo.Main; 
    2934import fr.mael.jiwigo.transverse.enumeration.PreferencesEnum; 
     
    3136import fr.mael.jiwigo.transverse.util.Messages; 
    3237import fr.mael.jiwigo.transverse.util.preferences.PreferencesManagement; 
    33  
    3438 
    3539/** 
     
    6468public class ConnexionDialog extends JDialog implements ActionListener, ItemListener, KeyListener, WindowListener { 
    6569 
    66         /** 
    67          * Logger 
    68          */ 
    69         public static final org.apache.commons.logging.Log LOG = org.apache.commons.logging.LogFactory.getLog(ConnexionDialog.class); 
    70         /** 
    71          * field that contains the url 
    72          */ 
    73         private JTextField fieldUrl; 
    74         /** 
    75          * field that contains the login 
    76          */ 
    77         private JTextField loginField; 
    78         /** 
    79          * field that contains de password 
    80          */ 
    81         private JPasswordField passwordField; 
    82         /** 
    83          * label of the url field 
    84          */ 
    85         private JLabel labelUrl; 
    86         /** 
    87          * label of the login field 
    88          */ 
    89         private JLabel labelLogin; 
    90         /** 
    91          *  label of the password field 
    92          */ 
    93         private JLabel labelPass; 
    94         /** 
    95          * ok button for the connection 
    96          */ 
    97         private JButton boutonOk; 
    98  
    99         /** 
    100          * Box that allows to save informations 
    101          */ 
    102         private JCheckBox checkBoxRetenir; 
    103  
    104         /** 
    105          * Combo containing all locales 
    106          */ 
    107         private JComboBox comboLocales; 
    108  
    109  
    110         /** 
    111          * Constructor  
    112          */ 
    113         public ConnexionDialog() { 
    114                 Locale defautLocale = Messages.usedLocale; 
    115                 labelUrl = new JLabel(Messages.getMessage("connexionDialog_urlSite")); 
    116                 labelLogin = new JLabel(Messages.getMessage("connexionDialog_login")); 
    117                 labelPass = new JLabel(Messages.getMessage("connexionDialog_pass")); 
    118                 comboLocales = new JComboBox(); 
    119                 boutonOk = new JButton("Ok"); 
    120                 String url = PreferencesManagement.getValue(PreferencesEnum.URL_SITE.getLabel()); 
    121                 String login = PreferencesManagement.getValue(PreferencesEnum.LOGIN.getLabel()); 
    122                 String pass = PreferencesManagement.getValue(PreferencesEnum.PASSWORD.getLabel()); 
    123                 fieldUrl = new JTextField(url); 
    124                 loginField = new JTextField(login); 
    125                 passwordField = new JPasswordField(pass); 
    126                 checkBoxRetenir = new JCheckBox(Messages.getMessage("connexionDialog_sauvegarder")); 
    127                 if (!url.equals("") && !login.equals("") && !pass.equals("")) { 
    128                         checkBoxRetenir.setSelected(true); 
     70    /** 
     71     * Logger 
     72     */ 
     73    public static final org.apache.commons.logging.Log LOG = org.apache.commons.logging.LogFactory 
     74            .getLog(ConnexionDialog.class); 
     75    /** 
     76     * field that contains the url 
     77     */ 
     78    private JTextField fieldUrl; 
     79    /** 
     80     * field that contains the login 
     81     */ 
     82    private JTextField loginField; 
     83    /** 
     84     * field that contains de password 
     85     */ 
     86    private JPasswordField passwordField; 
     87    /** 
     88     * label of the url field 
     89     */ 
     90    private JLabel labelUrl; 
     91    /** 
     92     * label of the login field 
     93     */ 
     94    private JLabel labelLogin; 
     95    /** 
     96     *  label of the password field 
     97     */ 
     98    private JLabel labelPass; 
     99    /** 
     100     * ok button for the connection 
     101     */ 
     102    private JButton boutonOk; 
     103 
     104    /** 
     105     * Box that allows to save informations 
     106     */ 
     107    private JCheckBox checkBoxRetenir; 
     108 
     109    /** 
     110     * Combo containing all locales 
     111     */ 
     112    private JComboBox comboLocales; 
     113 
     114    /** 
     115     * Panel that allows to define a proxy to use 
     116     */ 
     117    private ProxyPanel proxyPanel; 
     118 
     119    /** 
     120     * Constructor  
     121     */ 
     122    public ConnexionDialog() { 
     123        Locale defautLocale = Messages.usedLocale; 
     124        labelUrl = new JLabel(Messages.getMessage("connexionDialog_urlSite")); 
     125        labelLogin = new JLabel(Messages.getMessage("connexionDialog_login")); 
     126        labelPass = new JLabel(Messages.getMessage("connexionDialog_pass")); 
     127        proxyPanel = new ProxyPanel(this); 
     128        comboLocales = new JComboBox(); 
     129        boutonOk = new JButton("Ok"); 
     130        String url = PreferencesManagement.getValue(PreferencesEnum.URL_SITE.getLabel()); 
     131        String login = PreferencesManagement.getValue(PreferencesEnum.LOGIN.getLabel()); 
     132        String pass = PreferencesManagement.getValue(PreferencesEnum.PASSWORD.getLabel()); 
     133 
     134        fieldUrl = new JTextField(url); 
     135        loginField = new JTextField(login); 
     136        passwordField = new JPasswordField(pass); 
     137        checkBoxRetenir = new JCheckBox(Messages.getMessage("connexionDialog_sauvegarder")); 
     138        if (!url.equals("") && !login.equals("") && !pass.equals("")) { 
     139            checkBoxRetenir.setSelected(true); 
     140        } 
     141        JPanel panelInformations = new JPanel(new GridBagLayout()); 
     142        Dimension fieldDimensions = new Dimension(300, 30); 
     143        fieldUrl.setPreferredSize(fieldDimensions); 
     144        fieldUrl.addActionListener(this); 
     145        loginField.setPreferredSize(fieldDimensions); 
     146        loginField.addActionListener(this); 
     147        passwordField.setPreferredSize(fieldDimensions); 
     148        passwordField.addActionListener(this); 
     149        this.getContentPane().setLayout(new BorderLayout()); 
     150        GridBagConstraints constraints = new GridBagConstraints(); 
     151        constraints.gridx = 0; 
     152        constraints.gridy = 0; 
     153        constraints.insets = new Insets(3, 3, 3, 3); 
     154        panelInformations.add(labelUrl, constraints); 
     155        constraints.gridx++; 
     156        panelInformations.add(fieldUrl, constraints); 
     157        constraints.gridx = 0; 
     158        constraints.gridy++; 
     159        panelInformations.add(labelLogin, constraints); 
     160        constraints.gridx++; 
     161        panelInformations.add(loginField, constraints); 
     162        constraints.gridx = 0; 
     163        constraints.gridy++; 
     164        panelInformations.add(labelPass, constraints); 
     165        constraints.gridx++; 
     166        panelInformations.add(passwordField, constraints); 
     167        constraints.gridx = 0; 
     168        constraints.gridy++; 
     169        panelInformations.add(comboLocales, constraints); 
     170        constraints.gridx++; 
     171        panelInformations.add(checkBoxRetenir, constraints); 
     172        constraints.gridx = 0; 
     173        constraints.gridy++;//   
     174        //      for (Locale locale : SimpleDateFormat.getAvailableLocales()) { 
     175        //          comboLocales.addItem(locale.getDisplayName(Locale.ENGLISH)); 
     176        //      } 
     177        comboLocales.setPreferredSize(new Dimension(130, 25)); 
     178        comboLocales.addItemListener(this); 
     179        boutonOk.setPreferredSize(new Dimension(80, 30)); 
     180        boutonOk.addActionListener(this); 
     181        JPanel panelBouton = new JPanel(new FlowLayout(FlowLayout.CENTER)); 
     182        panelBouton.add(boutonOk); 
     183        localeModel model = new localeModel(); 
     184        comboLocales.setModel(model); 
     185        model.setSelectedItem(defautLocale.getDisplayLanguage(Locale.ENGLISH)); 
     186        this.getContentPane().add(panelInformations, BorderLayout.NORTH); 
     187        this.getContentPane().add(proxyPanel, BorderLayout.CENTER); 
     188        this.getContentPane().add(panelBouton, BorderLayout.SOUTH); 
     189        this.addWindowListener(this); 
     190        this.setResizable(false); 
     191    } 
     192 
     193    public void showDialog() { 
     194        this.pack(); 
     195        this.setLocationRelativeTo(null); 
     196        this.setVisible(true); 
     197    } 
     198 
     199    @Override 
     200    public void actionPerformed(ActionEvent paramActionEvent) { 
     201        //if one field is empty, an error is displayed 
     202        if (fieldUrl.getText().equals("") || loginField.getText().equals("") || passwordField.getText().equals("")) { 
     203            JOptionPane.showMessageDialog(null, Messages.getMessage("connexionDialog_emptyField"), Messages 
     204                    .getMessage("error"), JOptionPane.ERROR_MESSAGE); 
     205        } else { 
     206            if (!fieldUrl.getText().startsWith("http://")) { 
     207                fieldUrl.setText("http://" + fieldUrl.getText()); 
     208            } 
     209            //instanciation of the session manager 
     210            Main.sessionManager = new SessionManager(loginField.getText(), passwordField.getText(), fieldUrl.getText()); 
     211            boolean echecProxy = false; 
     212            if (proxyPanel.getCheckBox().isSelected()) { 
     213                int portProxy = 0; 
     214                try { 
     215                    portProxy = Integer.valueOf(proxyPanel.getFieldPort().getText()); 
     216                    Main.sessionManager.setPortProxy(portProxy); 
     217                    Main.sessionManager.setUrlProxy(proxyPanel.getFieldUrl().getText()); 
     218                    Main.sessionManager.setLoginProxy(proxyPanel.getFieldLogin().getText()); 
     219                    Main.sessionManager.setPassProxy(proxyPanel.getFieldPassword().getText()); 
     220                    Main.sessionManager.setUsesProxy(true); 
     221                } catch (Exception e) { 
     222                    echecProxy = true; 
    129223                } 
    130                 Dimension fieldDimensions = new Dimension(300, 30); 
    131                 fieldUrl.setPreferredSize(fieldDimensions); 
    132                 fieldUrl.addActionListener(this); 
    133                 loginField.setPreferredSize(fieldDimensions); 
    134                 loginField.addActionListener(this); 
    135                 passwordField.setPreferredSize(fieldDimensions); 
    136                 passwordField.addActionListener(this); 
    137                 this.getContentPane().setLayout(new GridBagLayout()); 
    138                 GridBagConstraints constraints = new GridBagConstraints(); 
    139                 constraints.gridx = 0; 
    140                 constraints.gridy = 0; 
    141                 constraints.insets = new Insets(3, 3, 3, 3); 
    142                 this.getContentPane().add(labelUrl, constraints); 
    143                 constraints.gridx++; 
    144                 this.getContentPane().add(fieldUrl, constraints); 
    145                 constraints.gridx = 0; 
    146                 constraints.gridy++; 
    147                 this.getContentPane().add(labelLogin, constraints); 
    148                 constraints.gridx++; 
    149                 this.getContentPane().add(loginField, constraints); 
    150                 constraints.gridx = 0; 
    151                 constraints.gridy++; 
    152                 this.getContentPane().add(labelPass, constraints); 
    153                 constraints.gridx++; 
    154                 this.getContentPane().add(passwordField, constraints); 
    155                 constraints.gridx = 0; 
    156                 constraints.gridy++; 
    157                 this.getContentPane().add(comboLocales, constraints); 
    158                 constraints.gridx++; 
    159                 this.getContentPane().add(checkBoxRetenir, constraints); 
    160                 constraints.gridx = 0; 
    161                 constraints.gridy++;//   
    162                 //      for (Locale locale : SimpleDateFormat.getAvailableLocales()) { 
    163                 //          comboLocales.addItem(locale.getDisplayName(Locale.ENGLISH)); 
    164                 //      } 
    165                 comboLocales.setPreferredSize(new Dimension(130, 25)); 
    166                 comboLocales.addItemListener(this); 
    167                 localeModel model = new localeModel(); 
    168                 comboLocales.setModel(model); 
    169                 model.setSelectedItem(defautLocale.getDisplayLanguage(Locale.ENGLISH)); 
    170                 this.getContentPane().add(boutonOk, constraints); 
    171                 boutonOk.setPreferredSize(new Dimension(80, 30)); 
    172                 boutonOk.addActionListener(this); 
    173                 this.addWindowListener(this); 
    174         } 
    175  
    176  
    177         public void showDialog() { 
    178                 this.pack(); 
    179                 this.setLocationRelativeTo(null); 
    180                 this.setVisible(true); 
    181         } 
    182  
    183  
    184         @Override 
    185         public void actionPerformed(ActionEvent paramActionEvent) { 
    186                 //if one field is empty, an error is displayed 
    187                 if (fieldUrl.getText().equals("") || loginField.getText().equals("") || passwordField.getText().equals("")) { 
    188                         JOptionPane.showMessageDialog(null, Messages.getMessage("connexionDialog_emptyField"), 
    189                                         Messages.getMessage("error"), JOptionPane.ERROR_MESSAGE); 
     224 
     225            } 
     226 
     227            //save informations... 
     228            if (checkBoxRetenir.isSelected()) { 
     229                PreferencesManagement.setValue(PreferencesEnum.LOGIN.getLabel(), loginField.getText()); 
     230                PreferencesManagement.setValue(PreferencesEnum.PASSWORD.getLabel(), passwordField.getText()); 
     231                PreferencesManagement.setValue(PreferencesEnum.URL_SITE.getLabel(), fieldUrl.getText()); 
     232                PreferencesManagement 
     233                        .setValue(PreferencesEnum.URL_PROXY.getLabel(), proxyPanel.getFieldUrl().getText()); 
     234                PreferencesManagement.setValue(PreferencesEnum.PORT_PROXY.getLabel(), proxyPanel.getFieldPort() 
     235                        .getText()); 
     236                PreferencesManagement.setValue(PreferencesEnum.USER_PROXY.getLabel(), proxyPanel.getFieldLogin() 
     237                        .getText()); 
     238                PreferencesManagement.setValue(PreferencesEnum.PASS_PROXY.getLabel(), proxyPanel.getFieldPassword() 
     239                        .getText()); 
     240                PreferencesManagement.setValue(PreferencesEnum.USE_PROXY.getLabel(), String.valueOf(proxyPanel 
     241                        .getCheckBox().isSelected())); 
     242            } 
     243            //... or not 
     244            else { 
     245                PreferencesManagement.setValue(PreferencesEnum.LOGIN.getLabel(), ""); 
     246                PreferencesManagement.setValue(PreferencesEnum.PASSWORD.getLabel(), ""); 
     247                PreferencesManagement.setValue(PreferencesEnum.URL_SITE.getLabel(), ""); 
     248                PreferencesManagement 
     249                        .setValue(PreferencesEnum.URL_PROXY.getLabel(), proxyPanel.getFieldUrl().getText()); 
     250                PreferencesManagement.setValue(PreferencesEnum.PORT_PROXY.getLabel(), proxyPanel.getFieldPort() 
     251                        .getText()); 
     252                PreferencesManagement.setValue(PreferencesEnum.USER_PROXY.getLabel(), proxyPanel.getFieldLogin() 
     253                        .getText()); 
     254                PreferencesManagement.setValue(PreferencesEnum.PASS_PROXY.getLabel(), proxyPanel.getFieldPassword() 
     255                        .getText()); 
     256                PreferencesManagement.setValue(PreferencesEnum.USE_PROXY.getLabel(), "false"); 
     257            } 
     258            if (echecProxy) { 
     259                JOptionPane.showMessageDialog(null, Messages.getMessage("proxyError"), Messages.getMessage("error"), 
     260                        JOptionPane.ERROR_MESSAGE); 
     261            } else { 
     262                if (!Main.sessionManager.processLogin()) { 
     263                    //if the login fails, an error is displayed 
     264                    if (!Main.sessionManager.isErreurProxy()) { 
     265                        JOptionPane.showMessageDialog(null, Messages.getMessage("connexionDialog_connexionError"), 
     266                                Messages.getMessage("error"), JOptionPane.ERROR_MESSAGE); 
     267                    } 
    190268                } else { 
    191                         if (!fieldUrl.getText().startsWith("http://")) { 
    192                                 fieldUrl.setText("http://" + fieldUrl.getText()); 
    193                         } 
    194                         //instanciation of the session manager 
    195                         Main.sessionManager = new SessionManager(loginField.getText(), passwordField.getText(), fieldUrl.getText()); 
    196                         if (checkBoxRetenir.isSelected()) { 
    197                                 PreferencesManagement.setValue(PreferencesEnum.LOGIN.getLabel(), loginField.getText()); 
    198                                 PreferencesManagement.setValue(PreferencesEnum.PASSWORD.getLabel(), passwordField.getText()); 
    199                                 PreferencesManagement.setValue(PreferencesEnum.URL_SITE.getLabel(), fieldUrl.getText()); 
    200                         } else { 
    201                                 PreferencesManagement.setValue(PreferencesEnum.LOGIN.getLabel(), ""); 
    202                                 PreferencesManagement.setValue(PreferencesEnum.PASSWORD.getLabel(), ""); 
    203                                 PreferencesManagement.setValue(PreferencesEnum.URL_SITE.getLabel(), ""); 
    204                         } 
    205                         if (!Main.sessionManager.processLogin()) { 
    206                                 //if the login fails, an error is displayed 
    207                                 JOptionPane.showMessageDialog(null, Messages.getMessage("connexionDialog_connexionError"), 
    208                                                 Messages.getMessage("error"), JOptionPane.ERROR_MESSAGE); 
    209                         } else { 
    210                                 //              Locale.setDefault((Locale) comboLocales.getSelectedItem()); 
    211                                 Main.showFrame(); 
    212                                 //hides the dialog 
    213                                 this.dispose(); 
    214                         } 
     269                    //          Locale.setDefault((Locale) comboLocales.getSelectedItem()); 
     270                    Main.showFrame(); 
     271                    //hides the dialog 
     272                    this.dispose(); 
    215273                } 
    216         } 
    217  
    218         /** 
    219          * @author mael 
    220          * Internal class that represents the model of the combobox that allows 
    221          * to choose a locale 
    222          */ 
    223         class localeModel extends AbstractListModel implements ComboBoxModel { 
    224  
    225                 Locale[] locales = SimpleDateFormat.getAvailableLocales(); 
    226                 //List<Locale> locales = Messages.getAvailableBundles(); 
    227                 String[] localesNames; 
    228  
    229                 String selection = null; 
    230  
    231  
    232                 public localeModel() { 
    233                         localesNames = new String[locales.length]; 
    234                         int compteur = 0; 
    235                         for (Locale locale : locales) { 
    236                                 localesNames[compteur] = locale.getDisplayName(Locale.ENGLISH); 
    237                                 compteur++; 
    238                         } 
    239                         Arrays.sort(localesNames); 
    240                 } 
    241  
    242  
    243                 public Object getElementAt(int index) { 
    244                         return localesNames[index]; 
    245                 } 
    246  
    247  
    248                 public int getSize() { 
    249                         return locales.length; 
    250                 } 
    251  
    252  
    253                 public void setSelectedItem(Object anItem) { 
    254                         selection = (String) anItem; 
    255                 } 
    256  
    257  
    258                 public Object getSelectedItem() { 
    259                         if (selection != null) 
    260                                 return selection; 
    261                         else 
    262                                 return null; 
    263                 } 
    264         } 
    265  
    266  
    267         @Override 
    268         public void itemStateChanged(ItemEvent paramItemEvent) { 
    269                 for (Locale locale : SimpleDateFormat.getAvailableLocales()) { 
    270                         if (locale.getDisplayName(Locale.ENGLISH).equals(paramItemEvent.getItem())) { 
    271                                 Messages.usedLocale = locale; 
    272                                 dispose(); 
    273                                 ConnexionDialog dial = new ConnexionDialog(); 
    274                                 dial.showDialog(); 
    275  
    276                         } 
    277  
    278                 } 
    279         } 
    280  
    281  
    282         @Override 
    283         public void keyPressed(KeyEvent arg0) { 
    284         } 
    285  
    286  
    287         @Override 
    288         public void keyReleased(KeyEvent arg0) { 
    289  
    290         } 
    291  
    292  
    293         @Override 
    294         public void keyTyped(KeyEvent arg0) { 
    295         } 
    296  
    297  
    298         @Override 
    299         public void windowActivated(WindowEvent e) { 
    300                 // TODO Auto-generated method stub 
    301  
    302         } 
    303  
    304  
    305         @Override 
    306         public void windowClosed(WindowEvent e) { 
    307         } 
    308  
    309  
    310         @Override 
    311         public void windowClosing(WindowEvent e) { 
    312                 System.exit(0); 
    313         } 
    314  
    315  
    316         @Override 
    317         public void windowDeactivated(WindowEvent e) { 
    318                 // TODO Auto-generated method stub 
    319  
    320         } 
    321  
    322  
    323         @Override 
    324         public void windowDeiconified(WindowEvent e) { 
    325                 // TODO Auto-generated method stub 
    326  
    327         } 
    328  
    329  
    330         @Override 
    331         public void windowIconified(WindowEvent e) { 
    332                 // TODO Auto-generated method stub 
    333  
    334         } 
    335  
    336  
    337         @Override 
    338         public void windowOpened(WindowEvent e) { 
    339                 // TODO Auto-generated method stub 
    340  
    341         } 
     274            } 
     275 
     276        } 
     277    } 
     278 
     279    @Override 
     280    public void itemStateChanged(ItemEvent paramItemEvent) { 
     281        for (Locale locale : SimpleDateFormat.getAvailableLocales()) { 
     282            if (locale.getDisplayName(Locale.ENGLISH).equals(paramItemEvent.getItem())) { 
     283                Messages.usedLocale = locale; 
     284                dispose(); 
     285                ConnexionDialog dial = new ConnexionDialog(); 
     286                dial.showDialog(); 
     287 
     288            } 
     289 
     290        } 
     291    } 
     292 
     293    @Override 
     294    public void keyPressed(KeyEvent arg0) { 
     295    } 
     296 
     297    @Override 
     298    public void keyReleased(KeyEvent arg0) { 
     299 
     300    } 
     301 
     302    @Override 
     303    public void keyTyped(KeyEvent arg0) { 
     304    } 
     305 
     306    @Override 
     307    public void windowActivated(WindowEvent e) { 
     308        // TODO Auto-generated method stub 
     309 
     310    } 
     311 
     312    @Override 
     313    public void windowClosed(WindowEvent e) { 
     314    } 
     315 
     316    @Override 
     317    public void windowClosing(WindowEvent e) { 
     318        System.exit(0); 
     319    } 
     320 
     321    @Override 
     322    public void windowDeactivated(WindowEvent e) { 
     323        // TODO Auto-generated method stub 
     324 
     325    } 
     326 
     327    @Override 
     328    public void windowDeiconified(WindowEvent e) { 
     329        // TODO Auto-generated method stub 
     330 
     331    } 
     332 
     333    @Override 
     334    public void windowIconified(WindowEvent e) { 
     335        // TODO Auto-generated method stub 
     336 
     337    } 
     338 
     339    @Override 
     340    public void windowOpened(WindowEvent e) { 
     341        // TODO Auto-generated method stub 
     342 
     343    } 
     344 
     345    /** 
     346     * @author mael 
     347     * Internal class that represents the model of the combobox that allows 
     348     * to choose a locale 
     349     */ 
     350    class localeModel extends AbstractListModel implements ComboBoxModel { 
     351 
     352        Locale[] locales = SimpleDateFormat.getAvailableLocales(); 
     353        //List<Locale> locales = Messages.getAvailableBundles(); 
     354        String[] localesNames; 
     355 
     356        String selection = null; 
     357 
     358        public localeModel() { 
     359            localesNames = new String[locales.length]; 
     360            int compteur = 0; 
     361            for (Locale locale : locales) { 
     362                localesNames[compteur] = locale.getDisplayName(Locale.ENGLISH); 
     363                compteur++; 
     364            } 
     365            Arrays.sort(localesNames); 
     366        } 
     367 
     368        public Object getElementAt(int index) { 
     369            return localesNames[index]; 
     370        } 
     371 
     372        public int getSize() { 
     373            return locales.length; 
     374        } 
     375 
     376        public void setSelectedItem(Object anItem) { 
     377            selection = (String) anItem; 
     378        } 
     379 
     380        public Object getSelectedItem() { 
     381            if (selection != null) 
     382                return selection; 
     383            else 
     384                return null; 
     385        } 
     386    } 
    342387} 
Note: See TracChangeset for help on using the changeset viewer.