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(
UIPreferences.DEFAULT_REPO_DIR,
UIText.GitPreferenceRoot_DefaultRepoFolderLabel, cloningGroup) {
/** The own control is the variableButton */
private static final int NUMBER_OF_OWN_CONTROLS = 1;
@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() {
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);
Group remoteConnectionsGroup = new Group(main, SWT.SHADOW_ETCHED_IN);
GridDataFactory.fillDefaults().grab(true, false).span(GROUP_SPAN, 1)