diff options
Diffstat (limited to 'jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/views/JpaStructureView.java')
-rw-r--r-- | jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/views/JpaStructureView.java | 223 |
1 files changed, 0 insertions, 223 deletions
diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/views/JpaStructureView.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/views/JpaStructureView.java deleted file mode 100644 index 154ada0ab3..0000000000 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/views/JpaStructureView.java +++ /dev/null @@ -1,223 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 2007 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.jpt.ui.internal.views; - -import java.util.HashMap; -import java.util.Map; -import org.eclipse.jface.action.IMenuListener; -import org.eclipse.jface.action.IMenuManager; -import org.eclipse.jface.action.MenuManager; -import org.eclipse.jface.action.Separator; -import org.eclipse.jface.viewers.ISelectionChangedListener; -import org.eclipse.jface.viewers.ITreeSelection; -import org.eclipse.jface.viewers.StructuredSelection; -import org.eclipse.jface.viewers.TreeViewer; -import org.eclipse.jpt.core.internal.IJpaContentNode; -import org.eclipse.jpt.core.internal.IJpaFile; -import org.eclipse.jpt.ui.internal.IJpaPlatformUi; -import org.eclipse.jpt.ui.internal.JptUiMessages; -import org.eclipse.jpt.ui.internal.PlatformRegistry; -import org.eclipse.jpt.ui.internal.jface.NullLabelProvider; -import org.eclipse.jpt.ui.internal.jface.NullTreeContentProvider; -import org.eclipse.jpt.ui.internal.selection.Selection; -import org.eclipse.jpt.ui.internal.structure.IJpaStructureProvider; -import org.eclipse.swt.SWT; -import org.eclipse.swt.layout.FillLayout; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Menu; -import org.eclipse.ui.IWorkbenchActionConstants; - -public class JpaStructureView extends AbstractJpaView -{ - private StructureComposite structureComposite; - - - public JpaStructureView() { - super(JptUiMessages.JpaStructureView_viewNotAvailable); - } - - - @Override - public void subcreatePartControl(Composite parent) { - structureComposite = - new StructureComposite(pageBook, SWT.NULL); - } - - public Selection getSelection() { - if (structureComposite.isVisible()) { - return structureComposite.getSelection(); - } - else { - return Selection.NULL_SELECTION; - } - } - - @Override - public void select(Selection newSelection) { - Selection currentSelection = getSelection(); - - if (newSelection.equals(currentSelection)) { - return; - } - - if (newSelection == Selection.NULL_SELECTION) { - showDefaultPage(); - } - else { - pageBook.showPage(structureComposite); - } - - structureComposite.select(newSelection); - } - - - public void addSelectionChangedListener(ISelectionChangedListener listener) { - structureComposite.viewer.addSelectionChangedListener(listener); - } - - public void removeSelectionChangedListener(ISelectionChangedListener listener) { - structureComposite.viewer.removeSelectionChangedListener(listener); - } - - - private class StructureComposite extends Composite - { - /* key: String file content id, value: IJpaStructureProvider */ - private Map structureProviders; - - private TreeViewer viewer; - - private StructureComposite(Composite parent, int style) { - super(parent, style); - - structureProviders = new HashMap(); - - this.setLayout(new FillLayout()); - - viewer = new TreeViewer(this, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL); - viewer.setAutoExpandLevel(2); - initContextMenu(); - } - - protected void initContextMenu() { - // Create dynamic menu mgr. Dynamic is currently required to - // support action contributions. - MenuManager mgr = new MenuManager(); - mgr.setRemoveAllWhenShown(true); - mgr.addMenuListener(new IMenuListener() { - public void menuAboutToShow(IMenuManager mgr) { - fillContextMenu(mgr); - } - }); - Menu menu = mgr.createContextMenu(viewer.getControl()); - viewer.getControl().setMenu(menu); - getSite().registerContextMenu(mgr, viewer); - - } - - /** - * Called when the context menu is about to open. - * Delegates to the action group using the viewer's selection as the action context. - * @since 2.0 - */ - protected void fillContextMenu(IMenuManager manager) { - manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS)); - } - - private Selection getSelection() { - ITreeSelection viewerSelection = (ITreeSelection) viewer.getSelection(); - - if (viewerSelection.isEmpty() || viewerSelection.size() > 1) { - if (viewer.getInput() == null) { - return Selection.NULL_SELECTION; - } - else { - return new Selection((IJpaContentNode) viewer.getInput()); - } - } - - else { - return new Selection((IJpaContentNode) viewerSelection.getFirstElement()); - } - - } - - private void select(Selection selection) { - // note: checks for null and equals() selection have already been performed - - if (selection.equals(Selection.NULL_SELECTION)) { - clearViewer(); - return; - } - - Selection currentSelection = getSelection(); - IJpaContentNode newNode = selection.getSelectedNode(); - IJpaFile newFile = newNode.getJpaFile(); - IJpaContentNode currentNode = - (currentSelection == Selection.NULL_SELECTION) ? - null : getSelection().getSelectedNode(); - IJpaFile currentFile = - (currentNode == null) ? - null : currentNode.getJpaFile(); - - if (newFile.equals(currentFile)) { - viewer.setSelection(new StructuredSelection(newNode), true); - } - else if (currentFile != null && newFile.getContentId().equals(currentFile.getContentId())) { - viewer.setInput(newFile.getContent()); - viewer.setSelection(new StructuredSelection(newNode), true); - } - else { - // new content type - // replace composite and set selection of tree - IJpaStructureProvider provider = getStructureProvider(newNode); - - if (provider == null) { - clearViewer(); - } - else { - viewer.setContentProvider(provider.buildContentProvider()); - viewer.setLabelProvider(provider.buildLabelProvider()); - viewer.setInput(newFile.getContent()); - } - } - } - - private void clearViewer() { - viewer.setContentProvider(NullTreeContentProvider.INSTANCE); - viewer.setLabelProvider(NullLabelProvider.INSTANCE); - viewer.setInput(null); - } - - private IJpaStructureProvider getStructureProvider(IJpaContentNode contentNode) { - String contentId = contentNode.getJpaFile().getContentId(); - IJpaStructureProvider provider = - (IJpaStructureProvider) structureProviders.get(contentId); - - if (provider == null) { - String vendorId = contentNode.getJpaProject().getPlatform().getId(); - IJpaPlatformUi jpaPlatformUI = PlatformRegistry.INSTANCE.getJpaPlatform(vendorId); - for (IJpaStructureProvider p : jpaPlatformUI.structureProviders()) { - if (p.fileContentType().equals(contentId)) { - provider = p; - break; - } - } - - //TODO this view and the detailsProviders Map is not created on a per project basis. - //the detailsProviders and their fileContentTypes could overlap across project, this would cause problems with storing this map. - if (provider != null) { - structureProviders.put(contentId, provider); - } - } - - return provider; - } - } -} |