Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/wizard/TracFilterQueryPage.java')
-rw-r--r--org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/wizard/TracFilterQueryPage.java449
1 files changed, 0 insertions, 449 deletions
diff --git a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/wizard/TracFilterQueryPage.java b/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/wizard/TracFilterQueryPage.java
deleted file mode 100644
index 18553c803..000000000
--- a/org.eclipse.mylyn.trac.ui/src/org/eclipse/mylyn/internal/trac/ui/wizard/TracFilterQueryPage.java
+++ /dev/null
@@ -1,449 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 Steffen Pingel and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Tasktop Technologies - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.mylyn.internal.trac.ui.wizard;
-
-import java.util.ArrayList;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.mylyn.commons.core.StatusHandler;
-import org.eclipse.mylyn.internal.trac.core.client.ITracClient;
-import org.eclipse.mylyn.internal.trac.core.model.TracSearch;
-import org.eclipse.mylyn.internal.trac.core.model.TracSearchFilter;
-import org.eclipse.mylyn.internal.trac.core.model.TracSearchFilter.CompareOperator;
-import org.eclipse.mylyn.internal.trac.core.util.TracUtil;
-import org.eclipse.mylyn.internal.trac.ui.TracUiPlugin;
-import org.eclipse.mylyn.tasks.core.IRepositoryQuery;
-import org.eclipse.mylyn.tasks.core.TaskRepository;
-import org.eclipse.mylyn.tasks.ui.wizards.AbstractRepositoryQueryPage;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.ScrolledComposite;
-import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.events.KeyListener;
-import org.eclipse.swt.events.ModifyEvent;
-import org.eclipse.swt.events.ModifyListener;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Combo;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Group;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Text;
-
-/**
- * @author Steffen Pingel
- */
-public class TracFilterQueryPage extends AbstractRepositoryQueryPage {
-
- private static final String TITLE = Messages.TracFilterQueryPage_New_Trac_Query;
-
- private static final String DESCRIPTION = Messages.TracFilterQueryPage_Add_search_filters_to_define_query;
-
- private static final String TITLE_QUERY_TITLE = Messages.TracFilterQueryPage_Query_Title;
-
- private Text titleText;
-
- private Composite scrollComposite;
-
- /* Maintain order of criterions in order to be able to restore this later. */
- private final Set<SearchField> visibleSearchFields = new LinkedHashSet<SearchField>();
-
- private List<SearchField> searchFields;
-
- public TracFilterQueryPage(TaskRepository repository, IRepositoryQuery query) {
- super(TITLE, repository, query);
- setTitle(TITLE);
- setDescription(DESCRIPTION);
- }
-
- @Override
- public void applyTo(IRepositoryQuery query) {
- query.setUrl(getQueryUrl(getTaskRepository().getRepositoryUrl()));
- query.setSummary(getQueryTitle());
- }
-
- public void createControl(Composite parent) {
- Composite composite = new Composite(parent, SWT.NONE);
- composite.setLayoutData(new GridData());
- composite.setLayout(new GridLayout(1, false));
-
- createTitleGroup(composite);
-
- ScrolledComposite scrolledComposite = new ScrolledComposite(composite, SWT.V_SCROLL | SWT.BORDER);
- GridData gd = new GridData(GridData.FILL, GridData.FILL, true, true);
- scrolledComposite.setExpandHorizontal(true);
- scrolledComposite.setLayoutData(gd);
-
- scrollComposite = new Composite(scrolledComposite, SWT.None);
- scrolledComposite.setContent(scrollComposite);
- scrollComposite.setLayout(new GridLayout(4, false));
-
- createAddFilterGroup(composite);
-
- if (getQuery() != null) {
- titleText.setText(getQuery().getSummary());
- TracSearch search = TracUtil.toTracSearch(getQuery());
- if (search != null) {
- restoreWidgetValues(search);
- }
- }
-
- Dialog.applyDialogFont(composite);
- setControl(composite);
- }
-
- @Override
- public String getQueryTitle() {
- return (titleText != null) ? titleText.getText() : null;
- }
-
- private void restoreWidgetValues(TracSearch search) {
- List<TracSearchFilter> filters = search.getFilters();
- for (TracSearchFilter filter : filters) {
- SearchField field = getSearchField(filter.getFieldName());
- if (field != null) {
- showSearchField(field, filter);
- } else {
- StatusHandler.log(new Status(IStatus.WARNING, TracUiPlugin.ID_PLUGIN,
- "Ignoring invalid search filter: " + filter)); //$NON-NLS-1$
- }
- }
- }
-
- private SearchField getSearchField(String fieldName) {
- for (SearchField searchField : searchFields) {
- if (searchField.getFieldName().equals(fieldName)) {
- return searchField;
- }
- }
- return null;
- }
-
- private void createAddFilterGroup(Composite parent) {
- GridLayout layout;
- GridData gd;
-
- Composite composite = new Composite(parent, SWT.NONE);
- layout = new GridLayout(2, false);
- composite.setLayout(layout);
- composite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- gd = new GridData(GridData.BEGINNING | GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL);
- composite.setLayoutData(gd);
-
- Label label = new Label(composite, SWT.LEFT);
- label.setText(Messages.TracFilterQueryPage_Select_to_add_filter);
-
- // condition
- final Combo filterCombo = new Combo(composite, SWT.SINGLE | SWT.BORDER | SWT.READ_ONLY);
-
- searchFields = new ArrayList<SearchField>();
- searchFields.add(new TextSearchField("summary", Messages.TracFilterQueryPage_Summary)); //$NON-NLS-1$
- searchFields.add(new TextSearchField("reporter", Messages.TracFilterQueryPage_Reporter)); //$NON-NLS-1$
- searchFields.add(new TextSearchField("owner", Messages.TracFilterQueryPage_Owner)); //$NON-NLS-1$
- searchFields.add(new TextSearchField("type", Messages.TracFilterQueryPage_Type)); //$NON-NLS-1$
- searchFields.add(new TextSearchField("status", Messages.TracFilterQueryPage_Status)); //$NON-NLS-1$
- searchFields.add(new TextSearchField("priority", Messages.TracFilterQueryPage_Priority)); //$NON-NLS-1$
- searchFields.add(new TextSearchField("milestone", Messages.TracFilterQueryPage_Milestone)); //$NON-NLS-1$
- searchFields.add(new TextSearchField("component", Messages.TracFilterQueryPage_Component)); //$NON-NLS-1$
- searchFields.add(new TextSearchField("version", Messages.TracFilterQueryPage_Version)); //$NON-NLS-1$
- searchFields.add(new TextSearchField("resoution", Messages.TracFilterQueryPage_Resolution)); //$NON-NLS-1$
- searchFields.add(new TextSearchField("keywords", Messages.TracFilterQueryPage_Keywords)); //$NON-NLS-1$
- searchFields.add(new TextSearchField("cc", Messages.TracFilterQueryPage_CC)); //$NON-NLS-1$
-
- filterCombo.add(""); //$NON-NLS-1$
- for (SearchField field : searchFields) {
- filterCombo.add(field.getDisplayName());
- }
-
- filterCombo.addModifyListener(new ModifyListener() {
- public void modifyText(ModifyEvent e) {
- if (filterCombo.getText().length() > 0) {
- SearchField field = searchFields.get(filterCombo.getSelectionIndex() - 1);
- showSearchField(field, null);
- filterCombo.setText(""); //$NON-NLS-1$
- }
- }
- });
- }
-
- private void createTitleGroup(Composite composite) {
- Group group = new Group(composite, SWT.NONE);
- group.setText(TITLE_QUERY_TITLE);
- group.setLayout(new GridLayout(1, false));
- GridData gd = new GridData(GridData.FILL_HORIZONTAL);
- group.setLayoutData(gd);
-
- titleText = new Text(group, SWT.BORDER);
- gd = new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL);
- titleText.setLayoutData(gd);
-
- titleText.addKeyListener(new KeyListener() {
- public void keyPressed(KeyEvent e) {
- // ignore
- }
-
- public void keyReleased(KeyEvent e) {
- getContainer().updateButtons();
- }
- });
- }
-
- @Override
- public boolean isPageComplete() {
- if (titleText != null && titleText.getText().length() > 0) {
- return true;
- }
- return false;
- }
-
- private void showSearchField(SearchField field, TracSearchFilter filter) {
- assert filter == null || !visibleSearchFields.contains(field);
-
- if (!visibleSearchFields.contains(field)) {
- field.createControls(scrollComposite, filter);
- visibleSearchFields.add(field);
- } else {
- field.addControl(scrollComposite);
- }
- updateScrollPane();
- }
-
- public String getQueryUrl(String repsitoryUrl) {
- TracSearch search = new TracSearch();
- for (SearchField field : visibleSearchFields) {
- search.addFilter(field.getFilter());
- }
-
- StringBuilder sb = new StringBuilder();
- sb.append(repsitoryUrl);
- sb.append(ITracClient.QUERY_URL);
- sb.append(search.toUrl());
- return sb.toString();
- }
-
- private void hideSearchField(SearchField field) {
- visibleSearchFields.remove(field);
- }
-
- private void updateScrollPane() {
- scrollComposite.setSize(scrollComposite.computeSize(SWT.DEFAULT, SWT.DEFAULT));
- scrollComposite.layout();
- }
-
- private abstract class SearchField {
-
- protected String fieldName;
-
- private final String displayName;
-
- public SearchField(String fieldName, String displayName) {
- this.fieldName = fieldName;
- this.displayName = displayName;
- }
-
- public abstract void createControls(Composite parent, TracSearchFilter filter);
-
- public abstract void addControl(Composite parent);
-
- public String getFieldName() {
- return fieldName;
- }
-
- public String getDisplayName() {
- return displayName;
- }
-
- public abstract TracSearchFilter getFilter();
-
- }
-
- private class TextSearchField extends SearchField {
-
- private final CompareOperator[] compareOperators = { CompareOperator.CONTAINS, CompareOperator.CONTAINS_NOT,
- CompareOperator.BEGINS_WITH, CompareOperator.ENDS_WITH, CompareOperator.IS, CompareOperator.IS_NOT, };
-
- private List<TextCriterion> criterions;
-
- public TextSearchField(String fieldName, String displayName) {
- super(fieldName, displayName);
- }
-
- @Override
- public void createControls(Composite parent, TracSearchFilter filter) {
- if (filter != null) {
- TextCriterion first = addCriterion(parent);
- first.setCondition(filter.getOperator());
- List<String> values = filter.getValues();
- if (!values.isEmpty()) {
- first.setSearchText(values.get(0));
- for (int i = 1; i < values.size(); i++) {
- TextCriterion criterion = addCriterion(parent);
- criterion.setSearchText(values.get(1));
- }
- }
- } else {
- addCriterion(parent);
- }
-
- }
-
- @Override
- public void addControl(Composite parent) {
- addCriterion(parent);
- }
-
- public TextCriterion addCriterion(Composite parent) {
- TextCriterion criterion = new TextCriterion();
- if (criterions == null) {
- criterions = new ArrayList<TextCriterion>();
- criterion.createControl(parent);
- } else {
- criterion.createControl(parent, criterions.get(criterions.size() - 1));
- }
- criterions.add(criterion);
- return criterion;
- }
-
- @Override
- public TracSearchFilter getFilter() {
- TracSearchFilter newFilter = new TracSearchFilter(getFieldName());
- newFilter.setOperator(criterions.get(0).getCondition());
- for (TextCriterion criterion : criterions) {
- newFilter.addValue(criterion.getSearchText());
- }
- return newFilter;
- }
-
- public void removeCriterion(TextCriterion criterion) {
- int i = criterions.indexOf(criterion);
- if (i == -1) {
- throw new RuntimeException();
- }
- if (i == 0) {
- // the first criterion is special since it contains the compare
- // operator combo
- if (criterions.size() > 1) {
- // copy the value from the second criterion to the first
- TextCriterion sourceCriterion = criterions.get(1);
- criterion.searchText.setText(sourceCriterion.searchText.getText());
- removeCriterionByIndex(1);
- } else {
- // no more criterions, remove all controls
- removeCriterionByIndex(0);
- hideSearchField(this);
- }
- } else {
- removeCriterionByIndex(i);
- }
- }
-
- private void removeCriterionByIndex(int i) {
- criterions.get(i).remove();
- criterions.remove(i);
- updateScrollPane();
- }
-
- private class TextCriterion {
-
- private Combo conditionCombo;
-
- private Text searchText;
-
- private Label label;
-
- private Button removeButton;
-
- public void createControl(Composite parent) {
- label = new Label(parent, SWT.LEFT);
- label.setText(getDisplayName() + ": "); //$NON-NLS-1$
-
- conditionCombo = new Combo(parent, SWT.SINGLE | SWT.BORDER | SWT.READ_ONLY);
- for (CompareOperator op : compareOperators) {
- conditionCombo.add(op.toString());
- }
- conditionCombo.setText(compareOperators[0].toString());
-
- createSearchTextAndRemoveButton(parent);
- }
-
- public void createControl(Composite parent, TextCriterion top) {
- label = new Label(parent, SWT.RIGHT);
- GridData gd = new GridData();
- gd.horizontalAlignment = SWT.END;
- gd.horizontalSpan = 2;
- label.setLayoutData(gd);
- label.setText(Messages.TracFilterQueryPage_or);
-
- createSearchTextAndRemoveButton(parent);
-
- label.moveBelow(top.removeButton);
- searchText.moveBelow(label);
- removeButton.moveBelow(searchText);
- }
-
- private void createSearchTextAndRemoveButton(Composite parent) {
- searchText = new Text(parent, SWT.BORDER);
- GridData gd = new GridData(GridData.GRAB_HORIZONTAL | GridData.FILL_HORIZONTAL);
- searchText.setLayoutData(gd);
-
- removeButton = new Button(parent, SWT.PUSH);
- removeButton.setText("-"); //$NON-NLS-1$
- removeButton.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) {
- TextSearchField.this.removeCriterion(TextCriterion.this);
- }
- });
- }
-
- public void remove() {
- label.dispose();
- if (conditionCombo != null) {
- conditionCombo.dispose();
- }
- searchText.dispose();
- removeButton.dispose();
- }
-
- public CompareOperator getCondition() {
- return (conditionCombo != null) ? compareOperators[conditionCombo.getSelectionIndex()] : null;
- }
-
- public String getSearchText() {
- return searchText.getText();
- }
-
- public boolean setCondition(CompareOperator operator) {
- if (conditionCombo != null) {
- int i = conditionCombo.indexOf(operator.toString());
- if (i != -1) {
- conditionCombo.select(i);
- return true;
- }
- }
- return false;
- }
-
- public void setSearchText(String text) {
- searchText.setText(text);
- }
-
- }
- }
-
-}

Back to the top