|
Lines 15-25
Link Here
|
| 15 |
import java.util.HashMap; |
15 |
import java.util.HashMap; |
| 16 |
import java.util.Map; |
16 |
import java.util.Map; |
| 17 |
|
17 |
|
|
|
18 |
import org.eclipse.core.runtime.CoreException; |
| 18 |
import org.eclipse.core.runtime.IProgressMonitor; |
19 |
import org.eclipse.core.runtime.IProgressMonitor; |
| 19 |
import org.eclipse.jface.dialogs.MessageDialog; |
20 |
import org.eclipse.jface.dialogs.MessageDialog; |
| 20 |
import org.eclipse.jface.operation.IRunnableWithProgress; |
21 |
import org.eclipse.jface.operation.IRunnableWithProgress; |
| 21 |
import org.eclipse.mylar.context.core.MylarStatusHandler; |
22 |
import org.eclipse.mylar.context.core.MylarStatusHandler; |
| 22 |
import org.eclipse.mylar.internal.tasks.ui.search.AbstractRepositoryQueryPage; |
23 |
import org.eclipse.mylar.internal.tasks.ui.search.AbstractRepositoryQueryPage; |
|
|
24 |
import org.eclipse.mylar.internal.tasks.ui.search.RepositorySearchResult; |
| 23 |
import org.eclipse.mylar.internal.trac.TracRepositoryConnector; |
25 |
import org.eclipse.mylar.internal.trac.TracRepositoryConnector; |
| 24 |
import org.eclipse.mylar.internal.trac.TracRepositoryQuery; |
26 |
import org.eclipse.mylar.internal.trac.TracRepositoryQuery; |
| 25 |
import org.eclipse.mylar.internal.trac.TracUiPlugin; |
27 |
import org.eclipse.mylar.internal.trac.TracUiPlugin; |
|
Lines 28-37
Link Here
|
| 28 |
import org.eclipse.mylar.internal.trac.model.TracSearch; |
30 |
import org.eclipse.mylar.internal.trac.model.TracSearch; |
| 29 |
import org.eclipse.mylar.internal.trac.model.TracSearchFilter; |
31 |
import org.eclipse.mylar.internal.trac.model.TracSearchFilter; |
| 30 |
import org.eclipse.mylar.internal.trac.model.TracSearchFilter.CompareOperator; |
32 |
import org.eclipse.mylar.internal.trac.model.TracSearchFilter.CompareOperator; |
|
|
33 |
import org.eclipse.mylar.internal.trac.ui.search.AbstractQueryHitCollector; |
| 34 |
import org.eclipse.mylar.internal.trac.ui.search.IQueryHitCollector; |
| 35 |
import org.eclipse.mylar.internal.trac.ui.search.RepositorySearchQuery; |
| 36 |
import org.eclipse.mylar.tasks.core.AbstractQueryHit; |
| 31 |
import org.eclipse.mylar.tasks.core.AbstractRepositoryQuery; |
37 |
import org.eclipse.mylar.tasks.core.AbstractRepositoryQuery; |
| 32 |
import org.eclipse.mylar.tasks.core.TaskRepository; |
38 |
import org.eclipse.mylar.tasks.core.TaskRepository; |
| 33 |
import org.eclipse.mylar.tasks.ui.TaskRepositoryManager; |
39 |
import org.eclipse.mylar.tasks.ui.TaskRepositoryManager; |
| 34 |
import org.eclipse.mylar.tasks.ui.TasksUiPlugin; |
40 |
import org.eclipse.mylar.tasks.ui.TasksUiPlugin; |
|
|
41 |
import org.eclipse.search.ui.NewSearchUI; |
| 42 |
import org.eclipse.search.ui.text.Match; |
| 35 |
import org.eclipse.swt.SWT; |
43 |
import org.eclipse.swt.SWT; |
| 36 |
import org.eclipse.swt.events.KeyEvent; |
44 |
import org.eclipse.swt.events.KeyEvent; |
| 37 |
import org.eclipse.swt.events.KeyListener; |
45 |
import org.eclipse.swt.events.KeyListener; |
|
Lines 120-126
Link Here
|
| 120 |
} |
128 |
} |
| 121 |
|
129 |
|
| 122 |
public void createControl(Composite parent) { |
130 |
public void createControl(Composite parent) { |
| 123 |
|
131 |
|
| 124 |
Composite control = new Composite(parent, SWT.NONE); |
132 |
Composite control = new Composite(parent, SWT.NONE); |
| 125 |
GridData gd = new GridData(GridData.FILL_BOTH); |
133 |
GridData gd = new GridData(GridData.FILL_BOTH); |
| 126 |
control.setLayoutData(gd); |
134 |
control.setLayoutData(gd); |
|
Lines 128-134
Link Here
|
| 128 |
control.setLayout(layout); |
136 |
control.setLayout(layout); |
| 129 |
|
137 |
|
| 130 |
createTitleGroup(control); |
138 |
createTitleGroup(control); |
| 131 |
|
139 |
|
| 132 |
summaryField = new TextSearchField("summary"); |
140 |
summaryField = new TextSearchField("summary"); |
| 133 |
summaryField.createControls(control, "Summary"); |
141 |
summaryField.createControls(control, "Summary"); |
| 134 |
|
142 |
|
|
Lines 169-179
Link Here
|
| 169 |
} |
177 |
} |
| 170 |
|
178 |
|
| 171 |
private void createTitleGroup(Composite control) { |
179 |
private void createTitleGroup(Composite control) { |
| 172 |
// Group group = new Group(composite, SWT.NONE); |
180 |
if (inSearchContainer()) { |
| 173 |
// group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); |
181 |
return; |
| 174 |
// group.setText(TITLE_QUERY_TITLE); |
182 |
} |
| 175 |
// group.setLayout(new GridLayout(1, false)); |
183 |
|
| 176 |
if(inSearchContainer()) return; |
|
|
| 177 |
Label titleLabel = new Label(control, SWT.NONE); |
184 |
Label titleLabel = new Label(control, SWT.NONE); |
| 178 |
titleLabel.setText(TITLE_QUERY_TITLE); |
185 |
titleLabel.setText(TITLE_QUERY_TITLE); |
| 179 |
|
186 |
|
|
Lines 306-311
Link Here
|
| 306 |
return group; |
313 |
return group; |
| 307 |
} |
314 |
} |
| 308 |
|
315 |
|
|
|
316 |
@Override |
| 317 |
public void setVisible(boolean visible) { |
| 318 |
super.setVisible(visible); |
| 319 |
|
| 320 |
if (scontainer != null) { |
| 321 |
scontainer.setPerformActionEnabled(true); |
| 322 |
} |
| 323 |
} |
| 324 |
|
| 309 |
private void updateAttributesFromRepository(boolean connect) { |
325 |
private void updateAttributesFromRepository(boolean connect) { |
| 310 |
TracRepositoryConnector connector = (TracRepositoryConnector) TasksUiPlugin.getRepositoryManager() |
326 |
TracRepositoryConnector connector = (TracRepositoryConnector) TasksUiPlugin.getRepositoryManager() |
| 311 |
.getRepositoryConnector(TracUiPlugin.REPOSITORY_KIND); |
327 |
.getRepositoryConnector(TracUiPlugin.REPOSITORY_KIND); |
|
Lines 386-395
Link Here
|
| 386 |
} |
402 |
} |
| 387 |
|
403 |
|
| 388 |
public TracRepositoryQuery getQuery() { |
404 |
public TracRepositoryQuery getQuery() { |
| 389 |
return new TracRepositoryQuery(repository.getUrl(), getQueryUrl(repository.getUrl()), titleText.getText(), |
405 |
return new TracRepositoryQuery(repository.getUrl(), getQueryUrl(repository.getUrl()), getTitleText(), |
| 390 |
TasksUiPlugin.getTaskListManager().getTaskList()); |
406 |
TasksUiPlugin.getTaskListManager().getTaskList()); |
| 391 |
} |
407 |
} |
| 392 |
|
408 |
|
|
|
409 |
private String getTitleText() { |
| 410 |
return (titleText != null) ? titleText.getText() : "<search>"; |
| 411 |
} |
| 412 |
|
| 413 |
public boolean performAction() { |
| 414 |
if (repository == null) { |
| 415 |
MessageDialog.openInformation(Display.getCurrent().getActiveShell(), TracUiPlugin.TITLE_MESSAGE_DIALOG, |
| 416 |
TaskRepositoryManager.MESSAGE_NO_REPOSITORY); |
| 417 |
return false; |
| 418 |
} |
| 419 |
|
| 420 |
final RepositorySearchQuery searchQuery = new RepositorySearchQuery(repository, getQuery()); |
| 421 |
IQueryHitCollector collector = new AbstractQueryHitCollector() { |
| 422 |
|
| 423 |
private RepositorySearchResult searchResult; |
| 424 |
|
| 425 |
@Override |
| 426 |
public void aboutToStart(int startMatchCount) throws CoreException { |
| 427 |
super.aboutToStart(startMatchCount); |
| 428 |
|
| 429 |
NewSearchUI.activateSearchResultView(); |
| 430 |
searchResult = (RepositorySearchResult) searchQuery.getSearchResult(); |
| 431 |
searchResult.removeAll(); |
| 432 |
} |
| 433 |
|
| 434 |
@Override |
| 435 |
public void addMatch(AbstractQueryHit hit) { |
| 436 |
searchResult.addMatch(new Match(hit, 0, 0)); |
| 437 |
} |
| 438 |
|
| 439 |
}; |
| 440 |
searchQuery.setCollector(collector); |
| 441 |
NewSearchUI.runQueryInBackground(searchQuery); |
| 442 |
|
| 443 |
return true; |
| 444 |
} |
| 445 |
|
| 393 |
private abstract class SearchField { |
446 |
private abstract class SearchField { |
| 394 |
|
447 |
|
| 395 |
protected String fieldName; |
448 |
protected String fieldName; |
|
Lines 553-556
Link Here
|
| 553 |
|
606 |
|
| 554 |
} |
607 |
} |
| 555 |
|
608 |
|
| 556 |
} |
609 |
} |