Author: bdonlan
Date: 2005-06-11 15:27:49 -0400 (Sat, 11 Jun 2005)
New Revision: 764

Added:
   trunk/clients/Javer2/src/org/haverdev/javer2/TextAlertDialog.form
   trunk/clients/Javer2/src/org/haverdev/javer2/TextAlertDialog.java
Modified:
   trunk/clients/Javer2/nbproject/project.properties
   trunk/clients/Javer2/server.conf
   trunk/clients/Javer2/src/org/haverdev/client/BasicAuthenticationProvider.java
   trunk/clients/Javer2/src/org/haverdev/client/Client.java
   trunk/clients/Javer2/src/org/haverdev/common/BasicAuthenticationHasher.java
   trunk/clients/Javer2/src/org/haverdev/haver/server/AuthCallback.java
   trunk/clients/Javer2/src/org/haverdev/haver/server/AuthProvider.java
   trunk/clients/Javer2/src/org/haverdev/haver/server/AuthenticationProcess.java
   trunk/clients/Javer2/src/org/haverdev/haver/server/BasicAuthentication.java
   trunk/clients/Javer2/src/org/haverdev/haver/server/LoginContext.java
   
trunk/clients/Javer2/src/org/haverdev/haver/server/exceptions/BadNameException.java
   
trunk/clients/Javer2/src/org/haverdev/haver/server/exceptions/ReservedNameException.java
   
trunk/clients/Javer2/src/org/haverdev/haver/server/exceptions/SimplePropagatedException.java
   trunk/clients/Javer2/src/org/haverdev/javer2/JaverForm.java
Log:
Various fixes

Modified: trunk/clients/Javer2/nbproject/project.properties
===================================================================
--- trunk/clients/Javer2/nbproject/project.properties   2005-06-11 18:17:46 UTC 
(rev 763)
+++ trunk/clients/Javer2/nbproject/project.properties   2005-06-11 19:27:49 UTC 
(rev 764)
@@ -37,7 +37,7 @@
 javadoc.use=true
 javadoc.version=false
 javadoc.windowtitle=
-main.class=org.haverdev.haver.server.Main
+main.class=org.haverdev.javer2.JaverForm
 manifest.file=manifest.mf
 platform.active=default_platform
 run.classpath=\

Modified: trunk/clients/Javer2/server.conf
===================================================================
--- trunk/clients/Javer2/server.conf    2005-06-11 18:17:46 UTC (rev 763)
+++ trunk/clients/Javer2/server.conf    2005-06-11 19:27:49 UTC (rev 764)
@@ -25,6 +25,8 @@
 
 # A list of (haver auth digest name):(java digest SPI name)
 haver.digestMaps=sha512:SHA-512 sha256:SHA-256 sha1:SHA-1
+haver.auth.basic.nonceLength=64
+# ^^^ default 16
 
 #haver.UserStore=org.haverdev.haver.server.DefaultUserStore
 haver.UserStore=org.haverdev.haver.server.FileUserStore

Modified: 
trunk/clients/Javer2/src/org/haverdev/client/BasicAuthenticationProvider.java
===================================================================
--- 
trunk/clients/Javer2/src/org/haverdev/client/BasicAuthenticationProvider.java   
    2005-06-11 18:17:46 UTC (rev 763)
+++ 
trunk/clients/Javer2/src/org/haverdev/client/BasicAuthenticationProvider.java   
    2005-06-11 19:27:49 UTC (rev 764)
@@ -85,14 +85,19 @@
     public void onIncomingLine(Client source, String[] args) {
         if (args[0].equals("AUTH:BASIC")) {
             BasicAuthenticationHasher h = new BasicAuthenticationHasher();
+            String password = getPassword();
+            if (password == null) {
+                callback.failAuth(false);
+                return;
+            }
             
             h.setNonce(args[1]);
             
             h.setUsername(source.getName());
             h.setHostname(source.getHostname());
-            h.setPassword(getPassword());
+            h.setPassword(password);
             
-            System.err.println("tok=" + h.getPasstoken());
+            //System.err.println("tok=" + h.getPasstoken());
             
             Set algos = h.availableAlgos();
             String algoname = null;

Modified: trunk/clients/Javer2/src/org/haverdev/client/Client.java
===================================================================
--- trunk/clients/Javer2/src/org/haverdev/client/Client.java    2005-06-11 
18:17:46 UTC (rev 763)
+++ trunk/clients/Javer2/src/org/haverdev/client/Client.java    2005-06-11 
19:27:49 UTC (rev 764)
@@ -590,10 +590,30 @@
         }
     }
     
+    static final String[] fatals = {
+        "exists.user", "A user by that name already exists",
+                "invalid.name", "The given name is invalid",
+                "reserved.name", "The given name is reserved for server use",
+                "user.denied", "Access denied by that name",
+                "auth.needed", "Authentication is not available for some 
reason. This is a bug."
+    };
+    
+    static Map failMap = null;
+    static {
+        failMap = new HashMap();
+        for (int i = 0; i < fatals.length;) {
+            String failname = fatals[i++];
+            String faildesc = fatals[i++];
+            failMap.put(failname, faildesc);
+        }
+        failMap = Collections.unmodifiableMap(failMap);
+    }
+    
     /**
      * Event listener for syncConnect()
      */
     protected class ConnectMonitor extends SyncMonitor {
+        
         /**
          * true if connection completed successfully
          */
@@ -615,9 +635,14 @@
             done(null);
         }
         
+        public void onAuthenticationFailed(Client source) {
+            fail(new IOException("Authentication failed"));
+        }
+        
         void onFail(Client source, String[] args) {
             // XXX
-            fail(new IOException("Something broke: " + args[2]));
+            if (failMap.containsKey(args[2]))
+                fail(new IOException((String) failMap.get(args[2])));
         }
     }
     
@@ -689,7 +714,7 @@
         }
     }
     
-    Set availableAuth = new LinkedHashSet();
+    LinkedHashSet availableAuth = new LinkedHashSet();
     AuthProvider currentProvider = null;
     
     protected synchronized void handle_AUTH_TYPE(String[] args) {
@@ -709,8 +734,10 @@
     }
     
     protected synchronized void tryAuth() {
-        if (availableAuth.size() == 0)
+        if (availableAuth.size() == 0) {
             dist.onAuthenticationFailed(this);
+            return;
+        }
         String authType = (String) availableAuth.iterator().next();
         removeNotify(currentProvider);
         AuthProvider provider = (AuthProvider) authProviders.get(authType);
@@ -721,8 +748,11 @@
     }
     
     protected synchronized void retryAuth(boolean retrycurrent) {
-        if (!retrycurrent)
-            availableAuth.iterator().remove();
+        if (!retrycurrent) {
+            Iterator it = availableAuth.iterator();
+            it.next();
+            it.remove();
+        }
         tryAuth();
     }
     

Modified: 
trunk/clients/Javer2/src/org/haverdev/common/BasicAuthenticationHasher.java
===================================================================
--- trunk/clients/Javer2/src/org/haverdev/common/BasicAuthenticationHasher.java 
2005-06-11 18:17:46 UTC (rev 763)
+++ trunk/clients/Javer2/src/org/haverdev/common/BasicAuthenticationHasher.java 
2005-06-11 19:27:49 UTC (rev 764)
@@ -56,7 +56,7 @@
         String algoname = (String)algos.get(havername);
         if (algoname == null)
             throw new NoSuchAlgorithmException("Haver digest name " + 
havername + " not mapped");
-        return MessageDigest.getInstance(havername);
+        return MessageDigest.getInstance(algoname);
     }
     
     public static Set availableAlgos() {
@@ -117,13 +117,13 @@
         }
         
         Charset utf8 = Charset.forName("UTF-8");
-        System.err.println("passtok blob=" + password+username+hostname);
+    //  System.err.println("passtok blob=" + password+username+hostname);
         ByteBuffer passtok_bb = utf8.encode(password + username + hostname);
         
         md.update(passtok_bb);
         byte[] digest = md.digest();
         
-        passtok = Base64.encodeBytes(digest);
+        passtok = Base64.encodeBytes(digest, Base64.DONT_BREAK_LINES);
         return passtok;
     }
     
@@ -144,7 +144,7 @@
     
     public String digest(String haveralgo) throws NoSuchAlgorithmException {
         String passtok = getPasstoken();
-        System.err.println("passtok="+passtok);
+        //System.err.println("passtok="+passtok);
         String nonce = getNonce();
         
         if (nonce == null)
@@ -153,8 +153,8 @@
         Charset utf8 = Charset.forName("UTF-8");
         MessageDigest md = digestForAlgo(haveralgo);
         md.update(utf8.encode(nonce + passtok));
-        String digest = Base64.encodeBytes(md.digest());
-        System.err.println("digest="+digest);
+        String digest = Base64.encodeBytes(md.digest(), 
Base64.DONT_BREAK_LINES);
+        //System.err.println("digest="+digest);
         return digest;
     }
     

Modified: trunk/clients/Javer2/src/org/haverdev/haver/server/AuthCallback.java
===================================================================
--- trunk/clients/Javer2/src/org/haverdev/haver/server/AuthCallback.java        
2005-06-11 18:17:46 UTC (rev 763)
+++ trunk/clients/Javer2/src/org/haverdev/haver/server/AuthCallback.java        
2005-06-11 19:27:49 UTC (rev 764)
@@ -17,5 +17,6 @@
  */
 public interface AuthCallback {
     public void accept();
-    public void reject();
+    public void reject() throws PropagatedException;
+    public void reject(PropagatedException e) throws PropagatedException;
 }

Modified: trunk/clients/Javer2/src/org/haverdev/haver/server/AuthProvider.java
===================================================================
--- trunk/clients/Javer2/src/org/haverdev/haver/server/AuthProvider.java        
2005-06-11 18:17:46 UTC (rev 763)
+++ trunk/clients/Javer2/src/org/haverdev/haver/server/AuthProvider.java        
2005-06-11 19:27:49 UTC (rev 764)
@@ -9,6 +9,7 @@
  */
 
 package org.haverdev.haver.server;
+import org.haverdev.haver.server.exceptions.*;
 
 /**
  *
@@ -17,6 +18,6 @@
 public interface AuthProvider extends UserCommandHandler {
     public boolean isAvailable();
     public String getProtocolName();
-    public void initiateConversation(AuthCallback cb);
+    public void initiateConversation(AuthCallback cb) throws 
PropagatedException;
     public void reset();
 }

Modified: 
trunk/clients/Javer2/src/org/haverdev/haver/server/AuthenticationProcess.java
===================================================================
--- 
trunk/clients/Javer2/src/org/haverdev/haver/server/AuthenticationProcess.java   
    2005-06-11 18:17:46 UTC (rev 763)
+++ 
trunk/clients/Javer2/src/org/haverdev/haver/server/AuthenticationProcess.java   
    2005-06-11 19:27:49 UTC (rev 764)
@@ -120,12 +120,16 @@
         conn.schedulePing();
     }
 
-    public void reject() {
-        PropagatedException e = new AuthenticationFailureException();
-        conn.sendLine(e.clientReport());
-        conn.context = this;
+    public void reject() throws PropagatedException {
+        reject(new AuthenticationFailureException());
     }
 
+    public void reject(PropagatedException e) throws PropagatedException {
+        ctx.remove(authctx);
+        authctx = null;
+        throw e;
+    }
+    
     public void handleCommand(String[] cmd) throws PropagatedException {
         if (!cmd[0].equals("AUTH:TYPE"))
             throw new UnknownClientCommandException(cmd);

Modified: 
trunk/clients/Javer2/src/org/haverdev/haver/server/BasicAuthentication.java
===================================================================
--- trunk/clients/Javer2/src/org/haverdev/haver/server/BasicAuthentication.java 
2005-06-11 18:17:46 UTC (rev 763)
+++ trunk/clients/Javer2/src/org/haverdev/haver/server/BasicAuthentication.java 
2005-06-11 19:27:49 UTC (rev 764)
@@ -9,6 +9,7 @@
  */
 
 package org.haverdev.haver.server;
+import org.haverdev.haver.server.exceptions.*;
 import org.haverdev.common.*;
 import java.security.*;
 import java.nio.charset.Charset;
@@ -46,7 +47,7 @@
         return true;
     }
     
-    public void initiateConversation(AuthCallback cb) {
+    public void initiateConversation(AuthCallback cb) throws 
PropagatedException {
         this.conn = conn;
         callback = cb;
         
@@ -73,7 +74,7 @@
     }
 
     
-    public void handleCommand(String[] cmd) throws 
org.haverdev.haver.server.exceptions.PropagatedException {
+    public void handleCommand(String[] cmd) throws PropagatedException {
         if (!cmd[0].equals(this.cmd))
             throw new 
org.haverdev.haver.server.exceptions.UnknownClientCommandException(cmd);
         String algo = cmd[1];
@@ -84,8 +85,8 @@
             expected = hasher.digest(algo);
         }
         catch (NoSuchAlgorithmException e) {
-            callback.reject(); // XXX
-            return;
+            callback.reject(new SimplePropagatedException("unknown.digest", 
algo));
+            return; // unreachable
         }
 
         if (expected.equals(hash))
@@ -100,9 +101,9 @@
     
     public void reset() {
         SecureRandom rng = new SecureRandom();
-        byte[] nonce_buf = new byte[16];
+        byte[] nonce_buf = new 
byte[Integer.getInteger("haver.auth.basic.nonceLength", 16).intValue()];
         rng.nextBytes(nonce_buf);
         hasher = new BasicAuthenticationHasher();
-        hasher.setNonce(Base64.encodeBytes(nonce_buf));
+        hasher.setNonce(Base64.encodeBytes(nonce_buf, 
Base64.DONT_BREAK_LINES));
     }
 }

Modified: trunk/clients/Javer2/src/org/haverdev/haver/server/LoginContext.java
===================================================================
--- trunk/clients/Javer2/src/org/haverdev/haver/server/LoginContext.java        
2005-06-11 18:17:46 UTC (rev 763)
+++ trunk/clients/Javer2/src/org/haverdev/haver/server/LoginContext.java        
2005-06-11 19:27:49 UTC (rev 764)
@@ -40,7 +40,8 @@
         
         // XXX
         auth = new AuthenticationProcess(conn, info);
-        conn.context = auth.getContext(); // XXX
+        //conn.context = auth.getContext(); // XXX
+        ((MergingContext)conn.context).add(auth.getContext()); // XXX
         auth.start();
         //((MergingContext)conn.context).add(auth.getContext());
     }

Modified: 
trunk/clients/Javer2/src/org/haverdev/haver/server/exceptions/BadNameException.java
===================================================================
--- 
trunk/clients/Javer2/src/org/haverdev/haver/server/exceptions/BadNameException.java
 2005-06-11 18:17:46 UTC (rev 763)
+++ 
trunk/clients/Javer2/src/org/haverdev/haver/server/exceptions/BadNameException.java
 2005-06-11 19:27:49 UTC (rev 764)
@@ -14,7 +14,7 @@
     
     /** Creates a new instance of BadNameException */
     public BadNameException(String name) {
-        super("invalid.user", name);
+        super("invalid.name", name);
     }
     
 }

Modified: 
trunk/clients/Javer2/src/org/haverdev/haver/server/exceptions/ReservedNameException.java
===================================================================
--- 
trunk/clients/Javer2/src/org/haverdev/haver/server/exceptions/ReservedNameException.java
    2005-06-11 18:17:46 UTC (rev 763)
+++ 
trunk/clients/Javer2/src/org/haverdev/haver/server/exceptions/ReservedNameException.java
    2005-06-11 19:27:49 UTC (rev 764)
@@ -14,7 +14,7 @@
     
     /** Creates a new instance of ReservedNameException */
     public ReservedNameException(String name) {
-        super("reserved.user", name);
+        super("reserved.name", name);
     }
     
 }

Modified: 
trunk/clients/Javer2/src/org/haverdev/haver/server/exceptions/SimplePropagatedException.java
===================================================================
--- 
trunk/clients/Javer2/src/org/haverdev/haver/server/exceptions/SimplePropagatedException.java
        2005-06-11 18:17:46 UTC (rev 763)
+++ 
trunk/clients/Javer2/src/org/haverdev/haver/server/exceptions/SimplePropagatedException.java
        2005-06-11 19:27:49 UTC (rev 764)
@@ -1,6 +1,6 @@
 package org.haverdev.haver.server.exceptions;
 
-public abstract class SimplePropagatedException extends PropagatedException {
+public class SimplePropagatedException extends PropagatedException {
     String code, detail;
     public SimplePropagatedException(String code, String detail) {
         super(detail == null ? code : detail);

Modified: trunk/clients/Javer2/src/org/haverdev/javer2/JaverForm.java
===================================================================
--- trunk/clients/Javer2/src/org/haverdev/javer2/JaverForm.java 2005-06-11 
18:17:46 UTC (rev 763)
+++ trunk/clients/Javer2/src/org/haverdev/javer2/JaverForm.java 2005-06-11 
19:27:49 UTC (rev 764)
@@ -53,6 +53,23 @@
             });
         }
         
+        public void onNeedIdent(Client source) {
+            String claimedHost = source.getHostname().toLowerCase();
+            if (claimedHost.equals(host.toLowerCase()))
+                return;
+            
+            String response = "No";
+            try {
+                response = TextAlertDialog.showAndBlock(
+                    "The haver server claims to be \"" + claimedHost + "\", 
but you connected to \"" + host + "\". Continue?",
+                    new String[] { "Yes", "No" });
+            }
+            catch (InterruptedException e) {}
+            if (response.equals("No")) {
+                source.disconnect();
+            }
+        }
+        
     }
     
     void doConnect(String nick) {
@@ -120,6 +137,8 @@
         if (factory instanceof SSLSocketFactory) {
             serverpane.putLine("Warning: SSL mode in use. Currently, no server 
certificate authentication is performed on SSL connections. There is no 
protection against man-in-the-middle attacks.");
         }
+        
+        setPreferredSize(new java.awt.Dimension(320, 240));
     }
     
     HashMap panes = new HashMap();

Added: trunk/clients/Javer2/src/org/haverdev/javer2/TextAlertDialog.form
===================================================================
--- trunk/clients/Javer2/src/org/haverdev/javer2/TextAlertDialog.form   
2005-06-11 18:17:46 UTC (rev 763)
+++ trunk/clients/Javer2/src/org/haverdev/javer2/TextAlertDialog.form   
2005-06-11 19:27:49 UTC (rev 764)
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<Form version="1.0" type="org.netbeans.modules.form.forminfo.JDialogFormInfo">
+  <Properties>
+    <Property name="defaultCloseOperation" type="int" value="2"/>
+  </Properties>
+  <SyntheticProperties>
+    <SyntheticProperty name="formSizePolicy" type="int" value="1"/>
+  </SyntheticProperties>
+  <AuxValues>
+    <AuxValue name="FormSettings_generateMnemonicsCode" 
type="java.lang.Boolean" value="false"/>
+    <AuxValue name="FormSettings_listenerGenerationStyle" 
type="java.lang.Integer" value="0"/>
+    <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" 
value="false"/>
+    <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" 
value="2"/>
+  </AuxValues>
+
+  <Layout 
class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/>
+  <SubComponents>
+    <Component class="javax.swing.JTextArea" name="jTextArea1">
+      <Properties>
+        <Property name="background" type="java.awt.Color" 
editor="org.netbeans.modules.form.RADConnectionPropertyEditor">
+          <Connection component="Form" name="background" type="property"/>
+        </Property>
+        <Property name="editable" type="boolean" value="false"/>
+        <Property name="lineWrap" type="boolean" value="true"/>
+        <Property name="text" type="java.lang.String" value="The quick brown 
fox jumped over the lazy dogs. The quick brown fox jumped over the lazy dogs. 
The quick brown fox jumped over the lazy dogs. The quick brown fox jumped over 
the lazy dogs. The quick brown fox jumped over the lazy dogs. The quick brown 
fox jumped over the lazy dogs."/>
+        <Property name="wrapStyleWord" type="boolean" value="true"/>
+      </Properties>
+      <Constraints>
+        <Constraint 
layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" 
value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
+          <BorderConstraints direction="Center"/>
+        </Constraint>
+      </Constraints>
+    </Component>
+    <Container class="javax.swing.JPanel" name="jPanel1">
+      <Constraints>
+        <Constraint 
layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" 
value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
+          <BorderConstraints direction="South"/>
+        </Constraint>
+      </Constraints>
+
+      <Layout 
class="org.netbeans.modules.form.compat2.layouts.DesignFlowLayout">
+        <Property name="alignment" type="int" value="2"/>
+      </Layout>
+    </Container>
+  </SubComponents>
+</Form>

Added: trunk/clients/Javer2/src/org/haverdev/javer2/TextAlertDialog.java
===================================================================
--- trunk/clients/Javer2/src/org/haverdev/javer2/TextAlertDialog.java   
2005-06-11 18:17:46 UTC (rev 763)
+++ trunk/clients/Javer2/src/org/haverdev/javer2/TextAlertDialog.java   
2005-06-11 19:27:49 UTC (rev 764)
@@ -0,0 +1,136 @@
+/*
+ * TextAlertDialog.java
+ *
+ * Created on June 11, 2005, 2:19 PM
+ */
+
+package org.haverdev.javer2;
+import java.util.*;
+import javax.swing.*;
+
+/**
+ *
+ * @author  bdonlan
+ */
+public class TextAlertDialog extends javax.swing.JDialog {
+    
+    String chosen = null;
+    Runnable onCompleted = new Runnable() {
+        public void run() {}
+    };
+    
+    /** Creates new form TextAlertDialog */
+    public TextAlertDialog(java.awt.Frame parent, boolean modal, String mesg, 
Collection buttons) {
+        super(parent, modal);
+        initComponents();
+        
+        Iterator i = buttons.iterator();
+        while (i.hasNext()) {
+            final String label = (String) i.next();
+            javax.swing.JButton button = new javax.swing.JButton();
+            button.setText(label);
+            button.addActionListener(new java.awt.event.ActionListener() {
+                public void actionPerformed(java.awt.event.ActionEvent evt) {
+                    buttonClicked(label);
+                }
+            });
+            jPanel1.add(button);
+        }
+        
+        jTextArea1.setText(mesg);
+        
+        pack();
+
+    }
+    
+    public String getChoice() {
+        return chosen;
+    }
+    
+    void buttonClicked(String label) {
+        chosen = label;
+        synchronized(this) { notifyAll(); }
+        setVisible(false);
+        onCompleted.run();
+    }
+    
+    public void setOnCompleted(Runnable evt) {
+        onCompleted = evt;
+    }
+    
+    static class StringContainer {
+        String str = null;
+    }
+    
+    static class DialogContainer {
+        TextAlertDialog dlg = null;
+    }
+    
+    public static String showAndBlock(final String mesg, final Collection 
buttons) throws InterruptedException {
+        final StringContainer c = new StringContainer();
+        final DialogContainer d = new DialogContainer();
+        synchronized (c) {
+            try {
+                SwingUtilities.invokeAndWait(new Runnable() {
+                    public void run() {
+                        final TextAlertDialog dlg = new TextAlertDialog(null, 
true, mesg, buttons);
+                        d.dlg = dlg;
+                        dlg.setVisible(true);
+                        c.str = dlg.getChoice();
+                    }
+                });
+            }
+            catch (java.lang.reflect.InvocationTargetException e) {
+                throw new RuntimeException("Invocation target exception", e);
+            }
+            finally {
+                SwingUtilities.invokeLater(new Runnable() {
+                    public void run() {
+                        d.dlg.setVisible(false);
+                    }
+                });
+            }
+        }
+        return c.str;
+    }
+    
+    public static String showAndBlock(String mesg, String[] buttons) throws 
InterruptedException {
+        Vector v = new Vector();
+        for (int i = 0; i < buttons.length; i++)
+            v.add(buttons[i]);
+        return showAndBlock(mesg, v);
+    }
+    
+    /** 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.
+     */
+    // <editor-fold defaultstate="collapsed" desc=" Generated Code 
">//GEN-BEGIN:initComponents
+    private void initComponents() {
+        jTextArea1 = new javax.swing.JTextArea();
+        jPanel1 = new javax.swing.JPanel();
+
+        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
+        jTextArea1.setBackground(getBackground());
+        jTextArea1.setEditable(false);
+        jTextArea1.setLineWrap(true);
+        jTextArea1.setText("The quick brown fox jumped over the lazy dogs. The 
quick brown fox jumped over the lazy dogs. The quick brown fox jumped over the 
lazy dogs. The quick brown fox jumped over the lazy dogs. The quick brown fox 
jumped over the lazy dogs. The quick brown fox jumped over the lazy dogs.");
+        jTextArea1.setWrapStyleWord(true);
+        getContentPane().add(jTextArea1, java.awt.BorderLayout.CENTER);
+
+        jPanel1.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.RIGHT));
+
+        getContentPane().add(jPanel1, java.awt.BorderLayout.SOUTH);
+
+        pack();
+    }
+    // </editor-fold>//GEN-END:initComponents
+
+    
+    // Variables declaration - do not modify//GEN-BEGIN:variables
+    private javax.swing.JPanel jPanel1;
+    private javax.swing.JTextArea jTextArea1;
+    // End of variables declaration//GEN-END:variables
+    
+}


Property changes on: 
trunk/clients/Javer2/src/org/haverdev/javer2/TextAlertDialog.java
___________________________________________________________________
Name: svn:eol-style
   + native


Reply via email to