Enable first implementation of value change in varialbles view.
[phpeclipse.git] / archive / net.sourceforge.phpeclipse.wiki / src / net / sourceforge / phpeclipse / wiki / internal / Configuration.java
index a8cf2e2..4740154 100644 (file)
@@ -4,13 +4,17 @@
  * are made available under the terms of the Common Public License v1.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/cpl-v10.html
-  *
+ �*
  * Contributors:
  *    IBM - Initial API and implementation
  **********************************************************************/
 package net.sourceforge.phpeclipse.wiki.internal;
 
 import net.sourceforge.phpeclipse.wiki.editor.WikiEditorPlugin;
+import net.sourceforge.phpeclipse.wiki.preferences.UserValidationDialog;
+import net.sourceforge.phpeclipse.wiki.preferences.Util;
+
+import org.eclipse.swt.widgets.Shell;
 
 /**
  *  
@@ -40,24 +44,264 @@ public class Configuration implements IConfiguration, Comparable {
 
   protected String fType = "";
 
-  private static final char[] SCRAMBLING_TABLE=new char[] {
-       0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,
-       16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,
-       114,120,53,79,96,109,72,108,70,64,76,67,116,74,68,87,
-       111,52,75,119,49,34,82,81,95,65,112,86,118,110,122,105,
-       41,57,83,43,46,102,40,89,38,103,45,50,42,123,91,35,
-       125,55,54,66,124,126,59,47,92,71,115,78,88,107,106,56,
-       36,121,117,104,101,100,69,73,99,63,94,93,39,37,61,48,
-       58,113,32,90,44,98,60,51,33,97,62,77,84,80,85,223,
-       225,216,187,166,229,189,222,188,141,249,148,200,184,136,248,190,
-       199,170,181,204,138,232,218,183,255,234,220,247,213,203,226,193,
-       174,172,228,252,217,201,131,230,197,211,145,238,161,179,160,212,
-       207,221,254,173,202,146,224,151,140,196,205,130,135,133,143,246,
-       192,159,244,239,185,168,215,144,139,165,180,157,147,186,214,176,
-       227,231,219,169,175,156,206,198,129,164,150,210,154,177,134,127,
-       182,128,158,208,162,132,167,209,149,241,153,251,237,236,171,195,
-       243,233,253,240,194,250,191,155,142,137,245,235,163,242,178,152
-       };
+  private static final char[] SCRAMBLING_TABLE = new char[] {
+      0,
+      1,
+      2,
+      3,
+      4,
+      5,
+      6,
+      7,
+      8,
+      9,
+      10,
+      11,
+      12,
+      13,
+      14,
+      15,
+      16,
+      17,
+      18,
+      19,
+      20,
+      21,
+      22,
+      23,
+      24,
+      25,
+      26,
+      27,
+      28,
+      29,
+      30,
+      31,
+      114,
+      120,
+      53,
+      79,
+      96,
+      109,
+      72,
+      108,
+      70,
+      64,
+      76,
+      67,
+      116,
+      74,
+      68,
+      87,
+      111,
+      52,
+      75,
+      119,
+      49,
+      34,
+      82,
+      81,
+      95,
+      65,
+      112,
+      86,
+      118,
+      110,
+      122,
+      105,
+      41,
+      57,
+      83,
+      43,
+      46,
+      102,
+      40,
+      89,
+      38,
+      103,
+      45,
+      50,
+      42,
+      123,
+      91,
+      35,
+      125,
+      55,
+      54,
+      66,
+      124,
+      126,
+      59,
+      47,
+      92,
+      71,
+      115,
+      78,
+      88,
+      107,
+      106,
+      56,
+      36,
+      121,
+      117,
+      104,
+      101,
+      100,
+      69,
+      73,
+      99,
+      63,
+      94,
+      93,
+      39,
+      37,
+      61,
+      48,
+      58,
+      113,
+      32,
+      90,
+      44,
+      98,
+      60,
+      51,
+      33,
+      97,
+      62,
+      77,
+      84,
+      80,
+      85,
+      223,
+      225,
+      216,
+      187,
+      166,
+      229,
+      189,
+      222,
+      188,
+      141,
+      249,
+      148,
+      200,
+      184,
+      136,
+      248,
+      190,
+      199,
+      170,
+      181,
+      204,
+      138,
+      232,
+      218,
+      183,
+      255,
+      234,
+      220,
+      247,
+      213,
+      203,
+      226,
+      193,
+      174,
+      172,
+      228,
+      252,
+      217,
+      201,
+      131,
+      230,
+      197,
+      211,
+      145,
+      238,
+      161,
+      179,
+      160,
+      212,
+      207,
+      221,
+      254,
+      173,
+      202,
+      146,
+      224,
+      151,
+      140,
+      196,
+      205,
+      130,
+      135,
+      133,
+      143,
+      246,
+      192,
+      159,
+      244,
+      239,
+      185,
+      168,
+      215,
+      144,
+      139,
+      165,
+      180,
+      157,
+      147,
+      186,
+      214,
+      176,
+      227,
+      231,
+      219,
+      169,
+      175,
+      156,
+      206,
+      198,
+      129,
+      164,
+      150,
+      210,
+      154,
+      177,
+      134,
+      127,
+      182,
+      128,
+      158,
+      208,
+      162,
+      132,
+      167,
+      209,
+      149,
+      241,
+      153,
+      251,
+      237,
+      236,
+      171,
+      195,
+      243,
+      233,
+      253,
+      240,
+      194,
+      250,
+      191,
+      155,
+      142,
+      137,
+      245,
+      235,
+      163,
+      242,
+      178,
+      152 };
+
   public Configuration() {
     this(WikiEditorPlugin.HTTP_QUERY); // default type
   }
@@ -133,7 +377,7 @@ public class Configuration implements IConfiguration, Comparable {
     memento.putString(MEMENTO_TYPE_ID, fType);
     memento.putString(MEMENTO_USER, fUser);
     memento.putString(MEMENTO_URL, fUrl);
-    String result = 'A'+scramblePassword(fPassword);
+    String result = 'A' + scramblePassword(fPassword);
     memento.putString(MEMENTO_PASSWORD, result);
   }
 
@@ -159,7 +403,7 @@ public class Configuration implements IConfiguration, Comparable {
       fUrl = "";
     }
     String result = memento.getString(MEMENTO_PASSWORD);
-    
+
     if (result == null) {
       fPassword = "";
     } else {
@@ -196,7 +440,7 @@ public class Configuration implements IConfiguration, Comparable {
     return 1;
   }
 
-  private static String scramblePassword(String password)  {
+  private static String scramblePassword(String password) {
     int length = password.length();
     char[] out = new char[length];
     for (int i = 0; i < length; i++) {
@@ -206,4 +450,67 @@ public class Configuration implements IConfiguration, Comparable {
     return new String(out);
   }
 
+  public boolean isUserComplete() {
+    if (fUser == null || fUser.equals("")) {
+      return false;
+    }
+    if (fPassword == null || fPassword.equals("")) {
+      return false;
+    }
+    return true;
+  }
+
+  /**
+   * Asks the user to enter a password. Places the results in the supplied string[]. result[0] must contain the category, result[1]
+   * must contain the fPassword. If the user canceled, both values must be zero.
+   * 
+   * @param location
+   *          the location to obtain the fPassword for
+   * @param category
+   *          the category
+   * @param message
+   *          a message to display to the fUser
+   * @param userMutable
+   *          whether the fUser can be changed in the dialog
+   * @param result
+   *          a String array of length two in which to put the result
+   */
+  public boolean promptForPassword(final String username, final String message, final boolean userMutable, final String[] result) {
+    if (isUserComplete()) {
+      result[0] = fUser;
+      result[1] = fPassword;
+      return true;
+    }
+    result[0] = null;
+    result[1] = null;
+    Shell shell = Util.findShell();
+    if (shell == null) {
+      return false;
+    }
+    UserValidationDialog dialog = new UserValidationDialog(shell, fUrl, (username == null) ? "" : username, message);//$NON-NLS-1$
+    dialog.setUsernameMutable(userMutable);
+    dialog.open();
+    result[0] = dialog.getUsername();
+    result[1] = dialog.getPassword();
+    if (dialog.getAllowCaching()) {
+      fUser = result[0];
+      fPassword = result[1];
+    }
+    return dialog.getAllowCaching();
+  }
+
+  /*
+   * (non-Javadoc)
+   * 
+   * @see java.lang.Object#equals(java.lang.Object)
+   */
+  public boolean equals(Object obj) {
+    if (obj instanceof Configuration) {
+      if (fName == null || ((Configuration) obj).fName == null) {
+        return false;
+      }
+      return fName.equals(((Configuration) obj).fName);
+    }
+    return false;
+  }
 }
\ No newline at end of file