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 28524 Details for
Bug 112884
Get rid of XSDTextEditor (no subclassing of StructuredTextEditor allowed)
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]
Attempted fix for this bug.
org.eclipse.wst.xsd.ui-src-bug112884.txt (text/plain), 34.70 KB, created by
Keith Chong
on 2005-10-20 12:07:08 EDT
(
hide
)
Description:
Attempted fix for this bug.
Filename:
MIME Type:
Creator:
Keith Chong
Created:
2005-10-20 12:07:08 EDT
Size:
34.70 KB
patch
obsolete
>Index: org/eclipse/wst/xsd/ui/internal/XSDActionBarContributor.java >=================================================================== >RCS file: /cvsroot/webtools/wst/components/xsd/plugins/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDActionBarContributor.java,v >retrieving revision 1.9 >diff -u -r1.9 XSDActionBarContributor.java >--- org/eclipse/wst/xsd/ui/internal/XSDActionBarContributor.java 3 Oct 2005 22:42:34 -0000 1.9 >+++ org/eclipse/wst/xsd/ui/internal/XSDActionBarContributor.java 20 Oct 2005 15:57:44 -0000 >@@ -201,7 +201,7 @@ > xsdEditor = (XSDEditor) targetEditor; > reloadDependenciesAction.setEditor((XSDEditor)targetEditor); > >- textEditor = ((XSDEditor)targetEditor).getXSDTextEditor(); >+ textEditor = ((XSDEditor)targetEditor).getTextEditor(); > if (textEditor != null) > { > >Index: org/eclipse/wst/xsd/ui/internal/XSDContentOutlinePage.java >=================================================================== >RCS file: /cvsroot/webtools/wst/components/xsd/plugins/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDContentOutlinePage.java,v >retrieving revision 1.4 >diff -u -r1.4 XSDContentOutlinePage.java >--- org/eclipse/wst/xsd/ui/internal/XSDContentOutlinePage.java 3 Oct 2005 22:42:34 -0000 1.4 >+++ org/eclipse/wst/xsd/ui/internal/XSDContentOutlinePage.java 20 Oct 2005 15:57:44 -0000 >@@ -10,11 +10,15 @@ > *******************************************************************************/ > package org.eclipse.wst.xsd.ui.internal; > >+import org.eclipse.core.runtime.Platform; > import org.eclipse.jface.action.Action; > import org.eclipse.jface.action.IMenuManager; > import org.eclipse.jface.action.MenuManager; > import org.eclipse.jface.resource.ImageDescriptor; >+import org.eclipse.jface.util.ListenerList; >+import org.eclipse.jface.util.SafeRunnable; > import org.eclipse.jface.viewers.ILabelProvider; >+import org.eclipse.jface.viewers.IPostSelectionProvider; > import org.eclipse.jface.viewers.ISelection; > import org.eclipse.jface.viewers.ISelectionChangedListener; > import org.eclipse.jface.viewers.IStructuredSelection; >@@ -34,6 +38,9 @@ > import org.eclipse.swt.widgets.Tree; > import org.eclipse.swt.widgets.TreeItem; > import org.eclipse.ui.IActionBars; >+import org.eclipse.ui.ISelectionListener; >+import org.eclipse.ui.IWorkbenchPart; >+import org.eclipse.ui.part.IPageSite; > import org.eclipse.ui.views.contentoutline.ContentOutlinePage; > import org.eclipse.wst.xsd.ui.internal.actions.OpenSchemaAction; > import org.eclipse.wst.xsd.ui.internal.provider.CategoryAdapter; >@@ -42,7 +49,7 @@ > import org.eclipse.xsd.XSDSchemaDirective; > import org.w3c.dom.Element; > >-public class XSDContentOutlinePage extends ContentOutlinePage >+public class XSDContentOutlinePage extends ContentOutlinePage implements ISelectionListener > { > protected XSDEditor xsdEditor; > protected int level = 0; >@@ -52,18 +59,33 @@ > protected XSDSelectionManager selectionManager; > protected SelectionManagerSelectionChangeListener selectionManagerSelectionChangeListener = new SelectionManagerSelectionChangeListener(); > protected TreeSelectionChangeListener treeSelectionChangeListener = new TreeSelectionChangeListener(); >- XSDTextEditor xsdTextEditor; >+ XSDEditor xsdTextEditor; > XSDMenuListener menuListener; >- >+ SelectionProvider fSelectionProvider = null; >+ > /** > * > */ >- public XSDContentOutlinePage(XSDTextEditor xsdTextEditor) >+ public XSDContentOutlinePage(XSDEditor xsdTextEditor) > { > super(); > this.xsdTextEditor = xsdTextEditor; >+ fSelectionProvider = new SelectionProvider(); > } > >+ public void init(IPageSite pageSite) >+ { >+ super.init(pageSite); >+ getSite().getWorkbenchWindow().getSelectionService().addPostSelectionListener(this); >+ getSite().setSelectionProvider(fSelectionProvider); >+ } >+ >+ public void dispose() >+ { >+ super.dispose(); >+ getSite().getWorkbenchWindow().getSelectionService().removePostSelectionListener(this); >+ } >+ > public void setModel(Object newModel) > { > model = newModel; >@@ -91,19 +113,19 @@ > getTreeViewer().setContentProvider(contentProvider); > getTreeViewer().setLabelProvider(labelProvider); > getTreeViewer().setInput(model); >- getTreeViewer().addSelectionChangedListener(this); >+// getTreeViewer().addSelectionChangedListener(this); > MenuManager menuManager = new MenuManager("#popup");//$NON-NLS-1$ > menuManager.setRemoveAllWhenShown(true); > Menu menu = menuManager.createContextMenu(getTreeViewer().getControl()); > getTreeViewer().getControl().setMenu(menu); >- menuListener = new XSDMenuListener(xsdTextEditor.getXSDEditor().getSelectionManager()); >+ menuListener = new XSDMenuListener(xsdTextEditor.getSelectionManager()); > // menuListener.setSelectionProvider(getTreeViewer()); > menuManager.addMenuListener(menuListener); > > // enable popupMenus extension >- getSite().registerContextMenu("org.eclipse.wst.xsd.ui.popup.outline", menuManager, xsdTextEditor.getXSDEditor().getSelectionManager()); >- >- setSelectionManager(xsdTextEditor.getXSDEditor().getSelectionManager()); >+ getSite().registerContextMenu("org.eclipse.wst.xsd.ui.popup.outline", menuManager, xsdTextEditor.getSelectionManager()); >+ >+ setSelectionManager(xsdTextEditor.getSelectionManager()); > // cs... why are we doing this from the outline view? > // > //xsdTextEditor.getXSDEditor().getSelectionManager().setSelection(new >@@ -125,13 +147,18 @@ > XSDConcreteComponent comp = (XSDConcreteComponent)obj; > if (comp.getContainer() instanceof XSDSchema) > { >- xsdTextEditor.getXSDEditor().getGraphViewer().setInput(obj); >+ xsdTextEditor.getGraphViewer().setInput(obj); > } > } > } > > } > }); >+ >+ >+ getTreeViewer().addPostSelectionChangedListener(fSelectionProvider.getPostSelectionChangedListener()); >+ getTreeViewer().addSelectionChangedListener(fSelectionProvider.getSelectionChangedListener()); >+ > } > class XSDKeyListener extends KeyAdapter > { >@@ -186,12 +213,67 @@ > getTreeViewer().expandToLevel(level); > } > >- // public ISelection getSelection() >- // { >- // if (getTreeViewer() == null) >- // return StructuredSelection.EMPTY; >- // return getTreeViewer().getSelection(); >- // } >+ public void selectionChanged(IWorkbenchPart part, ISelection selection) >+ { >+ if (selectionManager != null) >+ { >+ if (selection instanceof IStructuredSelection) >+ { >+ IStructuredSelection structuredSelection = (IStructuredSelection) selection; >+ Object o = structuredSelection.getFirstElement(); >+ // TODO ... >+ // we need to implement a selectionManagerMapping extension point >+ // so that extensions can specify how they'd like to map view objects >+ // to selection objects >+ // >+ if (o instanceof Element) >+ { >+ try >+ { >+ Object modelObject = xsdTextEditor.getXSDSchema().getCorrespondingComponent((Element) o); >+ if (modelObject != null) >+ { >+ o = modelObject; >+ } >+ } >+ catch (Exception e) >+ { >+ } >+ } >+ else if (o instanceof CategoryAdapter) >+ { >+ // todo... we need to ensure we eliminate the propagation >+ // of 'view' specific objects into the SelectionManager. >+ // We need to do some work to ensure all views utilize the 'Category' model object >+ // so we can get rid of this CategoryAdapter class. >+// CategoryAdapter adapter = (CategoryAdapter) o; >+// o = adapter.getXSDSchema(); >+ } >+ if (o != null) >+ { >+ if (getControl() != null && !getControl().isDisposed() && !getControl().isFocusControl() && getControl().isVisible()) { >+ /* >+ * Do not allow selection from other parts to affect selection >+ * in the tree widget if it has focus. Selection events >+ * "bouncing" off of other parts are all that we can receive >+ * if we have focus (since we forward selection to the >+ * service), and only the user should affect selection if we >+ * have focus. >+ */ >+ getTreeViewer().setSelection(new StructuredSelection(o), true); >+ } >+ selectionManager.setSelection(new StructuredSelection(o), getTreeViewer()); >+// selectionManager.selectionChanged(new SelectionChangedEvent(getTreeViewer(),new StructuredSelection(o))); >+ } >+ else >+ { >+ // selectionManager.setSelection(new StructuredSelection(), >+ // getTreeViewer()); >+ } >+ } >+ } >+ } >+ > public void setSelectionManager(XSDSelectionManager newSelectionManager) > { > TreeViewer treeViewer = getTreeViewer(); >@@ -209,6 +291,7 @@ > treeViewer.addSelectionChangedListener(treeSelectionChangeListener); > } > } >+ > class SelectionManagerSelectionChangeListener implements ISelectionChangedListener > { > public void selectionChanged(SelectionChangedEvent event) >@@ -263,11 +346,6 @@ > selectionManager.setSelection(new StructuredSelection(o), getTreeViewer()); > // selectionManager.selectionChanged(new SelectionChangedEvent(getTreeViewer(),new StructuredSelection(o))); > } >- else >- { >- // selectionManager.setSelection(new StructuredSelection(), >- // getTreeViewer()); >- } > } > } > } >@@ -378,4 +456,102 @@ > return true; > } > } >+ >+ /** >+ * Forwards post-selection from the tree viewer to the listeners while >+ * acting as this page's selection provider. >+ */ >+ private class SelectionProvider implements IPostSelectionProvider { >+ private class PostSelectionChangedListener implements ISelectionChangedListener { >+ public void selectionChanged(SelectionChangedEvent event) { >+ if (!isFiringSelection()) { >+ fireSelectionChanged(event, postListeners); >+ } >+ } >+ } >+ >+ private class SelectionChangedListener implements ISelectionChangedListener { >+ public void selectionChanged(SelectionChangedEvent event) { >+ if (!isFiringSelection()) { >+ fireSelectionChanged(event, listeners); >+ } >+ } >+ } >+ >+ private boolean isFiringSelection = false; >+ private ListenerList listeners = new ListenerList(); >+ private ListenerList postListeners = new ListenerList(); >+ private ISelectionChangedListener postSelectionChangedListener = new PostSelectionChangedListener(); >+ private ISelectionChangedListener selectionChangedListener = new SelectionChangedListener(); >+ >+ public void addPostSelectionChangedListener(ISelectionChangedListener listener) { >+ postListeners.add(listener); >+ } >+ >+ public void addSelectionChangedListener(ISelectionChangedListener listener) { >+ listeners.add(listener); >+ } >+ >+ public void fireSelectionChanged(final SelectionChangedEvent event, ListenerList listenerList) { >+ isFiringSelection = true; >+ Object[] listeners = listenerList.getListeners(); >+ for (int i = 0; i < listeners.length; ++i) { >+ final ISelectionChangedListener l = (ISelectionChangedListener) listeners[i]; >+ Platform.run(new SafeRunnable() { >+ public void run() { >+ l.selectionChanged(event); >+ } >+ }); >+ } >+ isFiringSelection = false; >+ } >+ >+ public void fireSelectionChanged(final SelectionChangedEvent event) { >+ isFiringSelection = true; >+ Object[] listeners = postListeners.getListeners(); >+ for (int i = 0; i < listeners.length; ++i) { >+ final ISelectionChangedListener l = (ISelectionChangedListener) listeners[i]; >+ Platform.run(new SafeRunnable() { >+ public void run() { >+ l.selectionChanged(event); >+ } >+ }); >+ } >+ isFiringSelection = false; >+ } >+ >+ public ISelectionChangedListener getPostSelectionChangedListener() { >+ return postSelectionChangedListener; >+ } >+ >+ public ISelection getSelection() { >+ if (getTreeViewer() != null) { >+ return getTreeViewer().getSelection(); >+ } >+ return StructuredSelection.EMPTY; >+ } >+ >+ public ISelectionChangedListener getSelectionChangedListener() { >+ return selectionChangedListener; >+ } >+ >+ public boolean isFiringSelection() { >+ return isFiringSelection; >+ } >+ >+ public void removePostSelectionChangedListener(ISelectionChangedListener listener) { >+ postListeners.remove(listener); >+ } >+ >+ public void removeSelectionChangedListener(ISelectionChangedListener listener) { >+ listeners.remove(listener); >+ }; >+ >+ public void setSelection(ISelection selection) { >+ if (isFiringSelection) { >+ getTreeViewer().setSelection(selection); >+ } >+ }; >+ } >+ > } >\ No newline at end of file >Index: org/eclipse/wst/xsd/ui/internal/XSDEditor.java >=================================================================== >RCS file: /cvsroot/webtools/wst/components/xsd/plugins/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDEditor.java,v >retrieving revision 1.25 >diff -u -r1.25 XSDEditor.java >--- org/eclipse/wst/xsd/ui/internal/XSDEditor.java 3 Oct 2005 23:16:53 -0000 1.25 >+++ org/eclipse/wst/xsd/ui/internal/XSDEditor.java 20 Oct 2005 15:57:44 -0000 >@@ -37,6 +37,8 @@ > import org.eclipse.ui.PartInitException; > import org.eclipse.ui.PlatformUI; > import org.eclipse.ui.editors.text.ILocationProvider; >+import org.eclipse.ui.views.contentoutline.IContentOutlinePage; >+import org.eclipse.ui.views.properties.IPropertySheetPage; > import org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertySheetPageContributor; > import org.eclipse.wst.sse.core.internal.provisional.INodeNotifier; > import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel; >@@ -45,6 +47,10 @@ > import org.eclipse.wst.sse.ui.StructuredTextEditor; > import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel; > import org.eclipse.wst.xsd.ui.internal.graph.XSDGraphViewer; >+import org.eclipse.wst.xsd.ui.internal.properties.section.XSDTabbedPropertySheetPage; >+import org.eclipse.wst.xsd.ui.internal.provider.XSDAdapterFactoryLabelProvider; >+import org.eclipse.wst.xsd.ui.internal.provider.XSDContentProvider; >+import org.eclipse.wst.xsd.ui.internal.provider.XSDModelAdapterFactoryImpl; > import org.eclipse.wst.xsd.ui.internal.text.XSDModelAdapter; > import org.eclipse.wst.xsd.ui.internal.util.OpenOnSelectionHelper; > import org.eclipse.xsd.XSDConcreteComponent; >@@ -57,7 +63,7 @@ > // public class XSDEditor extends StructuredTextMultiPageEditorPart > public class XSDEditor extends XSDMultiPageEditorPart implements ITabbedPropertySheetPageContributor > { >- protected XSDTextEditor textEditor; >+ protected StructuredTextEditor textEditor; > IFile resourceFile; > XSDSelectionManager xsdSelectionManager; > XSDModelAdapter schemalNodeAdapter; >@@ -107,6 +113,9 @@ > { > if (!loadFile()) > return; >+ >+ xsdModelAdapterFactory = XSDModelAdapterFactoryImpl.getInstance(); >+ adapterFactoryLabelProvider = new XSDAdapterFactoryLabelProvider(xsdModelAdapterFactory); > > // source page MUST be created before design page, now > createSourcePage(); >@@ -374,7 +383,8 @@ > */ > protected StructuredTextEditor createTextEditor() > { >- return new XSDTextEditor(this); >+ textEditor = new StructuredTextEditor(); >+ return textEditor; > } > > /* >@@ -383,10 +393,8 @@ > protected void createSourcePage() throws PartInitException > { > super.createSourcePage(); >- >- textEditor = (XSDTextEditor) getTextEditor(); > >- openOnSelectionHelper = new OpenOnSelectionHelper(textEditor); >+ openOnSelectionHelper = new OpenOnSelectionHelper(textEditor, getXSDSchema()); > } > > int sourcePageIndex = -1; >@@ -422,11 +430,16 @@ > > // this forces the editor to initially select the top level schema object > // >- if (textEditor.getXSDSchema() != null) >+ if (getXSDSchema() != null) > { >- getSelectionManager().setSelection(new StructuredSelection(textEditor.getXSDSchema())); >+ getSelectionManager().setSelection(new StructuredSelection(getXSDSchema())); > } > } >+ >+ protected XSDModelAdapterFactoryImpl xsdModelAdapterFactory; >+ protected XSDAdapterFactoryLabelProvider adapterFactoryLabelProvider; >+ private IPropertySheetPage fPropertySheetPage; >+ private IContentOutlinePage fOutlinePage; > > /* > * @see IAdaptable#getAdapter(Class) >@@ -438,12 +451,49 @@ > { > result = xsdSelectionManager; > } >+ if (IPropertySheetPage.class.equals(key)) >+ { >+ fPropertySheetPage = new XSDTabbedPropertySheetPage(this); >+ >+ ((XSDTabbedPropertySheetPage)fPropertySheetPage).setXSDModelAdapterFactory(xsdModelAdapterFactory); >+ ((XSDTabbedPropertySheetPage)fPropertySheetPage).setSelectionManager(getSelectionManager()); >+ ((XSDTabbedPropertySheetPage)fPropertySheetPage).setXSDSchema(getXSDSchema()); >+ >+ return fPropertySheetPage; >+ } >+ else if (IContentOutlinePage.class.equals(key)) >+ { >+ if (fOutlinePage == null || fOutlinePage.getControl() == null || fOutlinePage.getControl().isDisposed()) >+ { >+ XSDContentOutlinePage outlinePage = new XSDContentOutlinePage(this); >+ XSDContentProvider xsdContentProvider = new XSDContentProvider(xsdModelAdapterFactory); >+ xsdContentProvider.setXSDSchema(getXSDSchema()); >+ outlinePage.setContentProvider(xsdContentProvider); >+ outlinePage.setLabelProvider(adapterFactoryLabelProvider); >+ outlinePage.setModel(getXSDSchema().getDocument()); >+ >+ fOutlinePage = outlinePage; >+ } >+ return fOutlinePage; >+ } > else > { >- result = textEditor.getAdapter(key); >+ result = super.getAdapter(key); > } > return result; > } >+ >+ >+ public XSDModelAdapterFactoryImpl getXSDModelAdapterFactory() >+ { >+ return xsdModelAdapterFactory; >+ } >+ >+ public XSDAdapterFactoryLabelProvider getLabelProvider() >+ { >+ return adapterFactoryLabelProvider; >+ } >+ > > public XSDSelectionManager getSelectionManager() > { >@@ -527,7 +577,7 @@ > return getActiveEditor(); > } > >- public XSDTextEditor getXSDTextEditor() >+ public StructuredTextEditor getTextEditor() > { > return textEditor; > } >Index: org/eclipse/wst/xsd/ui/internal/XSDTextEditor.java >=================================================================== >RCS file: /cvsroot/webtools/wst/components/xsd/plugins/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/XSDTextEditor.java,v >retrieving revision 1.21 >diff -u -r1.21 XSDTextEditor.java >--- org/eclipse/wst/xsd/ui/internal/XSDTextEditor.java 3 Oct 2005 19:28:33 -0000 1.21 >+++ org/eclipse/wst/xsd/ui/internal/XSDTextEditor.java 20 Oct 2005 15:57:44 -0000 >@@ -10,6 +10,8 @@ > *******************************************************************************/ > package org.eclipse.wst.xsd.ui.internal; > >+import java.util.ArrayList; >+import java.util.Arrays; > import java.util.Iterator; > import java.util.List; > import java.util.ResourceBundle; >@@ -17,7 +19,18 @@ > import org.eclipse.core.resources.IFile; > import org.eclipse.core.runtime.Platform; > import org.eclipse.jface.action.IMenuManager; >+import org.eclipse.jface.text.ISelectionValidator; >+import org.eclipse.jface.text.ITextSelection; >+import org.eclipse.jface.text.TextSelection; >+import org.eclipse.jface.util.ListenerList; >+import org.eclipse.jface.util.SafeRunnable; >+import org.eclipse.jface.viewers.DoubleClickEvent; >+import org.eclipse.jface.viewers.IDoubleClickListener; >+import org.eclipse.jface.viewers.IPostSelectionProvider; >+import org.eclipse.jface.viewers.ISelection; > import org.eclipse.jface.viewers.ISelectionChangedListener; >+import org.eclipse.jface.viewers.ISelectionProvider; >+import org.eclipse.jface.viewers.IStructuredSelection; > import org.eclipse.jface.viewers.SelectionChangedEvent; > import org.eclipse.jface.viewers.StructuredSelection; > import org.eclipse.swt.SWT; >@@ -30,6 +43,9 @@ > import org.eclipse.ui.texteditor.ITextEditorActionConstants; > import org.eclipse.ui.views.contentoutline.IContentOutlinePage; > import org.eclipse.ui.views.properties.IPropertySheetPage; >+import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel; >+import org.eclipse.wst.sse.core.internal.provisional.IndexedRegion; >+import org.eclipse.wst.sse.core.internal.provisional.text.ITextRegion; > import org.eclipse.wst.sse.ui.StructuredTextEditor; > import org.eclipse.wst.sse.ui.internal.actions.StructuredTextEditorActionConstants; > import org.eclipse.wst.sse.ui.internal.openon.OpenOnAction; >@@ -49,7 +65,9 @@ > import org.w3c.dom.Element; > import org.w3c.dom.Node; > >- >+/** >+ * @deprecated Do not use subclass of StructuredTextEditor >+ */ > public class XSDTextEditor extends StructuredTextEditor implements INodeSelectionListener, ISelectionChangedListener > { > protected XSDSelectionManager xsdSelectionManager; >@@ -58,7 +76,7 @@ > protected InternalSelectionProvider internalSelectionProvider = new InternalSelectionProvider(); > private IPropertySheetPage fPropertySheetPage; > private IContentOutlinePage fOutlinePage; >- >+ > public XSDTextEditor(XSDEditor xsdEditor) > { > super(); >@@ -70,7 +88,6 @@ > xsdModelAdapterFactory = XSDModelAdapterFactoryImpl.getInstance(); > adapterFactoryLabelProvider = new XSDAdapterFactoryLabelProvider(xsdModelAdapterFactory); > } >- > public void dispose() > { > super.dispose(); >@@ -80,51 +97,51 @@ > xsdModelAdapterFactory = null; > } > >- public XSDModelAdapterFactoryImpl getXSDModelAdapterFactory() >- { >- return xsdModelAdapterFactory; >- } >- >- public static XSDAdapterFactoryLabelProvider getLabelProvider() >- { >- return adapterFactoryLabelProvider; >- } >- >- public Object getAdapter(Class required) { >- >- if (IPropertySheetPage.class.equals(required)) >- { >- fPropertySheetPage = new XSDTabbedPropertySheetPage(getXSDEditor()); >- >- ((XSDTabbedPropertySheetPage)fPropertySheetPage).setXSDModelAdapterFactory(xsdModelAdapterFactory); >- ((XSDTabbedPropertySheetPage)fPropertySheetPage).setSelectionManager(getXSDEditor().getSelectionManager()); >- ((XSDTabbedPropertySheetPage)fPropertySheetPage).setXSDSchema(getXSDSchema()); >- >- return fPropertySheetPage; >- } >- else if (IContentOutlinePage.class.equals(required)) >- { >- if (fOutlinePage == null || fOutlinePage.getControl() == null || fOutlinePage.getControl().isDisposed()) >- { >- XSDContentOutlinePage outlinePage = new XSDContentOutlinePage(this); >- XSDContentProvider xsdContentProvider = new XSDContentProvider(xsdModelAdapterFactory); >- xsdContentProvider.setXSDSchema(getXSDSchema()); >- outlinePage.setContentProvider(xsdContentProvider); >- outlinePage.setLabelProvider(adapterFactoryLabelProvider); >- outlinePage.setModel(getXSDSchema().getDocument()); >- >- // Update outline selection from source editor selection: >- getViewerSelectionManager().addNodeSelectionListener(this); >- internalSelectionProvider.addSelectionChangedListener(getViewerSelectionManager()); >- internalSelectionProvider.setEventSource(outlinePage); >- >- fOutlinePage = outlinePage; >- } >- return fOutlinePage; >- } >- >- return super.getAdapter(required); >- } >+// public XSDModelAdapterFactoryImpl getXSDModelAdapterFactory() >+// { >+// return xsdModelAdapterFactory; >+// } >+// >+// public static XSDAdapterFactoryLabelProvider getLabelProvider() >+// { >+// return adapterFactoryLabelProvider; >+// } >+ >+// public Object getAdapter(Class required) { >+// >+// if (IPropertySheetPage.class.equals(required)) >+// { >+// fPropertySheetPage = new XSDTabbedPropertySheetPage(getXSDEditor()); >+// >+// ((XSDTabbedPropertySheetPage)fPropertySheetPage).setXSDModelAdapterFactory(xsdModelAdapterFactory); >+// ((XSDTabbedPropertySheetPage)fPropertySheetPage).setSelectionManager(getXSDEditor().getSelectionManager()); >+// ((XSDTabbedPropertySheetPage)fPropertySheetPage).setXSDSchema(getXSDSchema()); >+// >+// return fPropertySheetPage; >+// } >+// else if (IContentOutlinePage.class.equals(required)) >+// { >+// if (fOutlinePage == null || fOutlinePage.getControl() == null || fOutlinePage.getControl().isDisposed()) >+// { >+// XSDContentOutlinePage outlinePage = new XSDContentOutlinePage(getXSDEditor()); >+// XSDContentProvider xsdContentProvider = new XSDContentProvider(xsdModelAdapterFactory); >+// xsdContentProvider.setXSDSchema(getXSDSchema()); >+// outlinePage.setContentProvider(xsdContentProvider); >+// outlinePage.setLabelProvider(adapterFactoryLabelProvider); >+// outlinePage.setModel(getXSDSchema().getDocument()); >+// >+// // Update outline selection from source editor selection: >+// getViewerSelectionManager().addNodeSelectionListener(this); >+// internalSelectionProvider.addSelectionChangedListener(getViewerSelectionManager()); >+// internalSelectionProvider.setEventSource(outlinePage); >+// >+// fOutlinePage = outlinePage; >+// } >+// return fOutlinePage; >+// } >+// >+// return super.getAdapter(required); >+// } > > > protected XSDContentOutlinePage outlinePage; >@@ -326,6 +343,6 @@ > fRefactorMenuGroup.setContext(context); > fRefactorMenuGroup.fillContextMenu(menu); > fRefactorMenuGroup.setContext(null); >- } >+ } > } > >Index: org/eclipse/wst/xsd/ui/internal/properties/section/XSDSectionLabelProvider.java >=================================================================== >RCS file: /cvsroot/webtools/wst/components/xsd/plugins/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/XSDSectionLabelProvider.java,v >retrieving revision 1.4 >diff -u -r1.4 XSDSectionLabelProvider.java >--- org/eclipse/wst/xsd/ui/internal/properties/section/XSDSectionLabelProvider.java 18 Apr 2005 17:37:46 -0000 1.4 >+++ org/eclipse/wst/xsd/ui/internal/properties/section/XSDSectionLabelProvider.java 20 Oct 2005 15:57:44 -0000 >@@ -15,7 +15,11 @@ > import org.eclipse.jface.viewers.LabelProvider; > import org.eclipse.jface.viewers.StructuredSelection; > import org.eclipse.swt.graphics.Image; >+import org.eclipse.ui.IEditorPart; >+import org.eclipse.ui.IWorkbench; >+import org.eclipse.ui.IWorkbenchWindow; > import org.eclipse.wst.xml.core.internal.provisional.document.IDOMNode; >+import org.eclipse.wst.xsd.ui.internal.XSDEditor; > import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin; > import org.eclipse.wst.xsd.ui.internal.XSDTextEditor; > import org.eclipse.xsd.XSDAttributeDeclaration; >@@ -50,7 +54,13 @@ > > if (selected instanceof XSDConcreteComponent) > { >- return XSDTextEditor.getLabelProvider().getImage((XSDConcreteComponent)selected); >+ IWorkbench workbench = XSDEditorPlugin.getPlugin().getWorkbench(); >+ IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow(); >+ IEditorPart editorPart = workbenchWindow.getActivePage().getActiveEditor(); >+ if (editorPart instanceof XSDEditor) >+ { >+ return ((XSDEditor)editorPart).getLabelProvider().getImage((XSDConcreteComponent)selected); >+ } > } > > // selected = typeMapper.remapObject(selected); >Index: org/eclipse/wst/xsd/ui/internal/properties/section/XSDTabbedPropertySheetPage.java >=================================================================== >RCS file: /cvsroot/webtools/wst/components/xsd/plugins/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/properties/section/XSDTabbedPropertySheetPage.java,v >retrieving revision 1.4 >diff -u -r1.4 XSDTabbedPropertySheetPage.java >--- org/eclipse/wst/xsd/ui/internal/properties/section/XSDTabbedPropertySheetPage.java 3 Oct 2005 22:42:31 -0000 1.4 >+++ org/eclipse/wst/xsd/ui/internal/properties/section/XSDTabbedPropertySheetPage.java 20 Oct 2005 15:57:44 -0000 >@@ -15,9 +15,11 @@ > import org.eclipse.jface.text.TextSelection; > import org.eclipse.jface.viewers.ISelection; > import org.eclipse.jface.viewers.ISelectionChangedListener; >+import org.eclipse.jface.viewers.IStructuredSelection; > import org.eclipse.jface.viewers.SelectionChangedEvent; > import org.eclipse.jface.viewers.StructuredSelection; > import org.eclipse.ui.IWorkbenchPart; >+import org.eclipse.ui.part.IPageSite; > import org.eclipse.wst.common.ui.properties.internal.provisional.ITabbedPropertySheetPageContributor; > import org.eclipse.wst.common.ui.properties.internal.provisional.TabbedPropertySheetPage; > import org.eclipse.wst.xsd.ui.internal.XSDSelectionManager; >@@ -25,10 +27,15 @@ > import org.eclipse.wst.xsd.ui.internal.provider.CategoryAdapter; > import org.eclipse.wst.xsd.ui.internal.provider.XSDModelAdapterFactoryImpl; > import org.eclipse.xsd.XSDSchema; >+import org.w3c.dom.Element; >+import org.w3c.dom.Node; >+import org.w3c.dom.ProcessingInstruction; >+import org.w3c.dom.Text; > > public class XSDTabbedPropertySheetPage extends TabbedPropertySheetPage > implements ISelectionChangedListener, INotifyChangedListener > { >+ XSDSchema xsdSchema; > private XSDSelectionManager selectionManager; > private XSDModelAdapterFactoryImpl adapterFactory; > /** >@@ -39,7 +46,12 @@ > super(tabbedPropertySheetPageContributor); > } > >- XSDSchema xsdSchema; >+ public void init(IPageSite pageSite) >+ { >+ super.init(pageSite); >+ getSite().getWorkbenchWindow().getSelectionService().addPostSelectionListener(this); >+ } >+ > public void setXSDSchema(XSDSchema xsdSchema) > { > this.xsdSchema = xsdSchema; >@@ -81,22 +93,51 @@ > // override for category > if (selection != null) > { >- if (selection instanceof StructuredSelection) >+ if (selection instanceof IStructuredSelection) > { >- StructuredSelection structuredSelection = (StructuredSelection)selection; >+ IStructuredSelection structuredSelection = (IStructuredSelection) selection; > if (structuredSelection.isEmpty()) > { > return; > } >- Object obj = structuredSelection.getFirstElement(); >- if (obj instanceof CategoryAdapter) >+ Object obj = structuredSelection.getFirstElement(); >+ if (obj instanceof Element) >+ { >+ try >+ { >+ Object modelObject = xsdSchema.getCorrespondingComponent((Element) obj); >+ if (modelObject != null) >+ { >+ obj = modelObject; >+ selection = new StructuredSelection(obj); >+ } >+ } >+ catch (Exception e) >+ { >+ } >+ } >+ else if (obj instanceof Text) >+ { >+ Node parent = ((Text)obj).getParentNode(); >+ Object modelObject = xsdSchema.getCorrespondingComponent(parent); >+ if (modelObject != null) >+ { >+ obj = modelObject; >+ selection = new StructuredSelection(obj); >+ } >+ } >+ else if (obj instanceof CategoryAdapter) > { > selection = new StructuredSelection(((CategoryAdapter)obj).getXSDSchema()); > } > else if (obj instanceof Category) > { > selection = new StructuredSelection(((Category)obj).getXSDSchema()); >- } >+ } >+ else if (obj instanceof ProcessingInstruction) >+ { >+ selection = new StructuredSelection(xsdSchema); >+ } > } > else if (selection instanceof TextSelection) > { >@@ -125,6 +166,7 @@ > { > adapterFactory.removeListener(this); > } >+ getSite().getWorkbenchWindow().getSelectionService().removePostSelectionListener(this); > super.dispose(); > } > >Index: org/eclipse/wst/xsd/ui/internal/util/OpenOnSelectionHelper.java >=================================================================== >RCS file: /cvsroot/webtools/wst/components/xsd/plugins/org.eclipse.wst.xsd.ui/src/org/eclipse/wst/xsd/ui/internal/util/OpenOnSelectionHelper.java,v >retrieving revision 1.5 >diff -u -r1.5 OpenOnSelectionHelper.java >--- org/eclipse/wst/xsd/ui/internal/util/OpenOnSelectionHelper.java 3 Oct 2005 22:42:33 -0000 1.5 >+++ org/eclipse/wst/xsd/ui/internal/util/OpenOnSelectionHelper.java 20 Oct 2005 15:57:45 -0000 >@@ -24,6 +24,7 @@ > import org.eclipse.ui.part.FileEditorInput; > import org.eclipse.wst.common.uriresolver.internal.util.URIHelper; > import org.eclipse.wst.sse.core.internal.provisional.IndexedRegion; >+import org.eclipse.wst.sse.ui.StructuredTextEditor; > import org.eclipse.wst.xsd.ui.internal.XSDEditor; > import org.eclipse.wst.xsd.ui.internal.XSDEditorPlugin; > import org.eclipse.wst.xsd.ui.internal.XSDTextEditor; >@@ -46,15 +47,22 @@ > public class OpenOnSelectionHelper > { > >- protected XSDTextEditor textEditor; >- >+ protected StructuredTextEditor textEditor; >+ protected XSDSchema xsdSchema; >+ > /** >- * Constructor for OpenOnSelectionHelper. >+ * @deprecated Constructor for OpenOnSelectionHelper. > */ > public OpenOnSelectionHelper(XSDTextEditor textEditor) > { >- this.textEditor = textEditor; > } >+ >+ public OpenOnSelectionHelper(StructuredTextEditor textEditor, XSDSchema xsdSchema) >+ { >+ this.textEditor = textEditor; >+ this.xsdSchema = xsdSchema; >+ } >+ > > boolean lastResult; > >@@ -94,7 +102,7 @@ > > protected boolean revealObject(final XSDConcreteComponent component) > { >- if (component.getRootContainer().equals(textEditor.getXSDSchema())) >+ if (component.getRootContainer().equals(xsdSchema)) > { > Node element = component.getElement(); > if (element instanceof IndexedRegion) >@@ -125,7 +133,8 @@ > { > try > { >- IEditorPart editorPart = workbenchWindow.getActivePage().openEditor(new FileEditorInput(schemaFile), textEditor.getXSDEditor().getEditorSite().getId()); >+ // IEditorPart editorPart = workbenchWindow.getActivePage().openEditor(new FileEditorInput(schemaFile), textEditor.getXSDEditor().getEditorSite().getId()); >+ IEditorPart editorPart = workbenchWindow.getActivePage().openEditor(new FileEditorInput(schemaFile), XSDEditorPlugin.getPlugin().PLUGIN_ID); > if (editorPart instanceof XSDEditor) > { > ((XSDEditor)editorPart).openOnGlobalReference(component); >@@ -146,7 +155,7 @@ > > public void openOnGlobalReference(XSDConcreteComponent comp) > { >- XSDSchema schema = textEditor.getXSDSchema(); >+ XSDSchema schema = xsdSchema; > String name = null; > if (comp instanceof XSDNamedComponent) > { >@@ -191,7 +200,6 @@ > for (Iterator i = selectedNodes.iterator(); i.hasNext();) > { > Object obj = i.next(); >- XSDSchema xsdSchema = textEditor.getXSDSchema(); > if (xsdSchema != null) > { > XSDConcreteComponent xsdComp = xsdSchema.getCorrespondingComponent((Node)obj);
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 112884
: 28524 |
28810