package org.codefaces.ui.wizards;
import org.apache.commons.lang.StringUtils;
import org.codefaces.core.models.Repo;
import org.eclipse.core.runtime.Assert;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
public class RepositorySettingsSection {
protected Text locationText;
protected RepoSettings settings;
protected RepositorySettingsPage settingsPage;
private void bindLocationText() {
locationText.addModifyListener(new ModifyListener() {
@Override
public void modifyText(ModifyEvent event) {
settings.put(RepoSettings.REPO_URL, locationText.getText());
settingsPage.verifyPageComplete();
}
});
}
private void createLocationText(Composite parent) {
locationText = new Text(parent, SWT.BORDER);
locationText.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL
| GridData.HORIZONTAL_ALIGN_FILL));
}
public void handleConnection(IProgressMonitor monitor) {
Object typePara = getSettings().get(RepoSettings.REPO_KIND);
Assert.isTrue(typePara instanceof String);
String type = (String) typePara;
monitor.beginTask("Connecting to " + type + " repository "
+ locationText.getText(), 100);
Repo repo = Repo.create(type, locationText.getText(), null, null);
getSettings().put(RepoSettings.REPO, repo);
monitor.done();
}
public boolean isSettingsValid() {
return !StringUtils.isEmpty(locationText.getText());
}
public void createSettingsSection(RepositorySettingsPage settingsPage,
Composite parentComposite, RepoSettings settings) {
this.settingsPage = settingsPage;
this.settings = settings;
Label locationInputLabel = new Label(parentComposite, SWT.NONE);
locationInputLabel.setText("Location: ");
createLocationText(parentComposite);
bindLocationText();
createAdditionalControls(parentComposite);
}
protected void createAdditionalControls(Composite parentComposite) {
// do nothing
}
protected RepoSettings getSettings() {
return settings;
}
public void setFocus() {
locationText.setFocus();
}
}