diff options
Diffstat (limited to 'org.eclipse.mylyn.github.ui/src/org/eclipse/mylyn/github/ui/internal/GitHubRepositoryQueryPage.java')
-rw-r--r-- | org.eclipse.mylyn.github.ui/src/org/eclipse/mylyn/github/ui/internal/GitHubRepositoryQueryPage.java | 196 |
1 files changed, 117 insertions, 79 deletions
diff --git a/org.eclipse.mylyn.github.ui/src/org/eclipse/mylyn/github/ui/internal/GitHubRepositoryQueryPage.java b/org.eclipse.mylyn.github.ui/src/org/eclipse/mylyn/github/ui/internal/GitHubRepositoryQueryPage.java index 090423d3..1a2d9410 100644 --- a/org.eclipse.mylyn.github.ui/src/org/eclipse/mylyn/github/ui/internal/GitHubRepositoryQueryPage.java +++ b/org.eclipse.mylyn.github.ui/src/org/eclipse/mylyn/github/ui/internal/GitHubRepositoryQueryPage.java @@ -12,9 +12,9 @@ *******************************************************************************/ package org.eclipse.mylyn.github.ui.internal; -import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; import java.util.Collections; +import java.util.Comparator; import java.util.LinkedList; import java.util.List; @@ -24,7 +24,7 @@ import org.eclipse.core.runtime.IStatus; import org.eclipse.jface.dialogs.ErrorDialog; import org.eclipse.jface.layout.GridDataFactory; import org.eclipse.jface.layout.GridLayoutFactory; -import org.eclipse.jface.operation.IRunnableWithProgress; +import org.eclipse.jface.operation.IRunnableContext; import org.eclipse.jface.viewers.ArrayContentProvider; import org.eclipse.jface.viewers.CheckboxTableViewer; import org.eclipse.jface.viewers.ISelectionChangedListener; @@ -36,10 +36,15 @@ import org.eclipse.mylyn.github.internal.IssueService; import org.eclipse.mylyn.github.internal.LabelComparator; import org.eclipse.mylyn.github.internal.Milestone; import org.eclipse.mylyn.github.internal.QueryUtils; +import org.eclipse.mylyn.internal.provisional.commons.ui.CommonUiUtil; +import org.eclipse.mylyn.internal.provisional.commons.ui.ICoreRunnable; import org.eclipse.mylyn.tasks.core.IRepositoryQuery; import org.eclipse.mylyn.tasks.core.TaskRepository; +import org.eclipse.mylyn.tasks.ui.TasksUiImages; import org.eclipse.mylyn.tasks.ui.wizards.AbstractRepositoryQueryPage; import org.eclipse.swt.SWT; +import org.eclipse.swt.events.DisposeEvent; +import org.eclipse.swt.events.DisposeListener; import org.eclipse.swt.events.ModifyEvent; import org.eclipse.swt.events.ModifyListener; import org.eclipse.swt.events.SelectionAdapter; @@ -52,6 +57,8 @@ import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Group; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Text; +import org.eclipse.swt.widgets.ToolBar; +import org.eclipse.swt.widgets.ToolItem; import org.eclipse.ui.PlatformUI; /** @@ -124,39 +131,13 @@ public class GitHubRepositoryQueryPage extends AbstractRepositoryQueryPage { }); } - /** - * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite) - */ - public void createControl(Composite parent) { - Composite displayArea = new Composite(parent, SWT.NONE); - GridLayoutFactory.fillDefaults().numColumns(2).equalWidth(false) - .applyTo(displayArea); - GridDataFactory.fillDefaults().grab(true, true).applyTo(displayArea); - - if (!inSearchContainer()) { - Composite titleArea = new Composite(displayArea, SWT.NONE); - GridLayoutFactory.fillDefaults().numColumns(2).applyTo(titleArea); - GridDataFactory.fillDefaults().grab(true, false).span(2, 1) - .applyTo(titleArea); - - new Label(titleArea, SWT.NONE) - .setText(Messages.GitHubRepositoryQueryPage_TitleLabel); - titleText = new Text(titleArea, SWT.SINGLE | SWT.BORDER); - GridDataFactory.fillDefaults().grab(true, false).applyTo(titleText); - titleText.addModifyListener(new ModifyListener() { - - public void modifyText(ModifyEvent e) { - setPageComplete(isPageComplete()); - } - }); - } - - Composite leftArea = new Composite(displayArea, SWT.NONE); - GridLayoutFactory.fillDefaults().numColumns(2).applyTo(leftArea); - GridDataFactory.fillDefaults().grab(true, true).applyTo(leftArea); + private void createOptionsArea(Composite parent) { + Composite optionsArea = new Composite(parent, SWT.NONE); + GridLayoutFactory.fillDefaults().numColumns(2).applyTo(optionsArea); + GridDataFactory.fillDefaults().grab(true, true).applyTo(optionsArea); - Composite statusArea = new Composite(leftArea, SWT.NONE); - GridLayoutFactory.fillDefaults().numColumns(3).equalWidth(false) + Composite statusArea = new Composite(optionsArea, SWT.NONE); + GridLayoutFactory.fillDefaults().numColumns(4).equalWidth(false) .applyTo(statusArea); GridDataFactory.fillDefaults().grab(true, false).span(2, 1) .applyTo(statusArea); @@ -174,26 +155,80 @@ public class GitHubRepositoryQueryPage extends AbstractRepositoryQueryPage { closedButton.setText(Messages.GitHubRepositoryQueryPage_StatusClosed); closedButton.addSelectionListener(this.completeListener); - Label milestonesLabel = new Label(leftArea, SWT.NONE); + ToolBar toolbar = new ToolBar(statusArea, SWT.FLAT); + ToolItem updateItem = new ToolItem(toolbar, SWT.PUSH); + final Image updateImage = TasksUiImages.REPOSITORY_UPDATE_CONFIGURATION + .createImage(); + toolbar.addDisposeListener(new DisposeListener() { + + public void widgetDisposed(DisposeEvent e) { + updateImage.dispose(); + } + }); + updateItem.setImage(updateImage); + updateItem + .setToolTipText(Messages.GitHubRepositoryQueryPage_TooltipUpdateRepository); + GridDataFactory.fillDefaults().align(SWT.END, SWT.FILL) + .grab(true, false).applyTo(toolbar); + updateItem.addSelectionListener(new SelectionAdapter() { + + public void widgetSelected(SelectionEvent e) { + refreshRepository(); + } + + }); + + Label milestonesLabel = new Label(optionsArea, SWT.NONE); milestonesLabel .setText(Messages.GitHubRepositoryQueryPage_MilestoneLabel); - milestoneCombo = new Combo(leftArea, SWT.DROP_DOWN | SWT.READ_ONLY); + milestoneCombo = new Combo(optionsArea, SWT.DROP_DOWN | SWT.READ_ONLY); GridDataFactory.fillDefaults().grab(true, false) .applyTo(milestoneCombo); - Label assigneeLabel = new Label(leftArea, SWT.NONE); + Label assigneeLabel = new Label(optionsArea, SWT.NONE); assigneeLabel.setText(Messages.GitHubRepositoryQueryPage_AssigneeLabel); - assigneeText = new Text(leftArea, SWT.BORDER | SWT.SINGLE); + assigneeText = new Text(optionsArea, SWT.BORDER | SWT.SINGLE); GridDataFactory.fillDefaults().grab(true, false).applyTo(assigneeText); - Label mentionLabel = new Label(leftArea, SWT.NONE); + Label mentionLabel = new Label(optionsArea, SWT.NONE); mentionLabel.setText(Messages.GitHubRepositoryQueryPage_MentionsLabel); - mentionText = new Text(leftArea, SWT.BORDER | SWT.SINGLE); + mentionText = new Text(optionsArea, SWT.BORDER | SWT.SINGLE); GridDataFactory.fillDefaults().grab(true, false).applyTo(mentionText); + } + + /** + * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite) + */ + public void createControl(Composite parent) { + Composite displayArea = new Composite(parent, SWT.NONE); + GridLayoutFactory.fillDefaults().numColumns(2).equalWidth(true) + .applyTo(displayArea); + GridDataFactory.fillDefaults().grab(true, true).applyTo(displayArea); + + if (!inSearchContainer()) { + Composite titleArea = new Composite(displayArea, SWT.NONE); + GridLayoutFactory.fillDefaults().numColumns(2).applyTo(titleArea); + GridDataFactory.fillDefaults().grab(true, false).span(2, 1) + .applyTo(titleArea); + + new Label(titleArea, SWT.NONE) + .setText(Messages.GitHubRepositoryQueryPage_TitleLabel); + titleText = new Text(titleArea, SWT.SINGLE | SWT.BORDER); + GridDataFactory.fillDefaults().grab(true, false).applyTo(titleText); + titleText.addModifyListener(new ModifyListener() { + + public void modifyText(ModifyEvent e) { + setPageComplete(isPageComplete()); + } + }); + } + + createOptionsArea(displayArea); + createLabelsArea(displayArea); loadRepository(); @@ -271,6 +306,12 @@ public class GitHubRepositoryQueryPage extends AbstractRepositoryQueryPage { this.milestoneCombo.removeAll(); this.milestoneCombo .add(Messages.GitHubRepositoryQueryPage_MilestoneNone); + Collections.sort(this.milestones, new Comparator<Milestone>() { + + public int compare(Milestone m1, Milestone m2) { + return m1.getTitle().compareToIgnoreCase(m2.getTitle()); + } + }); for (Milestone milestone : milestones) this.milestoneCombo.add(milestone.getTitle()); @@ -281,49 +322,46 @@ public class GitHubRepositoryQueryPage extends AbstractRepositoryQueryPage { private void refreshRepository() { try { - getContainer().run(true, true, new IRunnableWithProgress() { + ICoreRunnable runnable = new ICoreRunnable() { - public void run(IProgressMonitor monitor) - throws InvocationTargetException, InterruptedException { + public void run(IProgressMonitor monitor) throws CoreException { Policy.monitorFor(monitor); monitor.beginTask("", 2); //$NON-NLS-1$ - try { - GitHubRepositoryConnector connector = GitHubRepositoryConnectorUI - .getCoreConnector(); - TaskRepository repository = getTaskRepository(); - - monitor.setTaskName(Messages.GitHubRepositoryQueryPage_TaskLoadingLabels); - connector.refreshLabels(repository); - monitor.worked(1); - - monitor.setTaskName(Messages.GitHubRepositoryQueryPage_TaskLoadingMilestones); - connector.refreshMilestones(repository); - monitor.done(); - - PlatformUI.getWorkbench().getDisplay() - .asyncExec(new Runnable() { - - public void run() { - updateLabels(); - updateMilestones(); - initialize(); - } - }); - } catch (CoreException e) { - throw new InvocationTargetException(e); - } + GitHubRepositoryConnector connector = GitHubRepositoryConnectorUI + .getCoreConnector(); + TaskRepository repository = getTaskRepository(); + + monitor.setTaskName(Messages.GitHubRepositoryQueryPage_TaskLoadingLabels); + connector.refreshLabels(repository); + monitor.worked(1); + + monitor.setTaskName(Messages.GitHubRepositoryQueryPage_TaskLoadingMilestones); + connector.refreshMilestones(repository); + monitor.done(); + + PlatformUI.getWorkbench().getDisplay() + .asyncExec(new Runnable() { + + public void run() { + updateLabels(); + updateMilestones(); + initialize(); + } + }); } - }); - } catch (InvocationTargetException e) { - Throwable target = e.getTargetException(); - if (target instanceof CoreException) { - IStatus status = ((CoreException) target).getStatus(); - ErrorDialog.openError(getShell(), - Messages.GitHubRepositoryQueryPage_ErrorLoading, - target.getLocalizedMessage(), status); - } - } catch (InterruptedException ignore) { - // Ignore + }; + IRunnableContext context = getContainer(); + if (context == null) + if (inSearchContainer()) + context = getSearchContainer().getRunnableContext(); + else + context = PlatformUI.getWorkbench().getProgressService(); + CommonUiUtil.run(context, runnable); + } catch (CoreException e) { + IStatus status = e.getStatus(); + ErrorDialog.openError(getShell(), + Messages.GitHubRepositoryQueryPage_ErrorLoading, + e.getLocalizedMessage(), status); } } |