From: axelcl Date: Fri, 10 Dec 2004 16:52:40 +0000 (+0000) Subject: improved settings dialogs X-Git-Url: http://git.phpeclipse.com improved settings dialogs --- diff --git a/archive/net.sourceforge.phpeclipse.wiki/plugin.properties b/archive/net.sourceforge.phpeclipse.wiki/plugin.properties index 24ee64b..e26cbb2 100644 --- a/archive/net.sourceforge.phpeclipse.wiki/plugin.properties +++ b/archive/net.sourceforge.phpeclipse.wiki/plugin.properties @@ -26,3 +26,4 @@ configGroup=Configuration url=URL: password=Password: parseType=Type: +scrambledPassword=Saved passwords are stored on your computer in a file that's difficult, but not impossible, for an intruder to read. 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 85fd155..a8cf2e2 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 @@ -19,7 +19,7 @@ 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"; @@ -40,6 +40,24 @@ 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 + }; public Configuration() { this(WikiEditorPlugin.HTTP_QUERY); // default type } @@ -51,7 +69,7 @@ public class Configuration implements IConfiguration, Comparable { public String getId() { return fId; } - + public String getName() { return fName; } @@ -115,7 +133,8 @@ public class Configuration implements IConfiguration, Comparable { memento.putString(MEMENTO_TYPE_ID, fType); memento.putString(MEMENTO_USER, fUser); memento.putString(MEMENTO_URL, fUrl); - memento.putString(MEMENTO_PASSWORD, fPassword); + String result = 'A'+scramblePassword(fPassword); + memento.putString(MEMENTO_PASSWORD, result); } protected void load(IMemento memento) { @@ -139,12 +158,18 @@ public class Configuration implements IConfiguration, Comparable { if (fUrl == null) { fUrl = ""; } - fPassword = memento.getString(MEMENTO_PASSWORD); - if (fPassword == null) { + String result = memento.getString(MEMENTO_PASSWORD); + + if (result == null) { fPassword = ""; + } else { + fPassword = scramblePassword(result.substring(1)); } } - /* (non-Javadoc) + + /* + * (non-Javadoc) + * * @see java.lang.Object#toString() */ public String toString() { @@ -158,14 +183,27 @@ public class Configuration implements IConfiguration, Comparable { buffer.append(fType); return buffer.toString(); } - - /* (non-Javadoc) + + /* + * (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 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); + } + } \ No newline at end of file diff --git a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/ui/internal/ConfigurationDialog.java b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/ui/internal/ConfigurationDialog.java index 150e4fc..363c427 100644 --- a/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/ui/internal/ConfigurationDialog.java +++ b/archive/net.sourceforge.phpeclipse.wiki/src/net/sourceforge/phpeclipse/wiki/ui/internal/ConfigurationDialog.java @@ -4,7 +4,7 @@ * 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 **********************************************************************/ @@ -31,256 +31,282 @@ import org.eclipse.swt.widgets.Group; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; + /** - * + * */ public class ConfigurationDialog extends Dialog { - protected IConfigurationWorkingCopy fConfiguration; - protected boolean isEdit; - - private Button okButton; - private Text fUserName; - private Text fUrl; - private Text fPassword; - - interface StringModifyListener { - public void valueChanged(String s); - } - - interface BooleanModifyListener { - public void valueChanged(boolean b); - } - - interface TypeModifyListener { - public void valueChanged(String fType); - } - - /** - * @param parentShell - */ - public ConfigurationDialog(Shell parentShell, IConfigurationWorkingCopy configuration) { - super(parentShell); - this.fConfiguration = configuration; - isEdit = true; - } - - public ConfigurationDialog(Shell parentShell) { - super(parentShell); - fConfiguration = WikiEditorPlugin.createConfiguration(); - isEdit = false; - } - - protected void configureShell(Shell shell) { - super.configureShell(shell); - if (isEdit) - shell.setText(WikiEditorPlugin.getResource("%editConfig")); - else - shell.setText(WikiEditorPlugin.getResource("%newConfig")); - } - - protected Label createLabel(Composite comp, String txt) { - Label label = new Label(comp, SWT.NONE); - label.setText(txt); - label.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING | GridData.VERTICAL_ALIGN_BEGINNING)); - return label; - } - - protected Text createPassword(Composite comp, String txt, final StringModifyListener listener) { - final Text text = new Text(comp, SWT.BORDER | SWT.PASSWORD); - if (txt != null) - text.setText(txt); - GridData data = new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING); - data.widthHint = 150; - text.setLayoutData(data); - if (listener != null) - text.addModifyListener(new ModifyListener() { - public void modifyText(ModifyEvent e) { - listener.valueChanged(text.getText()); - } - }); - return text; - } - - protected Text createText(Composite comp, String txt, final StringModifyListener listener) { - final Text text = new Text(comp, SWT.BORDER); - if (txt != null) - text.setText(txt); - GridData data = new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING); - data.widthHint = 150; - text.setLayoutData(data); - if (listener != null) - text.addModifyListener(new ModifyListener() { - public void modifyText(ModifyEvent e) { - listener.valueChanged(text.getText()); - } - }); - return text; - } - - protected Combo createTypeCombo(Composite comp, final String[] types, String sel, final TypeModifyListener listener) { - final Combo combo = new Combo(comp, SWT.DROP_DOWN | SWT.READ_ONLY); - int size = types.length; - String[] items = new String[size]; - int index = -1; - for (int i = 0; i < size; i++) { - items[i] = types[i]; - if (types[i].equals(sel)) - index = i; - } - combo.setItems(items); - if (index >= 0) - combo.select(index); - GridData data = new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_BEGINNING); - data.widthHint = 150; - combo.setLayoutData(data); - if (listener != null) - combo.addSelectionListener(new SelectionListener() { - public void widgetSelected(SelectionEvent e) { - listener.valueChanged(types[combo.getSelectionIndex()]); - } - public void widgetDefaultSelected(SelectionEvent e) { - widgetSelected(e); - } - }); - return combo; - } - - /* (non-Javadoc) - * @see org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets.Composite) - */ - protected Control createDialogArea(Composite parent) { - Composite composite = (Composite) super.createDialogArea(parent); - ((GridLayout)composite.getLayout()).numColumns = 2; - -// WorkbenchHelp.setHelp(composite, ContextIds.PREF_DIALOG); - - createLabel(composite, WikiEditorPlugin.getResource("%name")); - fUserName = createText(composite, fConfiguration.getName() + "", new StringModifyListener() { - public void valueChanged(String name) { - fConfiguration.setName(name); - validateFields(); - } - }); - - Group group = new Group(composite, SWT.NONE); - GridLayout layout = new GridLayout(2, false); - group.setLayout(layout); - GridData data = new GridData(GridData.FILL_HORIZONTAL); - data.horizontalSpan = 2; - - group.setLayoutData(data); - group.setText(WikiEditorPlugin.getResource("%configGroup")); - - - createLabel(group, WikiEditorPlugin.getResource("%user")); - fUserName = createText(group, fConfiguration.getUser() + "", new StringModifyListener() { - public void valueChanged(String s) { - fConfiguration.setUser(s); - validateFields(); - } - }); - - createLabel(group, WikiEditorPlugin.getResource("%password")); - fPassword = createPassword(group, fConfiguration.getPassword() + "", new StringModifyListener() { - public void valueChanged(String s) { - fConfiguration.setPassword(s); - validateFields(); - } - }); - - createLabel(group, WikiEditorPlugin.getResource("%url")); - fUrl = createText(group, fConfiguration.getURL(), new StringModifyListener() { - public void valueChanged(String s) { - fConfiguration.setURL(s); - validateFields(); - } - }); - - - createLabel(group, WikiEditorPlugin.getResource("%parseType")); - createTypeCombo(group, WikiEditorPlugin.getTypes(), fConfiguration.getType(), new TypeModifyListener() { - public void valueChanged(String fType) { - fConfiguration.setType(fType); - } - }); - - return composite; - } - - /* (non-Javadoc) - * @see org.eclipse.jface.dialogs.Dialog#okPressed() - */ - protected void okPressed() { - fConfiguration.save(); - super.okPressed(); - } - - protected Control createButtonBar(Composite parent) { - Control buttonControl = super.createButtonBar(parent); - validateFields(); - return buttonControl; - } - - private void setOKButtonEnabled(boolean curIsEnabled) { - if (okButton == null) - okButton = getButton(IDialogConstants.OK_ID); - - if (okButton != null) - okButton.setEnabled(curIsEnabled); - } - - protected void validateFields() { - boolean result = true; - - String currHostname = fUrl.getText(); -// if (!isValidHostname(currHostname)) -// result = false; - - String currHostnamePort = fPassword.getText(); -// try { -// Integer.parseInt(currHostnamePort); -// } catch (Exception any) { -// result = false; -// } - - String currMonitorPort = fUserName.getText(); -// try { -// Integer.parseInt(currMonitorPort); -// } catch (Exception any) { -// result = false; -// } - -// if (result && isLocalhost(currHostname)) { -// if (currHostnamePort.equals(currMonitorPort)) -// result = false; -// } - setOKButtonEnabled(result); - } - -// protected static boolean isValidHostname(String host) { -// if (host == null || host.trim().length() < 1) -// return false; -// if (host.indexOf("/") >= 0) -// return false; -// if (host.indexOf("\\") >= 0) -// return false; -// if (host.indexOf(" ") >= 0) -// return false; -// return true; -// } - -// protected static boolean isLocalhost(String host) { -// if (host == null) -// return false; -// try { -// if ("localhost".equals(host) || "127.0.0.1".equals(host)) -// return true; -// InetAddress localHostaddr = InetAddress.getLocalHost(); -// if (localHostaddr.getHostName().equals(host)) -// return true; -// } catch (Exception e) { -// Trace.trace(Trace.WARNING, "Error checking for localhost", e); -// } -// return false; -// } + protected IConfigurationWorkingCopy fConfiguration; + + protected boolean isEdit; + + private Button okButton; + + private Text fUserName; + + private Text fUrl; + + private Text fPassword; + + interface StringModifyListener { + public void valueChanged(String s); + } + + interface BooleanModifyListener { + public void valueChanged(boolean b); + } + + interface TypeModifyListener { + public void valueChanged(String fType); + } + + /** + * @param parentShell + */ + public ConfigurationDialog(Shell parentShell, IConfigurationWorkingCopy configuration) { + super(parentShell); + this.fConfiguration = configuration; + isEdit = true; + } + + public ConfigurationDialog(Shell parentShell) { + super(parentShell); + fConfiguration = WikiEditorPlugin.createConfiguration(); + isEdit = false; + } + + protected void configureShell(Shell shell) { + super.configureShell(shell); + if (isEdit) + shell.setText(WikiEditorPlugin.getResource("%editConfig")); + else + shell.setText(WikiEditorPlugin.getResource("%newConfig")); + } + + protected Label createLabel(Composite comp, String txt) { + Label label = new Label(comp, SWT.NONE); + label.setText(txt); + label.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING | GridData.VERTICAL_ALIGN_BEGINNING)); + return label; + } + + protected Text createPassword(Composite comp, String txt, final StringModifyListener listener) { + final Text text = new Text(comp, SWT.BORDER | SWT.PASSWORD); + if (txt != null) + text.setText(txt); + GridData data = new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING); + data.widthHint = 150; + text.setLayoutData(data); + if (listener != null) + text.addModifyListener(new ModifyListener() { + public void modifyText(ModifyEvent e) { + listener.valueChanged(text.getText()); + } + }); + return text; + } + + protected Text createText(Composite comp, String txt, final StringModifyListener listener) { + final Text text = new Text(comp, SWT.BORDER); + if (txt != null) + text.setText(txt); + GridData data = new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING); + data.widthHint = 150; + text.setLayoutData(data); + if (listener != null) + text.addModifyListener(new ModifyListener() { + public void modifyText(ModifyEvent e) { + listener.valueChanged(text.getText()); + } + }); + return text; + } + + protected Combo createTypeCombo(Composite comp, final String[] types, String sel, final TypeModifyListener listener) { + final Combo combo = new Combo(comp, SWT.DROP_DOWN | SWT.READ_ONLY); + int size = types.length; + String[] items = new String[size]; + int index = -1; + for (int i = 0; i < size; i++) { + items[i] = types[i]; + if (types[i].equals(sel)) + index = i; + } + combo.setItems(items); + if (index >= 0) + combo.select(index); + GridData data = new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_BEGINNING); + data.widthHint = 150; + combo.setLayoutData(data); + if (listener != null) + combo.addSelectionListener(new SelectionListener() { + public void widgetSelected(SelectionEvent e) { + listener.valueChanged(types[combo.getSelectionIndex()]); + } + + public void widgetDefaultSelected(SelectionEvent e) { + widgetSelected(e); + } + }); + return combo; + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets.Composite) + */ + protected Control createDialogArea(Composite parent) { + Composite composite = (Composite) super.createDialogArea(parent); + ((GridLayout) composite.getLayout()).numColumns = 2; + + // WorkbenchHelp.setHelp(composite, ContextIds.PREF_DIALOG); + + createLabel(composite, WikiEditorPlugin.getResource("%name")); + fUserName = createText(composite, fConfiguration.getName() + "", new StringModifyListener() { + public void valueChanged(String name) { + fConfiguration.setName(name); + validateFields(); + } + }); + + Group group = new Group(composite, SWT.NONE); + GridLayout layout = new GridLayout(2, false); + group.setLayout(layout); + GridData data = new GridData(GridData.FILL_HORIZONTAL); + data.horizontalSpan = 2; + + group.setLayoutData(data); + group.setText(WikiEditorPlugin.getResource("%configGroup")); + + createLabel(group, WikiEditorPlugin.getResource("%user")); + fUserName = createText(group, fConfiguration.getUser() + "", new StringModifyListener() { + public void valueChanged(String s) { + fConfiguration.setUser(s); + validateFields(); + } + }); + + Composite warningComposite = new Composite(group, SWT.NONE); + layout = new GridLayout(); + layout.numColumns = 2; + layout.marginHeight = 0; + layout.marginHeight = 0; + warningComposite.setLayout(layout); + data = new GridData(GridData.FILL_HORIZONTAL); + data.horizontalSpan = 3; + warningComposite.setLayoutData(data); + Label warningLabel = new Label(warningComposite, SWT.NONE); + warningLabel.setImage(getImage(DLG_IMG_MESSAGE_WARNING)); + warningLabel.setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING | GridData.HORIZONTAL_ALIGN_BEGINNING)); + Label warningText = new Label(warningComposite, SWT.WRAP); + warningText.setText(WikiEditorPlugin.getResource("%scrambledPassword")); //$NON-NLS-1$ + data = new GridData(GridData.FILL_HORIZONTAL); + data.widthHint = 300; + warningText.setLayoutData(data); + + createLabel(group, WikiEditorPlugin.getResource("%password")); + fPassword = createPassword(group, fConfiguration.getPassword() + "", new StringModifyListener() { + public void valueChanged(String s) { + fConfiguration.setPassword(s); + validateFields(); + } + }); + + createLabel(group, WikiEditorPlugin.getResource("%url")); + fUrl = createText(group, fConfiguration.getURL(), new StringModifyListener() { + public void valueChanged(String s) { + fConfiguration.setURL(s); + validateFields(); + } + }); + + createLabel(group, WikiEditorPlugin.getResource("%parseType")); + createTypeCombo(group, WikiEditorPlugin.getTypes(), fConfiguration.getType(), new TypeModifyListener() { + public void valueChanged(String fType) { + fConfiguration.setType(fType); + } + }); + + return composite; + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.jface.dialogs.Dialog#okPressed() + */ + protected void okPressed() { + fConfiguration.save(); + super.okPressed(); + } + + protected Control createButtonBar(Composite parent) { + Control buttonControl = super.createButtonBar(parent); + validateFields(); + return buttonControl; + } + + private void setOKButtonEnabled(boolean curIsEnabled) { + if (okButton == null) + okButton = getButton(IDialogConstants.OK_ID); + + if (okButton != null) + okButton.setEnabled(curIsEnabled); + } + + protected void validateFields() { + boolean result = true; + + String currHostname = fUrl.getText(); + // if (!isValidHostname(currHostname)) + // result = false; + + String currHostnamePort = fPassword.getText(); + // try { + // Integer.parseInt(currHostnamePort); + // } catch (Exception any) { + // result = false; + // } + + String currMonitorPort = fUserName.getText(); + // try { + // Integer.parseInt(currMonitorPort); + // } catch (Exception any) { + // result = false; + // } + + // if (result && isLocalhost(currHostname)) { + // if (currHostnamePort.equals(currMonitorPort)) + // result = false; + // } + setOKButtonEnabled(result); + } + + // protected static boolean isValidHostname(String host) { + // if (host == null || host.trim().length() < 1) + // return false; + // if (host.indexOf("/") >= 0) + // return false; + // if (host.indexOf("\\") >= 0) + // return false; + // if (host.indexOf(" ") >= 0) + // return false; + // return true; + // } + + // protected static boolean isLocalhost(String host) { + // if (host == null) + // return false; + // try { + // if ("localhost".equals(host) || "127.0.0.1".equals(host)) + // return true; + // InetAddress localHostaddr = InetAddress.getLocalHost(); + // if (localHostaddr.getHostName().equals(host)) + // return true; + // } catch (Exception e) { + // Trace.trace(Trace.WARNING, "Error checking for localhost", e); + // } + // return false; + // } } \ No newline at end of file