X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=server%2Fplugins%2Forg.argeo.jcr.ui.explorer%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fjcr%2Fui%2Fexplorer%2Fcommands%2FAddRemoteRepository.java;h=6b5dfa8b0c490bafaa37059d6b38098b7e9e962b;hb=a093e5c849e70bbc754fa4462dbb6c2b59979973;hp=818b6b6fee6ff7e205054d6d475fe5ce718cf416;hpb=1d5afdce3e91054f07ddd3c98309c363b4cf1d46;p=lgpl%2Fargeo-commons.git diff --git a/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/commands/AddRemoteRepository.java b/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/commands/AddRemoteRepository.java index 818b6b6fe..6b5dfa8b0 100644 --- a/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/commands/AddRemoteRepository.java +++ b/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/commands/AddRemoteRepository.java @@ -113,6 +113,7 @@ public class AddRemoteRepository extends AbstractHandler implements private Text uri; private Text username; private Text password; + private Button saveInKeyring; public RemoteRepositoryLoginDialog(Shell parentShell) { super(parentShell); @@ -136,6 +137,8 @@ public class AddRemoteRepository extends AbstractHandler implements "http://localhost:7070/org.argeo.jcr.webapp/remoting/node"); username = createLT(composite, "User", ""); password = createLP(composite, "Password"); + + saveInKeyring = createLC(composite, "Remember password", false); parent.pack(); return composite; } @@ -188,6 +191,12 @@ public class AddRemoteRepository extends AbstractHandler implements try { Session nodeSession = keyring.getSession(); Node home = JcrUtils.getUserHome(nodeSession); + + // FIXME better deal with non existing home dir + if (home == null) + home = JcrUtils.createUserHomeIfNeeded(nodeSession, + nodeSession.getUserID()); + Node remote = home.hasNode(ARGEO_REMOTE) ? home .getNode(ARGEO_REMOTE) : home.addNode(ARGEO_REMOTE); if (remote.hasNode(name.getText())) @@ -199,13 +208,16 @@ public class AddRemoteRepository extends AbstractHandler implements remoteRepository.setProperty(ARGEO_URI, uri.getText()); remoteRepository.setProperty(ARGEO_USER_ID, username.getText()); Node pwd = remoteRepository.addNode(ARGEO_PASSWORD); - keyring.set(pwd.getPath(), password.getText().toCharArray()); - nodeSession.save(); + pwd.getSession().save(); + if (saveInKeyring.getSelection()) + keyring.set(pwd.getPath(), password.getText().toCharArray()); + keyring.getSession().save(); MessageDialog.openInformation( getParentShell(), "Repository Added", "Remote repository '" + username.getText() + "@" + uri.getText() + "' added"); + super.okPressed(); } catch (Exception e) { ErrorFeedback.show("Cannot add remote repository", e); @@ -221,6 +233,16 @@ public class AddRemoteRepository extends AbstractHandler implements return text; } + /** Creates label and check. */ + protected Button createLC(Composite parent, String label, + Boolean initial) { + new Label(parent, SWT.NONE).setText(label); + Button check = new Button(parent, SWT.CHECK); + check.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); + check.setSelection(initial); + return check; + } + protected Text createLP(Composite parent, String label) { new Label(parent, SWT.NONE).setText(label); Text text = new Text(parent, SWT.SINGLE | SWT.LEAD | SWT.BORDER