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 138459 Details for
Bug 279334
make the bugzilla keywords attribute editor usable by other connectors
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
clipboard.txt (text/plain), 9.84 KB, created by
Shawn Minto
on 2009-06-05 19:38:29 EDT
(
hide
)
Description:
patch
Filename:
MIME Type:
Creator:
Shawn Minto
Created:
2009-06-05 19:38:29 EDT
Size:
9.84 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.mylyn.tasks.ui >Index: src/org/eclipse/mylyn/internal/tasks/ui/editors/CheckboxMultiSelectAttributeEditor.java >=================================================================== >RCS file: src/org/eclipse/mylyn/internal/tasks/ui/editors/CheckboxMultiSelectAttributeEditor.java >diff -N src/org/eclipse/mylyn/internal/tasks/ui/editors/CheckboxMultiSelectAttributeEditor.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/mylyn/internal/tasks/ui/editors/CheckboxMultiSelectAttributeEditor.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,126 @@ >+package org.eclipse.mylyn.internal.tasks.ui.editors; >+ >+import java.util.Collections; >+import java.util.List; >+import java.util.Map; >+ >+import org.eclipse.jface.window.Window; >+import org.eclipse.mylyn.tasks.core.data.TaskAttribute; >+import org.eclipse.mylyn.tasks.core.data.TaskDataModel; >+import org.eclipse.mylyn.tasks.ui.editors.AbstractAttributeEditor; >+import org.eclipse.mylyn.tasks.ui.editors.LayoutHint; >+import org.eclipse.mylyn.tasks.ui.editors.LayoutHint.ColumnSpan; >+import org.eclipse.mylyn.tasks.ui.editors.LayoutHint.RowSpan; >+import org.eclipse.swt.SWT; >+import org.eclipse.swt.events.SelectionEvent; >+import org.eclipse.swt.events.SelectionListener; >+import org.eclipse.swt.graphics.Color; >+import org.eclipse.swt.layout.GridData; >+import org.eclipse.swt.layout.GridLayout; >+import org.eclipse.swt.widgets.Button; >+import org.eclipse.swt.widgets.Composite; >+import org.eclipse.swt.widgets.Shell; >+import org.eclipse.swt.widgets.Text; >+import org.eclipse.ui.PlatformUI; >+import org.eclipse.ui.forms.widgets.FormToolkit; >+ >+/** >+ * @author Shawn Minto >+ */ >+public class CheckboxMultiSelectAttributeEditor extends AbstractAttributeEditor { >+ >+ private Text valueText; >+ >+ public CheckboxMultiSelectAttributeEditor(TaskDataModel manager, TaskAttribute taskAttribute) { >+ super(manager, taskAttribute); >+ setLayoutHint(new LayoutHint(RowSpan.SINGLE, ColumnSpan.MULTIPLE)); >+ } >+ >+ @Override >+ public void createControl(Composite parent, FormToolkit toolkit) { >+ Composite keywordComposite = toolkit.createComposite(parent); >+ GridLayout layout = new GridLayout(2, false); >+ layout.marginWidth = 1; >+ keywordComposite.setLayout(layout); >+ >+ valueText = toolkit.createText(keywordComposite, ""); >+ GridData keywordsData = new GridData(GridData.FILL_HORIZONTAL); >+ valueText.setLayoutData(keywordsData); >+ valueText.setEditable(false); >+ >+ Button changeKeywordsButton = toolkit.createButton(keywordComposite, "Edit", SWT.FLAT); >+ GridData keyWordsButtonData = new GridData(); >+ changeKeywordsButton.setLayoutData(keyWordsButtonData); >+ changeKeywordsButton.addSelectionListener(new SelectionListener() { >+ >+ public void widgetDefaultSelected(SelectionEvent e) { >+ } >+ >+ public void widgetSelected(SelectionEvent e) { >+ >+ List<String> values = getValues(); >+ >+ Map<String, String> validValues = getAttributeMapper().getOptions(getTaskAttribute()); >+ >+ Shell shell = null; >+ if (PlatformUI.getWorkbench().getActiveWorkbenchWindow() != null) { >+ shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(); >+ } else { >+ shell = new Shell(PlatformUI.getWorkbench().getDisplay()); >+ } >+ >+ CheckBoxTreeDialogDialog keywordsDialog = new CheckBoxTreeDialogDialog(shell, values, validValues); >+ int responseCode = keywordsDialog.open(); >+ >+ List<String> newValues = keywordsDialog.getSelectedValues(); >+ if (responseCode == Window.OK && values != null) { >+ setValues(newValues); >+ attributeChanged(); >+ updateText(); >+ } else { >+ return; >+ } >+ >+ } >+ >+ }); >+ updateText(); >+ setControl(keywordComposite); >+ } >+ >+ private void updateText() { >+ if (valueText != null && !valueText.isDisposed()) { >+ StringBuilder valueString = new StringBuilder(); >+ List<String> values = getValuesLabels(); >+ Collections.sort(values); >+ for (int i = 0; i < values.size(); i++) { >+ valueString.append(values.get(i)); >+ if (i != values.size() - 1) { >+ valueString.append(", "); //$NON-NLS-1$ >+ } >+ } >+ valueText.setText(valueString.toString()); >+ } >+ } >+ >+ public List<String> getValues() { >+ return getAttributeMapper().getValues(getTaskAttribute()); >+ } >+ >+ public List<String> getValuesLabels() { >+ return getAttributeMapper().getValueLabels(getTaskAttribute()); >+ } >+ >+ public void setValues(List<String> newValues) { >+ getAttributeMapper().setValues(getTaskAttribute(), newValues); >+ attributeChanged(); >+ } >+ >+ @Override >+ protected void decorateIncoming(Color color) { >+ if (valueText != null && !valueText.isDisposed()) { >+ valueText.setBackground(color); >+ } >+ } >+ >+} >Index: src/org/eclipse/mylyn/internal/tasks/ui/editors/CheckBoxTreeDialogDialog.java >=================================================================== >RCS file: src/org/eclipse/mylyn/internal/tasks/ui/editors/CheckBoxTreeDialogDialog.java >diff -N src/org/eclipse/mylyn/internal/tasks/ui/editors/CheckBoxTreeDialogDialog.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/mylyn/internal/tasks/ui/editors/CheckBoxTreeDialogDialog.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,158 @@ >+package org.eclipse.mylyn.internal.tasks.ui.editors; >+ >+import java.util.HashSet; >+import java.util.List; >+import java.util.Map; >+import java.util.Set; >+ >+import org.eclipse.jface.dialogs.Dialog; >+import org.eclipse.jface.viewers.CheckStateChangedEvent; >+import org.eclipse.jface.viewers.CheckboxTreeViewer; >+import org.eclipse.jface.viewers.ICheckStateListener; >+import org.eclipse.jface.viewers.ITreeContentProvider; >+import org.eclipse.jface.viewers.LabelProvider; >+import org.eclipse.jface.viewers.TreeViewer; >+import org.eclipse.jface.viewers.Viewer; >+import org.eclipse.jface.viewers.ViewerSorter; >+import org.eclipse.mylyn.internal.provisional.commons.ui.EnhancedFilteredTree; >+import org.eclipse.mylyn.internal.provisional.commons.ui.SubstringPatternFilter; >+import org.eclipse.swt.SWT; >+import org.eclipse.swt.layout.GridData; >+import org.eclipse.swt.layout.GridLayout; >+import org.eclipse.swt.widgets.Composite; >+import org.eclipse.swt.widgets.Control; >+import org.eclipse.swt.widgets.Shell; >+import org.eclipse.ui.dialogs.PatternFilter; >+ >+/** >+ * @author Shawn Minto >+ */ >+public class CheckBoxTreeDialogDialog extends Dialog { >+ >+ private final Map<String, String> validValues; >+ >+ private CheckboxFilteredTree valueTree; >+ >+ private final List<String> selectedValues; >+ >+ private class CheckboxFilteredTree extends EnhancedFilteredTree { >+ >+ public CheckboxFilteredTree(Composite parent, int treeStyle, PatternFilter filter) { >+ super(parent, treeStyle, filter); >+ } >+ >+ @Override >+ protected TreeViewer doCreateTreeViewer(Composite parent, int style) { >+ return new CheckboxTreeViewer(parent, style); >+ } >+ >+ @Override >+ public CheckboxTreeViewer getViewer() { >+ return (CheckboxTreeViewer) super.getViewer(); >+ } >+ >+ } >+ >+ public CheckBoxTreeDialogDialog(Shell shell, List<String> values, Map<String, String> validValues) { >+ super(shell); >+ setShellStyle(getShellStyle() | SWT.RESIZE); >+ this.selectedValues = values; >+ this.validValues = validValues; >+ } >+ >+ @Override >+ protected Control createDialogArea(Composite parent) { >+ getShell().setText("Select Keywords"); >+ >+ Composite composite = new Composite(parent, SWT.NONE); >+ composite.setLayout(new GridLayout()); >+ GridData gd = new GridData(GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL | GridData.FILL_BOTH); >+ composite.setLayoutData(gd); >+ >+ valueTree = new CheckboxFilteredTree(composite, SWT.CHECK | SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL >+ | SWT.BORDER, new SubstringPatternFilter()); >+ GridData keyWordsTextData = new GridData(GridData.GRAB_HORIZONTAL | GridData.GRAB_VERTICAL | GridData.FILL_BOTH); >+ keyWordsTextData.heightHint = 175; >+ keyWordsTextData.widthHint = 160; >+ CheckboxTreeViewer viewer = valueTree.getViewer(); >+ viewer.getControl().setLayoutData(keyWordsTextData); >+ >+ if (validValues != null) { >+ >+ viewer.setContentProvider(new ITreeContentProvider() { >+ >+ public Object[] getChildren(Object parentElement) { >+ if (parentElement instanceof Map<?, ?>) { >+ return ((Map<?, ?>) parentElement).keySet().toArray(); >+ } >+ return null; >+ } >+ >+ public Object getParent(Object element) { >+ return null; >+ } >+ >+ public boolean hasChildren(Object element) { >+ return false; >+ } >+ >+ public Object[] getElements(Object inputElement) { >+ return getChildren(inputElement); >+ } >+ >+ public void dispose() { >+ } >+ >+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { >+ } >+ >+ }); >+ >+ viewer.setSorter(new ViewerSorter()); >+ viewer.setLabelProvider(new LabelProvider() { >+ @Override >+ public String getText(Object element) { >+ if (element instanceof String) { >+ return validValues.get(element); >+ } >+ return super.getText(element); >+ } >+ }); >+ viewer.setInput(validValues); >+ >+ Set<String> invalidKeywords = new HashSet<String>(); >+ for (String keyword : validValues.keySet()) { >+ if (!viewer.setChecked(keyword, true)) { >+ invalidKeywords.add(keyword); >+ } >+ } >+ >+ selectedValues.removeAll(invalidKeywords); >+ >+ viewer.setCheckedElements(selectedValues.toArray()); >+ >+ } >+ >+ viewer.addCheckStateListener(new ICheckStateListener() { >+ >+ public void checkStateChanged(CheckStateChangedEvent event) { >+ if (event.getChecked()) { >+ selectedValues.add((String) event.getElement()); >+ } else { >+ selectedValues.remove(event.getElement()); >+ } >+ } >+ >+ }); >+ >+ parent.pack(); >+ >+ applyDialogFont(composite); >+ >+ return composite; >+ } >+ >+ public List<String> getSelectedValues() { >+ return selectedValues; >+ } >+}
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 279334
: 138459 |
145867
|
145869
|
146268
|
149063