/** * */ package org.nightlabs.jfire.issuetracking.ui.issue; import java.util.List; import javax.jdo.FetchPlan; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.swt.widgets.Composite; import org.nightlabs.base.ui.composite.XComboComposite; import org.nightlabs.base.ui.job.Job; import org.nightlabs.base.ui.table.TableLabelProvider; import org.nightlabs.jdo.NLJDOHelper; import org.nightlabs.jfire.issue.IssueType; import org.nightlabs.jfire.issue.dao.IssueTypeDAO; import org.nightlabs.progress.ProgressMonitor; /** * @author abieber * */ public class IssueTypeCombo extends XComboComposite<IssueType> { /** * @param parent * @param comboStyle */ public IssueTypeCombo(Composite parent, int comboStyle) { super(parent, comboStyle); init(); } /** * @param parent * @param comboStyle * @param caption */ public IssueTypeCombo(Composite parent, int comboStyle, String caption) { super(parent, comboStyle, caption); init(); } private void init() { Job loadJob = new Job("Load IssueTypes") { @Override protected IStatus run(ProgressMonitor monitor) throws Exception { final List<IssueType> allIssueTypes = IssueTypeDAO.sharedInstance().getAllIssueTypes(new String[] {FetchPlan.DEFAULT, IssueType.FETCH_GROUP_NAME}, NLJDOHelper.MAX_FETCH_DEPTH_NO_LIMIT, monitor); getDisplay().syncExec(new Runnable() { public void run() { if (allIssueTypes != null) { setInput(allIssueTypes); if (allIssueTypes.size() > 0) { setSelection(allIssueTypes.get(0)); } } } }); return Status.OK_STATUS; } }; loadJob.schedule(); setLabelProvider(new TableLabelProvider() { @Override public String getColumnText(Object element, int arg1) { return ((IssueType) element).getName().getText(); } }); } }