in org.eclipse.egit.ui/src/org/eclipse/egit/ui/internal/preferences/GitPreferenceRoot.java [116:411]
protected void createFieldEditors() {
Composite main = getFieldEditorParent();
GridLayoutFactory.swtDefaults().margins(0, 0).applyTo(main);
Group cloningGroup = new Group(main, SWT.SHADOW_ETCHED_IN);
cloningGroup.setText(UIText.GitPreferenceRoot_CloningRepoGroupHeader);
GridDataFactory.fillDefaults().grab(true, false).span(GROUP_SPAN, 1)
.applyTo(cloningGroup);
DirectoryFieldEditor editor = new DirectoryFieldEditor(
GitCorePreferences.core_defaultRepositoryDir,
UIText.GitPreferenceRoot_DefaultRepoFolderLabel, cloningGroup) {
/** The own control is the variableButton */
private static final int NUMBER_OF_OWN_CONTROLS = 1;
@Override
public void setPreferenceStore(IPreferenceStore store) {
super.setPreferenceStore(
store == null ? null : getSecondaryPreferenceStore());
}
@Override
protected boolean doCheckState() {
String fileName = getTextControl().getText();
fileName = fileName.trim();
if (fileName.length() == 0 && isEmptyStringAllowed())
return true;
IStringVariableManager manager = VariablesPlugin.getDefault().getStringVariableManager();
String substitutedFileName;
try {
substitutedFileName = manager.performStringSubstitution(fileName);
} catch (CoreException e) {
// It's apparently invalid
return false;
}
File file = new File(substitutedFileName);
// other than the super implementation, we don't
// require the file to exist
return !file.exists() || file.isDirectory();
}
@Override
public int getNumberOfControls() {
return super.getNumberOfControls() + NUMBER_OF_OWN_CONTROLS;
}
@Override
protected void doFillIntoGrid(Composite parent, int numColumns) {
super.doFillIntoGrid(parent, numColumns - NUMBER_OF_OWN_CONTROLS);
}
@Override
protected void adjustForNumColumns(int numColumns) {
super.adjustForNumColumns(numColumns - NUMBER_OF_OWN_CONTROLS);
}
@Override
protected void createControl(Composite parent) {
// setting validate strategy using the setter method is too late
super.setValidateStrategy(StringFieldEditor.VALIDATE_ON_KEY_STROKE);
super.createControl(parent);
if (HAS_DEBUG_UI)
addVariablesButton(parent);
}
private void addVariablesButton(Composite parent) {
Button variableButton = new Button(parent, SWT.PUSH);
variableButton.setText(UIText.GitPreferenceRoot_DefaultRepoFolderVariableButton);
variableButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
org.eclipse.debug.ui.StringVariableSelectionDialog dialog = new org.eclipse.debug.ui.StringVariableSelectionDialog(
getShell());
int returnCode = dialog.open();
if (returnCode == Window.OK)
setStringValue(dialog.getVariableExpression());
}
});
}
};
updateMargins(cloningGroup);
editor.setEmptyStringAllowed(false);
editor.getLabelControl(cloningGroup).setToolTipText(
UIText.GitPreferenceRoot_DefaultRepoFolderTooltip);
addField(editor);
remoteConnectionsGroup = new Group(main, SWT.SHADOW_ETCHED_IN);
GridDataFactory.fillDefaults().grab(true, false).span(GROUP_SPAN, 1)
.applyTo(remoteConnectionsGroup);
remoteConnectionsGroup
.setText(UIText.GitPreferenceRoot_RemoteConnectionsGroupHeader);
IntegerFieldEditor pullEditor = new IntegerFieldEditor(
GitCorePreferences.core_maxPullThreadsCount,
UIText.GitPreferenceRoot_MaxPullThreadsCount,
remoteConnectionsGroup) {
@Override
public void setPreferenceStore(IPreferenceStore store) {
super.setPreferenceStore(
store == null ? null : getSecondaryPreferenceStore());
}
};
pullEditor.getLabelControl(remoteConnectionsGroup).setToolTipText(
UIText.GitPreferenceRoot_MaxPullThreadsCountTooltip);
addField(pullEditor);
IntegerFieldEditor timeoutEditor = new IntegerFieldEditor(
GitCorePreferences.core_remoteConnectionTimeout,
UIText.RemoteConnectionPreferencePage_TimeoutLabel,
remoteConnectionsGroup) {
@Override
public void setPreferenceStore(IPreferenceStore store) {
super.setPreferenceStore(
store == null ? null : getSecondaryPreferenceStore());
}
};
timeoutEditor.getLabelControl(remoteConnectionsGroup).setToolTipText(
UIText.RemoteConnectionPreferencePage_ZeroValueTooltip);
addField(timeoutEditor);
ComboFieldEditor httpClient = new ComboFieldEditor(
GitCorePreferences.core_httpClient,
UIText.RemoteConnectionPreferencePage_HttpClientLabel,
HTTP_CLIENT_NAMES_AND_VALUES, remoteConnectionsGroup) {
@Override
public void setPreferenceStore(IPreferenceStore store) {
super.setPreferenceStore(
store == null ? null : getSecondaryPreferenceStore());
}
};
addField(httpClient);
ConnectorFactory factory = ConnectorFactory.getDefault();
if (factory != null) {
boolean isWindows = SystemReader.getInstance().isWindows();
useSshAgent = new BooleanFieldEditor(
GitCorePreferences.core_sshAgent,
UIText.GitPreferenceRoot_SshAgent_Label,
remoteConnectionsGroup) {
@Override
public int getNumberOfControls() {
return 2;
}
@Override
public void setPreferenceStore(IPreferenceStore store) {
super.setPreferenceStore(store == null ? null
: getSecondaryPreferenceStore());
}
};
if (!isWindows) {
String productName = getProductName();
useSshAgent.getDescriptionControl(remoteConnectionsGroup)
.setToolTipText(MessageFormat.format(
UIText.GitPreferenceRoot_SshAgent_Tooltip,
productName));
}
addField(useSshAgent);
Collection<ConnectorDescriptor> available = factory
.getSupportedConnectors();
if (available.size() > 1) {
String[][] items = new String[available.size()][2];
int i = 0;
for (ConnectorDescriptor desc : available) {
items[i][0] = desc.getDisplayName();
items[i][1] = desc.getIdentityAgent();
i++;
}
defaultSshAgent = new ComboFieldEditor(
GitCorePreferences.core_sshDefaultAgent,
UIText.GitPreferenceRoot_SshDefaultAgent_Label, items,
remoteConnectionsGroup) {
@Override
public void setPreferenceStore(IPreferenceStore store) {
super.setPreferenceStore(store == null ? null
: getSecondaryPreferenceStore());
}
};
defaultSshAgent.getLabelControl(remoteConnectionsGroup)
.setToolTipText(
UIText.GitPreferenceRoot_SshDefaultAgent_Tooltip);
GridDataFactory.fillDefaults()
.indent(UIUtils.getControlIndent(), 0)
.applyTo(defaultSshAgent
.getLabelControl(remoteConnectionsGroup));
addField(defaultSshAgent);
}
}
updateMargins(remoteConnectionsGroup);
Group repoChangeScannerGroup = new Group(main, SWT.SHADOW_ETCHED_IN);
GridDataFactory.fillDefaults().grab(true, false).span(GROUP_SPAN, 1)
.applyTo(repoChangeScannerGroup);
repoChangeScannerGroup
.setText(UIText.GitPreferenceRoot_RepoChangeScannerGroupHeader);
IntegerFieldEditor intervalField = new IntegerFieldEditor(
UIPreferences.REFRESH_INDEX_INTERVAL,
UIText.RefreshPreferencesPage_RefreshIndexInterval,
repoChangeScannerGroup);
intervalField.getLabelControl(repoChangeScannerGroup).setToolTipText(
UIText.RefreshPreferencesPage_RefreshIndexIntervalTooltip);
addField(intervalField);
addField(new BooleanFieldEditor(UIPreferences.REFRESH_ONLY_WHEN_ACTIVE,
UIText.RefreshPreferencesPage_RefreshOnlyWhenActive,
repoChangeScannerGroup) {
@Override
public int getNumberOfControls() {
return 2;
}
});
updateMargins(repoChangeScannerGroup);
Group mergeGroup = new Group(main, SWT.SHADOW_ETCHED_IN);
GridDataFactory.fillDefaults().grab(true, false).span(GROUP_SPAN, 1)
.applyTo(mergeGroup);
mergeGroup.setText(UIText.GitPreferenceRoot_MergeGroupHeader);
ComboFieldEditor mergeMode = new ComboFieldEditor(
UIPreferences.MERGE_MODE,
UIText.GitPreferenceRoot_MergeModeLabel,
MERGE_MODE_NAMES_AND_VALUES, mergeGroup);
mergeMode.getLabelControl(mergeGroup).setToolTipText(
UIText.GitPreferenceRoot_MergeModeTooltip);
addField(mergeMode);
updateMargins(mergeGroup);
Group blameGroup = new Group(main, SWT.SHADOW_ETCHED_IN);
GridDataFactory.fillDefaults().grab(true, false).span(GROUP_SPAN, 1)
.applyTo(blameGroup);
blameGroup.setText(UIText.GitPreferenceRoot_BlameGroupHeader);
addField(new BooleanFieldEditor(UIPreferences.BLAME_IGNORE_WHITESPACE,
UIText.GitPreferenceRoot_BlameIgnoreWhitespaceLabel, blameGroup));
updateMargins(blameGroup);
Group secureGroup = new Group(main, SWT.SHADOW_ETCHED_IN);
GridDataFactory.fillDefaults().grab(true, false).span(GROUP_SPAN, 1)
.applyTo(secureGroup);
secureGroup.setText(UIText.GitPreferenceRoot_SecureStoreGroupLabel);
addField(new BooleanFieldEditor(UIPreferences.CLONE_WIZARD_STORE_SECURESTORE,
UIText.GitPreferenceRoot_SecureStoreUseByDefault, secureGroup));
addField(new BooleanFieldEditor(
GitCorePreferences.core_saveCredentialsInSecureStore,
UIText.GitPreferenceRoot_SecureStoreUseForSshKeys,
secureGroup) {
@Override
public void setPreferenceStore(IPreferenceStore store) {
super.setPreferenceStore(
store == null ? null : getSecondaryPreferenceStore());
}
});
updateMargins(secureGroup);
boolean lfsAvailable = LfsFactory.getInstance().isAvailable()
&& LfsFactory.getInstance().getInstallCommand() != null;
Group lfsGroup = new Group(main, SWT.SHADOW_ETCHED_IN);
GridLayoutFactory.fillDefaults().applyTo(lfsGroup);
GridDataFactory.fillDefaults().grab(true, false).span(GROUP_SPAN, 1)
.applyTo(lfsGroup);
lfsGroup.setText(
lfsAvailable ? UIText.GitPreferenceRoot_lfsSupportCaption : UIText.GitPreferenceRoot_lfsSupportCaptionNotAvailable);
Button lfsEnable = new Button(lfsGroup, SWT.PUSH);
lfsEnable.setEnabled(lfsAvailable);
lfsEnable.setText(UIText.GitPreferenceRoot_lfsSupportInstall);
lfsEnable.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
// enable LFS support for user.
LfsInstallCommand cmd = LfsFactory.getInstance()
.getInstallCommand();
try {
if (cmd != null) {
cmd.call();
MessageDialog.openInformation(getShell(),
UIText.GitPreferenceRoot_lfsSupportSuccessTitle,
UIText.GitPreferenceRoot_lfsSupportSuccessMessage);
}
} catch (Exception ex) {
Activator.handleError(
UIText.ConfigurationChecker_installLfsCannotInstall,
ex, true);
}
}
});
updateMargins(lfsGroup);
}