Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 188185 Details for
Bug 283200
[bugzilla] support querying over custom fields
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read
this important communication.
[patch]
patch V2
patch283200V2.txt (text/plain), 56.68 KB, created by
Frank Becker
on 2011-02-02 15:08:32 EST
(
hide
)
Description:
patch V2
Filename:
MIME Type:
Creator:
Frank Becker
Created:
2011-02-02 15:08:32 EST
Size:
56.68 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.mylyn.bugzilla.ui >Index: src/org/eclipse/mylyn/internal/bugzilla/ui/search/BugzillaSearchPage.java >=================================================================== >RCS file: /cvsroot/mylyn/org.eclipse.mylyn.tasks/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/search/BugzillaSearchPage.java,v >retrieving revision 1.150 >diff -u -r1.150 BugzillaSearchPage.java >--- src/org/eclipse/mylyn/internal/bugzilla/ui/search/BugzillaSearchPage.java 26 Dec 2010 18:23:44 -0000 1.150 >+++ src/org/eclipse/mylyn/internal/bugzilla/ui/search/BugzillaSearchPage.java 2 Feb 2011 19:59:22 -0000 >@@ -23,6 +23,8 @@ > import java.util.HashSet; > import java.util.Map; > import java.util.Set; >+import java.util.regex.Matcher; >+import java.util.regex.Pattern; > > import org.eclipse.core.runtime.CoreException; > import org.eclipse.core.runtime.IProgressMonitor; >@@ -45,6 +47,7 @@ > import org.eclipse.jface.window.Window; > import org.eclipse.mylyn.commons.core.CoreUtil; > import org.eclipse.mylyn.commons.core.StatusHandler; >+import org.eclipse.mylyn.internal.bugzilla.core.BugzillaCustomField; > import org.eclipse.mylyn.internal.bugzilla.core.BugzillaRepositoryConnector; > import org.eclipse.mylyn.internal.bugzilla.core.IBugzillaConstants; > import org.eclipse.mylyn.internal.bugzilla.core.RepositoryConfiguration; >@@ -149,9 +152,155 @@ > private static final String[] emailRoleValues2 = { "emailassigned_to2", "emailreporter2", "emailcc2", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ > "emaillongdesc2", "emailqa_contact2" }; //$NON-NLS-1$ //$NON-NLS-2$ > >+ private static final ArrayList<String> chartFieldTextDefault = new ArrayList<String>() { >+ private static final long serialVersionUID = 1974092160992399001L; >+ { >+ add(Messages.BugzillaSearchPage_Field_Noop); >+ add(Messages.BugzillaSearchPage_Field_Alias); >+ add(Messages.BugzillaSearchPage_Field_AssignedTo); >+ add(Messages.BugzillaSearchPage_Field_Attachment_creator); >+ add(Messages.BugzillaSearchPage_Field_Attachment_data); >+ add(Messages.BugzillaSearchPage_Field_Attachment_description); >+ add(Messages.BugzillaSearchPage_Field_Attachment_filename); >+ add(Messages.BugzillaSearchPage_Field_Attachment_is_a_URL); >+ add(Messages.BugzillaSearchPage_Field_Attachment_is_obsolete); >+ add(Messages.BugzillaSearchPage_Field_Attachment_is_patch); >+ add(Messages.BugzillaSearchPage_Field_Attachment_is_private); >+ add(Messages.BugzillaSearchPage_Field_Attachment_mime_type); >+ add(Messages.BugzillaSearchPage_Field_Blocks); >+ add(Messages.BugzillaSearchPage_Field_Bug); >+ add(Messages.BugzillaSearchPage_Field_CC); >+ add(Messages.BugzillaSearchPage_Field_CC_Accessible); >+ add(Messages.BugzillaSearchPage_Field_Classification); >+ add(Messages.BugzillaSearchPage_Field_Comment); >+ add(Messages.BugzillaSearchPage_Field_Comment_is_private); >+ add(Messages.BugzillaSearchPage_Field_Commenter); >+ add(Messages.BugzillaSearchPage_Field_Component); >+ add(Messages.BugzillaSearchPage_Field_Content); >+ add(Messages.BugzillaSearchPage_Field_Creation_date); >+ add(Messages.BugzillaSearchPage_Field_Days_since_bug_changed); >+ add(Messages.BugzillaSearchPage_Field_Depends_on); >+ add(Messages.BugzillaSearchPage_Field_drop_down_custom_field); >+ add(Messages.BugzillaSearchPage_Field_Ever_Confirmed); >+ add(Messages.BugzillaSearchPage_Field_Flag); >+ add(Messages.BugzillaSearchPage_Field_Flag_Requestee); >+ add(Messages.BugzillaSearchPage_Field_Flag_Setter); >+ add(Messages.BugzillaSearchPage_Field_free_text_custom_field); >+ add(Messages.BugzillaSearchPage_Field_Group); >+ add(Messages.BugzillaSearchPage_Field_Keywords); >+ add(Messages.BugzillaSearchPage_Field_Last_changed_date); >+ add(Messages.BugzillaSearchPage_Field_OS_Version); >+ add(Messages.BugzillaSearchPage_Field_Platform); >+ add(Messages.BugzillaSearchPage_Field_Priority); >+ add(Messages.BugzillaSearchPage_Field_Product); >+ add(Messages.BugzillaSearchPage_Field_QAContact); >+ add(Messages.BugzillaSearchPage_Field_ReportedBy); >+ add(Messages.BugzillaSearchPage_Field_Reporter_Accessible); >+ add(Messages.BugzillaSearchPage_Field_Resolution); >+ add(Messages.BugzillaSearchPage_Field_Severity); >+ add(Messages.BugzillaSearchPage_Field_Status); >+ add(Messages.BugzillaSearchPage_Field_Status_Whiteboard); >+ add(Messages.BugzillaSearchPage_Field_Summary); >+ add(Messages.BugzillaSearchPage_Field_Target_Milestone); >+ add(Messages.BugzillaSearchPage_Field_Time_Since_Assignee_Touched); >+ add(Messages.BugzillaSearchPage_Field_URL); >+ add(Messages.BugzillaSearchPage_Field_Version); >+ add(Messages.BugzillaSearchPage_Field_Votes); >+ } >+ }; >+ >+ private static final ArrayList<String> chartFieldValuesDefault = new ArrayList<String>() { >+ private static final long serialVersionUID = 9135403539678279982L; >+ { >+ add("noop"); //$NON-NLS-1$ >+ add("alias"); //$NON-NLS-1$ >+ add("assigned_to"); //$NON-NLS-1$ >+ add("attachments.submitter"); //$NON-NLS-1$ >+ add("attach_data.thedata"); //$NON-NLS-1$ >+ add("attachments.description"); //$NON-NLS-1$ >+ add("attachments.filename"); //$NON-NLS-1$ >+ add("attachments.isurl"); //$NON-NLS-1$ >+ add("attachments.isobsolete"); //$NON-NLS-1$ >+ add("attachments.ispatch"); //$NON-NLS-1$ >+ add("attachments.isprivate"); //$NON-NLS-1$ >+ add("attachments.mimetype"); //$NON-NLS-1$ >+ add("blocked"); //$NON-NLS-1$ >+ add("bug_id"); //$NON-NLS-1$ >+ add("cc"); //$NON-NLS-1$ >+ add("cclist_accessible"); //$NON-NLS-1$ >+ add("classification"); //$NON-NLS-1$ >+ add("longdesc"); //$NON-NLS-1$ >+ add("longdescs.isprivate"); //$NON-NLS-1$ >+ add("commenter"); //$NON-NLS-1$ >+ add("component"); //$NON-NLS-1$ >+ add("content"); //$NON-NLS-1$ >+ add("creation_ts"); //$NON-NLS-1$ >+ add("days_elapsed"); //$NON-NLS-1$ >+ add("dependson"); //$NON-NLS-1$ >+ add("cf_dropdown"); //$NON-NLS-1$ >+ add("everconfirmed"); //$NON-NLS-1$ >+ add("flagtypes.name"); //$NON-NLS-1$ >+ add("requestees.login_name"); //$NON-NLS-1$ >+ add("setters.login_name"); //$NON-NLS-1$ >+ add("cf_freetext"); //$NON-NLS-1$ >+ add("bug_group"); //$NON-NLS-1$ >+ add("keywords"); //$NON-NLS-1$ >+ add("delta_ts"); //$NON-NLS-1$ >+ add("op_sys"); //$NON-NLS-1$ >+ add("rep_platform"); //$NON-NLS-1$ >+ add("priority"); //$NON-NLS-1$ >+ add("product"); //$NON-NLS-1$ >+ add("qa_contact"); //$NON-NLS-1$ >+ add("reporter"); //$NON-NLS-1$ >+ add("reporter_accessible"); //$NON-NLS-1$ >+ add("resolution"); //$NON-NLS-1$ >+ add("bug_severity"); //$NON-NLS-1$ >+ add("bug_status"); //$NON-NLS-1$ >+ add("status_whiteboard"); //$NON-NLS-1$ >+ add("short_desc"); //$NON-NLS-1$ >+ add("target_milestone"); //$NON-NLS-1$ >+ add("owner_idle_time"); //$NON-NLS-1$ >+ add("bug_file_loc"); //$NON-NLS-1$ >+ add("version"); //$NON-NLS-1$ >+ add("votes"); //$NON-NLS-1$ >+ } >+ }; >+ >+ private static final String[] chartOperationText = { Messages.BugzillaSearchPage_Operation_Noop, >+ Messages.BugzillaSearchPage_Operation_is_equal_to, Messages.BugzillaSearchPage_Operation_is_not_equal_to, >+ Messages.BugzillaSearchPage_Operation_is_equal_to_any_of_the_strings, >+ Messages.BugzillaSearchPage_Operation_contains_the_string, >+ Messages.BugzillaSearchPage_Operation_contains_the_string_exact_case, >+ Messages.BugzillaSearchPage_Operation_does_not_contain_the_string, >+ Messages.BugzillaSearchPage_Operation_contains_any_of_the_strings, >+ Messages.BugzillaSearchPage_Operation_contains_all_of_the_strings, >+ Messages.BugzillaSearchPage_Operation_contains_none_of_the_strings, >+ Messages.BugzillaSearchPage_Operation_contains_regexp, >+ Messages.BugzillaSearchPage_Operation_does_not_contain_regexp, >+ Messages.BugzillaSearchPage_Operation_is_less_than, Messages.BugzillaSearchPage_Operation_is_greater_than, >+ Messages.BugzillaSearchPage_Operation_contains_any_of_he_words, >+ Messages.BugzillaSearchPage_Operation_contains_all_of_the_words, >+ Messages.BugzillaSearchPage_Operation_contains_none_of_the_words, >+ Messages.BugzillaSearchPage_Operation_changed_before, Messages.BugzillaSearchPage_Operation_changed_after, >+ Messages.BugzillaSearchPage_Operation_changed_from, Messages.BugzillaSearchPage_Operation_changed_to, >+ Messages.BugzillaSearchPage_Operation_changed_by, Messages.BugzillaSearchPage_Operation_matches }; >+ >+ private static final String[] chartOperationValues = { "noop", "equals", "notequals", "anyexact", "substring", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ >+ "casesubstring", "notsubstring", "anywordssubstr", "allwordssubstr", "nowordssubstr", "regexp", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ >+ "notregexp", "lessthan", "greaterthan", "anywords", "allwords", "nowords", "changedbefore", "changedafter", //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ >+ "changedfrom", "changedto", "changedby", "matches" }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ >+ > // dialog store id constants > private final static String DIALOG_BOUNDS_KEY = "ResizableDialogBounds"; //$NON-NLS-1$ > >+ private final static String REGEXP_CHART_EXPR = "(field|type|value)([0-9]+)-([0-9]+)-([0-9]+)"; //$NON-NLS-1$ >+ >+ private static final Pattern PATTERN_CHART_EXPR = Pattern.compile(REGEXP_CHART_EXPR, Pattern.CASE_INSENSITIVE); >+ >+ private final static String REGEXP_CHART_NEGATE = "(negate)([0-9]+)"; //$NON-NLS-1$ >+ >+ private static final Pattern PATTERN_CHART_NEGATE = Pattern.compile(REGEXP_CHART_NEGATE, Pattern.CASE_INSENSITIVE); >+ > private static final String X = "x"; //$NON-NLS-1$ > > private static final String Y = "y"; //$NON-NLS-1$ >@@ -216,6 +365,10 @@ > > protected Text daysText; > >+ protected String[] chartFieldText; >+ >+ protected String[] chartFieldValues; >+ > // /** File containing saved queries */ > // protected static SavedQueryFile input; > >@@ -292,6 +445,183 @@ > > private ExpandableComposite moreOptionsExpandComposite; > >+//FB private ExpandableComposite basicOptionsExpandComposite; >+ >+ private ExpandableComposite chartExpandComposite; >+ >+// private Group chartGroup; >+ private Composite chartGroup; >+ >+ protected class ChartExpression { >+ private int fieldName; >+ >+ private int operation; >+ >+ private String value; >+ >+ public ChartExpression(int fieldName, int operation, String value) { >+ super(); >+ this.fieldName = fieldName; >+ this.operation = operation; >+ this.value = value; >+ } >+ >+ public int getFieldName() { >+ return fieldName; >+ } >+ >+ public void setFieldName(int fieldName) { >+ this.fieldName = fieldName; >+ } >+ >+ public int getOperation() { >+ return operation; >+ } >+ >+ public void setOperation(int operation) { >+ this.operation = operation; >+ } >+ >+ public String getValue() { >+ return value; >+ } >+ >+ public void setValue(String value) { >+ this.value = value; >+ } >+ } >+ >+ protected class Chart { >+ private final ArrayList<ArrayList<ChartExpression>> expressions; >+ >+ private boolean negate; >+ >+ public Chart() { >+ super(); >+ ChartExpression expression = new ChartExpression(0, 0, ""); //$NON-NLS-1$ >+ ArrayList<ChartExpression> column = new ArrayList<ChartExpression>(1); >+ column.add(expression); >+ expressions = new ArrayList<ArrayList<ChartExpression>>(1); >+ expressions.add(column); >+ negate = false; >+ } >+ >+ public boolean isNegate() { >+ return negate; >+ } >+ >+ public void setNegate(boolean negate) { >+ this.negate = negate; >+ } >+ >+ public void addExpression(int rowIndex, int columnIndex) { >+ ChartExpression expression = new ChartExpression(0, 0, ""); //$NON-NLS-1$ >+ int size = expressions.size(); >+ if (rowIndex > size + 1) { >+ rowIndex = size + 1; >+ } >+ if (rowIndex < 0) { >+ rowIndex = 0; >+ } >+ ArrayList<ChartExpression> row; >+ if (rowIndex == size) { >+ row = new ArrayList<BugzillaSearchPage.ChartExpression>(); >+ expressions.add(rowIndex, row); >+ } else { >+ row = expressions.get(rowIndex); >+ } >+ if (row != null) { >+ int size1 = expressions.size(); >+ if (columnIndex > size1 + 1) { >+ columnIndex = size1 + 1; >+ } >+ if (columnIndex < 0) { >+ columnIndex = 0; >+ } >+ row.add(columnIndex, expression); >+ } >+ >+ } >+ >+ public void addRow(int index) { >+ int size = expressions.size(); >+ if (index > size) { >+ index = size; >+ } >+ if (index < 0) { >+ index = 0; >+ } >+ addRow(index); >+ } >+ >+ public int getRowSize() { >+ return expressions.size(); >+ } >+ >+ public int getColumnSize(int row) { >+ int size = expressions.size(); >+ if (row > size) { >+ row = size; >+ } >+ if (row < 0) { >+ row = 0; >+ } >+ return expressions.get(row).size(); >+ } >+ >+ public ChartExpression getChartExpression(int row, int column) { >+ int rowSize = expressions.size(); >+ if (row > rowSize) { >+ row = rowSize; >+ } >+ if (row < 0) { >+ row = 0; >+ } >+ >+ int columnSize = getColumnSize(row); >+ if (column > columnSize) { >+ column = columnSize; >+ } >+ if (column < 0) { >+ column = 0; >+ } >+ return expressions.get(row).get(column); >+ } >+ } >+ >+ private final ArrayList<Chart> charts = new ArrayList<BugzillaSearchPage.Chart>(1); >+ >+ private class ChartControls { >+ private final Combo field; >+ >+ private final Combo operation; >+ >+ private final Combo value; >+ >+ public ChartControls(Combo field, Combo operation, Combo value) { >+ super(); >+ this.field = field; >+ this.operation = operation; >+ this.value = value; >+ } >+ >+ public Combo getField() { >+ return field; >+ } >+ >+ public Combo getOperation() { >+ return operation; >+ } >+ >+ public Combo getValue() { >+ return value; >+ } >+ } >+ >+ private final ArrayList<ArrayList<ArrayList<ChartControls>>> chartControls = new ArrayList<ArrayList<ArrayList<ChartControls>>>(); >+ >+ private final ArrayList<Button> negateButtons = new ArrayList<Button>(); >+ > private final SelectionAdapter updateActionSelectionAdapter = new SelectionAdapter() { > @Override > public void widgetSelected(SelectionEvent e) { >@@ -452,6 +782,50 @@ > queryTitle.addModifyListener(new ModifyListenerImplementation()); > queryTitle.setFocus(); > } >+ chartFieldText = chartFieldTextDefault.toArray(new String[chartFieldTextDefault.size()]); >+ chartFieldValues = chartFieldValuesDefault.toArray(new String[chartFieldValuesDefault.size()]); >+ >+// basicOptionsExpandComposite = toolkit.createExpandableComposite(basicComposite, ExpandableComposite.COMPACT >+// | ExpandableComposite.TWISTIE | ExpandableComposite.TITLE_BAR); >+// basicOptionsExpandComposite.setFont(JFaceResources.getFontRegistry().getBold(JFaceResources.DIALOG_FONT)); >+// basicOptionsExpandComposite.setBackground(null); >+// basicOptionsExpandComposite.setText("Basic Options"); >+// basicOptionsExpandComposite.setLayout(new GridLayout(3, false)); >+// g = new GridData(GridData.FILL, GridData.VERTICAL_ALIGN_BEGINNING, true, true); >+// g.horizontalSpan = 4; >+// g.horizontalIndent = INDENT; >+// basicOptionsExpandComposite.setLayoutData(g); >+// basicOptionsExpandComposite.addExpansionListener(new ExpansionAdapter() { >+// @Override >+// public void expansionStateChanged(ExpansionEvent e) { >+// if ((Boolean) e.data == true) { >+// Point minSize = getControl().getShell().getMinimumSize(); >+// minSize.y = 460; >+// getControl().getShell().setMinimumSize(minSize); >+// } else { >+// Point minSize = getControl().getShell().getMinimumSize(); >+// minSize.y = 250; >+// getControl().getShell().setMinimumSize(minSize); >+// } >+// Shell shell = getShell(); >+// shell.pack(); >+// Point shellSize = shell.getSize(); >+// shellSize.x++; >+// shell.setSize(shellSize); >+// shellSize.x--; >+// shell.setSize(shellSize); >+// } >+// }); >+// >+// Composite basicOptionsComposite = new Composite(basicOptionsExpandComposite, SWT.NULL); >+// GridLayout basicOptionsLayout = new GridLayout(4, false); >+// basicOptionsLayout.marginHeight = 0; >+// basicOptionsLayout.marginWidth = 0; >+// basicOptionsComposite.setLayout(basicOptionsLayout); >+// >+// Dialog.applyDialogFont(basicOptionsComposite); >+// basicOptionsExpandComposite.setClient(basicOptionsComposite); >+// createBasicComposite(basicOptionsComposite); > createBasicComposite(basicComposite); > > moreOptionsExpandComposite = toolkit.createExpandableComposite(control, ExpandableComposite.COMPACT >@@ -460,7 +834,7 @@ > moreOptionsExpandComposite.setBackground(null); > moreOptionsExpandComposite.setText(Messages.BugzillaSearchPage_More_Options); > moreOptionsExpandComposite.setLayout(new GridLayout(3, false)); >- g = new GridData(GridData.FILL, GridData.VERTICAL_ALIGN_BEGINNING, true, false); >+ g = new GridData(GridData.FILL, GridData.VERTICAL_ALIGN_BEGINNING, true, true); > g.horizontalSpan = 4; > g.horizontalIndent = INDENT; > moreOptionsExpandComposite.setLayoutData(g); >@@ -469,11 +843,11 @@ > public void expansionStateChanged(ExpansionEvent e) { > if ((Boolean) e.data == true) { > Point minSize = getControl().getShell().getMinimumSize(); >- minSize.y = 660; >+ minSize.y = 460; > getControl().getShell().setMinimumSize(minSize); > } else { > Point minSize = getControl().getShell().getMinimumSize(); >- minSize.y = 450; >+ minSize.y = 250; > getControl().getShell().setMinimumSize(minSize); > } > Shell shell = getShell(); >@@ -495,12 +869,62 @@ > Dialog.applyDialogFont(moreOptionsComposite); > moreOptionsExpandComposite.setClient(moreOptionsComposite); > >+ chartExpandComposite = toolkit.createExpandableComposite(control, ExpandableComposite.COMPACT >+ | ExpandableComposite.TWISTIE | ExpandableComposite.TITLE_BAR); >+ chartExpandComposite.setFont(JFaceResources.getFontRegistry().getBold(JFaceResources.DIALOG_FONT)); >+ chartExpandComposite.setBackground(null); >+ chartExpandComposite.setText(Messages.BugzillaSearchPage_Field_0); >+ chartExpandComposite.setLayout(new GridLayout(1, false)); >+ g = new GridData(GridData.FILL, GridData.FILL, true, false); >+ g.horizontalSpan = 4; >+ g.horizontalIndent = INDENT; >+ chartExpandComposite.setLayoutData(g); >+//FB chartExpandComposite.setBackground(new Color(moreOptionsExpandComposite.getDisplay(), 128, 128, 0)); >+ >+ chartExpandComposite.addExpansionListener(new ExpansionAdapter() { >+ @Override >+ public void expansionStateChanged(ExpansionEvent e) { >+ if ((Boolean) e.data == true) { >+ Point minSize = getControl().getShell().getMinimumSize(); >+ minSize.y = 300; >+ getControl().getShell().setMinimumSize(minSize); >+ } else { >+ Point minSize = getControl().getShell().getMinimumSize(); >+ minSize.y = 90; >+ getControl().getShell().setMinimumSize(minSize); >+ } >+ Shell shell = getShell(); >+ shell.pack(); >+ Point shellSize = shell.getSize(); >+ shellSize.x++; >+ shell.setSize(shellSize); >+ shellSize.x--; >+ shell.setSize(shellSize); >+ } >+ }); >+ >+// Composite chartOptionsComposite = new Composite(chartExpandComposite, SWT.NULL); >+// GridLayout chartLayout = new GridLayout(1, false); >+// chartLayout.marginHeight = 0; >+// chartLayout.marginWidth = 0; >+// chartOptionsComposite.setLayout(chartLayout); >+// GridData gd = new GridData(SWT.FILL, SWT.CENTER, true, true, 1, 1); >+// chartOptionsComposite.setBackground(new Color(chartExpandComposite.getDisplay(), 0, 128, 128)); >+// chartOptionsComposite.setLayoutData(gd); >+// >+// Dialog.applyDialogFont(chartOptionsComposite); >+// chartExpandComposite.setClient(chartOptionsComposite); >+ > createMoreOptionsComposite(moreOptionsComposite); > createSearchGroup(moreOptionsComposite); >+// createChartGroup(chartOptionsComposite); >+ createChartGroup(chartExpandComposite); >+ chartExpandComposite.setClient(chartGroup); >+ > if (inSearchContainer()) { >- control.getShell().setMinimumSize(new Point(610, 450)); >+ control.getShell().setMinimumSize(new Point(210, 450)); > } else { >- control.getShell().setMinimumSize(new Point(590, 450)); >+ control.getShell().setMinimumSize(new Point(190, 450)); > } > } > >@@ -974,7 +1398,6 @@ > gd_os.heightHint = HEIGHT_ATTRIBUTE_COMBO; > os.setLayoutData(gd_os); > os.addSelectionListener(updateActionSelectionAdapter); >- > } > > private void createSearchGroup(Composite control) { >@@ -1161,6 +1584,7 @@ > if (originalQuery != null) { > try { > updateDefaults(originalQuery.getUrl()); >+ refreshChartControls(); > } catch (UnsupportedEncodingException e) { > // ignore > } >@@ -1466,7 +1890,28 @@ > sb.append("&status_whiteboard_type="); //$NON-NLS-1$ > sb.append(patternOperationValues[whiteboardOperation.getSelectionIndex()]); > appendToBuffer(sb, "&status_whiteboard=", whiteboardPattern.getText()); //$NON-NLS-1$ >- >+ int indexMax = charts.size(); >+ for (int index = 0; index < indexMax; index++) { >+ Chart chart = charts.get(index); >+ if (chart.isNegate()) { >+ sb.append("&negate" + index + "=1"); //$NON-NLS-1$ //$NON-NLS-2$ >+ } >+ int rowMax = chart.getRowSize(); >+ for (int row = 0; row < rowMax; row++) { >+ int columnMax = chart.getColumnSize(row); >+ for (int column = 0; column < columnMax; column++) { >+ ChartExpression chartExpression = chart.getChartExpression(row, column); >+ if (chartExpression.getFieldName() == 0) { >+ continue; >+ } >+ sb.append("&field" + index + "-" + row + "-" + column + "=" //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ >+ + chartFieldValues[chartExpression.getFieldName()]); >+ sb.append("&type" + index + "-" + row + "-" + column + "=" //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ >+ + chartOperationValues[chartExpression.getOperation()]); >+ sb.append("&value" + index + "-" + row + "-" + column + "=" + chartExpression.getValue()); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ >+ } >+ } >+ } > return sb; > } > >@@ -1496,6 +1941,7 @@ > getDialogSettings(); > } > >+ @SuppressWarnings("unchecked") > private void updateAttributesFromConfiguration(String[] selectedProducts) { > if (repositoryConfiguration != null) { > String[] saved_product = product.getSelection(); >@@ -1542,6 +1988,20 @@ > setSelection(priority, saved_priority); > setSelection(hardware, saved_hardware); > setSelection(os, saved_os); >+ >+ if (repositoryConfiguration != null) { >+ ArrayList<String> fieldText = (ArrayList<String>) chartFieldTextDefault.clone(); >+ ArrayList<String> fieldValue = (ArrayList<String>) chartFieldValuesDefault.clone(); >+ >+ for (BugzillaCustomField bugzillaCustomField : repositoryConfiguration.getCustomFields()) { >+ fieldValue.add(bugzillaCustomField.getName()); >+ fieldText.add(bugzillaCustomField.getDescription()); >+ } >+ chartFieldText = fieldText.toArray(new String[fieldText.size()]); >+ chartFieldValues = fieldValue.toArray(new String[fieldValue.size()]); >+ recreateChartControls(); >+ } >+ > } > } > >@@ -1566,7 +2026,7 @@ > public void updateDefaults(String startingUrl) throws UnsupportedEncodingException { > // String serverName = startingUrl.substring(0, > // startingUrl.indexOf("?")); >- >+ boolean adjustChart = false; > startingUrl = startingUrl.substring(startingUrl.indexOf("?") + 1); //$NON-NLS-1$ > String[] options = startingUrl.split("&"); //$NON-NLS-1$ > for (String option : options) { >@@ -1586,13 +2046,8 @@ > if (key.equals("short_desc")) { //$NON-NLS-1$ > summaryPattern.setText(value); > } else if (key.equals("short_desc_type")) { //$NON-NLS-1$ >- if (value.equals("allwordssubstr")) { //$NON-NLS-1$ >- value = "all words"; //$NON-NLS-1$ >- } else if (value.equals("anywordssubstr")) { //$NON-NLS-1$ >- value = "any word"; //$NON-NLS-1$ >- } > int index = 0; >- for (String item : summaryOperation.getItems()) { >+ for (String item : patternOperationValues) { > if (item.compareTo(value) == 0) { > break; > } >@@ -1638,13 +2093,8 @@ > sel = new String[selList.size()]; > version.setSelection(selList.toArray(sel)); > } else if (key.equals("long_desc_type")) { //$NON-NLS-1$ >- if (value.equals("allwordssubstr")) { //$NON-NLS-1$ >- value = "all words"; //$NON-NLS-1$ >- } else if (value.equals("anywordssubstr")) { //$NON-NLS-1$ >- value = "any word"; //$NON-NLS-1$ >- } > int index = 0; >- for (String item : commentOperation.getItems()) { >+ for (String item : patternOperationValues) { > if (item.compareTo(value) == 0) { > break; > } >@@ -1826,8 +2276,94 @@ > } > index++; > } >+ } else if (key.equals("status_whiteboard_type")) { //$NON-NLS-1$ >+ int index = 0; >+ for (String item : patternOperationValues) { >+ if (item.compareTo(value) == 0) { >+ break; >+ } >+ index++; >+ } >+ if (index < whiteboardOperation.getItemCount()) { >+ whiteboardOperation.select(index); >+ } >+ } else if (key.equals("status_whiteboard")) { //$NON-NLS-1$ >+ whiteboardPattern.setText(value); >+ } else if (key.matches(REGEXP_CHART_EXPR)) { >+ Matcher mb = PATTERN_CHART_EXPR.matcher(key); >+ if (mb.find()) { >+ String g1 = mb.group(1); >+ String g2 = mb.group(2); >+ String g3 = mb.group(3); >+ String g4 = mb.group(4); >+ int chartNumber, row, column; >+ try { >+ chartNumber = Integer.parseInt(g2); >+ row = Integer.parseInt(g3); >+ column = Integer.parseInt(g4); >+ } catch (Exception E) { >+ chartNumber = -1; >+ row = -1; >+ column = -1; >+ } >+ for (int i = charts.size(); i <= chartNumber; i++) { >+ charts.add(new Chart()); >+ adjustChart = true; >+ } >+ for (int i = charts.get(chartNumber).getRowSize(); i <= row; i++) { >+ charts.get(chartNumber).addExpression(i, 0); >+ adjustChart = true; >+ } >+ for (int i = charts.get(chartNumber).getColumnSize(row); i <= column; i++) { >+ charts.get(chartNumber).addExpression(row, i); >+ adjustChart = true; >+ } >+ ChartExpression ex = charts.get(chartNumber).getChartExpression(row, column); >+ if ("field".equals(g1)) { //$NON-NLS-1$ >+ int index1 = 0; >+ for (String item : chartFieldValues) { >+ if (item.compareTo(value) == 0) { >+ break; >+ } >+ index1++; >+ } >+ if (index1 < chartFieldValues.length) { >+ ex.setFieldName(index1); >+ } >+ } else if ("type".equals(g1)) { //$NON-NLS-1$ >+ int index1 = 0; >+ for (String item : chartOperationValues) { >+ if (item.compareTo(value) == 0) { >+ break; >+ } >+ index1++; >+ } >+ if (index1 < chartOperationValues.length) { >+ ex.setOperation(index1); >+ } >+ } else if ("value".equals(g1)) { //$NON-NLS-1$ >+ ex.setValue(value); >+ } >+ >+ } >+ } else if (key.matches(REGEXP_CHART_NEGATE)) { >+ Matcher mb = PATTERN_CHART_NEGATE.matcher(key); >+ if (mb.find()) { >+ String g2 = mb.group(2); >+ int index; >+ try { >+ index = Integer.parseInt(g2); >+ } catch (Exception E) { >+ index = -1; >+ } >+ Chart ch = charts.get(index); >+ ch.setNegate("1".equals(value)); //$NON-NLS-1$ >+ } > } > } >+ if (adjustChart) { >+ recreateChartControls(); >+ } > } > > private String[] nonNullArray(IDialogSettings settings, String id) { >@@ -2159,4 +2695,386 @@ > return currentSize.x < newSize.x || currentSize.y != newSize.y; > } > >+ private void createChartGroup(final Composite parent) { >+ GridLayout layout; >+ GridData gd; >+ >+ chartGroup = new Group(parent, SWT.NONE); >+ layout = new GridLayout(1, false); >+ chartGroup.setLayout(layout); >+ gd = new GridData(SWT.LEFT, SWT.CENTER, true, false, 1, 1); >+//FB chartGroup.setBackground(new Color(parent.getDisplay(), 0, 0, 255)); >+ chartGroup.setLayoutData(gd); >+ >+ createNewChartControls(chartGroup, 0); >+ >+ parent.layout(true); >+ parent.redraw(); >+ } >+ >+ private void createChartControls(final Composite chartGroup, final int chartNumber, final int row, final int column) { >+ final Combo comboField = new Combo(chartGroup, SWT.SINGLE | SWT.BORDER); >+ comboField.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); >+ comboField.addModifyListener(new ModifyListenerImplementation()); >+ comboField.setItems(chartFieldText); >+ comboField.setText(chartFieldText[0]); >+ comboField.addSelectionListener(new SelectionAdapter() { >+ @Override >+ public void widgetSelected(SelectionEvent e) { >+ ChartExpression chartExpression = charts.get(chartNumber).getChartExpression(row, column); >+ chartExpression.setFieldName(comboField.getSelectionIndex()); >+ chartGroup.getShell().layout(true); >+ chartGroup.getShell().redraw(); >+ } >+ }); >+ >+ final Combo comboOperation = new Combo(chartGroup, SWT.SINGLE | SWT.READ_ONLY | SWT.BORDER); >+ comboOperation.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); >+ comboOperation.setItems(chartOperationText); >+ comboOperation.setText(chartOperationText[0]); >+ comboOperation.select(0); >+ comboOperation.addSelectionListener(new SelectionAdapter() { >+ @Override >+ public void widgetSelected(SelectionEvent e) { >+ ChartExpression chartExpression = charts.get(chartNumber).getChartExpression(row, column); >+ chartExpression.setOperation(comboOperation.getSelectionIndex()); >+ } >+ }); >+ >+ final Combo comboValue = new Combo(chartGroup, SWT.SINGLE | SWT.BORDER); >+ GridData g = new GridData(GridData.FILL, GridData.CENTER, true, false); >+ g.widthHint = 150; >+ comboValue.setLayoutData(g); >+ comboValue.addModifyListener(new ModifyListener() { >+ >+ public void modifyText(ModifyEvent e) { >+ ChartExpression chartExpression = charts.get(chartNumber).getChartExpression(row, column); >+ chartExpression.setValue(comboValue.getText()); >+ if (isControlCreated()) { >+ setPageComplete(isPageComplete()); >+ } >+ } >+ }); >+ >+ Button orButton = new Button(chartGroup, SWT.PUSH); >+ orButton.setText(Messages.BugzillaSearchPage_OR_Button); >+ g = new GridData(SWT.LEFT, SWT.CENTER, false, false); >+ orButton.setLayoutData(g); >+ orButton.addSelectionListener(new SelectionAdapter() { >+ @Override >+ public void widgetSelected(SelectionEvent e) { >+ int y = charts.get(chartNumber).getColumnSize(row); >+ charts.get(chartNumber).addExpression(row, column + 1); >+ createChartControls(chartGroup, chartNumber, row, y); >+ } >+ }); >+ if (column == 0) { >+ final Button andButton = new Button(chartGroup.getParent(), SWT.PUSH); >+ andButton.setText(Messages.BugzillaSearchPage_AND_Button); >+ g = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1); >+ andButton.setLayoutData(g); >+ final Button newButton = new Button(chartGroup.getParent(), SWT.PUSH); >+ newButton.setText(Messages.BugzillaSearchPage_New_Chart_Button); >+ g = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1); >+ newButton.setLayoutData(g); >+ final Button negateButton = new Button(chartGroup.getParent(), SWT.CHECK); >+ negateButton.setText(Messages.BugzillaSearchPage_Negate_Button); >+ negateButtons.add(negateButton); >+ g = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1); >+ negateButton.setLayoutData(g); >+ negateButton.addSelectionListener(new SelectionAdapter() { >+ @Override >+ public void widgetSelected(SelectionEvent e) { >+ Chart chart = charts.get(chartNumber); >+ chart.setNegate(negateButton.getSelection()); >+ } >+ }); >+ newButton.addSelectionListener(new SelectionAdapter() { >+ @Override >+ public void widgetSelected(SelectionEvent e) { >+ newButton.setVisible(false); >+ newButton.dispose(); >+ createNewChartControls(chartGroup.getParent().getParent(), chartNumber + 1); >+ } >+ }); >+ andButton.addSelectionListener(new SelectionAdapter() { >+ @Override >+ public void widgetSelected(SelectionEvent e) { >+ if (!andButton.isDisposed()) { >+ andButton.setVisible(false); >+ andButton.dispose(); >+ } >+ if (!newButton.isDisposed()) { >+ newButton.setVisible(false); >+ newButton.dispose(); >+ } >+ if (!negateButton.isDisposed()) { >+ negateButton.setVisible(false); >+ negateButton.dispose(); >+ } >+ >+ Label lable = new Label(chartGroup.getParent(), SWT.NONE); >+ lable.setText(Messages.BugzillaSearchPage_AND_Button); >+ GridData g = new GridData(SWT.LEFT, SWT.CENTER, false, false, 4, 1); >+ lable.setLayoutData(g); >+ >+ Group chartGroup1 = new Group(chartGroup.getParent(), SWT.NONE); >+ GridLayout layout = new GridLayout(4, false); >+ chartGroup1.setLayout(layout); >+ chartGroup1.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); >+ GridData gd = new GridData(SWT.LEFT, SWT.CENTER, true, true, 3, 1); >+ chartGroup1.setLayoutData(gd); >+ >+ charts.get(chartNumber).addExpression(row + 1, 0); >+ createChartControls(chartGroup1, chartNumber, row + 1, 0); >+ } >+ }); >+ } >+ ChartControls chartControl = new ChartControls(comboField, comboOperation, comboValue); >+ int chart1 = chartControls.size(); >+ if (chart1 < chartNumber + 1) { >+ chartControls.add(new ArrayList<ArrayList<ChartControls>>()); >+ } >+ int chart2 = chartControls.get(chartNumber).size(); >+ if (chart2 < row + 1) { >+ chartControls.get(chartNumber).add(new ArrayList<BugzillaSearchPage.ChartControls>()); >+ } >+ chartControls.get(chartNumber).get(row).add(chartControl); >+ refreshChartControls(); >+ } >+ >+ private void createNewChartControls(final Composite chartGroup, final int chartNumber) { >+ final Group chartGroup0 = new Group(chartGroup, SWT.NONE); >+ if (chartNumber > 0) { >+ chartGroup0.setText(Messages.BugzillaSearchPage_OR_Label); >+ } >+ GridLayout layout = new GridLayout(3, false); >+ chartGroup0.setLayout(layout); >+ GridData gd = new GridData(SWT.FILL, SWT.CENTER, true, true, 3, 1); >+//FB chartGroup0.setBackground(new Color(chartGroup.getDisplay(), 255, 0, 0)); >+ chartGroup0.setLayoutData(gd); >+ >+ Group chartGroup1 = new Group(chartGroup0, SWT.NONE); >+ layout = new GridLayout(4, false); >+ chartGroup1.setLayout(layout); >+ gd = new GridData(SWT.FILL, SWT.CENTER, true, true, 3, 1); >+//FB chartGroup1.setBackground(new Color(chartGroup.getDisplay(), 0, 255, 0)); >+ chartGroup1.setLayoutData(gd); >+ >+ charts.add(new Chart()); >+ createChartControls(chartGroup1, chartNumber, 0, 0); >+ } >+ >+ private void refreshChartControls() { >+ int chartNumMax = chartControls.size(); >+ for (int chartNum = 0; chartNum < chartNumMax; chartNum++) { >+ int chartRowMax = chartControls.get(chartNum).size(); >+ for (int chartRow = 0; chartRow < chartRowMax; chartRow++) { >+ int chartColumnMax = chartControls.get(chartNum).get(chartRow).size(); >+ for (int chartColumn = 0; chartColumn < chartColumnMax; chartColumn++) { >+ ChartExpression expression = charts.get(chartNum).getChartExpression(chartRow, chartColumn); >+ ChartControls controls = chartControls.get(chartNum).get(chartRow).get(chartColumn); >+ controls.getField().setText(chartFieldText[expression.getFieldName()]); >+ controls.getOperation().setText(chartOperationText[expression.getOperation()]); >+ controls.getValue().setText(expression.getValue()); >+ } >+ } >+ } >+ int negButtonMax = negateButtons.size(); >+ for (int chartNum = 0; chartNum < negButtonMax; chartNum++) { >+ Button b = negateButtons.get(chartNum); >+ Chart c = charts.get(chartNum); >+ b.setSelection(c.isNegate()); >+ } >+ chartGroup.layout(true); >+ } >+ >+ private void recreateChartControls() { >+ GridLayout layout; >+ GridData gd; >+ Composite parent = chartGroup.getParent(); >+ chartGroup.setVisible(false); >+ chartGroup.dispose(); >+ chartControls.clear(); >+ negateButtons.clear(); >+// chartGroup = new Group(parent, SWT.NONE); >+ chartGroup = new Composite(parent, SWT.NONE); >+ layout = new GridLayout(1, false); >+ chartGroup.setLayout(layout); >+ gd = new GridData(SWT.LEFT, SWT.CENTER, true, false, 1, 1); >+//FB chartGroup.setBackground(new Color(parent.getDisplay(), 0, 0, 255)); >+ chartGroup.setLayoutData(gd); >+ chartExpandComposite.setClient(chartGroup); >+ >+ int chartNumMax = charts.size(); >+ for (int chartNumber = 0; chartNumber < chartNumMax; chartNumber++) { >+ final int chartNum = chartNumber; >+// final Group chartGroup0 = new Group(chartGroup, SWT.NONE); >+ final Composite chartGroup0 = new Composite(chartGroup, SWT.NONE); >+ if (chartNum > 0) { >+// chartGroup0.setText(Messages.BugzillaSearchPage_OR_Label); >+ new Label(chartGroup0, SWT.NONE).setText(Messages.BugzillaSearchPage_OR_Label); >+ } >+ layout = new GridLayout(3, false); >+ chartGroup0.setLayout(layout); >+ gd = new GridData(SWT.FILL, SWT.CENTER, true, true, 3, 1); >+ //FB chartGroup0.setBackground(new Color(chartGroup.getDisplay(), 255, 0, 0)); >+ chartGroup0.setLayoutData(gd); >+ >+ final int chartRowMax = charts.get(chartNum).getRowSize(); >+ for (int chartRowNumber = 0; chartRowNumber < chartRowMax; chartRowNumber++) { >+ final int chartRow = chartRowNumber; >+ int chartColumnMax = charts.get(chartNum).getColumnSize(chartRow); >+ final Group chartGroup1 = new Group(chartGroup0, SWT.NONE); >+ layout = new GridLayout(4, false); >+ chartGroup1.setLayout(layout); >+ gd = new GridData(SWT.FILL, SWT.CENTER, true, true, 3, 1); >+ //FB chartGroup1.setBackground(new Color(chartGroup.getDisplay(), 0, 255, 0)); >+ chartGroup1.setLayoutData(gd); >+ for (int chartColumnNumber = 0; chartColumnNumber < chartColumnMax; chartColumnNumber++) { >+ final int chartColumn = chartColumnNumber; >+ final Combo comboField = new Combo(chartGroup1, SWT.SINGLE | SWT.BORDER); >+ comboField.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); >+ comboField.addModifyListener(new ModifyListenerImplementation()); >+ comboField.setItems(chartFieldText); >+ comboField.setText(chartFieldText[0]); >+ comboField.addSelectionListener(new SelectionAdapter() { >+ @Override >+ public void widgetSelected(SelectionEvent e) { >+ ChartExpression chartExpression = charts.get(chartNum).getChartExpression(chartRow, >+ chartColumn); >+ chartExpression.setFieldName(comboField.getSelectionIndex()); >+ chartGroup.getShell().layout(true); >+ chartGroup.getShell().redraw(); >+ } >+ }); >+ >+ final Combo comboOperation = new Combo(chartGroup1, SWT.SINGLE | SWT.READ_ONLY | SWT.BORDER); >+ comboOperation.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); >+ comboOperation.setItems(chartOperationText); >+ comboOperation.setText(chartOperationText[0]); >+ comboOperation.select(0); >+ comboOperation.addSelectionListener(new SelectionAdapter() { >+ @Override >+ public void widgetSelected(SelectionEvent e) { >+ ChartExpression chartExpression = charts.get(chartNum).getChartExpression(chartRow, >+ chartColumn); >+ chartExpression.setOperation(comboOperation.getSelectionIndex()); >+ } >+ }); >+ >+ final Combo comboValue = new Combo(chartGroup1, SWT.SINGLE | SWT.BORDER); >+ gd = new GridData(GridData.FILL, GridData.CENTER, true, false); >+ gd.widthHint = 150; >+ comboValue.setLayoutData(gd); >+ comboValue.addModifyListener(new ModifyListener() { >+ >+ public void modifyText(ModifyEvent e) { >+ ChartExpression chartExpression = charts.get(chartNum).getChartExpression(chartRow, >+ chartColumn); >+ chartExpression.setValue(comboValue.getText()); >+ if (isControlCreated()) { >+ setPageComplete(isPageComplete()); >+ } >+ } >+ }); >+ >+ Button orButton = new Button(chartGroup1, SWT.PUSH); >+ orButton.setText(Messages.BugzillaSearchPage_OR_Button); >+ gd = new GridData(SWT.LEFT, SWT.CENTER, false, false); >+ orButton.setLayoutData(gd); >+ orButton.addSelectionListener(new SelectionAdapter() { >+ @Override >+ public void widgetSelected(SelectionEvent e) { >+ int y = charts.get(chartNum).getColumnSize(chartRow); >+ charts.get(chartNum).addExpression(chartRow, chartColumn + 1); >+ createChartControls(chartGroup1, chartNum, chartRow, y); >+ } >+ }); >+ ChartControls chartControl = new ChartControls(comboField, comboOperation, comboValue); >+ int chart1 = chartControls.size(); >+ if (chart1 < chartNum + 1) { >+ chartControls.add(new ArrayList<ArrayList<ChartControls>>()); >+ } >+ int chart2 = chartControls.get(chartNum).size(); >+ if (chart2 < chartRow + 1) { >+ chartControls.get(chartNum).add(new ArrayList<BugzillaSearchPage.ChartControls>()); >+ } >+ chartControls.get(chartNum).get(chartRow).add(chartControl); >+ } >+ if (chartRowNumber < chartRowMax - 1) { >+ Label lable = new Label(chartGroup0, SWT.NONE); >+ lable.setText(Messages.BugzillaSearchPage_AND_Button); >+ GridData g = new GridData(SWT.LEFT, SWT.CENTER, false, false, 4, 1); >+ lable.setLayoutData(g); >+ } >+ } >+ final Button andButton = new Button(chartGroup0, SWT.PUSH); >+ andButton.setText(Messages.BugzillaSearchPage_AND_Button); >+ gd = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1); >+ andButton.setLayoutData(gd); >+ final Button newButton = new Button(chartGroup0, SWT.PUSH); >+ newButton.setText(Messages.BugzillaSearchPage_New_Chart_Button); >+ gd = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1); >+ newButton.setLayoutData(gd); >+ final Button negateButton = new Button(chartGroup0, SWT.CHECK); >+ negateButton.setText(Messages.BugzillaSearchPage_Negate_Button); >+ negateButtons.add(negateButton); >+ gd = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1); >+ negateButton.setLayoutData(gd); >+ >+ negateButton.addSelectionListener(new SelectionAdapter() { >+ @Override >+ public void widgetSelected(SelectionEvent e) { >+ Chart chart = charts.get(chartNum); >+ chart.setNegate(negateButton.getSelection()); >+ } >+ }); >+ newButton.addSelectionListener(new SelectionAdapter() { >+ @Override >+ public void widgetSelected(SelectionEvent e) { >+ newButton.setVisible(false); >+ newButton.dispose(); >+ createNewChartControls(chartGroup0.getParent(), chartNum + 1); >+ } >+ }); >+ andButton.addSelectionListener(new SelectionAdapter() { >+ @Override >+ public void widgetSelected(SelectionEvent e) { >+ if (!andButton.isDisposed()) { >+ andButton.setVisible(false); >+ andButton.dispose(); >+ } >+ if (!newButton.isDisposed()) { >+ newButton.setVisible(false); >+ newButton.dispose(); >+ } >+ if (!negateButton.isDisposed()) { >+ negateButton.setVisible(false); >+ negateButton.dispose(); >+ } >+ >+ Label lable = new Label(chartGroup0, SWT.NONE); >+ lable.setText(Messages.BugzillaSearchPage_AND_Button); >+ GridData g = new GridData(SWT.LEFT, SWT.CENTER, false, false, 4, 1); >+ lable.setLayoutData(g); >+ >+ Group chartGroup1 = new Group(chartGroup0, SWT.NONE); >+ GridLayout layout = new GridLayout(4, false); >+ chartGroup1.setLayout(layout); >+ chartGroup1.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); >+ GridData gd = new GridData(SWT.FILL, SWT.CENTER, true, true, 3, 1); >+ chartGroup1.setLayoutData(gd); >+ >+ charts.get(chartNum).addExpression(chartRowMax, 0); >+ createChartControls(chartGroup1, chartNum, chartRowMax, 0); >+ } >+ }); >+ >+ } >+ parent.layout(true); >+ parent.redraw(); >+ refreshChartControls(); >+ } >+ > } >Index: src/org/eclipse/mylyn/internal/bugzilla/ui/search/Messages.java >=================================================================== >RCS file: /cvsroot/mylyn/org.eclipse.mylyn.tasks/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/search/Messages.java,v >retrieving revision 1.13 >diff -u -r1.13 Messages.java >--- src/org/eclipse/mylyn/internal/bugzilla/ui/search/Messages.java 2 Feb 2011 03:57:59 -0000 1.13 >+++ src/org/eclipse/mylyn/internal/bugzilla/ui/search/Messages.java 2 Feb 2011 19:59:22 -0000 >@@ -27,6 +27,8 @@ > > public static String BugzillaSearchPage_all; > >+ public static String BugzillaSearchPage_AND_Button; >+ > public static String BugzillaSearchPage_any; > > public static String BugzillaSearchPage_Bugzilla_Query; >@@ -69,14 +71,66 @@ > > public static String BugzillaSearchPage_Milestone; > >+ public static String BugzillaSearchPage_Negate_Button; >+ >+ public static String BugzillaSearchPage_New_Chart_Button; >+ > public static String BugzillaSearchPage_No_repository_available; > > public static String BugzillaSearchPage_none; > >+ public static String BugzillaSearchPage_notregexp; >+ > public static String BugzillaSearchPage_Number_of_days_must_be_a_positive_integer; > > public static String BugzillaSearchPage_Operating_System; > >+ public static String BugzillaSearchPage_Operation_changed_after; >+ >+ public static String BugzillaSearchPage_Operation_changed_before; >+ >+ public static String BugzillaSearchPage_Operation_changed_by; >+ >+ public static String BugzillaSearchPage_Operation_changed_from; >+ >+ public static String BugzillaSearchPage_Operation_changed_to; >+ >+ public static String BugzillaSearchPage_Operation_contains_all_of_the_strings; >+ >+ public static String BugzillaSearchPage_Operation_contains_all_of_the_words; >+ >+ public static String BugzillaSearchPage_Operation_contains_any_of_he_words; >+ >+ public static String BugzillaSearchPage_Operation_contains_any_of_the_strings; >+ >+ public static String BugzillaSearchPage_Operation_contains_none_of_the_strings; >+ >+ public static String BugzillaSearchPage_Operation_contains_none_of_the_words; >+ >+ public static String BugzillaSearchPage_Operation_contains_regexp; >+ >+ public static String BugzillaSearchPage_Operation_contains_the_string; >+ >+ public static String BugzillaSearchPage_Operation_contains_the_string_exact_case; >+ >+ public static String BugzillaSearchPage_Operation_does_not_contain_regexp; >+ >+ public static String BugzillaSearchPage_Operation_does_not_contain_the_string; >+ >+ public static String BugzillaSearchPage_Operation_is_equal_to; >+ >+ public static String BugzillaSearchPage_Operation_is_equal_to_any_of_the_strings; >+ >+ public static String BugzillaSearchPage_Operation_is_greater_than; >+ >+ public static String BugzillaSearchPage_Operation_is_less_than; >+ >+ public static String BugzillaSearchPage_Operation_is_not_equal_to; >+ >+ public static String BugzillaSearchPage_Operation_matches; >+ >+ public static String BugzillaSearchPage_Operation_Noop; >+ > public static String BugzillaSearchPage_OperationText_allwords; > > public static String BugzillaSearchPage_OperationText_allwordssubstr; >@@ -93,6 +147,10 @@ > > public static String BugzillaSearchPage_OperationText_substring; > >+ public static String BugzillaSearchPage_OR_Button; >+ >+ public static String BugzillaSearchPage_OR_Label; >+ > public static String BugzillaSearchPage_owner; > > public static String BugzillaSearchPage_Product; >@@ -103,6 +161,8 @@ > > public static String BugzillaSearchPage_Query_Title; > >+ public static String BugzillaSearchPage_regexp; >+ > public static String BugzillaSearchPage_reporter; > > public static String BugzillaSearchPage_Resolution; >@@ -115,6 +175,8 @@ > > public static String BugzillaSearchPage_Status; > >+ public static String BugzillaSearchPage_substring; >+ > public static String BugzillaSearchPage_Summary; > > public static String BugzillaSearchPage_Update_Attributes_from_Repository; >@@ -125,6 +187,110 @@ > > public static String BugzillaSearchPage_ClearFields; > >+ public static String BugzillaSearchPage_Field_0; >+ >+ public static String BugzillaSearchPage_Field_Alias; >+ >+ public static String BugzillaSearchPage_Field_AssignedTo; >+ >+ public static String BugzillaSearchPage_Field_Attachment_creator; >+ >+ public static String BugzillaSearchPage_Field_Attachment_data; >+ >+ public static String BugzillaSearchPage_Field_Attachment_description; >+ >+ public static String BugzillaSearchPage_Field_Attachment_filename; >+ >+ public static String BugzillaSearchPage_Field_Attachment_is_a_URL; >+ >+ public static String BugzillaSearchPage_Field_Attachment_is_obsolete; >+ >+ public static String BugzillaSearchPage_Field_Attachment_is_patch; >+ >+ public static String BugzillaSearchPage_Field_Attachment_is_private; >+ >+ public static String BugzillaSearchPage_Field_Attachment_mime_type; >+ >+ public static String BugzillaSearchPage_Field_Blocks; >+ >+ public static String BugzillaSearchPage_Field_Bug; >+ >+ public static String BugzillaSearchPage_Field_CC; >+ >+ public static String BugzillaSearchPage_Field_CC_Accessible; >+ >+ public static String BugzillaSearchPage_Field_Classification; >+ >+ public static String BugzillaSearchPage_Field_Comment; >+ >+ public static String BugzillaSearchPage_Field_Comment_is_private; >+ >+ public static String BugzillaSearchPage_Field_Commenter; >+ >+ public static String BugzillaSearchPage_Field_Component; >+ >+ public static String BugzillaSearchPage_Field_Content; >+ >+ public static String BugzillaSearchPage_Field_Creation_date; >+ >+ public static String BugzillaSearchPage_Field_Days_since_bug_changed; >+ >+ public static String BugzillaSearchPage_Field_Depends_on; >+ >+ public static String BugzillaSearchPage_Field_drop_down_custom_field; >+ >+ public static String BugzillaSearchPage_Field_Ever_Confirmed; >+ >+ public static String BugzillaSearchPage_Field_Flag; >+ >+ public static String BugzillaSearchPage_Field_Flag_Requestee; >+ >+ public static String BugzillaSearchPage_Field_Flag_Setter; >+ >+ public static String BugzillaSearchPage_Field_free_text_custom_field; >+ >+ public static String BugzillaSearchPage_Field_Group; >+ >+ public static String BugzillaSearchPage_Field_Keywords; >+ >+ public static String BugzillaSearchPage_Field_Last_changed_date; >+ >+ public static String BugzillaSearchPage_Field_Noop; >+ >+ public static String BugzillaSearchPage_Field_OS_Version; >+ >+ public static String BugzillaSearchPage_Field_Platform; >+ >+ public static String BugzillaSearchPage_Field_Priority; >+ >+ public static String BugzillaSearchPage_Field_Product; >+ >+ public static String BugzillaSearchPage_Field_QAContact; >+ >+ public static String BugzillaSearchPage_Field_ReportedBy; >+ >+ public static String BugzillaSearchPage_Field_Reporter_Accessible; >+ >+ public static String BugzillaSearchPage_Field_Resolution; >+ >+ public static String BugzillaSearchPage_Field_Severity; >+ >+ public static String BugzillaSearchPage_Field_Status; >+ >+ public static String BugzillaSearchPage_Field_Status_Whiteboard; >+ >+ public static String BugzillaSearchPage_Field_Summary; >+ >+ public static String BugzillaSearchPage_Field_Target_Milestone; >+ >+ public static String BugzillaSearchPage_Field_Time_Since_Assignee_Touched; >+ >+ public static String BugzillaSearchPage_Field_URL; >+ >+ public static String BugzillaSearchPage_Field_Version; >+ >+ public static String BugzillaSearchPage_Field_Votes; >+ > public static String BugzillaSearchPage_More_Options; > > public static String BugzillaSearchPage_Whiteboard; >Index: src/org/eclipse/mylyn/internal/bugzilla/ui/search/messages.properties >=================================================================== >RCS file: /cvsroot/mylyn/org.eclipse.mylyn.tasks/org.eclipse.mylyn.bugzilla.ui/src/org/eclipse/mylyn/internal/bugzilla/ui/search/messages.properties,v >retrieving revision 1.14 >diff -u -r1.14 messages.properties >--- src/org/eclipse/mylyn/internal/bugzilla/ui/search/messages.properties 2 Feb 2011 03:57:59 -0000 1.14 >+++ src/org/eclipse/mylyn/internal/bugzilla/ui/search/messages.properties 2 Feb 2011 19:59:22 -0000 >@@ -9,6 +9,7 @@ > # Tasktop Technologies - initial API and implementation > ############################################################################### > BugzillaSearchPage_all=all >+BugzillaSearchPage_AND_Button=AND > BugzillaSearchPage_any=any > BugzillaSearchPage_Bugzilla_Query=Bugzilla Query > BugzillaSearchPage_cc=CC >@@ -30,10 +31,36 @@ > BugzillaSearchPage_Hardware=Hard&ware: > BugzillaSearchPage_Keywords=&Keywords: > BugzillaSearchPage_Milestone=&Milestone: >+BugzillaSearchPage_Negate_Button=negate >+BugzillaSearchPage_New_Chart_Button=New chart > BugzillaSearchPage_No_repository_available=No repository available, please add one using the Task Repositories view. > BugzillaSearchPage_none=none >+BugzillaSearchPage_notregexp=notregexp > BugzillaSearchPage_Number_of_days_must_be_a_positive_integer=Number of days must be a positive integer. {0} is invalid. > BugzillaSearchPage_Operating_System=&Operating System: >+BugzillaSearchPage_Operation_changed_after=changed after >+BugzillaSearchPage_Operation_changed_before=changed before >+BugzillaSearchPage_Operation_changed_by=changed by >+BugzillaSearchPage_Operation_changed_from=changed from >+BugzillaSearchPage_Operation_changed_to=changed to >+BugzillaSearchPage_Operation_contains_all_of_the_strings=contains all of the strings >+BugzillaSearchPage_Operation_contains_all_of_the_words=contains all of the words >+BugzillaSearchPage_Operation_contains_any_of_he_words=contains any of the words >+BugzillaSearchPage_Operation_contains_any_of_the_strings=contains any of the strings >+BugzillaSearchPage_Operation_contains_none_of_the_strings=contains none of the strings >+BugzillaSearchPage_Operation_contains_none_of_the_words=contains none of the words >+BugzillaSearchPage_Operation_contains_regexp=contains regexp >+BugzillaSearchPage_Operation_contains_the_string=contains the string >+BugzillaSearchPage_Operation_contains_the_string_exact_case=contains the string (exact case) >+BugzillaSearchPage_Operation_does_not_contain_regexp=does not contain regexp >+BugzillaSearchPage_Operation_does_not_contain_the_string=does not contain the string >+BugzillaSearchPage_Operation_is_equal_to=is equal to >+BugzillaSearchPage_Operation_is_equal_to_any_of_the_strings=is equal to any of the strings >+BugzillaSearchPage_Operation_is_greater_than=is greater than >+BugzillaSearchPage_Operation_is_less_than=is less than >+BugzillaSearchPage_Operation_is_not_equal_to=is not equal to >+BugzillaSearchPage_Operation_matches=matches >+BugzillaSearchPage_Operation_Noop=--- > BugzillaSearchPage_OperationText_allwords=contains all of the words > BugzillaSearchPage_OperationText_allwordssubstr=contains all of the strings > BugzillaSearchPage_OperationText_anywords=contains any of the words >@@ -42,21 +69,77 @@ > BugzillaSearchPage_OperationText_notregexp=does not match regular expression > BugzillaSearchPage_OperationText_regexp=matches regular expression > BugzillaSearchPage_OperationText_substring=contains the string >+BugzillaSearchPage_OR_Button=OR >+BugzillaSearchPage_OR_Label=--OR-- > BugzillaSearchPage_owner=Owner > BugzillaSearchPage_Product=&Product: > BugzillaSearchPage_PROORITY=Priori&ty: > BugzillaSearchPage_qacontact=QA Contact > BugzillaSearchPage_Query_Title=&Query Title: >+BugzillaSearchPage_regexp=regexp > BugzillaSearchPage_reporter=Reporter > BugzillaSearchPage_Resolution=&Resolution: > BugzillaSearchPage_Select_=Select... > BugzillaSearchPage_Select_the_Bugzilla_query_parameters=Select the Bugzilla query parameters. Use the Update Attributes button to retrieve updated values from the repository. > BugzillaSearchPage_Severity=Se&verity: > BugzillaSearchPage_Status=Stat&us: >+BugzillaSearchPage_substring=contains > BugzillaSearchPage_Summary=Summar&y: > BugzillaSearchPage_Update_Attributes_from_Repository=Up&date Attributes from Repository > BugzillaSearchPage_Updating_search_options_=Updating search options... > BugzillaSearchPage_Version=Vers&ion: > BugzillaSearchPage_ClearFields=Clear Fields >+BugzillaSearchPage_Field_0=Boolean Charts >+BugzillaSearchPage_Field_Alias=Alias >+BugzillaSearchPage_Field_AssignedTo=AssignedTo >+BugzillaSearchPage_Field_Attachment_creator=Attachment creator >+BugzillaSearchPage_Field_Attachment_data=Attachment data >+BugzillaSearchPage_Field_Attachment_description=Attachment description >+BugzillaSearchPage_Field_Attachment_filename=Attachment filename >+BugzillaSearchPage_Field_Attachment_is_a_URL=Attachment is a URL >+BugzillaSearchPage_Field_Attachment_is_obsolete=Attachment is obsolete >+BugzillaSearchPage_Field_Attachment_is_patch=Attachment is patch >+BugzillaSearchPage_Field_Attachment_is_private=Attachment is private >+BugzillaSearchPage_Field_Attachment_mime_type=Attachment mime type >+BugzillaSearchPage_Field_Blocks=Blocks >+BugzillaSearchPage_Field_Bug=Bug \# >+BugzillaSearchPage_Field_CC=CC >+BugzillaSearchPage_Field_CC_Accessible=CC Accessible >+BugzillaSearchPage_Field_Classification=Classification >+BugzillaSearchPage_Field_Comment=Comment >+BugzillaSearchPage_Field_Comment_is_private=Comment is private >+BugzillaSearchPage_Field_Commenter=Commenter >+BugzillaSearchPage_Field_Component=Component >+BugzillaSearchPage_Field_Content=Content >+BugzillaSearchPage_Field_Creation_date=Creation date >+BugzillaSearchPage_Field_Days_since_bug_changed=Days since bug changed >+BugzillaSearchPage_Field_Depends_on=Depends on >+BugzillaSearchPage_Field_drop_down_custom_field=drop down custom field >+BugzillaSearchPage_Field_Ever_Confirmed=Ever Confirmed >+BugzillaSearchPage_Field_Flag=Flag >+BugzillaSearchPage_Field_Flag_Requestee=Flag Requestee >+BugzillaSearchPage_Field_Flag_Setter=Flag Setter >+BugzillaSearchPage_Field_free_text_custom_field=free text custom field >+BugzillaSearchPage_Field_Group=Group >+BugzillaSearchPage_Field_Keywords=Keywords >+BugzillaSearchPage_Field_Last_changed_date=Last changed date >+BugzillaSearchPage_Field_Noop=--- >+BugzillaSearchPage_Field_OS_Version=OS/Version >+BugzillaSearchPage_Field_Platform=Platform >+BugzillaSearchPage_Field_Priority=Priority >+BugzillaSearchPage_Field_Product=Product >+BugzillaSearchPage_Field_QAContact=QAContact >+BugzillaSearchPage_Field_ReportedBy=ReportedBy >+BugzillaSearchPage_Field_Reporter_Accessible=Reporter Accessible >+BugzillaSearchPage_Field_Resolution=Resolution >+BugzillaSearchPage_Field_Severity=Severity >+BugzillaSearchPage_Field_Status=Status >+BugzillaSearchPage_Field_Status_Whiteboard=Status Whiteboard >+BugzillaSearchPage_Field_Summary=Summary >+BugzillaSearchPage_Field_Target_Milestone=Target Milestone >+BugzillaSearchPage_Field_Time_Since_Assignee_Touched=Time Since Assignee Touched >+BugzillaSearchPage_Field_URL=URL >+BugzillaSearchPage_Field_Version=Version >+BugzillaSearchPage_Field_Votes=Votes > BugzillaSearchPage_More_Options=More Options > BugzillaSearchPage_Whiteboard=Whiteboard:
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 283200
:
181786
|
182765
|
182766
|
182767
|
183027
| 188185 |
188187
|
188209
|
188628
|
188629
|
188651
|
189135
|
189136
|
189525