package org.bndtools.templating.jgit.ui;
import org.bndtools.templating.jgit.GitRepoPreferences;
import org.eclipse.jface.preference.PreferencePage;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
import org.osgi.framework.Bundle;
import org.osgi.framework.FrameworkUtil;
public class GitRepoTemplatePreferencePage extends PreferencePage implements IWorkbenchPreferencePage {
private final Bundle bundle = FrameworkUtil.getBundle(GitRepoTemplatePreferencePage.class);
private final EditableParametersPart githubReposPart = new EditableParametersPart("GitHub Repositories:", ImageDescriptor.createFromURL(bundle.getEntry("icons/github.png")), new NewEntryDialogFactory() {
@Override
public AbstractNewEntryDialog create(Shell parentShell) {
return new GitHubRepoDialog(parentShell, "Add Repository");
}
});
private final EditableParametersPart plainGitPart = new EditableParametersPart("Raw Git Clone URLs:", ImageDescriptor.createFromURL(bundle.getEntry("icons/git-16px.png")), new NewEntryDialogFactory() {
@Override
public AbstractNewEntryDialog create(Shell parentShell) {
return new GitCloneURLDialog(parentShell, "Add Clone URL");
}
});
private GitRepoPreferences prefs;
@Override
public void init(IWorkbench workbench) {
this.prefs = new GitRepoPreferences();
githubReposPart.setParameters(prefs.getGithubRepos());
plainGitPart.setParameters(prefs.getGitRepos());
}
@Override
protected Control createContents(Composite parent) {
Composite composite = new Composite(parent, SWT.NONE);
GridLayout layout = new GridLayout(1, false);
composite.setLayout(layout);
Control groupGithub = githubReposPart.createControl(composite);
groupGithub.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
Control groupPlainGit = plainGitPart.createControl(composite);
groupPlainGit.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
return composite;
}
@Override
public boolean performOk() {
prefs.setGithubRepos(githubReposPart.getParameters());
prefs.setGitRepos(plainGitPart.getParameters());
return prefs.save();
}
}