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 64658 Details for
Bug 183679
[QuickAccess] Polish QuickAccess dialog
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]
work in progress
patch-183679.txt (text/plain), 12.14 KB, created by
Boris Bokowski
on 2007-04-23 17:27:56 EDT
(
hide
)
Description:
work in progress
Filename:
MIME Type:
Creator:
Boris Bokowski
Created:
2007-04-23 17:27:56 EDT
Size:
12.14 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.ui.workbench >Index: Eclipse UI/org/eclipse/ui/internal/incubator/CtrlEAction.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/incubator/CtrlEAction.java,v >retrieving revision 1.20 >diff -u -r1.20 CtrlEAction.java >--- Eclipse UI/org/eclipse/ui/internal/incubator/CtrlEAction.java 16 Mar 2007 18:00:40 -0000 1.20 >+++ Eclipse UI/org/eclipse/ui/internal/incubator/CtrlEAction.java 23 Apr 2007 21:28:45 -0000 >@@ -20,6 +20,7 @@ > import org.eclipse.core.commands.ExecutionEvent; > import org.eclipse.core.runtime.Assert; > import org.eclipse.jface.dialogs.IDialogSettings; >+import org.eclipse.jface.dialogs.PopupDialog; > import org.eclipse.jface.resource.DeviceResourceException; > import org.eclipse.jface.resource.ImageDescriptor; > import org.eclipse.jface.resource.JFaceResources; >@@ -83,19 +84,23 @@ > if (window == null) { > return null; > } >- >+ > if (providers == null) { > providers = new AbstractProvider[] { new PreviousPicksProvider(), > new EditorProvider(), new ViewProvider(), > new PerspectiveProvider(), new CommandProvider(), > new ActionProvider(), new WizardProvider(), > new PreferenceProvider(), new PropertiesProvider() }; >- >+ > providerMap = new HashMap(); > for (int i = 0; i < providers.length; i++) { > providerMap.put(providers[i].getId(), providers[i]); > } > } >+ >+ PopupDialog popupDialog = new QuickAccessDialog(window.getShell(), providers); >+ popupDialog.open(); >+ if(true) return null; > > FilteringInfoPopup popup = new QuickAccessPopup(ProgressManagerUtil > .getDefaultParent(), providers); >Index: Eclipse UI/org/eclipse/ui/internal/incubator/AbstractElement.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/incubator/AbstractElement.java,v >retrieving revision 1.2 >diff -u -r1.2 AbstractElement.java >--- Eclipse UI/org/eclipse/ui/internal/incubator/AbstractElement.java 24 Nov 2006 15:41:17 -0000 1.2 >+++ Eclipse UI/org/eclipse/ui/internal/incubator/AbstractElement.java 23 Apr 2007 21:28:45 -0000 >@@ -11,6 +11,8 @@ > > package org.eclipse.ui.internal.incubator; > >+import java.util.StringTokenizer; >+ > import org.eclipse.jface.resource.ImageDescriptor; > > /** >@@ -30,6 +32,29 @@ > } > > /** >+ * @return a string containing the first character of every word for >+ * camel case checking. >+ */ >+ private static String getCamelCase(String label) { >+ StringTokenizer tokenizer = new StringTokenizer(label); >+ StringBuffer camelCase = new StringBuffer(); >+ while(tokenizer.hasMoreTokens()) { >+ String word = tokenizer.nextToken(); >+ camelCase.append(word.charAt(0)); >+ } >+ return camelCase.toString(); >+ } >+ >+ final String[] getMatchLabels() { >+ String sortLabel = getSortLabel(); >+ String camelCase = getCamelCase(sortLabel); >+ String combinedLabel = provider.getName() >+ + " " + getLabel(); //$NON-NLS-1$ >+ String combinedCamelCase = getCamelCase(combinedLabel); >+ return (new String[] { sortLabel, camelCase, combinedLabel, combinedCamelCase }); >+ } >+ >+ /** > * Returns the label to be displayed to the user. > * > * @return the label >Index: Eclipse UI/org/eclipse/ui/internal/incubator/QuickAccessDialog.java >=================================================================== >RCS file: Eclipse UI/org/eclipse/ui/internal/incubator/QuickAccessDialog.java >diff -N Eclipse UI/org/eclipse/ui/internal/incubator/QuickAccessDialog.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ Eclipse UI/org/eclipse/ui/internal/incubator/QuickAccessDialog.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,273 @@ >+package org.eclipse.ui.internal.incubator; >+ >+import org.eclipse.jface.dialogs.Dialog; >+import org.eclipse.jface.dialogs.PopupDialog; >+import org.eclipse.jface.layout.GridDataFactory; >+import org.eclipse.jface.resource.DeviceResourceException; >+import org.eclipse.jface.resource.ImageDescriptor; >+import org.eclipse.jface.resource.JFaceResources; >+import org.eclipse.jface.resource.LocalResourceManager; >+import org.eclipse.swt.SWT; >+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.graphics.Color; >+import org.eclipse.swt.graphics.FontMetrics; >+import org.eclipse.swt.graphics.GC; >+import org.eclipse.swt.graphics.Image; >+import org.eclipse.swt.graphics.Rectangle; >+import org.eclipse.swt.widgets.Composite; >+import org.eclipse.swt.widgets.Control; >+import org.eclipse.swt.widgets.Event; >+import org.eclipse.swt.widgets.Listener; >+import org.eclipse.swt.widgets.Shell; >+import org.eclipse.swt.widgets.Table; >+import org.eclipse.swt.widgets.TableColumn; >+import org.eclipse.swt.widgets.TableItem; >+import org.eclipse.swt.widgets.Text; >+import org.eclipse.ui.internal.IWorkbenchGraphicConstants; >+import org.eclipse.ui.internal.WorkbenchImages; >+import org.eclipse.ui.internal.WorkbenchPlugin; >+import org.eclipse.ui.internal.misc.StringMatcher; >+ >+/** >+ * @since 3.3 >+ * >+ */ >+public class QuickAccessDialog extends PopupDialog { >+ private static final int MAX_COUNT_PER_PROVIDER = 5; >+ private static final int MAX_COUNT_TOTAL = 20; >+ private Text filterText; >+ private AbstractProvider[] providers; >+ private Table table; >+ private LocalResourceManager resourceManager = new LocalResourceManager( >+ JFaceResources.getResources()); >+ >+ /** >+ * @param parent >+ * @param providers >+ */ >+ QuickAccessDialog(Shell parent, AbstractProvider[] providers) { >+ super(parent, SWT.RESIZE, true, true, true, true, "Foo", "foo"); //$NON-NLS-1$ //$NON-NLS-2$ >+ this.providers = providers; >+ } >+ >+ protected Control createTitleControl(Composite parent) { >+ filterText = new Text(parent, SWT.NONE); >+ >+ GC gc = new GC(parent); >+ gc.setFont(parent.getFont()); >+ FontMetrics fontMetrics = gc.getFontMetrics(); >+ gc.dispose(); >+ >+ GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).grab(true, >+ false).hint(SWT.DEFAULT, >+ Dialog.convertHeightInCharsToPixels(fontMetrics, 1)).applyTo( >+ filterText); >+ >+ filterText.addKeyListener(new KeyListener() { >+ public void keyPressed(KeyEvent e) { >+ if (e.keyCode == 0x0D) { >+ // return >+ // Object selectedElement = getSelectedElement(); >+ close(); >+ // handleElementSelected(selectedElement); >+ } >+ if (e.keyCode == SWT.ARROW_DOWN) >+ table.setFocus(); >+ if (e.keyCode == SWT.ARROW_UP) >+ table.setFocus(); >+ if (e.character == 0x1B) // ESC >+ close(); >+ } >+ >+ public void keyReleased(KeyEvent e) { >+ // do nothing >+ } >+ }); >+ filterText.addModifyListener(new ModifyListener() { >+ public void modifyText(ModifyEvent e) { >+ String text = ((Text) e.widget).getText(); >+ int length = text.length(); >+ if (length > 0) { >+ if (text.charAt(length - 1) != '*') { >+ text = text + '*'; >+ } >+ if (text.charAt(0) != '*') { >+ text = '*' + text; >+ } >+ } >+ refreshTable(text); >+ } >+ }); >+ >+ return filterText; >+ } >+ >+ /* >+ * (non-Javadoc) >+ * >+ * @see org.eclipse.jface.dialogs.PopupDialog#createDialogArea(org.eclipse.swt.widgets.Composite) >+ */ >+ protected Control createDialogArea(Composite parent) { >+ Composite composite = (Composite) super.createDialogArea(parent); >+ table = new Table(composite, SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL >+ | SWT.BORDER | SWT.FULL_SELECTION); >+ new TableColumn(table, SWT.NONE).setWidth(100); >+ new TableColumn(table, SWT.NONE).setWidth(300); >+ GridDataFactory.fillDefaults().grab(true, true).applyTo(table); >+ // table.addListener(SWT.MeasureItem, new Listener() { >+ // public void handleEvent(Event event) { >+ // TableEntry entry = (TableEntry) event.item.getData(); >+ // } >+ // }); >+ //TextLayout layout = new TextLayout(table.getDisplay()); >+ Listener listener = new Listener() { >+ public void handleEvent(Event event) { >+ switch (event.type) { >+ case SWT.MeasureItem: >+ break; >+ case SWT.PaintItem: >+ break; >+ case SWT.EraseItem: >+ Rectangle bounds = event.getBounds(); >+ if ((event.detail & SWT.SELECTED) != 0) { >+ Color oldForeground = event.gc.getForeground(); >+ Color oldBackground = event.gc.getBackground(); >+ >+ event.gc.setBackground(event.item.getDisplay() >+ .getSystemColor(SWT.COLOR_LIST_SELECTION)); >+ event.gc.setForeground(event.item.getDisplay() >+ .getSystemColor(SWT.COLOR_LIST_SELECTION_TEXT)); >+ event.gc.fillRectangle(bounds); >+ /* restore the old GC colors */ >+ event.gc.setForeground(oldForeground); >+ event.gc.setBackground(oldBackground); >+ /* ensure that default selection is not drawn */ >+ event.detail &= ~SWT.SELECTED; >+ } >+ break; >+ } >+ } >+ }; >+ table.addListener(SWT.MeasureItem, listener); >+ table.addListener(SWT.EraseItem, listener); >+ table.addListener(SWT.PaintItem, listener); >+ refreshTable(); >+ return composite; >+ } >+ >+ private static class TableEntry { >+ boolean firstInCategory; >+ AbstractElement element; >+ >+ TableEntry(boolean firstInCategory, AbstractElement element) { >+ this.firstInCategory = firstInCategory; >+ this.element = element; >+ } >+ } >+ >+ /** >+ * >+ */ >+ private void refreshTable() { >+ String filter = filterText.getText(); >+ refreshTable(filter); >+ } >+ >+ /** >+ * >+ */ >+ private void refreshTable(String filter) { >+ table.setRedraw(false); >+ try { >+ TableItem[] items = table.getItems(); >+ StringMatcher stringMatcher = new StringMatcher(filter, true, false); >+ int countTotal = 0; >+ for (int i = 0; i < providers.length >+ && countTotal < MAX_COUNT_TOTAL; i++) { >+ int countPerProvider = 0; >+ AbstractProvider provider = providers[i]; >+ AbstractElement[] elements = provider.getElements(); >+ element_loop: for (int j = 0; j < elements.length >+ && countPerProvider < MAX_COUNT_PER_PROVIDER >+ && countTotal < MAX_COUNT_TOTAL; j++) { >+ AbstractElement element = elements[j]; >+ String[] matchLabels = element.getMatchLabels(); >+ for (int k = 0; k < matchLabels.length; k++) { >+ if (stringMatcher.match(matchLabels[k])) { >+ boolean firstInCategory = countPerProvider == 0; >+ TableEntry entry = new TableEntry(firstInCategory, >+ element); >+ TableItem item; >+ if (countTotal < items.length) { >+ item = items[countTotal]; >+ } else { >+ item = new TableItem(table, SWT.NONE); >+ } >+ item.setData(entry); >+ if (firstInCategory) { >+ item >+ .setText(0, element.getProvider() >+ .getName()); >+ } >+ item.setText(1, element.getLabel()); >+ item.setImage(1, getImage(element)); >+ countPerProvider++; >+ countTotal++; >+ continue element_loop; >+ } >+ } >+ } >+ } >+ for (int i = countTotal; i < items.length; i++) { >+ items[i].dispose(); >+ } >+ if (countTotal > 0) { >+ table.setSelection(0); >+ } else { >+ table.deselectAll(); >+ } >+ } finally { >+ table.setRedraw(true); >+ } >+ } >+ >+ private Image getImage(AbstractElement element) { >+ Image image = findOrCreateImage(((AbstractElement) element) >+ .getImageDescriptor()); >+ if (image == null) { >+ image = WorkbenchImages >+ .getImage(IWorkbenchGraphicConstants.IMG_OBJ_ELEMENT); >+ } >+ return image; >+ } >+ >+ private Image findOrCreateImage(ImageDescriptor imageDescriptor) { >+ if (imageDescriptor == null) { >+ return null; >+ } >+ Image image = (Image) resourceManager.find(imageDescriptor); >+ if (image == null) { >+ try { >+ image = resourceManager.createImage(imageDescriptor); >+ } catch (DeviceResourceException e) { >+ WorkbenchPlugin.log(e); >+ } >+ } >+ return image; >+ } >+ >+ protected Control getFocusControl() { >+ return filterText; >+ } >+ >+ public boolean close() { >+ if (resourceManager != null) { >+ resourceManager.dispose(); >+ resourceManager = null; >+ } >+ return super.close(); >+ } >+}
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 183679
:
64658
|
64813
|
67141