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 52121 Details for
Bug 156277
[TabbedProperties] Tabbed Properties support filters and typeMapping for ITextSelection
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
[patch]
adds ISelectionConverter as an option for property contributors
156277Patch.txt (text/plain), 15.91 KB, created by
Karen Butzke
on 2006-10-17 10:22:37 EDT
(
hide
)
Description:
adds ISelectionConverter as an option for property contributors
Filename:
MIME Type:
Creator:
Karen Butzke
Created:
2006-10-17 10:22:37 EDT
Size:
15.91 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.ui.views.properties.tabbed >Index: src/org/eclipse/ui/internal/views/properties/tabbed/view/TabListContentProvider.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.ui.views.properties.tabbed/src/org/eclipse/ui/internal/views/properties/tabbed/view/TabListContentProvider.java,v >retrieving revision 1.1 >diff -u -r1.1 TabListContentProvider.java >--- src/org/eclipse/ui/internal/views/properties/tabbed/view/TabListContentProvider.java 17 Apr 2006 19:03:55 -0000 1.1 >+++ src/org/eclipse/ui/internal/views/properties/tabbed/view/TabListContentProvider.java 17 Oct 2006 14:21:51 -0000 >@@ -11,8 +11,8 @@ > package org.eclipse.ui.internal.views.properties.tabbed.view; > > import org.eclipse.jface.util.Assert; >-import org.eclipse.jface.viewers.ISelection; > import org.eclipse.jface.viewers.IStructuredContentProvider; >+import org.eclipse.jface.viewers.IStructuredSelection; > import org.eclipse.jface.viewers.Viewer; > import org.eclipse.ui.IWorkbenchPart; > >@@ -41,9 +41,9 @@ > * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object) > */ > public Object[] getElements(Object inputElement) { >- Assert.isTrue(inputElement instanceof ISelection); >+ Assert.isTrue(inputElement instanceof IStructuredSelection); > return registry >- .getTabDescriptors(currentPart, (ISelection) inputElement); >+ .getTabDescriptors(currentPart, (IStructuredSelection) inputElement); > } > > /** >Index: src/org/eclipse/ui/internal/views/properties/tabbed/view/SectionDescriptor.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.ui.views.properties.tabbed/src/org/eclipse/ui/internal/views/properties/tabbed/view/SectionDescriptor.java,v >retrieving revision 1.1 >diff -u -r1.1 SectionDescriptor.java >--- src/org/eclipse/ui/internal/views/properties/tabbed/view/SectionDescriptor.java 17 Apr 2006 19:03:55 -0000 1.1 >+++ src/org/eclipse/ui/internal/views/properties/tabbed/view/SectionDescriptor.java 17 Oct 2006 14:21:51 -0000 >@@ -19,7 +19,7 @@ > import org.eclipse.core.runtime.IStatus; > import org.eclipse.core.runtime.Status; > import org.eclipse.jface.viewers.IFilter; >-import org.eclipse.jface.viewers.ISelection; >+import org.eclipse.jface.viewers.IStructuredSelection; > import org.eclipse.ui.IWorkbenchPart; > import org.eclipse.ui.internal.views.properties.tabbed.TabbedPropertyViewPlugin; > import org.eclipse.ui.internal.views.properties.tabbed.TabbedPropertyViewStatusCodes; >@@ -174,7 +174,7 @@ > * @see org.eclipse.ui.views.properties.tabbed.ISectionDescriptor#appliesTo(org.eclipse.ui.IWorkbenchPart, > * org.eclipse.jface.viewers.ISelection) > */ >- public boolean appliesTo(IWorkbenchPart part, ISelection selection) { >+ public boolean appliesTo(IWorkbenchPart part, IStructuredSelection selection) { > return classFilter.appliesToSelection(this, selection); > } > >Index: src/org/eclipse/ui/internal/views/properties/tabbed/view/TabbedPropertyRegistry.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.ui.views.properties.tabbed/src/org/eclipse/ui/internal/views/properties/tabbed/view/TabbedPropertyRegistry.java,v >retrieving revision 1.2 >diff -u -r1.2 TabbedPropertyRegistry.java >--- src/org/eclipse/ui/internal/views/properties/tabbed/view/TabbedPropertyRegistry.java 29 Aug 2006 13:27:39 -0000 1.2 >+++ src/org/eclipse/ui/internal/views/properties/tabbed/view/TabbedPropertyRegistry.java 17 Oct 2006 14:21:52 -0000 >@@ -24,7 +24,7 @@ > import org.eclipse.core.runtime.Platform; > import org.eclipse.core.runtime.Status; > import org.eclipse.jface.viewers.ILabelProvider; >-import org.eclipse.jface.viewers.ISelection; >+import org.eclipse.jface.viewers.IStructuredSelection; > import org.eclipse.ui.IWorkbenchPart; > import org.eclipse.ui.internal.views.properties.tabbed.TabbedPropertyViewPlugin; > import org.eclipse.ui.internal.views.properties.tabbed.TabbedPropertyViewStatusCodes; >@@ -32,6 +32,7 @@ > import org.eclipse.ui.views.properties.tabbed.IActionProvider; > import org.eclipse.ui.views.properties.tabbed.ISectionDescriptor; > import org.eclipse.ui.views.properties.tabbed.ISectionDescriptorProvider; >+import org.eclipse.ui.views.properties.tabbed.ISelectionConverter; > import org.eclipse.ui.views.properties.tabbed.ITypeMapper; > > /** >@@ -68,6 +69,8 @@ > private static final String ATT_LABEL_PROVIDER = "labelProvider"; //$NON-NLS-1$ > > private static final String ATT_ACTION_PROVIDER = "actionProvider"; //$NON-NLS-1$ >+ >+ private static final String ATT_SELECTION_CONVERTER = "selectionConverter"; //$NON-NLS-1$ > > private static final String TOP = "top"; //$NON-NLS-1$ > >@@ -80,6 +83,8 @@ > protected ILabelProvider labelProvider; > > protected IActionProvider actionProvider; >+ >+ protected ISelectionConverter selectionConverter; > > protected ITypeMapper typeMapper; > >@@ -117,6 +122,10 @@ > typeMapper = (ITypeMapper) configurationElement > .createExecutableExtension(ATT_TYPE_MAPPER); > } >+ if (configurationElement.getAttribute(ATT_SELECTION_CONVERTER) != null) { >+ selectionConverter = (ISelectionConverter) configurationElement >+ .createExecutableExtension(ATT_SELECTION_CONVERTER); >+ } > } catch (CoreException exception) { > handleConfigurationError(id, exception); > } >@@ -234,7 +243,7 @@ > * input. The descriptors are sorted using the afterPage attribute. > */ > public TabDescriptor[] getTabDescriptors(IWorkbenchPart part, >- ISelection selection) { >+ IStructuredSelection selection) { > if (selection == null || selection.isEmpty()) { > return EMPTY_DESCRIPTOR_ARRAY; > } >@@ -250,7 +259,7 @@ > * given input. > */ > protected TabDescriptor[] filterTabDescriptors(TabDescriptor[] descriptors, >- IWorkbenchPart part, ISelection selection) { >+ IWorkbenchPart part, IStructuredSelection selection) { > List result = new ArrayList(); > for (int i = 0; i < descriptors.length; i++) { > TabDescriptor descriptor = adaptDescriptorFor(descriptors[i], part, >@@ -271,7 +280,7 @@ > * do not apply to the given input object. > */ > protected TabDescriptor adaptDescriptorFor(TabDescriptor target, >- IWorkbenchPart part, ISelection selection) { >+ IWorkbenchPart part, IStructuredSelection selection) { > List filteredSectionDescriptors = new ArrayList(); > List descriptors = target.getSectionDescriptors(); > for (Iterator iter = descriptors.iterator(); iter.hasNext();) { >@@ -452,6 +461,15 @@ > public IActionProvider getActionProvider() { > return actionProvider; > } >+ >+ /** >+ * Gets the structured selection provider for the contributor. >+ * >+ * @return the structured selection provider for the contributor. >+ */ >+ public ISelectionConverter getSelectionConverter() { >+ return selectionConverter; >+ } > > /** > * Sets the section descriptor provider for the contributor. >Index: src/org/eclipse/ui/internal/views/properties/tabbed/view/TabbedPropertyRegistryClassSectionFilter.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.ui.views.properties.tabbed/src/org/eclipse/ui/internal/views/properties/tabbed/view/TabbedPropertyRegistryClassSectionFilter.java,v >retrieving revision 1.1 >diff -u -r1.1 TabbedPropertyRegistryClassSectionFilter.java >--- src/org/eclipse/ui/internal/views/properties/tabbed/view/TabbedPropertyRegistryClassSectionFilter.java 17 Apr 2006 19:03:55 -0000 1.1 >+++ src/org/eclipse/ui/internal/views/properties/tabbed/view/TabbedPropertyRegistryClassSectionFilter.java 17 Oct 2006 14:21:52 -0000 >@@ -19,7 +19,6 @@ > import java.util.Set; > > import org.eclipse.jface.viewers.IFilter; >-import org.eclipse.jface.viewers.ISelection; > import org.eclipse.jface.viewers.IStructuredSelection; > import org.eclipse.ui.views.properties.tabbed.ISectionDescriptor; > import org.eclipse.ui.views.properties.tabbed.ITypeMapper; >@@ -41,19 +40,17 @@ > super(); > this.typeMapper = typeMapper; > } >- > /** > * Verifies if the property section extension represented by sectionElement > * applies to the given input. > */ > protected boolean appliesToSelection(ISectionDescriptor descriptor, >- ISelection selection) { >+ IStructuredSelection selection) { > >- if (selection instanceof IStructuredSelection >- && selection.isEmpty() == false) { >+ if (selection.isEmpty() == false) { > > if (descriptor.getEnablesFor() != ISectionDescriptor.ENABLES_FOR_ANY >- && ((IStructuredSelection) selection).size() != descriptor >+ && selection.size() != descriptor > .getEnablesFor()) { > /** > * enablesFor does not match the size of the selection, do not >@@ -65,7 +62,7 @@ > IFilter filter = descriptor.getFilter(); > > if (filter != null) { >- for (Iterator i = ((IStructuredSelection) selection).iterator(); i >+ for (Iterator i = selection.iterator(); i > .hasNext();) { > Object object = i.next(); > >@@ -85,7 +82,7 @@ > > Set effectiveTypes = new HashSet(); > >- for (Iterator i = ((IStructuredSelection) selection).iterator(); i >+ for (Iterator i = selection.iterator(); i > .hasNext();) { > > Object object = i.next(); >Index: src/org/eclipse/ui/views/properties/tabbed/ISectionDescriptor.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.ui.views.properties.tabbed/src/org/eclipse/ui/views/properties/tabbed/ISectionDescriptor.java,v >retrieving revision 1.1 >diff -u -r1.1 ISectionDescriptor.java >--- src/org/eclipse/ui/views/properties/tabbed/ISectionDescriptor.java 30 Jan 2006 21:34:23 -0000 1.1 >+++ src/org/eclipse/ui/views/properties/tabbed/ISectionDescriptor.java 17 Oct 2006 14:21:52 -0000 >@@ -13,7 +13,7 @@ > import java.util.List; > > import org.eclipse.jface.viewers.IFilter; >-import org.eclipse.jface.viewers.ISelection; >+import org.eclipse.jface.viewers.IStructuredSelection; > import org.eclipse.ui.IWorkbenchPart; > > /** >@@ -80,7 +80,7 @@ > * @return <code>true</code> if this section applies to the current > * selection. > */ >- public boolean appliesTo(IWorkbenchPart part, ISelection selection); >+ public boolean appliesTo(IWorkbenchPart part, IStructuredSelection selection); > > /** > * Get the section identifier below which this section is displayed. <code>"top"</code> >Index: src/org/eclipse/ui/views/properties/tabbed/TabbedPropertySheetPage.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.ui.views.properties.tabbed/src/org/eclipse/ui/views/properties/tabbed/TabbedPropertySheetPage.java,v >retrieving revision 1.7 >diff -u -r1.7 TabbedPropertySheetPage.java >--- src/org/eclipse/ui/views/properties/tabbed/TabbedPropertySheetPage.java 29 Aug 2006 13:27:39 -0000 1.7 >+++ src/org/eclipse/ui/views/properties/tabbed/TabbedPropertySheetPage.java 17 Oct 2006 14:21:52 -0000 >@@ -88,7 +88,7 @@ > > protected IStructuredContentProvider tabListContentProvider; > >- private ISelection currentSelection; >+ private IStructuredSelection currentSelection; > > private boolean activePropertySheet; > >@@ -539,7 +539,20 @@ > * org.eclipse.jface.viewers.ISelection) > */ > public void selectionChanged(IWorkbenchPart part, ISelection selection) { >- setInput(part, selection); >+ IStructuredSelection structuredSelection = null; >+ ISelectionConverter selectionConverter = registry.getSelectionConverter(); >+ if (selectionConverter != null ) { >+ structuredSelection = selectionConverter.structuredSelection(selection); >+ } >+ else { >+ if (selection instanceof IStructuredSelection) { >+ structuredSelection = (IStructuredSelection) selection; >+ } >+ else { >+ structuredSelection = new StructuredSelection(selection); >+ } >+ } >+ setInput(part, structuredSelection); > } > > /** >@@ -591,7 +604,7 @@ > /** > * Returns the last known selected tab for the given input. > */ >- private int getLastTabSelection(IWorkbenchPart part, ISelection input) { >+ private int getLastTabSelection(IWorkbenchPart part, IStructuredSelection input) { > TabDescriptor[] descriptors = registry.getTabDescriptors(part, input); > if (descriptors.length != 0) { > for (Iterator iter = selectionQueue.iterator(); iter.hasNext();) { >@@ -661,7 +674,7 @@ > return result; > } > >- private void setInput(IWorkbenchPart part, ISelection selection) { >+ private void setInput(IWorkbenchPart part, IStructuredSelection selection) { > if (selection.equals(currentSelection)) { > return; > } >@@ -833,7 +846,7 @@ > * @param selection > * the current selection in the active workbench part. > */ >- private void validateRegistry(ISelection selection) { >+ private void validateRegistry(IStructuredSelection selection) { > if (selection == null) { > return; > } >Index: schema/propertyContributor.exsd >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.ui.views.properties.tabbed/schema/propertyContributor.exsd,v >retrieving revision 1.2 >diff -u -r1.2 propertyContributor.exsd >--- schema/propertyContributor.exsd 29 Aug 2006 13:27:39 -0000 1.2 >+++ schema/propertyContributor.exsd 17 Oct 2006 14:21:51 -0000 >@@ -81,6 +81,16 @@ > </appInfo> > </annotation> > </attribute> >+ <attribute name="selectionConverter" type="string"> >+ <annotation> >+ <documentation> >+ The class that implements the selection converter, i.e. implements <tt>org.eclipse.ui.views.properties.tabbed.ISelectionConverter</tt> >+ </documentation> >+ <appInfo> >+ <meta.attribute kind="java" basedOn="org.eclipse.ui.views.properties.tabbed.ISelectionConverter"/> >+ </appInfo> >+ </annotation> >+ </attribute> > </complexType> > </element> > >Index: src/org/eclipse/ui/views/properties/tabbed/ISelectionConverter.java >=================================================================== >RCS file: src/org/eclipse/ui/views/properties/tabbed/ISelectionConverter.java >diff -N src/org/eclipse/ui/views/properties/tabbed/ISelectionConverter.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/ui/views/properties/tabbed/ISelectionConverter.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,38 @@ >+/******************************************************************************* >+ * Copyright (c) 2006 Oracle. 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: >+ * Oracle - initial API and implementation >+ ******************************************************************************/ >+package org.eclipse.ui.views.properties.tabbed; >+ >+import org.eclipse.jface.viewers.ISelection; >+import org.eclipse.jface.viewers.IStructuredSelection; >+ >+ >+/** >+ * Allows property sheet page contributors to convert an ISelection into an >+ * IStructuredSelection for use by the tabbed properties framework. map the input object type to a >+ * domain model type. The domain model type is then used for matching against >+ * the input attribute of the propertySection extension. >+ * <p> >+ * The selectionConverter will be needed if the selection events given by the property >+ * sheet page contributor are not IStructuredSelections as is the case for ITextEditors. >+ * </p> >+ * >+ * @since 3.3 >+ * @author Karen Moore >+ */ >+ >+public interface ISelectionConverter >+{ >+ /** >+ * Return an IStructuredSelection for the given ISelection >+ * @param selection >+ * @return the IStructuredSelection, not null >+ */ >+ IStructuredSelection structuredSelection(ISelection selection); >+}
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 156277
:
49659
|
52119
|
52121
|
53752