Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ExtMethodPreferencePage.java')
-rw-r--r--bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ExtMethodPreferencePage.java137
1 files changed, 127 insertions, 10 deletions
diff --git a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ExtMethodPreferencePage.java b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ExtMethodPreferencePage.java
index 6aa2ab602..9eede4d06 100644
--- a/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ExtMethodPreferencePage.java
+++ b/bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ExtMethodPreferencePage.java
@@ -16,9 +16,12 @@ import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.preference.PreferencePage;
import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
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.Control;
import org.eclipse.swt.widgets.Event;
@@ -27,6 +30,8 @@ import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Text;
import org.eclipse.team.internal.ccvs.core.CVSProviderPlugin;
+import org.eclipse.team.internal.ccvs.core.IConnectionMethod;
+import org.eclipse.team.internal.ccvs.core.connection.CVSRepositoryLocation;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
import org.eclipse.ui.help.WorkbenchHelp;
@@ -36,6 +41,10 @@ public class ExtMethodPreferencePage extends PreferencePage implements IWorkbenc
Text cvsRsh;
Text cvsServer;
Text cvsRshParameters;
+ private Button useExternal;
+ private Button useInternal;
+ private Combo methodType;
+ private Control internal, external;
/*
* @see PreferencePage#createContents(Composite)
@@ -45,6 +54,65 @@ public class ExtMethodPreferencePage extends PreferencePage implements IWorkbenc
GridLayout layout = new GridLayout();
layout.marginWidth = 0;
layout.marginHeight = 0;
+ layout.numColumns = 1;
+ composite.setLayout(layout);
+ composite.setLayoutData(new GridData());
+
+ SelectionAdapter selectionListener = new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ updateEnablements();
+ }
+ };
+
+ useExternal = createRadioButton(composite, "Use an external program to connect", 1);
+ useExternal.addSelectionListener(selectionListener);
+ external = createExternalArea(composite);
+
+ useInternal = createRadioButton(composite, "Use another connection method type to connect", 1);
+ useInternal.addSelectionListener(selectionListener);
+ internal = createInternalArea(composite);
+
+ initializeDefaults();
+ WorkbenchHelp.setHelp(composite, IHelpContextIds.EXT_PREFERENCE_PAGE);
+ Dialog.applyDialogFont(parent);
+ return composite;
+ }
+
+ private void updateEnablements() {
+ external.setEnabled(useExternal.getSelection());
+ cvsRsh.setEnabled(useExternal.getSelection());
+ cvsRshParameters.setEnabled(useExternal.getSelection());
+ cvsServer.setEnabled(useExternal.getSelection());
+ internal.setEnabled(!useExternal.getSelection());
+ methodType.setEnabled(!useExternal.getSelection());
+ }
+
+ private Control createInternalArea(Composite parent) {
+ Composite composite = new Composite(parent, SWT.NULL);
+ GridLayout layout = new GridLayout();
+ layout.marginWidth = 5;
+ layout.marginHeight = 5;
+ layout.numColumns = 2;
+ composite.setLayout(layout);
+ composite.setLayoutData(new GridData());
+
+ Label intro = new Label(composite, SWT.LEFT | SWT.WRAP);
+ intro.setText("Choosing to use another connection method allows the meta information in CVS projects to be compatible with external CVS tools while using a custom connection method."); //$NON-NLS-1$
+ GridData data = new GridData();
+ data.horizontalSpan = 2;
+ data.horizontalAlignment = GridData.FILL;
+ data.widthHint = 300;
+ intro.setLayoutData(data);
+
+ createLabel(composite, Policy.bind("CVSPropertiesPage.connectionType"), 1); //$NON-NLS-1$
+ methodType = createCombo(composite);
+ return composite;
+ }
+ protected Control createExternalArea(Composite parent) {
+ Composite composite = new Composite(parent, SWT.NULL);
+ GridLayout layout = new GridLayout();
+ layout.marginWidth = 5;
+ layout.marginHeight = 5;
layout.numColumns = 3;
composite.setLayout(layout);
composite.setLayoutData(new GridData());
@@ -94,20 +162,34 @@ public class ExtMethodPreferencePage extends PreferencePage implements IWorkbenc
data.horizontalAlignment = GridData.FILL;
cvsServer.setLayoutData(data);
- initializeDefaults();
- WorkbenchHelp.setHelp(composite, IHelpContextIds.EXT_PREFERENCE_PAGE);
WorkbenchHelp.setHelp(cvsRsh, IHelpContextIds.EXT_PREFERENCE_RSH);
WorkbenchHelp.setHelp(cvsRshParameters, IHelpContextIds.EXT_PREFERENCE_PARAM);
WorkbenchHelp.setHelp(cvsServer, IHelpContextIds.EXT_PREFERENCE_SERVER);
- Dialog.applyDialogFont(parent);
return composite;
}
- protected void initializeDefaults() {
+ private void initializeDefaults() {
IPreferenceStore store = getPreferenceStore();
cvsRsh.setText(store.getString(ICVSUIConstants.PREF_CVS_RSH));
cvsRshParameters.setText(store.getString(ICVSUIConstants.PREF_CVS_RSH_PARAMETERS));
cvsServer.setText(store.getString(ICVSUIConstants.PREF_CVS_SERVER));
+
+ IConnectionMethod[] methods = CVSRepositoryLocation.getPluggedInConnectionMethods();
+ for (int i = 0; i < methods.length; i++) {
+ String name = methods[i].getName();
+ if (!name.equals("ext")) { //$NON-NLS-1$
+ methodType.add(name);
+ }
+ }
+ String method = store.getString(ICVSUIConstants.PREF_EXT_CONNECTION_METHOD_PROXY);
+ if (method.equals("ext")) {
+ methodType.select(0);
+ } else {
+ methodType.select(methodType.indexOf(method));
+ }
+ useExternal.setSelection(method.equals("ext")); //$NON-NLS-1$
+ useInternal.setSelection(!method.equals("ext")); //$NON-NLS-1$
+ updateEnablements();
}
/*
@@ -128,12 +210,20 @@ public class ExtMethodPreferencePage extends PreferencePage implements IWorkbenc
*/
public boolean performOk() {
IPreferenceStore store = getPreferenceStore();
- store.setValue(ICVSUIConstants.PREF_CVS_RSH, cvsRsh.getText());
- store.setValue(ICVSUIConstants.PREF_CVS_RSH_PARAMETERS, cvsRshParameters.getText());
- store.setValue(ICVSUIConstants.PREF_CVS_SERVER, cvsServer.getText());
- CVSProviderPlugin.getPlugin().setCvsRshCommand(cvsRsh.getText());
- CVSProviderPlugin.getPlugin().setCvsRshParameters(cvsRshParameters.getText());
- CVSProviderPlugin.getPlugin().setCvsServer(cvsServer.getText());
+ String method;
+ if (useExternal.getSelection()) {
+ method = "ext"; //$NON-NLS-1$
+ store.setValue(ICVSUIConstants.PREF_CVS_RSH, cvsRsh.getText());
+ store.setValue(ICVSUIConstants.PREF_CVS_RSH_PARAMETERS, cvsRshParameters.getText());
+ store.setValue(ICVSUIConstants.PREF_CVS_SERVER, cvsServer.getText());
+ CVSProviderPlugin.getPlugin().setCvsRshCommand(cvsRsh.getText());
+ CVSProviderPlugin.getPlugin().setCvsRshParameters(cvsRshParameters.getText());
+ CVSProviderPlugin.getPlugin().setCvsServer(cvsServer.getText());
+ } else {
+ method = methodType.getText();
+ }
+ store.setValue(ICVSUIConstants.PREF_EXT_CONNECTION_METHOD_PROXY, method);
+ CVSRepositoryLocation.setExtConnectionMethodProxy(method);
CVSUIPlugin.getPlugin().savePluginPreferences();
return super.performOk();
}
@@ -143,4 +233,31 @@ public class ExtMethodPreferencePage extends PreferencePage implements IWorkbenc
protected IPreferenceStore doGetPreferenceStore() {
return CVSUIPlugin.getPlugin().getPreferenceStore();
}
+
+ protected Button createRadioButton(Composite parent, String label, int span) {
+ Button button = new Button(parent, SWT.RADIO);
+ button.setText(label);
+ GridData data = new GridData();
+ data.horizontalSpan = span;
+ button.setLayoutData(data);
+ return button;
+ }
+
+ protected Label createLabel(Composite parent, String text, int span) {
+ Label label = new Label(parent, SWT.LEFT);
+ label.setText(text);
+ GridData data = new GridData();
+ data.horizontalSpan = span;
+ data.horizontalAlignment = GridData.FILL;
+ label.setLayoutData(data);
+ return label;
+ }
+ protected Combo createCombo(Composite parent) {
+ Combo combo = new Combo(parent, SWT.READ_ONLY);
+ GridData data = new GridData(GridData.FILL_HORIZONTAL);
+ data.widthHint = IDialogConstants.ENTRY_FIELD_WIDTH;
+ data.horizontalSpan = 1;
+ combo.setLayoutData(data);
+ return combo;
+ }
}

Back to the top