* 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;
/**
- *
+ *
*/
-public class Configuration implements IConfiguration {
- private static final String MEMENTO_ID = "id";
- private static final String MEMENTO_USER = "user";
- private static final String MEMENTO_URL = "url";
- private static final String MEMENTO_PASSWORD = "password";
- private static final String MEMENTO_TYPE_ID = "type-id";
-
- protected String id;
- protected String fUrl;
- protected String fPassword;
- protected String fUser;
- protected String fType;
-
- public Configuration() {
- this( WikiEditorPlugin.HTTP_QUERY ); // default type
- }
-
- public Configuration(String type) {
- this.fType = type;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.monitor.internal.IConfiguration#getId()
- */
- public String getId() {
- return id;
- }
-
- public String getURL() {
- return fUrl;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.monitor.internal.IConfiguration#getRemotePort()
- */
- public String getPassword() {
- return fPassword;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.monitor.internal.IConfiguration#getLocalPort()
- */
- public String getUser() {
- return fUser;
- }
-
- /**
- */
- public String getType() {
- return fType;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.monitor.internal.IConfiguration#isRunning()
- */
- public boolean isActive() {
- return ConfigurationManager.getInstance().isActive(this);
- }
-
- public void delete() {
- ConfigurationManager.getInstance().removeConfiguration(this);
- }
-
- public boolean isWorkingCopy() {
- return false;
- }
-
- public IConfigurationWorkingCopy getWorkingCopy() {
- return new ConfigurationWorkingCopy(this);
- }
-
- protected void setInternal(IConfiguration monitor) {
- id = monitor.getId();
- fUrl = monitor.getURL();
- fPassword = monitor.getPassword();
- fUser = monitor.getUser();
- fType = monitor.getType();
- }
-
- protected void save(IMemento memento) {
- memento.putString(MEMENTO_ID, id);
- memento.putString(MEMENTO_TYPE_ID, fType);
- memento.putString(MEMENTO_USER, fUser);
- memento.putString(MEMENTO_URL, fUrl);
- memento.putString(MEMENTO_PASSWORD, fPassword);
- }
-
- protected void load(IMemento memento) {
- id = memento.getString(MEMENTO_ID);
- fType = memento.getString(MEMENTO_TYPE_ID);
- fUser = memento.getString(MEMENTO_USER);
- fUrl = memento.getString(MEMENTO_URL);
- fPassword = memento.getString(MEMENTO_PASSWORD);
- }
+public class Configuration implements IConfiguration, Comparable {
+ private static final String MEMENTO_ID = "id";
+
+ private static final String MEMENTO_NAME = "name";
+
+ private static final String MEMENTO_USER = "user";
+
+ private static final String MEMENTO_URL = "url";
+
+ private static final String MEMENTO_PASSWORD = "password";
+
+ private static final String MEMENTO_TYPE_ID = "type-id";
+
+ protected String fId = "";
+
+ protected String fName = "";
+
+ protected String fUrl = "";
+
+ protected String fPassword = "";
+
+ protected String fUser = "";
+
+ 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
+ };
+ public Configuration() {
+ this(WikiEditorPlugin.HTTP_QUERY); // default type
+ }
+
+ public Configuration(String type) {
+ this.fType = type;
+ }
+
+ public String getId() {
+ return fId;
+ }
+
+ public String getName() {
+ return fName;
+ }
+
+ public String getURL() {
+ return fUrl;
+ }
+
+ public String getPassword() {
+ return fPassword;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.monitor.internal.IConfiguration#getLocalPort()
+ */
+ public String getUser() {
+ return fUser;
+ }
+
+ /**
+ */
+ public String getType() {
+ return fType;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.monitor.internal.IConfiguration#isRunning()
+ */
+ public boolean isActive() {
+ return ConfigurationManager.getInstance().isActive(this);
+ }
+
+ public void delete() {
+ ConfigurationManager.getInstance().removeConfiguration(this);
+ }
+
+ public boolean isWorkingCopy() {
+ return false;
+ }
+
+ public IConfigurationWorkingCopy getWorkingCopy() {
+ return new ConfigurationWorkingCopy(this);
+ }
+
+ protected void setInternal(IConfiguration monitor) {
+ fId = monitor.getId();
+ fName = monitor.getName();
+ fUrl = monitor.getURL();
+ fPassword = monitor.getPassword();
+ fUser = monitor.getUser();
+ fType = monitor.getType();
+ }
+
+ protected void save(IMemento memento) {
+ memento.putString(MEMENTO_ID, fId);
+ memento.putString(MEMENTO_NAME, fName);
+ memento.putString(MEMENTO_TYPE_ID, fType);
+ memento.putString(MEMENTO_USER, fUser);
+ memento.putString(MEMENTO_URL, fUrl);
+ String result = 'A'+scramblePassword(fPassword);
+ memento.putString(MEMENTO_PASSWORD, result);
+ }
+
+ protected void load(IMemento memento) {
+ fId = memento.getString(MEMENTO_ID);
+ if (fId == null) {
+ fId = "";
+ }
+ fName = memento.getString(MEMENTO_NAME);
+ if (fName == null) {
+ fName = "";
+ }
+ fType = memento.getString(MEMENTO_TYPE_ID);
+ if (fType == null) {
+ fType = "";
+ }
+ fUser = memento.getString(MEMENTO_USER);
+ if (fUser == null) {
+ fUser = "";
+ }
+ fUrl = memento.getString(MEMENTO_URL);
+ if (fUrl == null) {
+ fUrl = "";
+ }
+ String result = memento.getString(MEMENTO_PASSWORD);
+
+ if (result == null) {
+ fPassword = "";
+ } else {
+ fPassword = scramblePassword(result.substring(1));
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see java.lang.Object#toString()
+ */
+ public String toString() {
+ StringBuffer buffer = new StringBuffer();
+ buffer.append(fName);
+ buffer.append(" - ");
+ buffer.append(fUser);
+ buffer.append(" - ");
+ buffer.append(fUrl);
+ buffer.append(" - ");
+ buffer.append(fType);
+ return buffer.toString();
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see java.lang.Comparable#compareTo(java.lang.Object)
+ */
+ public int compareTo(Object o) {
+ if (o instanceof IConfiguration) {
+ return fName.compareTo(((IConfiguration) o).getName());
+ }
+ return 1;
+ }
+
+ private static String scramblePassword(String password) {
+ int length = password.length();
+ char[] out = new char[length];
+ for (int i = 0; i < length; i++) {
+ char value = password.charAt(i);
+ out[i] = SCRAMBLING_TABLE[value];
+ }
+ 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 username, result[1]
+ * must contain the fPassword. If the fUser canceled, both values must be zero.
+ *
+ * @param location
+ * the location to obtain the fPassword for
+ * @param username
+ * the username
+ * @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;
+ }
+ 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();
+ }
}
\ No newline at end of file