X-Git-Url: http://git.phpeclipse.com diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/internal/Configuration.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/internal/Configuration.java index 0b2c404..1cadc30 100644 --- a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/internal/Configuration.java +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/internal/Configuration.java @@ -4,110 +4,255 @@ * 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