Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/wizards/AbstractRepositorySettingsPage.java')
-rw-r--r--org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/wizards/AbstractRepositorySettingsPage.java216
1 files changed, 216 insertions, 0 deletions
diff --git a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/wizards/AbstractRepositorySettingsPage.java b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/wizards/AbstractRepositorySettingsPage.java
index 8f0645150..dfe24ccca 100644
--- a/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/wizards/AbstractRepositorySettingsPage.java
+++ b/org.eclipse.mylyn.tasks.ui/src/org/eclipse/mylyn/tasks/ui/wizards/AbstractRepositorySettingsPage.java
@@ -60,6 +60,7 @@ import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.IWorkbench;
@@ -120,6 +121,12 @@ public abstract class AbstractRepositorySettingsPage extends AbstractTaskReposit
protected StringFieldEditor httpAuthPasswordEditor;
+ private StringFieldEditor certAuthFileNameEditor;
+
+ private Button certBrowseButton;
+
+ private StringFieldEditor certAuthPasswordEditor;
+
protected StringFieldEditor proxyHostnameEditor;
protected StringFieldEditor proxyPortEditor;
@@ -147,12 +154,18 @@ public abstract class AbstractRepositorySettingsPage extends AbstractTaskReposit
private String oldHttpAuthPassword;
+ private String oldCertAuthFileName;
+
+ private String oldCertAuthPassword;
+
private boolean needsAnonymousLogin;
private boolean needsTimeZone;
private boolean needsEncoding;
+ private boolean needsCertAuth;
+
private boolean needsHttpAuth;
private boolean needsValidation;
@@ -163,6 +176,8 @@ public abstract class AbstractRepositorySettingsPage extends AbstractTaskReposit
private Composite advancedComp;
+ private Composite certAuthComp;
+
private Composite httpAuthComp;
private Composite proxyAuthComp;
@@ -173,6 +188,8 @@ public abstract class AbstractRepositorySettingsPage extends AbstractTaskReposit
private Button otherEncoding;
+ private Button certAuthButton;
+
private Button httpAuthButton;
private boolean needsProxy;
@@ -202,6 +219,8 @@ public abstract class AbstractRepositorySettingsPage extends AbstractTaskReposit
private Button saveHttpPasswordButton;
+ private Button saveCertPasswordButton;
+
private Button saveProxyPasswordButton;
private Button disconnectedButton;
@@ -505,6 +524,10 @@ public abstract class AbstractRepositorySettingsPage extends AbstractTaskReposit
createAdvancedSection();
}
+ if (needsCertAuth()) {
+ createCertAuthSection();
+ }
+
if (needsHttpAuth()) {
createHttpAuthSection();
}
@@ -668,6 +691,101 @@ public abstract class AbstractRepositorySettingsPage extends AbstractTaskReposit
}
}
+ private void createCertAuthSection() {
+ ExpandableComposite section = createSection(compositeContainer,
+ Messages.AbstractRepositorySettingsPage_certificate_settings);
+
+ certAuthComp = toolkit.createComposite(section, SWT.NONE);
+ certAuthComp.setBackground(compositeContainer.getBackground());
+ section.setClient(certAuthComp);
+
+ certAuthButton = new Button(certAuthComp, SWT.CHECK);
+ GridDataFactory.fillDefaults()
+ .indent(0, 5)
+ .align(SWT.LEFT, SWT.TOP)
+ .span(3, SWT.DEFAULT)
+ .applyTo(certAuthButton);
+
+ certAuthButton.setText(Messages.AbstractRepositorySettingsPage_Enable_certificate_authentification);
+
+ certAuthButton.addSelectionListener(new SelectionListener() {
+ public void widgetSelected(SelectionEvent e) {
+ setCertAuth(certAuthButton.getSelection());
+ }
+
+ public void widgetDefaultSelected(SelectionEvent e) {
+ // ignore
+ }
+ });
+
+ certAuthFileNameEditor = new StringFieldEditor(
+ "", Messages.AbstractRepositorySettingsPage_CertificateFile_, StringFieldEditor.UNLIMITED, certAuthComp) { //$NON-NLS-1$
+
+ @Override
+ protected boolean doCheckState() {
+ return true;
+ }
+
+ @Override
+ protected void valueChanged() {
+ super.valueChanged();
+ if (getWizard() != null) {
+ getWizard().getContainer().updateButtons();
+ }
+ }
+
+ @Override
+ public int getNumberOfControls() {
+ return 2;
+ }
+ };
+
+ certBrowseButton = new Button(certAuthComp, SWT.PUSH);
+ certBrowseButton.setText(Messages.AbstractRepositorySettingsPage_ChooseCertificateFile_);
+ certBrowseButton.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ FileDialog fileDialog = new FileDialog(getShell(), SWT.OPEN);
+ fileDialog.setFilterPath(System.getProperty("user.home", ".")); //$NON-NLS-1$ //$NON-NLS-2$
+ String returnFile = fileDialog.open();
+ if (returnFile != null) {
+ certAuthFileNameEditor.setStringValue(returnFile);
+ }
+ }
+ });
+
+ certAuthPasswordEditor = new RepositoryStringFieldEditor(
+ "", Messages.AbstractRepositorySettingsPage_CertificatePassword_, StringFieldEditor.UNLIMITED, //$NON-NLS-1$
+ certAuthComp) {
+ @Override
+ public int getNumberOfControls() {
+ return 2;
+ }
+ };
+ ((RepositoryStringFieldEditor) certAuthPasswordEditor).getTextControl().setEchoChar('*');
+
+ saveCertPasswordButton = new Button(certAuthComp, SWT.CHECK);
+ saveCertPasswordButton.setText(Messages.AbstractRepositorySettingsPage_Save_Password);
+
+ certAuthFileNameEditor.setEnabled(certAuthButton.getSelection(), certAuthComp);
+ certBrowseButton.setEnabled(certAuthButton.getSelection());
+ certAuthPasswordEditor.setEnabled(certAuthButton.getSelection(), certAuthComp);
+ saveCertPasswordButton.setEnabled(certAuthButton.getSelection());
+
+ if (repository != null) {
+ saveCertPasswordButton.setSelection(repository.getSavePassword(AuthenticationType.CERTIFICATE));
+ } else {
+ saveCertPasswordButton.setSelection(false);
+ }
+ setCertAuth(oldCertAuthPassword != null || oldCertAuthFileName != null);
+ section.setExpanded(certAuthButton.getSelection());
+
+ GridLayout gridLayout2 = new GridLayout();
+ gridLayout2.numColumns = 3;
+ gridLayout2.marginWidth = 0;
+ certAuthComp.setLayout(gridLayout2);
+ }
+
private void createHttpAuthSection() {
ExpandableComposite section = createSection(compositeContainer,
Messages.AbstractRepositorySettingsPage_Http_Authentication);
@@ -760,6 +878,15 @@ public abstract class AbstractRepositorySettingsPage extends AbstractTaskReposit
oldPassword = ""; //$NON-NLS-1$
}
+ AuthenticationCredentials oldCertCredentials = repository.getCredentials(AuthenticationType.CERTIFICATE);
+ if (oldCertCredentials != null) {
+ oldCertAuthFileName = oldCertCredentials.getUserName();
+ oldCertAuthPassword = oldCertCredentials.getPassword();
+ } else {
+ oldCertAuthPassword = null;
+ oldCertAuthFileName = null;
+ }
+
AuthenticationCredentials oldHttpCredentials = repository.getCredentials(AuthenticationType.HTTP);
if (oldHttpCredentials != null) {
oldHttpAuthUserId = oldHttpCredentials.getUserName();
@@ -792,6 +919,8 @@ public abstract class AbstractRepositorySettingsPage extends AbstractTaskReposit
oldPassword = ""; //$NON-NLS-1$
oldHttpAuthPassword = null;
oldHttpAuthUserId = null;
+ oldCertAuthFileName = null;
+ oldCertAuthPassword = null;
}
}
@@ -1048,6 +1177,29 @@ public abstract class AbstractRepositorySettingsPage extends AbstractTaskReposit
}
/**
+ * @since 3.6
+ */
+ public void setCertAuth(boolean selected) {
+ if (!needsCertAuth) {
+ return;
+ }
+ certAuthButton.setSelection(selected);
+ if (!selected) {
+ oldCertAuthFileName = certAuthFileNameEditor.getStringValue();
+ oldCertAuthPassword = certAuthPasswordEditor.getStringValue();
+ certAuthFileNameEditor.setStringValue(null);
+ certAuthPasswordEditor.setStringValue(null);
+ } else {
+ certAuthFileNameEditor.setStringValue(oldCertAuthFileName);
+ certAuthPasswordEditor.setStringValue(oldCertAuthPassword);
+ }
+ certAuthFileNameEditor.setEnabled(selected, certAuthComp);
+ certBrowseButton.setEnabled(selected);
+ certAuthPasswordEditor.setEnabled(selected, certAuthComp);
+ saveCertPasswordButton.setEnabled(selected);
+ }
+
+ /**
* @since 2.2
*/
public boolean getHttpAuth() {
@@ -1055,6 +1207,13 @@ public abstract class AbstractRepositorySettingsPage extends AbstractTaskReposit
}
/**
+ * @since 3.6
+ */
+ public boolean getCertAuth() {
+ return certAuthButton.getSelection();
+ }
+
+ /**
* @since 2.0
*/
public void setUseDefaultProxy(boolean selected) {
@@ -1217,6 +1376,28 @@ public abstract class AbstractRepositorySettingsPage extends AbstractTaskReposit
}
/**
+ * @since 3.6
+ */
+ public String getCertAuthFileName() {
+ if (needsCertAuth()) {
+ return certAuthFileNameEditor.getStringValue();
+ } else {
+ return ""; //$NON-NLS-1$
+ }
+ }
+
+ /**
+ * @since 3.6
+ */
+ public String getCertAuthPassword() {
+ if (needsCertAuth()) {
+ return certAuthPasswordEditor.getStringValue();
+ } else {
+ return ""; //$NON-NLS-1$
+ }
+ }
+
+ /**
* @since 2.0
*/
public String getProxyHostname() {
@@ -1453,6 +1634,16 @@ public abstract class AbstractRepositorySettingsPage extends AbstractTaskReposit
}
repository.setRepositoryLabel(getRepositoryLabel());
+ if (needsCertAuth()) {
+ if (getCertAuth()) {
+ AuthenticationCredentials webCredentials = new AuthenticationCredentials(getCertAuthFileName(),
+ getCertAuthPassword());
+ repository.setCredentials(AuthenticationType.CERTIFICATE, webCredentials, getSaveCertPassword());
+ } else {
+ repository.setCredentials(AuthenticationType.CERTIFICATE, null, getSaveCertPassword());
+ }
+ }
+
if (needsHttpAuth()) {
if (getHttpAuth()) {
AuthenticationCredentials webCredentials = new AuthenticationCredentials(getHttpAuthUserId(),
@@ -1540,6 +1731,20 @@ public abstract class AbstractRepositorySettingsPage extends AbstractTaskReposit
}
/**
+ * @since 3.6
+ */
+ public boolean needsCertAuth() {
+ return this.needsCertAuth;
+ }
+
+ /**
+ * @since 3.6
+ */
+ public void setNeedsCertAuth(boolean needsCertificate) {
+ this.needsCertAuth = needsCertificate;
+ }
+
+ /**
* @since 2.0
*/
public boolean needsHttpAuth() {
@@ -1646,6 +1851,17 @@ public abstract class AbstractRepositorySettingsPage extends AbstractTaskReposit
}
/**
+ * @since 3.6
+ */
+ public Boolean getSaveCertPassword() {
+ if (needsCertAuth()) {
+ return saveCertPasswordButton.getSelection();
+ } else {
+ return false;
+ }
+ }
+
+ /**
* @since 2.2
*/
public Boolean getSaveHttpPassword() {

Back to the top