diff options
author | pfullbright | 2008-03-12 22:13:30 +0000 |
---|---|---|
committer | pfullbright | 2008-03-12 22:13:30 +0000 |
commit | a95e843be6cd8bf6258b7ce0b9df0fe544df958f (patch) | |
tree | 80b3ef137e6e39ea57f354b61e190f030774a3c4 | |
parent | f5bbcdb32c82f002c60c9a7d008d36e3e3167524 (diff) | |
download | webtools.dali-a95e843be6cd8bf6258b7ce0b9df0fe544df958f.tar.gz webtools.dali-a95e843be6cd8bf6258b7ce0b9df0fe544df958f.tar.xz webtools.dali-a95e843be6cd8bf6258b7ce0b9df0fe544df958f.zip |
Project Explorer Content
46 files changed, 1372 insertions, 658 deletions
diff --git a/jpa/plugins/org.eclipse.jpt.ui/property_files/jpt_ui.properties b/jpa/plugins/org.eclipse.jpt.ui/property_files/jpt_ui.properties index 62edbc5f24..c41afb65f1 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/property_files/jpt_ui.properties +++ b/jpa/plugins/org.eclipse.jpt.ui/property_files/jpt_ui.properties @@ -58,6 +58,8 @@ GenerateEntitiesWizardPage_entityNameColumn=Entity Name GenericPlatformUiDialog_notSupportedMessageTitle=DDL Generation GenericPlatformUiDialog_notSupportedMessageText=DDL Generation is not supported by the Generic Platform. +JpaContent_label=JPA Content + JpaPreferencePage_defaultJpaLib=Default JPA implementation library: JpaPreferencePage_userLibsLink=<a>Configure user libraries ...</a> JpaPreferencePage_invalidJpaLib=Invalid Library: Must contain javax.persistence classes. diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/JpaPlatformUi.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/JpaPlatformUi.java index 5448dd54b9..5c8bc6fd59 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/JpaPlatformUi.java +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/JpaPlatformUi.java @@ -11,12 +11,12 @@ package org.eclipse.jpt.ui; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jpt.core.JpaFile; +import org.eclipse.jpt.core.JpaPlatform; import org.eclipse.jpt.core.JpaProject; import org.eclipse.jpt.core.JpaStructureNode; import org.eclipse.jpt.ui.details.JpaDetailsProvider; -import org.eclipse.jpt.ui.internal.structure.JpaStructureProvider; -import org.eclipse.ui.navigator.ICommonContentProvider; -import org.eclipse.ui.navigator.ICommonLabelProvider; +import org.eclipse.jpt.ui.navigator.JpaNavigatorProvider; +import org.eclipse.jpt.ui.structure.JpaStructureProvider; /** * This interface is to be implemented by a JPA vendor to provide extensions to @@ -39,17 +39,11 @@ import org.eclipse.ui.navigator.ICommonLabelProvider; public interface JpaPlatformUi { /** - * Return a *new* navigator content provider. There will be (at most) one - * of these per view that uses it. + * Return a *new* {@link JpaNavigatorProvider}, which determines + * Project Explorer content and look */ - ICommonContentProvider buildNavigatorContentProvider(); - - /** - * Return a *new* navigator label provider. There will be (at most) one - * of these per view that uses it. - */ - ICommonLabelProvider buildNavigatorLabelProvider(); - + JpaNavigatorProvider buildNavigatorProvider(); + /** * Return a *new* structure provider for the given JPA file */ diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/JptUiMessages.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/JptUiMessages.java index 996e1c8a51..7a7de08ad3 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/JptUiMessages.java +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/JptUiMessages.java @@ -62,6 +62,7 @@ public class JptUiMessages extends NLS public static String GenerateEntitiesWizardPage_tables; public static String GenericPlatformUiDialog_notSupportedMessageText; public static String GenericPlatformUiDialog_notSupportedMessageTitle; + public static String JpaContent_label; public static String JpaDetailsView_viewNotAvailable; public static String JpaFacetWizardPage_connectionLabel; public static String JpaFacetWizardPage_connectionLink; @@ -95,7 +96,7 @@ public class JptUiMessages extends NLS public static String PersistenceItemLabelProviderFactory_persistenceLabel; public static String PersistentAttributePage_mapAs; public static String PersistentTypePage_mapAs; - + static { // initialize resource bundle NLS.initializeMessages(BUNDLE_NAME, JptUiMessages.class); diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jface/DelegatingContentAndLabelProvider.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jface/DelegatingContentAndLabelProvider.java index ea9b8afc2a..702b5fb0d9 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jface/DelegatingContentAndLabelProvider.java +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jface/DelegatingContentAndLabelProvider.java @@ -97,11 +97,13 @@ public abstract class DelegatingContentAndLabelProvider extends BaseLabelProvide } public Image getImage(Object element) { - return itemLabelProvider(element).image(); + ItemLabelProvider provider = itemLabelProvider(element); + return (provider == null) ? null :provider.image(); } public String getText(Object element) { - return itemLabelProvider(element).text(); + ItemLabelProvider provider = itemLabelProvider(element); + return (provider == null) ? null : provider.text(); } /** diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jface/DelegatingTreeContentAndLabelProvider.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jface/DelegatingTreeContentAndLabelProvider.java index ae8498c934..d75f042919 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jface/DelegatingTreeContentAndLabelProvider.java +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jface/DelegatingTreeContentAndLabelProvider.java @@ -36,14 +36,17 @@ public class DelegatingTreeContentAndLabelProvider extends DelegatingContentAndL } public Object[] getChildren(Object parentElement) { - return itemContentProvider(parentElement).getChildren(); + TreeItemContentProvider provider = itemContentProvider(parentElement); + return (provider == null) ? new Object[0] : provider.getChildren(); } public Object getParent(Object element) { - return itemContentProvider(element).getParent(); + TreeItemContentProvider provider = itemContentProvider(element); + return (provider == null) ? null : provider.getParent(); } public boolean hasChildren(Object element) { - return itemContentProvider(element).hasChildren(); + TreeItemContentProvider provider = itemContentProvider(element); + return (provider == null) ? false : provider.hasChildren(); } } diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/navigator/JpaNavigatorContentAndLabelProvider.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/navigator/JpaNavigatorContentAndLabelProvider.java new file mode 100644 index 0000000000..6bda2b3b65 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/navigator/JpaNavigatorContentAndLabelProvider.java @@ -0,0 +1,20 @@ +/******************************************************************************* + * Copyright (c) 2008 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.navigator; + +import org.eclipse.jpt.ui.internal.jface.DelegatingTreeContentAndLabelProvider; + +public class JpaNavigatorContentAndLabelProvider extends DelegatingTreeContentAndLabelProvider +{ + public JpaNavigatorContentAndLabelProvider() { + super(new JpaNavigatorTreeItemContentProviderFactory(), new JpaNavigatorItemLabelProviderFactory()); + } +} diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/navigator/JpaNavigatorContentProvider.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/navigator/JpaNavigatorContentProvider.java index 38c646df86..dd2cf3af2a 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/navigator/JpaNavigatorContentProvider.java +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/navigator/JpaNavigatorContentProvider.java @@ -10,8 +10,6 @@ *******************************************************************************/ package org.eclipse.jpt.ui.internal.navigator; -import java.util.HashMap; -import java.util.Map; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.IAdaptable; import org.eclipse.core.runtime.IProgressMonitor; @@ -20,10 +18,8 @@ import org.eclipse.core.runtime.Status; import org.eclipse.core.runtime.jobs.Job; import org.eclipse.jface.viewers.StructuredViewer; import org.eclipse.jface.viewers.Viewer; -import org.eclipse.jpt.core.JpaPlatform; import org.eclipse.jpt.core.JpaProject; import org.eclipse.jpt.core.JptCorePlugin; -import org.eclipse.jpt.core.context.JpaContextNode; import org.eclipse.jpt.ui.JpaPlatformUi; import org.eclipse.jpt.ui.JptUiPlugin; import org.eclipse.ui.IMemento; @@ -48,24 +44,15 @@ import org.eclipse.wst.common.project.facet.core.events.IProjectFacetActionEvent public class JpaNavigatorContentProvider implements ICommonContentProvider { + private JpaNavigatorContentAndLabelProvider delegate; + private IFacetedProjectListener facetListener; private StructuredViewer viewer; - /** - * Exactly *one* of these is created for each view that utilizes it. Therefore, - * as we delegate to the platform UI for each project, we should maintain the - * same multiplicity. That is, if there is a delegate for each platform UI, we - * should maintain *one* delegate for each view. - * - * Key: platform id, Value: delegate content provider - */ - private Map<String, ICommonContentProvider> delegateContentProviders; - public JpaNavigatorContentProvider() { super(); - delegateContentProviders = new HashMap<String, ICommonContentProvider>(); facetListener = new FacetListener(); FacetedProjectFramework.addListener( facetListener, @@ -75,22 +62,25 @@ public class JpaNavigatorContentProvider } + public JpaNavigatorContentAndLabelProvider delegate() { + return delegate; + } + + // **************** IContentProvider implementation ************************ public void dispose() { FacetedProjectFramework.removeListener(facetListener); - for (ICommonContentProvider delegate : delegateContentProviders.values()) { + if (delegate != null) { delegate.dispose(); } - delegateContentProviders.clear(); } public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { - // should always be a StructuredViewer - this.viewer = (StructuredViewer) viewer; - for (ICommonContentProvider delegate : delegateContentProviders.values()) { + if (delegate != null) { delegate.inputChanged(viewer, oldInput, newInput); } + this.viewer = (StructuredViewer) viewer; } @@ -104,8 +94,6 @@ public class JpaNavigatorContentProvider // **************** ITreeContentProvider implementation ******************** public Object getParent(Object element) { - ICommonContentProvider delegate = getDelegate(element); - if (delegate != null) { return delegate.getParent(element); } @@ -127,8 +115,6 @@ public class JpaNavigatorContentProvider } } - ICommonContentProvider delegate = getDelegate(element); - if (delegate != null) { return delegate.hasChildren(element); } @@ -152,8 +138,6 @@ public class JpaNavigatorContentProvider } } - ICommonContentProvider delegate = getDelegate(parentElement); - if (delegate != null) { return delegate.getChildren(parentElement); } @@ -165,51 +149,26 @@ public class JpaNavigatorContentProvider // **************** IMementoAware implementation *************************** public void saveState(IMemento memento) { - for (ICommonContentProvider delegate : delegateContentProviders.values()) { - delegate.saveState(memento); - } + // no op } public void restoreState(IMemento memento) { - for (ICommonContentProvider delegate : delegateContentProviders.values()) { - delegate.restoreState(memento); - } + // no op } // **************** ICommonContentProvider implementation ****************** public void init(ICommonContentExtensionSite config) { - for (ICommonContentProvider delegate : delegateContentProviders.values()) { - delegate.init(config); - } - } - - - // *************** internal ************************************************ - - private ICommonContentProvider getDelegate(Object element) { - if (! (element instanceof IAdaptable)) { - return null; - } - - JpaContextNode contextNode = (JpaContextNode) ((IAdaptable) element).getAdapter(JpaContextNode.class); - - if (contextNode == null) { - return null; - } - - JpaPlatform platform = contextNode.jpaProject().jpaPlatform(); - JpaPlatformUi platformUi = JptUiPlugin.getPlugin().jpaPlatformUi(platform); - - ICommonContentProvider delegate = delegateContentProviders.get(platform.getId()); - - if (delegate == null && platform != null && ! delegateContentProviders.containsKey(platform.getId())) { - delegate = platformUi.buildNavigatorContentProvider(); - delegateContentProviders.put(platform.getId(), delegate); + if (delegate == null) { + JpaNavigatorLabelProvider labelProvider = (JpaNavigatorLabelProvider) config.getExtension().getLabelProvider(); + if (labelProvider != null && labelProvider.delegate() != null) { + delegate = labelProvider.delegate(); + } + else { + delegate = new JpaNavigatorContentAndLabelProvider(); + } } - - return delegate; } diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/navigator/JpaNavigatorItemLabelProviderFactory.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/navigator/JpaNavigatorItemLabelProviderFactory.java new file mode 100644 index 0000000000..975a819f60 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/navigator/JpaNavigatorItemLabelProviderFactory.java @@ -0,0 +1,75 @@ +/******************************************************************************* + * Copyright (c) 2008 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.navigator; + +import java.util.HashMap; +import java.util.Map; +import org.eclipse.core.runtime.IAdaptable; +import org.eclipse.jpt.core.JpaPlatform; +import org.eclipse.jpt.core.context.JpaContextNode; +import org.eclipse.jpt.ui.internal.jface.DelegatingContentAndLabelProvider; +import org.eclipse.jpt.ui.internal.jface.ItemLabelProvider; +import org.eclipse.jpt.ui.internal.jface.ItemLabelProviderFactory; +import org.eclipse.jpt.ui.navigator.JpaNavigatorProvider; + +public class JpaNavigatorItemLabelProviderFactory + implements ItemLabelProviderFactory +{ + /** + * Exactly *one* of these factories is created for each view that utilizes it. + * Therefore, as we delegate to the platform UI for each project, we should + * maintain the same multiplicity. That is, if there is a delegate for each + * platform UI, we should maintain *one* delegate for each view. + * + * Key: platform id, Value: delegate content provider factory + */ + private final Map<String, ItemLabelProviderFactory> delegates; + + + public JpaNavigatorItemLabelProviderFactory() { + super(); + this.delegates = new HashMap<String, ItemLabelProviderFactory>(); + } + + public ItemLabelProvider buildItemLabelProvider(Object item, DelegatingContentAndLabelProvider contentAndLabelProvider) { + ItemLabelProviderFactory delegate = getDelegate(item); + if (delegate != null) { + return delegate.buildItemLabelProvider(item, contentAndLabelProvider); + } + return null; + } + + + private ItemLabelProviderFactory getDelegate(Object element) { + if (! (element instanceof IAdaptable)) { + return null; + } + + JpaContextNode contextNode = (JpaContextNode) ((IAdaptable) element).getAdapter(JpaContextNode.class); + + if (contextNode == null) { + return null; + } + + JpaPlatform platform = contextNode.jpaProject().jpaPlatform(); + String platformId = platform.getId(); + if (delegates.containsKey(platformId)) { + return delegates.get(platformId); + } + JpaNavigatorProvider navigatorProvider = JpaNavigatorProviderLookup.provider(platform.getId()); + ItemLabelProviderFactory delegate = null; + if (navigatorProvider != null) { + delegate = navigatorProvider.itemLabelProviderFactory(); + } + delegates.put(platformId, delegate); + return delegate; + } +} diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/navigator/JpaNavigatorLabelProvider.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/navigator/JpaNavigatorLabelProvider.java index cd2bebab0d..4d92ba983f 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/navigator/JpaNavigatorLabelProvider.java +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/navigator/JpaNavigatorLabelProvider.java @@ -10,16 +10,8 @@ *******************************************************************************/ package org.eclipse.jpt.ui.internal.navigator; -import java.util.HashMap; -import java.util.Map; -import org.eclipse.core.runtime.IAdaptable; import org.eclipse.jface.viewers.ILabelProviderListener; import org.eclipse.jface.viewers.LabelProvider; -import org.eclipse.jface.viewers.LabelProviderChangedEvent; -import org.eclipse.jpt.core.JpaPlatform; -import org.eclipse.jpt.core.context.JpaContextNode; -import org.eclipse.jpt.ui.JpaPlatformUi; -import org.eclipse.jpt.ui.JptUiPlugin; import org.eclipse.swt.graphics.Image; import org.eclipse.ui.IMemento; import org.eclipse.ui.navigator.ICommonContentExtensionSite; @@ -37,39 +29,36 @@ import org.eclipse.ui.navigator.ICommonLabelProvider; public class JpaNavigatorLabelProvider extends LabelProvider implements ICommonLabelProvider { - /** - * Exactly *one* of these is created for each view that utilizes it. Therefore, - * as we delegate to the platform UI for each project, we should maintain the - * same multiplicity. That is, if there is a delegate for each platform UI, we - * should maintain *one* delegate for each view. - * - * Key: platform id, Value: delegate label provider - */ - private Map<String, ICommonLabelProvider> delegateLabelProviders; - - private ILabelProviderListener delegateLabelProviderListener; + private JpaNavigatorContentAndLabelProvider delegate; public JpaNavigatorLabelProvider() { super(); - delegateLabelProviders = new HashMap<String, ICommonLabelProvider>(); - delegateLabelProviderListener = new DelegateLabelProviderListener(); + } + + + public JpaNavigatorContentAndLabelProvider delegate() { + return delegate; } // **************** IBaseLabelProvider implementation ********************** public void addListener(ILabelProviderListener listener) { + if (delegate != null) { + delegate.addListener(listener); + } super.addListener(listener); } public void removeListener(ILabelProviderListener listener) { super.removeListener(listener); + if (delegate != null) { + delegate.removeListener(listener); + } } public boolean isLabelProperty(Object element, String property) { - ICommonLabelProvider delegate = getDelegate(element); - if (delegate != null) { return delegate.isLabelProperty(element, property); } @@ -78,19 +67,16 @@ public class JpaNavigatorLabelProvider extends LabelProvider } public void dispose() { - super.dispose(); - for (ICommonLabelProvider delegate : delegateLabelProviders.values()) { + if (delegate != null) { delegate.dispose(); } - delegateLabelProviders.clear(); + super.dispose(); } // **************** ILabelProvider implementation ************************** public Image getImage(Object element) { - ICommonLabelProvider delegate = getDelegate(element); - if (delegate != null) { return delegate.getImage(element); } @@ -99,8 +85,6 @@ public class JpaNavigatorLabelProvider extends LabelProvider } public String getText(Object element) { - ICommonLabelProvider delegate = getDelegate(element); - if (delegate != null) { return delegate.getText(element); } @@ -112,74 +96,33 @@ public class JpaNavigatorLabelProvider extends LabelProvider // **************** IDescriptionProvider implementation ******************** public String getDescription(Object element) { - ICommonLabelProvider delegate = getDelegate(element); - - if (delegate != null) { - return delegate.getDescription(element); - } - - // no "super" implementation - default to getText(..) for description - return super.getText(element); + // no op - defer to getText(element) + return getText(element); } // **************** IMementoAware implementation *************************** public void saveState(IMemento memento) { - for (ICommonLabelProvider delegate : delegateLabelProviders.values()) { - delegate.saveState(memento); - } + // no op } public void restoreState(IMemento memento) { - for (ICommonLabelProvider delegate : delegateLabelProviders.values()) { - delegate.restoreState(memento); - } + // no op } // **************** ICommonLabelProvider implementation ******************** public void init(ICommonContentExtensionSite config) { - for (ICommonLabelProvider delegate : delegateLabelProviders.values()) { - delegate.init(config); - } - } - - - // *************** internal ************************************************ - - private ICommonLabelProvider getDelegate(Object element) { - if (! (element instanceof IAdaptable)) { - return null; - } - - JpaContextNode contextNode = (JpaContextNode) ((IAdaptable) element).getAdapter(JpaContextNode.class); - - if (contextNode == null) { - return null; - } - - JpaPlatform platform = contextNode.jpaProject().jpaPlatform(); - JpaPlatformUi platformUi = JptUiPlugin.getPlugin().jpaPlatformUi(platform); - - ICommonLabelProvider delegate = delegateLabelProviders.get(platform.getId()); - - if (delegate == null && platform != null && ! delegateLabelProviders.containsKey(platform.getId())) { - delegate = platformUi.buildNavigatorLabelProvider(); - delegate.addListener(delegateLabelProviderListener); - delegateLabelProviders.put(platform.getId(), delegate); - } - - return delegate; - } - - - private class DelegateLabelProviderListener - implements ILabelProviderListener - { - public void labelProviderChanged(LabelProviderChangedEvent event) { - fireLabelProviderChanged(event); + if (delegate == null) { + JpaNavigatorContentProvider contentProvider = (JpaNavigatorContentProvider) config.getExtension().getContentProvider(); + if (contentProvider != null && contentProvider.delegate() != null) { + delegate = contentProvider.delegate(); + } + else { + delegate = new JpaNavigatorContentAndLabelProvider(); + } } } } diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/navigator/JpaNavigatorProviderLookup.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/navigator/JpaNavigatorProviderLookup.java new file mode 100644 index 0000000000..879a024c0a --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/navigator/JpaNavigatorProviderLookup.java @@ -0,0 +1,47 @@ +/******************************************************************************* + * Copyright (c) 2008 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.navigator; + +import java.util.HashMap; +import java.util.Map; +import org.eclipse.jpt.ui.JpaPlatformUi; +import org.eclipse.jpt.ui.internal.platform.JpaPlatformUiRegistry; +import org.eclipse.jpt.ui.navigator.JpaNavigatorProvider; + +/** + * This class is only provided to minimize object construction. Only one + * {@link JpaNavigatorProvider} is required to be constructed for each platform UI. + */ +public class JpaNavigatorProviderLookup +{ + private static Map<String, JpaNavigatorProvider> providers; + + + public static JpaNavigatorProvider provider(String platformId) { + if (providers == null) { + providers = new HashMap<String, JpaNavigatorProvider>(); + } + if (providers.containsKey(platformId)) { + return providers.get(platformId); + } + JpaPlatformUi platform = JpaPlatformUiRegistry.instance().jpaPlatform(platformId); + if (platform == null) { + return null; + } + JpaNavigatorProvider provider = platform.buildNavigatorProvider(); + providers.put(platformId, provider); + return provider; + } + + // prevent construction + private JpaNavigatorProviderLookup() { + } +} diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/navigator/JpaNavigatorTreeItemContentProviderFactory.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/navigator/JpaNavigatorTreeItemContentProviderFactory.java new file mode 100644 index 0000000000..bfb24f3cfe --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/navigator/JpaNavigatorTreeItemContentProviderFactory.java @@ -0,0 +1,75 @@ +/******************************************************************************* + * Copyright (c) 2008 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.navigator; + +import java.util.HashMap; +import java.util.Map; +import org.eclipse.core.runtime.IAdaptable; +import org.eclipse.jpt.core.JpaPlatform; +import org.eclipse.jpt.core.context.JpaContextNode; +import org.eclipse.jpt.ui.internal.jface.DelegatingContentAndLabelProvider; +import org.eclipse.jpt.ui.internal.jface.TreeItemContentProvider; +import org.eclipse.jpt.ui.internal.jface.TreeItemContentProviderFactory; +import org.eclipse.jpt.ui.navigator.JpaNavigatorProvider; + +public class JpaNavigatorTreeItemContentProviderFactory + implements TreeItemContentProviderFactory +{ + /** + * Exactly *one* of these factories is created for each view that utilizes it. + * Therefore, as we delegate to the platform UI for each project, we should + * maintain the same multiplicity. That is, if there is a delegate for each + * platform UI, we should maintain *one* delegate for each view. + * + * Key: platform id, Value: delegate content provider factory + */ + private Map<String, TreeItemContentProviderFactory> delegates; + + + public JpaNavigatorTreeItemContentProviderFactory() { + super(); + this.delegates = new HashMap<String, TreeItemContentProviderFactory>(); + } + + public TreeItemContentProvider buildItemContentProvider(Object item, DelegatingContentAndLabelProvider contentAndLabelProvider) { + TreeItemContentProviderFactory delegate = getDelegate(item); + if (delegate != null) { + return delegate.buildItemContentProvider(item, contentAndLabelProvider); + } + return null; + } + + + private TreeItemContentProviderFactory getDelegate(Object element) { + if (! (element instanceof IAdaptable)) { + return null; + } + + JpaContextNode contextNode = (JpaContextNode) ((IAdaptable) element).getAdapter(JpaContextNode.class); + + if (contextNode == null) { + return null; + } + + JpaPlatform platform = contextNode.jpaProject().jpaPlatform(); + String platformId = platform.getId(); + if (delegates.containsKey(platformId)) { + return delegates.get(platformId); + } + JpaNavigatorProvider navigatorProvider = JpaNavigatorProviderLookup.provider(platform.getId()); + TreeItemContentProviderFactory delegate = null; + if (navigatorProvider != null) { + delegate = navigatorProvider.treeItemContentProviderFactory(); + } + delegates.put(platformId, delegate); + return delegate; + } +} diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/base/BaseJpaNavigatorContentProvider.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/base/BaseJpaNavigatorContentProvider.java deleted file mode 100644 index 01ce388344..0000000000 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/base/BaseJpaNavigatorContentProvider.java +++ /dev/null @@ -1,65 +0,0 @@ -/******************************************************************************* - * Copyright (c) 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.platform.base; - -import org.eclipse.jface.viewers.Viewer; -import org.eclipse.jpt.core.context.JpaRootContextNode; -import org.eclipse.ui.IMemento; -import org.eclipse.ui.navigator.ICommonContentExtensionSite; -import org.eclipse.ui.navigator.ICommonContentProvider; - -public class BaseJpaNavigatorContentProvider implements ICommonContentProvider -{ - public void init(ICommonContentExtensionSite config) { - // TODO Auto-generated method stub - } - - public Object[] getChildren(Object parentElement) { - if (parentElement instanceof JpaRootContextNode) { - JpaRootContextNode rootContext = (JpaRootContextNode) parentElement; - if (rootContext.persistenceXml() != null) { - return new Object[] {rootContext.persistenceXml()}; - } - } - - return new Object[0]; - } - - public Object getParent(Object element) { - // TODO Auto-generated method stub - return null; - } - - public boolean hasChildren(Object element) { - return element instanceof JpaRootContextNode; - } - - public Object[] getElements(Object inputElement) { - // TODO Auto-generated method stub - return null; - } - - public void dispose() { - // TODO Auto-generated method stub - } - - public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { - // TODO Auto-generated method stub - } - - public void restoreState(IMemento memento) { - // TODO Auto-generated method stub - } - - public void saveState(IMemento memento) { - // TODO Auto-generated method stub - } -} diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/base/BaseJpaNavigatorLabelProvider.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/base/BaseJpaNavigatorLabelProvider.java deleted file mode 100644 index 68a22003d0..0000000000 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/base/BaseJpaNavigatorLabelProvider.java +++ /dev/null @@ -1,104 +0,0 @@ -/******************************************************************************* - * Copyright (c) 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.platform.base; - -import org.eclipse.jface.viewers.ILabelProviderListener; -import org.eclipse.jface.viewers.LabelProvider; -import org.eclipse.jpt.core.context.JpaRootContextNode; -import org.eclipse.jpt.core.internal.context.persistence.GenericPersistenceXml; -import org.eclipse.jpt.ui.JptUiPlugin; -import org.eclipse.jpt.ui.internal.JptUiIcons; -import org.eclipse.swt.graphics.Image; -import org.eclipse.ui.IMemento; -import org.eclipse.ui.navigator.ICommonContentExtensionSite; -import org.eclipse.ui.navigator.ICommonLabelProvider; - -public class BaseJpaNavigatorLabelProvider extends LabelProvider - implements ICommonLabelProvider -{ - - // **************** IBaseLabelProvider implementation ********************** - - @Override - public void addListener(ILabelProviderListener listener) { - super.addListener(listener); - } - - @Override - public void removeListener(ILabelProviderListener listener) { - super.addListener(listener); - } - - @Override - public boolean isLabelProperty(Object element, String property) { - return super.isLabelProperty(element, property); - } - - @Override - public void dispose() { - super.dispose(); - } - - - // **************** ILabelProvider implementation ************************** - - @Override - public Image getImage(Object element) { - if (element instanceof JpaRootContextNode) { - return JptUiPlugin.getImage(JptUiIcons.JPA_CONTENT); - } - - if (element instanceof GenericPersistenceXml) { - return JptUiPlugin.getImage(JptUiIcons.JPA_FILE); - } - - return super.getImage(element); - } - - @Override - public String getText(Object element) { - if (element instanceof JpaRootContextNode) { - return "JPA Content"; - } - - if (element instanceof GenericPersistenceXml) { - return "persistence.xml"; - } - - return null; - } - - - // **************** IDescriptionProvider implementation ******************** - - public String getDescription(Object anElement) { - // TODO Auto-generated method stub - return getText(anElement); - } - - - // **************** IMementoAware implementation *************************** - - public void saveState(IMemento memento) { - // TODO Auto-generated method stub - } - - public void restoreState(IMemento memento) { - // TODO Auto-generated method stub - } - - - // **************** ICommonLabelProvider implementation ******************** - - public void init(ICommonContentExtensionSite config) { - // TODO Auto-generated method stub - } -} diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/base/BaseJpaPlatformUi.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/base/BaseJpaPlatformUi.java index 09a39a94a0..8c5b3b0a6d 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/base/BaseJpaPlatformUi.java +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/base/BaseJpaPlatformUi.java @@ -44,18 +44,16 @@ import org.eclipse.jpt.ui.internal.details.TransientMappingUiProvider; import org.eclipse.jpt.ui.internal.details.VersionMappingUiProvider; import org.eclipse.jpt.ui.internal.java.details.DefaultBasicMappingUiProvider; import org.eclipse.jpt.ui.internal.java.details.DefaultEmbeddedMappingUiProvider; -import org.eclipse.jpt.ui.internal.java.details.JavaEntityUiProvider; import org.eclipse.jpt.ui.internal.java.details.JavaDetailsProvider; +import org.eclipse.jpt.ui.internal.java.details.JavaEntityUiProvider; import org.eclipse.jpt.ui.internal.java.details.NullTypeMappingUiProvider; import org.eclipse.jpt.ui.internal.orm.details.OrmDetailsProvider; import org.eclipse.jpt.ui.internal.structure.JavaResourceModelStructureProvider; -import org.eclipse.jpt.ui.internal.structure.JpaStructureProvider; import org.eclipse.jpt.ui.internal.structure.OrmResourceModelStructureProvider; import org.eclipse.jpt.ui.internal.structure.PersistenceResourceModelStructureProvider; +import org.eclipse.jpt.ui.structure.JpaStructureProvider; import org.eclipse.jpt.utility.internal.iterators.CloneIterator; import org.eclipse.jpt.utility.internal.iterators.CloneListIterator; -import org.eclipse.ui.navigator.ICommonContentProvider; -import org.eclipse.ui.navigator.ICommonLabelProvider; public abstract class BaseJpaPlatformUi implements JpaPlatformUi { @@ -73,17 +71,6 @@ public abstract class BaseJpaPlatformUi implements JpaPlatformUi super(); this.jpaUiFactory = createJpaUiFactory(); } - - - // **************** navigator content ************************************** - - public ICommonContentProvider buildNavigatorContentProvider() { - return new BaseJpaNavigatorContentProvider(); - } - - public ICommonLabelProvider buildNavigatorLabelProvider() { - return new BaseJpaNavigatorLabelProvider(); - } // **************** structure view content ********************************* diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/generic/ClassRefItemLabelProvider.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/generic/ClassRefItemLabelProvider.java new file mode 100644 index 0000000000..6d3e74778f --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/generic/ClassRefItemLabelProvider.java @@ -0,0 +1,48 @@ +/******************************************************************************* + * Copyright (c) 2008 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.platform.generic; + +import org.eclipse.jpt.core.context.persistence.ClassRef; +import org.eclipse.jpt.ui.JptUiPlugin; +import org.eclipse.jpt.ui.internal.JptUiIcons; +import org.eclipse.jpt.ui.internal.jface.AbstractItemLabelProvider; +import org.eclipse.jpt.ui.internal.jface.DelegatingContentAndLabelProvider; +import org.eclipse.jpt.utility.internal.model.value.PropertyAspectAdapter; +import org.eclipse.jpt.utility.internal.model.value.StaticPropertyValueModel; +import org.eclipse.jpt.utility.model.value.PropertyValueModel; +import org.eclipse.swt.graphics.Image; + +public class ClassRefItemLabelProvider extends AbstractItemLabelProvider +{ + public ClassRefItemLabelProvider( + ClassRef classRef, DelegatingContentAndLabelProvider labelProvider) { + super(classRef, labelProvider); + } + + @Override + protected PropertyValueModel<String> buildTextModel() { + return new PropertyAspectAdapter<ClassRef, String>(ClassRef.CLASS_NAME_PROPERTY, (ClassRef) model()) { + @Override + protected String buildValue_() { + return subject.getClassName(); + } + }; + } + + @Override + protected PropertyValueModel<Image> buildImageModel() { + Image image = JptUiPlugin.getImage(JptUiIcons.CLASS_REF); + if (((ClassRef) model()).isVirtual()) { + image = JptUiIcons.ghost(image); + } + return new StaticPropertyValueModel<Image>(image); + } +}
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/generic/EntityMappingsItemLabelProvider.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/generic/EntityMappingsItemLabelProvider.java new file mode 100644 index 0000000000..eea22567db --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/generic/EntityMappingsItemLabelProvider.java @@ -0,0 +1,39 @@ +/******************************************************************************* + * Copyright (c) 2008 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.platform.generic; + +import org.eclipse.jpt.core.context.orm.EntityMappings; +import org.eclipse.jpt.ui.JptUiPlugin; +import org.eclipse.jpt.ui.internal.JptUiIcons; +import org.eclipse.jpt.ui.internal.JptUiMessages; +import org.eclipse.jpt.ui.internal.jface.AbstractItemLabelProvider; +import org.eclipse.jpt.ui.internal.jface.DelegatingContentAndLabelProvider; +import org.eclipse.jpt.utility.internal.model.value.StaticPropertyValueModel; +import org.eclipse.jpt.utility.model.value.PropertyValueModel; +import org.eclipse.swt.graphics.Image; + +public class EntityMappingsItemLabelProvider extends AbstractItemLabelProvider +{ + public EntityMappingsItemLabelProvider( + EntityMappings entityMappings, DelegatingContentAndLabelProvider labelProvider) { + super(entityMappings, labelProvider); + } + + @Override + protected PropertyValueModel<String> buildTextModel() { + return new StaticPropertyValueModel<String>(JptUiMessages.OrmItemLabelProviderFactory_entityMappingsLabel); + } + + @Override + protected PropertyValueModel<Image> buildImageModel() { + return new StaticPropertyValueModel<Image>(JptUiPlugin.getImage(JptUiIcons.ENTITY_MAPPINGS)); + } +}
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/generic/GenericNavigatorItemContentProviderFactory.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/generic/GenericNavigatorItemContentProviderFactory.java new file mode 100644 index 0000000000..f2178377fe --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/generic/GenericNavigatorItemContentProviderFactory.java @@ -0,0 +1,177 @@ +/******************************************************************************* + * Copyright (c) 2008 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.platform.generic; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.ListIterator; +import org.eclipse.jpt.core.context.JpaContextNode; +import org.eclipse.jpt.core.context.JpaRootContextNode; +import org.eclipse.jpt.core.context.PersistentAttribute; +import org.eclipse.jpt.core.context.PersistentType; +import org.eclipse.jpt.core.context.java.JavaPersistentType; +import org.eclipse.jpt.core.context.orm.OrmPersistentType; +import org.eclipse.jpt.core.context.orm.OrmXml; +import org.eclipse.jpt.core.context.persistence.ClassRef; +import org.eclipse.jpt.core.context.persistence.MappingFileRef; +import org.eclipse.jpt.core.context.persistence.PersistenceUnit; +import org.eclipse.jpt.core.context.persistence.PersistenceXml; +import org.eclipse.jpt.ui.internal.jface.AbstractTreeItemContentProvider; +import org.eclipse.jpt.ui.internal.jface.DelegatingContentAndLabelProvider; +import org.eclipse.jpt.ui.internal.jface.DelegatingTreeContentAndLabelProvider; +import org.eclipse.jpt.ui.internal.jface.TreeItemContentProvider; +import org.eclipse.jpt.ui.internal.jface.TreeItemContentProviderFactory; +import org.eclipse.jpt.utility.internal.iterators.FilteringIterator; +import org.eclipse.jpt.utility.internal.model.value.CollectionListValueModelAdapter; +import org.eclipse.jpt.utility.internal.model.value.CompositeListValueModel; +import org.eclipse.jpt.utility.internal.model.value.FilteringCollectionValueModel; +import org.eclipse.jpt.utility.internal.model.value.ItemPropertyListValueModelAdapter; +import org.eclipse.jpt.utility.internal.model.value.ListAspectAdapter; +import org.eclipse.jpt.utility.internal.model.value.ListCollectionValueModelAdapter; +import org.eclipse.jpt.utility.internal.model.value.PropertyAspectAdapter; +import org.eclipse.jpt.utility.internal.model.value.PropertyCollectionValueModelAdapter; +import org.eclipse.jpt.utility.internal.model.value.TransformationListValueModelAdapter; +import org.eclipse.jpt.utility.model.value.ListValueModel; + +public class GenericNavigatorItemContentProviderFactory + implements TreeItemContentProviderFactory +{ + public TreeItemContentProvider buildItemContentProvider(Object item, DelegatingContentAndLabelProvider contentAndLabelProvider) { + DelegatingTreeContentAndLabelProvider treeContentAndLabelProvider = (DelegatingTreeContentAndLabelProvider) contentAndLabelProvider; + + if (item instanceof JpaRootContextNode) { + return new RootContextItemContentProvider((JpaRootContextNode) item, treeContentAndLabelProvider); + } + else if (item instanceof PersistenceXml) { + return new PersistenceXmlItemContentProvider((PersistenceXml) item, treeContentAndLabelProvider); + } + else if (item instanceof PersistenceUnit) { + return new PersistenceUnitItemContentProvider((PersistenceUnit) item, treeContentAndLabelProvider); + } + else if (item instanceof OrmXml) { + return new OrmXmlItemContentProvider((OrmXml) item, treeContentAndLabelProvider); + } + else if (item instanceof OrmPersistentType) { + return new OrmPersistentTypeItemContentProvider((OrmPersistentType) item, treeContentAndLabelProvider); + } + else if (item instanceof JavaPersistentType) { + return new JavaPersistentTypeItemContentProvider((JavaPersistentType) item, treeContentAndLabelProvider); + } + else if (item instanceof PersistentAttribute) { + return new PersistentAttributeItemContentProvider((PersistentAttribute) item, treeContentAndLabelProvider); + } + return null; + } + + + public static class PersistenceUnitItemContentProvider extends AbstractTreeItemContentProvider<JpaContextNode> + { + public PersistenceUnitItemContentProvider( + PersistenceUnit persistenceUnit, DelegatingTreeContentAndLabelProvider contentProvider) { + super(persistenceUnit, contentProvider); + } + + @Override + public PersistenceXml getParent() { + return (PersistenceXml) ((PersistenceUnit) model()).persistenceUnit().parent(); + } + + @Override + protected ListValueModel<JpaContextNode> buildChildrenModel() { + List<ListValueModel<JpaContextNode>> list = new ArrayList<ListValueModel<JpaContextNode>>(); + list.add(buildSpecifiedOrmXmlLvm()); + list.add(buildImpliedOrmXmlLvm()); + list.add(buildPersistentTypeLvm()); + return new CompositeListValueModel<ListValueModel<JpaContextNode>, JpaContextNode>(list); + } + + private ListValueModel<JpaContextNode> buildSpecifiedOrmXmlLvm() { + return new CollectionListValueModelAdapter<JpaContextNode>( + new FilteringCollectionValueModel<OrmXml>( + new ListCollectionValueModelAdapter<OrmXml>( + new TransformationListValueModelAdapter<MappingFileRef, OrmXml>( + new ItemPropertyListValueModelAdapter<MappingFileRef>( + new ListAspectAdapter<PersistenceUnit, MappingFileRef>( + PersistenceUnit.SPECIFIED_MAPPING_FILE_REF_LIST, + (PersistenceUnit) model()) { + protected ListIterator<MappingFileRef> listIterator_() { + return subject.specifiedMappingFileRefs(); + } + })) { + @Override + protected OrmXml transformItem(MappingFileRef item) { + return item.getOrmXml(); + } + })) { + @Override + protected Iterator<OrmXml> filter(Iterator<? extends OrmXml> items) { + return new FilteringIterator<OrmXml, OrmXml>(items) { + @Override + protected boolean accept(OrmXml o) { + return o != null; + } + }; + } + }); + } + + private ListValueModel<JpaContextNode> buildImpliedOrmXmlLvm() { + return new CollectionListValueModelAdapter<JpaContextNode>( + new PropertyCollectionValueModelAdapter<OrmXml>( + new PropertyAspectAdapter<MappingFileRef, OrmXml>( + new PropertyAspectAdapter<PersistenceUnit, MappingFileRef>( + PersistenceUnit.IMPLIED_MAPPING_FILE_REF_PROPERTY, + (PersistenceUnit) model()) { + @Override + protected MappingFileRef buildValue_() { + return subject.getImpliedMappingFileRef(); + } + }, + MappingFileRef.ORM_XML_PROPERTY) { + @Override + protected OrmXml buildValue_() { + return subject.getOrmXml(); + } + })); + } + + private ListValueModel<JpaContextNode> buildPersistentTypeLvm() { + return new CollectionListValueModelAdapter<JpaContextNode>( + new FilteringCollectionValueModel<PersistentType>( + new ListCollectionValueModelAdapter<PersistentType>( + new TransformationListValueModelAdapter<ClassRef, PersistentType>( + new ItemPropertyListValueModelAdapter<ClassRef>( + new ListAspectAdapter<PersistenceUnit, ClassRef>( + new String[] {PersistenceUnit.SPECIFIED_CLASS_REF_LIST, PersistenceUnit.IMPLIED_CLASS_REF_LIST}, + (PersistenceUnit) model()) { + protected ListIterator<ClassRef> listIterator_() { + return subject.classRefs(); + } + })) { + @Override + protected PersistentType transformItem(ClassRef item) { + return item.getJavaPersistentType(); + } + })) { + @Override + protected Iterator<PersistentType> filter(Iterator<? extends PersistentType> items) { + return new FilteringIterator<PersistentType, PersistentType>(items) { + @Override + protected boolean accept(PersistentType o) { + return o != null; + } + }; + } + }); + } + } +} diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/generic/GenericNavigatorItemLabelProviderFactory.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/generic/GenericNavigatorItemLabelProviderFactory.java new file mode 100644 index 0000000000..0759a54afb --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/generic/GenericNavigatorItemLabelProviderFactory.java @@ -0,0 +1,47 @@ +/******************************************************************************* + * Copyright (c) 2008 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.platform.generic; + +import org.eclipse.jpt.core.context.JpaRootContextNode; +import org.eclipse.jpt.core.context.PersistentAttribute; +import org.eclipse.jpt.core.context.PersistentType; +import org.eclipse.jpt.core.context.orm.OrmXml; +import org.eclipse.jpt.core.context.persistence.PersistenceUnit; +import org.eclipse.jpt.core.context.persistence.PersistenceXml; +import org.eclipse.jpt.ui.internal.jface.DelegatingContentAndLabelProvider; +import org.eclipse.jpt.ui.internal.jface.ItemLabelProvider; +import org.eclipse.jpt.ui.internal.jface.ItemLabelProviderFactory; + +public class GenericNavigatorItemLabelProviderFactory + implements ItemLabelProviderFactory +{ + public ItemLabelProvider buildItemLabelProvider(Object item, DelegatingContentAndLabelProvider contentAndLabelProvider) { + if (item instanceof JpaRootContextNode) { + return new RootContextItemLabelProvider((JpaRootContextNode) item, contentAndLabelProvider); + } + else if (item instanceof PersistenceXml) { + return new PersistenceXmlItemLabelProvider((PersistenceXml) item, contentAndLabelProvider); + } + else if (item instanceof PersistenceUnit) { + return new PersistenceUnitItemLabelProvider((PersistenceUnit) item, contentAndLabelProvider); + } + else if (item instanceof OrmXml) { + return new OrmXmlItemLabelProvider((OrmXml) item, contentAndLabelProvider); + } + else if (item instanceof PersistentType) { + return new PersistentTypeItemLabelProvider((PersistentType) item, contentAndLabelProvider); + } + else if (item instanceof PersistentAttribute) { + return new PersistentAttributeItemLabelProvider((PersistentAttribute) item, contentAndLabelProvider); + } + return null; + } +} diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/generic/GenericNavigatorProvider.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/generic/GenericNavigatorProvider.java new file mode 100644 index 0000000000..d80be36ee3 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/generic/GenericNavigatorProvider.java @@ -0,0 +1,30 @@ +/******************************************************************************* + * Copyright (c) 2008 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.platform.generic; + +import org.eclipse.jpt.ui.internal.jface.ItemLabelProviderFactory; +import org.eclipse.jpt.ui.internal.jface.TreeItemContentProviderFactory; +import org.eclipse.jpt.ui.navigator.JpaNavigatorProvider; + +public class GenericNavigatorProvider implements JpaNavigatorProvider +{ + public ItemLabelProviderFactory itemLabelProviderFactory() { + return new GenericNavigatorItemLabelProviderFactory(); + } + + public TreeItemContentProviderFactory treeItemContentProviderFactory() { + return new GenericNavigatorItemContentProviderFactory(); + } + + public void dispose() { + // TODO Auto-generated method stub + } +} diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/generic/GenericPlatformUi.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/generic/GenericPlatformUi.java index 3979cf98fe..3f51001d2c 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/generic/GenericPlatformUi.java +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/generic/GenericPlatformUi.java @@ -17,6 +17,7 @@ import org.eclipse.jpt.ui.JpaUiFactory; import org.eclipse.jpt.ui.internal.GenericJpaUiFactory; import org.eclipse.jpt.ui.internal.JptUiMessages; import org.eclipse.jpt.ui.internal.platform.base.BaseJpaPlatformUi; +import org.eclipse.jpt.ui.navigator.JpaNavigatorProvider; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; @@ -25,7 +26,15 @@ public class GenericPlatformUi extends BaseJpaPlatformUi public GenericPlatformUi() { super(); } - + + + // **************** navigator content ************************************** + + public JpaNavigatorProvider buildNavigatorProvider() { + return new GenericNavigatorProvider(); + } + + @Override protected JpaUiFactory createJpaUiFactory() { return new GenericJpaUiFactory(); diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/generic/JavaPersistentTypeItemContentProvider.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/generic/JavaPersistentTypeItemContentProvider.java new file mode 100644 index 0000000000..ee46e7465d --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/generic/JavaPersistentTypeItemContentProvider.java @@ -0,0 +1,47 @@ +/******************************************************************************* + * Copyright (c) 2008 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.platform.generic; + +import java.util.ListIterator; +import org.eclipse.jpt.core.context.java.JavaPersistentAttribute; +import org.eclipse.jpt.core.context.java.JavaPersistentType; +import org.eclipse.jpt.ui.internal.jface.AbstractTreeItemContentProvider; +import org.eclipse.jpt.ui.internal.jface.DelegatingTreeContentAndLabelProvider; +import org.eclipse.jpt.utility.internal.model.value.ListAspectAdapter; +import org.eclipse.jpt.utility.model.value.ListValueModel; + +public class JavaPersistentTypeItemContentProvider extends AbstractTreeItemContentProvider<JavaPersistentAttribute> +{ + public JavaPersistentTypeItemContentProvider( + JavaPersistentType persistentType, DelegatingTreeContentAndLabelProvider contentProvider) { + super(persistentType, contentProvider); + } + + @Override + public Object getParent() { + return ((JavaPersistentType) model()).parent(); + } + + @Override + protected ListValueModel<JavaPersistentAttribute> buildChildrenModel() { + return new ListAspectAdapter<JavaPersistentType, JavaPersistentAttribute>(new String[]{JavaPersistentType.SPECIFIED_ATTRIBUTES_LIST}, (JavaPersistentType) model()) { + @Override + protected ListIterator<JavaPersistentAttribute> listIterator_() { + return subject.attributes(); + } + + @Override + protected int size_() { + return subject.attributesSize(); + } + }; + } +}
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/generic/MappingFileRefItemLabelProvider.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/generic/MappingFileRefItemLabelProvider.java new file mode 100644 index 0000000000..82c15866a6 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/generic/MappingFileRefItemLabelProvider.java @@ -0,0 +1,48 @@ +/******************************************************************************* + * Copyright (c) 2008 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.platform.generic; + +import org.eclipse.jpt.core.context.persistence.MappingFileRef; +import org.eclipse.jpt.ui.JptUiPlugin; +import org.eclipse.jpt.ui.internal.JptUiIcons; +import org.eclipse.jpt.ui.internal.jface.AbstractItemLabelProvider; +import org.eclipse.jpt.ui.internal.jface.DelegatingContentAndLabelProvider; +import org.eclipse.jpt.utility.internal.model.value.PropertyAspectAdapter; +import org.eclipse.jpt.utility.internal.model.value.StaticPropertyValueModel; +import org.eclipse.jpt.utility.model.value.PropertyValueModel; +import org.eclipse.swt.graphics.Image; + +public class MappingFileRefItemLabelProvider extends AbstractItemLabelProvider +{ + public MappingFileRefItemLabelProvider( + MappingFileRef mappingFileRef, DelegatingContentAndLabelProvider labelProvider) { + super(mappingFileRef, labelProvider); + } + + @Override + protected PropertyValueModel<String> buildTextModel() { + return new PropertyAspectAdapter<MappingFileRef, String>(MappingFileRef.FILE_NAME_PROPERTY, (MappingFileRef) model()) { + @Override + protected String buildValue_() { + return subject.getFileName(); + } + }; + } + + @Override + protected PropertyValueModel<Image> buildImageModel() { + Image image = JptUiPlugin.getImage(JptUiIcons.MAPPING_FILE_REF); + if (((MappingFileRef) model()).isVirtual()) { + image = JptUiIcons.ghost(image); + } + return new StaticPropertyValueModel<Image>(image); + } +}
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/generic/OrmPersistentTypeItemContentProvider.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/generic/OrmPersistentTypeItemContentProvider.java new file mode 100644 index 0000000000..c48d4be9ec --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/generic/OrmPersistentTypeItemContentProvider.java @@ -0,0 +1,69 @@ +/******************************************************************************* + * Copyright (c) 2008 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.platform.generic; + +import java.util.ArrayList; +import java.util.ListIterator; +import org.eclipse.jpt.core.context.orm.OrmPersistentAttribute; +import org.eclipse.jpt.core.context.orm.OrmPersistentType; +import org.eclipse.jpt.ui.internal.jface.AbstractTreeItemContentProvider; +import org.eclipse.jpt.ui.internal.jface.DelegatingTreeContentAndLabelProvider; +import org.eclipse.jpt.utility.internal.model.value.CompositeListValueModel; +import org.eclipse.jpt.utility.internal.model.value.ListAspectAdapter; +import org.eclipse.jpt.utility.model.value.ListValueModel; + +public class OrmPersistentTypeItemContentProvider extends AbstractTreeItemContentProvider<OrmPersistentAttribute> + { + public OrmPersistentTypeItemContentProvider( + OrmPersistentType persistentType, DelegatingTreeContentAndLabelProvider contentProvider) { + super(persistentType, contentProvider); + } + + @Override + public Object getParent() { + return ((OrmPersistentType) model()).parent(); + } + + @Override + protected ListValueModel<OrmPersistentAttribute> buildChildrenModel() { + java.util.List<ListValueModel<OrmPersistentAttribute>> list = new ArrayList<ListValueModel<OrmPersistentAttribute>>(); + list.add(buildSpecifiedPersistentAttributesListHolder()); + list.add(buildVirtualPersistentAttributesListHolder()); + return new CompositeListValueModel<ListValueModel<OrmPersistentAttribute>, OrmPersistentAttribute>(list); + } + + + protected ListValueModel<OrmPersistentAttribute> buildSpecifiedPersistentAttributesListHolder() { + return new ListAspectAdapter<OrmPersistentType, OrmPersistentAttribute>(new String[]{OrmPersistentType.SPECIFIED_ATTRIBUTES_LIST}, (OrmPersistentType) model()) { + @Override + protected ListIterator<OrmPersistentAttribute> listIterator_() { + return subject.specifiedAttributes(); + } + @Override + protected int size_() { + return subject.specifiedAttributesSize(); + } + }; + } + + protected ListValueModel<OrmPersistentAttribute> buildVirtualPersistentAttributesListHolder() { + return new ListAspectAdapter<OrmPersistentType, OrmPersistentAttribute>(new String[]{OrmPersistentType.VIRTUAL_ATTRIBUTES_LIST}, (OrmPersistentType) model()) { + @Override + protected ListIterator<OrmPersistentAttribute> listIterator_() { + return subject.virtualAttributes(); + } + @Override + protected int size_() { + return subject.virtualAttributesSize(); + } + }; + } +}
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/generic/OrmXmlItemContentProvider.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/generic/OrmXmlItemContentProvider.java new file mode 100644 index 0000000000..4ed8090be2 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/generic/OrmXmlItemContentProvider.java @@ -0,0 +1,55 @@ +/******************************************************************************* + * Copyright (c) 2008 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.platform.generic; + +import java.util.ListIterator; +import org.eclipse.jpt.core.context.orm.EntityMappings; +import org.eclipse.jpt.core.context.orm.OrmPersistentType; +import org.eclipse.jpt.core.context.orm.OrmXml; +import org.eclipse.jpt.core.context.persistence.PersistenceUnit; +import org.eclipse.jpt.ui.internal.jface.AbstractTreeItemContentProvider; +import org.eclipse.jpt.ui.internal.jface.DelegatingTreeContentAndLabelProvider; +import org.eclipse.jpt.utility.internal.model.value.ListAspectAdapter; +import org.eclipse.jpt.utility.internal.model.value.PropertyAspectAdapter; +import org.eclipse.jpt.utility.model.value.ListValueModel; + +public class OrmXmlItemContentProvider + extends AbstractTreeItemContentProvider<OrmPersistentType> +{ + public OrmXmlItemContentProvider( + OrmXml ormXml, DelegatingTreeContentAndLabelProvider contentProvider) { + super(ormXml, contentProvider); + } + + + @Override + public PersistenceUnit getParent() { + return ((OrmXml) model()).persistenceUnit(); + } + + @Override + protected ListValueModel<OrmPersistentType> buildChildrenModel() { + return new ListAspectAdapter<EntityMappings, OrmPersistentType>( + new PropertyAspectAdapter<OrmXml, EntityMappings>( + OrmXml.ENTITY_MAPPINGS_PROPERTY, (OrmXml) model()) { + @Override + protected EntityMappings buildValue_() { + return subject.getEntityMappings(); + } + }, + EntityMappings.PERSISTENT_TYPES_LIST) { + @Override + protected ListIterator<OrmPersistentType> listIterator_() { + return subject.ormPersistentTypes(); + } + }; + } +} diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/generic/OrmXmlItemLabelProvider.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/generic/OrmXmlItemLabelProvider.java new file mode 100644 index 0000000000..be2dd53014 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/generic/OrmXmlItemLabelProvider.java @@ -0,0 +1,38 @@ +/******************************************************************************* + * Copyright (c) 2008 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.platform.generic; + +import org.eclipse.jpt.core.context.orm.OrmXml; +import org.eclipse.jpt.ui.JptUiPlugin; +import org.eclipse.jpt.ui.internal.JptUiIcons; +import org.eclipse.jpt.ui.internal.jface.AbstractItemLabelProvider; +import org.eclipse.jpt.ui.internal.jface.DelegatingContentAndLabelProvider; +import org.eclipse.jpt.utility.internal.model.value.StaticPropertyValueModel; +import org.eclipse.jpt.utility.model.value.PropertyValueModel; +import org.eclipse.swt.graphics.Image; + +public class OrmXmlItemLabelProvider extends AbstractItemLabelProvider +{ + public OrmXmlItemLabelProvider( + OrmXml ormXml, DelegatingContentAndLabelProvider labelProvider) { + super(ormXml, labelProvider); + } + + @Override + protected PropertyValueModel<String> buildTextModel() { + return new StaticPropertyValueModel<String>(((OrmXml) model()).resource().getName()); + } + + @Override + protected PropertyValueModel<Image> buildImageModel() { + return new StaticPropertyValueModel<Image>(JptUiPlugin.getImage(JptUiIcons.JPA_FILE)); + } +} diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/generic/PersistenceItemLabelProvider.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/generic/PersistenceItemLabelProvider.java new file mode 100644 index 0000000000..c459befc5e --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/generic/PersistenceItemLabelProvider.java @@ -0,0 +1,39 @@ +/******************************************************************************* + * Copyright (c) 2008 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.platform.generic; + +import org.eclipse.jpt.core.context.persistence.Persistence; +import org.eclipse.jpt.ui.JptUiPlugin; +import org.eclipse.jpt.ui.internal.JptUiIcons; +import org.eclipse.jpt.ui.internal.JptUiMessages; +import org.eclipse.jpt.ui.internal.jface.AbstractItemLabelProvider; +import org.eclipse.jpt.ui.internal.jface.DelegatingContentAndLabelProvider; +import org.eclipse.jpt.utility.internal.model.value.StaticPropertyValueModel; +import org.eclipse.jpt.utility.model.value.PropertyValueModel; +import org.eclipse.swt.graphics.Image; + +public class PersistenceItemLabelProvider extends AbstractItemLabelProvider +{ + public PersistenceItemLabelProvider( + Persistence persistence, DelegatingContentAndLabelProvider labelProvider) { + super(persistence, labelProvider); + } + + @Override + protected PropertyValueModel<String> buildTextModel() { + return new StaticPropertyValueModel<String>(JptUiMessages.PersistenceItemLabelProviderFactory_persistenceLabel); + } + + @Override + protected PropertyValueModel<Image> buildImageModel() { + return new StaticPropertyValueModel<Image>(JptUiPlugin.getImage(JptUiIcons.PERSISTENCE)); + } +}
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/generic/PersistenceUnitItemLabelProvider.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/generic/PersistenceUnitItemLabelProvider.java new file mode 100644 index 0000000000..f5fd03ebee --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/generic/PersistenceUnitItemLabelProvider.java @@ -0,0 +1,44 @@ +/******************************************************************************* + * Copyright (c) 2008 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.platform.generic; + +import org.eclipse.jpt.core.context.persistence.PersistenceUnit; +import org.eclipse.jpt.ui.JptUiPlugin; +import org.eclipse.jpt.ui.internal.JptUiIcons; +import org.eclipse.jpt.ui.internal.jface.AbstractItemLabelProvider; +import org.eclipse.jpt.ui.internal.jface.DelegatingContentAndLabelProvider; +import org.eclipse.jpt.utility.internal.model.value.PropertyAspectAdapter; +import org.eclipse.jpt.utility.internal.model.value.StaticPropertyValueModel; +import org.eclipse.jpt.utility.model.value.PropertyValueModel; +import org.eclipse.swt.graphics.Image; + +public class PersistenceUnitItemLabelProvider extends AbstractItemLabelProvider +{ + public PersistenceUnitItemLabelProvider( + PersistenceUnit persistenceUnit, DelegatingContentAndLabelProvider labelProvider) { + super(persistenceUnit, labelProvider); + } + + @Override + protected PropertyValueModel<String> buildTextModel() { + return new PropertyAspectAdapter<PersistenceUnit, String>(PersistenceUnit.NAME_PROPERTY, (PersistenceUnit) model()) { + @Override + protected String buildValue_() { + return subject.getName(); + } + }; + } + + @Override + protected PropertyValueModel<Image> buildImageModel() { + return new StaticPropertyValueModel<Image>(JptUiPlugin.getImage(JptUiIcons.PERSISTENCE_UNIT)); + } +}
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/generic/PersistenceXmlItemContentProvider.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/generic/PersistenceXmlItemContentProvider.java new file mode 100644 index 0000000000..4c6014592a --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/generic/PersistenceXmlItemContentProvider.java @@ -0,0 +1,55 @@ +/******************************************************************************* + * Copyright (c) 2008 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.platform.generic; + +import java.util.ListIterator; +import org.eclipse.jpt.core.context.JpaRootContextNode; +import org.eclipse.jpt.core.context.persistence.Persistence; +import org.eclipse.jpt.core.context.persistence.PersistenceUnit; +import org.eclipse.jpt.core.context.persistence.PersistenceXml; +import org.eclipse.jpt.ui.internal.jface.AbstractTreeItemContentProvider; +import org.eclipse.jpt.ui.internal.jface.DelegatingTreeContentAndLabelProvider; +import org.eclipse.jpt.utility.internal.model.value.ListAspectAdapter; +import org.eclipse.jpt.utility.internal.model.value.PropertyAspectAdapter; +import org.eclipse.jpt.utility.model.value.ListValueModel; + +public class PersistenceXmlItemContentProvider + extends AbstractTreeItemContentProvider<PersistenceUnit> +{ + public PersistenceXmlItemContentProvider( + PersistenceXml persistenceXml, DelegatingTreeContentAndLabelProvider contentProvider) { + super(persistenceXml, contentProvider); + } + + + @Override + public JpaRootContextNode getParent() { + return (JpaRootContextNode) ((PersistenceXml) model()).parent(); + } + + @Override + protected ListValueModel<PersistenceUnit> buildChildrenModel() { + return new ListAspectAdapter<Persistence, PersistenceUnit>( + new PropertyAspectAdapter<PersistenceXml, Persistence>( + PersistenceXml.PERSISTENCE_PROPERTY, (PersistenceXml) model()) { + @Override + protected Persistence buildValue_() { + return subject.getPersistence(); + } + }, + Persistence.PERSISTENCE_UNITS_LIST) { + @Override + protected ListIterator<PersistenceUnit> listIterator_() { + return subject.persistenceUnits(); + } + }; + } +} diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/generic/PersistenceXmlItemLabelProvider.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/generic/PersistenceXmlItemLabelProvider.java new file mode 100644 index 0000000000..5e3183ea01 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/generic/PersistenceXmlItemLabelProvider.java @@ -0,0 +1,38 @@ +/******************************************************************************* + * Copyright (c) 2008 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.platform.generic; + +import org.eclipse.jpt.core.context.persistence.PersistenceXml; +import org.eclipse.jpt.ui.JptUiPlugin; +import org.eclipse.jpt.ui.internal.JptUiIcons; +import org.eclipse.jpt.ui.internal.jface.AbstractItemLabelProvider; +import org.eclipse.jpt.ui.internal.jface.DelegatingContentAndLabelProvider; +import org.eclipse.jpt.utility.internal.model.value.StaticPropertyValueModel; +import org.eclipse.jpt.utility.model.value.PropertyValueModel; +import org.eclipse.swt.graphics.Image; + +public class PersistenceXmlItemLabelProvider extends AbstractItemLabelProvider +{ + public PersistenceXmlItemLabelProvider( + PersistenceXml persistenceXml, DelegatingContentAndLabelProvider labelProvider) { + super(persistenceXml, labelProvider); + } + + @Override + protected PropertyValueModel<String> buildTextModel() { + return new StaticPropertyValueModel<String>(((PersistenceXml) model()).resource().getName()); + } + + @Override + protected PropertyValueModel<Image> buildImageModel() { + return new StaticPropertyValueModel<Image>(JptUiPlugin.getImage(JptUiIcons.JPA_FILE)); + } +} diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/generic/PersistentAttributeItemContentProvider.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/generic/PersistentAttributeItemContentProvider.java new file mode 100644 index 0000000000..0fb1ab988e --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/generic/PersistentAttributeItemContentProvider.java @@ -0,0 +1,34 @@ +/******************************************************************************* + * Copyright (c) 2008 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.platform.generic; + +import org.eclipse.jpt.core.context.PersistentAttribute; +import org.eclipse.jpt.ui.internal.jface.AbstractTreeItemContentProvider; +import org.eclipse.jpt.ui.internal.jface.DelegatingTreeContentAndLabelProvider; + +@SuppressWarnings("unchecked") +public class PersistentAttributeItemContentProvider extends AbstractTreeItemContentProvider +{ + public PersistentAttributeItemContentProvider( + PersistentAttribute persistentAttribute, DelegatingTreeContentAndLabelProvider contentProvider) { + super(persistentAttribute, contentProvider); + } + + @Override + public Object getParent() { + return ((PersistentAttribute) model()).parent(); + } + + @Override + public boolean hasChildren() { + return false; + } +}
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/generic/PersistentAttributeItemLabelProvider.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/generic/PersistentAttributeItemLabelProvider.java new file mode 100644 index 0000000000..a7e7313019 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/generic/PersistentAttributeItemLabelProvider.java @@ -0,0 +1,54 @@ +/******************************************************************************* + * Copyright (c) 2008 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.platform.generic; + +import org.eclipse.jpt.core.context.PersistentAttribute; +import org.eclipse.jpt.ui.internal.JpaMappingImageHelper; +import org.eclipse.jpt.ui.internal.JptUiIcons; +import org.eclipse.jpt.ui.internal.jface.AbstractItemLabelProvider; +import org.eclipse.jpt.ui.internal.jface.DelegatingContentAndLabelProvider; +import org.eclipse.jpt.utility.internal.model.value.PropertyAspectAdapter; +import org.eclipse.jpt.utility.model.value.PropertyValueModel; +import org.eclipse.swt.graphics.Image; + +public class PersistentAttributeItemLabelProvider extends AbstractItemLabelProvider +{ + public PersistentAttributeItemLabelProvider( + PersistentAttribute persistentAttribute, DelegatingContentAndLabelProvider labelProvider) { + super(persistentAttribute, labelProvider); + } + + @Override + protected PropertyValueModel<String> buildTextModel() { + return new PropertyAspectAdapter<PersistentAttribute, String>(PersistentAttribute.NAME_PROPERTY, (PersistentAttribute) model()) { + @Override + protected String buildValue_() { + return subject.getName(); + } + }; + } + + @Override + protected PropertyValueModel<Image> buildImageModel() { + return new PropertyAspectAdapter<PersistentAttribute, Image>( + new String[] {PersistentAttribute.DEFAULT_MAPPING_PROPERTY, PersistentAttribute.SPECIFIED_MAPPING_PROPERTY}, + (PersistentAttribute) model()) { + @Override + protected Image buildValue_() { + Image image = JpaMappingImageHelper.imageForAttributeMapping(subject.mappingKey()); + if (((PersistentAttribute) model()).isVirtual()) { + return JptUiIcons.ghost(image); + } + return image; + } + }; + } +}
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/generic/PersistentTypeItemLabelProvider.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/generic/PersistentTypeItemLabelProvider.java new file mode 100644 index 0000000000..db93cec8c8 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/generic/PersistentTypeItemLabelProvider.java @@ -0,0 +1,47 @@ +/******************************************************************************* + * Copyright (c) 2008 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.platform.generic; + +import org.eclipse.jpt.core.context.PersistentType; +import org.eclipse.jpt.ui.internal.JpaMappingImageHelper; +import org.eclipse.jpt.ui.internal.jface.AbstractItemLabelProvider; +import org.eclipse.jpt.ui.internal.jface.DelegatingContentAndLabelProvider; +import org.eclipse.jpt.utility.internal.model.value.PropertyAspectAdapter; +import org.eclipse.jpt.utility.model.value.PropertyValueModel; +import org.eclipse.swt.graphics.Image; + +public class PersistentTypeItemLabelProvider extends AbstractItemLabelProvider +{ + public PersistentTypeItemLabelProvider( + PersistentType persistentType, DelegatingContentAndLabelProvider labelProvider) { + super(persistentType, labelProvider); + } + + @Override + protected PropertyValueModel<String> buildTextModel() { + return new PropertyAspectAdapter<PersistentType, String>(PersistentType.NAME_PROPERTY, (PersistentType) model()) { + @Override + protected String buildValue_() { + return subject.getName(); + } + }; + } + + @Override + protected PropertyValueModel<Image> buildImageModel() { + return new PropertyAspectAdapter<PersistentType, Image>(PersistentType.MAPPING_PROPERTY, (PersistentType) model()) { + @Override + protected Image buildValue_() { + return JpaMappingImageHelper.imageForTypeMapping(subject.mappingKey()); + } + }; + } +}
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/generic/RootContextItemContentProvider.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/generic/RootContextItemContentProvider.java new file mode 100644 index 0000000000..e15dbd85b2 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/generic/RootContextItemContentProvider.java @@ -0,0 +1,50 @@ +/******************************************************************************* + * Copyright (c) 2008 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.platform.generic; + +import org.eclipse.core.resources.IProject; +import org.eclipse.jpt.core.context.JpaRootContextNode; +import org.eclipse.jpt.core.context.persistence.PersistenceXml; +import org.eclipse.jpt.ui.internal.jface.AbstractTreeItemContentProvider; +import org.eclipse.jpt.ui.internal.jface.DelegatingTreeContentAndLabelProvider; +import org.eclipse.jpt.utility.internal.model.value.CollectionListValueModelAdapter; +import org.eclipse.jpt.utility.internal.model.value.PropertyAspectAdapter; +import org.eclipse.jpt.utility.internal.model.value.PropertyCollectionValueModelAdapter; +import org.eclipse.jpt.utility.model.value.ListValueModel; + +public class RootContextItemContentProvider + extends AbstractTreeItemContentProvider<PersistenceXml> +{ + public RootContextItemContentProvider( + JpaRootContextNode rootContext, DelegatingTreeContentAndLabelProvider contentProvider) { + super(rootContext, contentProvider); + } + + + @Override + public IProject getParent() { + return ((JpaRootContextNode) model()).jpaProject().project(); + } + + @Override + protected ListValueModel<PersistenceXml> buildChildrenModel() { + return new CollectionListValueModelAdapter<PersistenceXml>( + new PropertyCollectionValueModelAdapter<PersistenceXml>( + new PropertyAspectAdapter<JpaRootContextNode, PersistenceXml>( + JpaRootContextNode.PERSISTENCE_XML_PROPERTY, + (JpaRootContextNode) model()) { + @Override + protected PersistenceXml buildValue_() { + return subject.persistenceXml(); + } + })); + } +} diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/generic/RootContextItemLabelProvider.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/generic/RootContextItemLabelProvider.java new file mode 100644 index 0000000000..17dbe658a4 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/platform/generic/RootContextItemLabelProvider.java @@ -0,0 +1,39 @@ +/******************************************************************************* + * Copyright (c) 2008 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.platform.generic; + +import org.eclipse.jpt.core.context.JpaRootContextNode; +import org.eclipse.jpt.ui.JptUiPlugin; +import org.eclipse.jpt.ui.internal.JptUiIcons; +import org.eclipse.jpt.ui.internal.JptUiMessages; +import org.eclipse.jpt.ui.internal.jface.AbstractItemLabelProvider; +import org.eclipse.jpt.ui.internal.jface.DelegatingContentAndLabelProvider; +import org.eclipse.jpt.utility.internal.model.value.StaticPropertyValueModel; +import org.eclipse.jpt.utility.model.value.PropertyValueModel; +import org.eclipse.swt.graphics.Image; + +public class RootContextItemLabelProvider extends AbstractItemLabelProvider +{ + public RootContextItemLabelProvider( + JpaRootContextNode rootContextNode, DelegatingContentAndLabelProvider labelProvider) { + super(rootContextNode, labelProvider); + } + + @Override + protected PropertyValueModel<String> buildTextModel() { + return new StaticPropertyValueModel<String>(JptUiMessages.JpaContent_label); + } + + @Override + protected PropertyValueModel<Image> buildImageModel() { + return new StaticPropertyValueModel<Image>(JptUiPlugin.getImage(JptUiIcons.JPA_CONTENT)); + } +} diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/structure/GeneralJpaMappingItemContentProviderFactory.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/structure/GeneralJpaMappingItemContentProviderFactory.java index c62cd3beaa..d6140e664d 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/structure/GeneralJpaMappingItemContentProviderFactory.java +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/structure/GeneralJpaMappingItemContentProviderFactory.java @@ -12,11 +12,11 @@ package org.eclipse.jpt.ui.internal.structure; import org.eclipse.jpt.core.context.PersistentAttribute; import org.eclipse.jpt.core.context.PersistentType; -import org.eclipse.jpt.ui.internal.jface.AbstractTreeItemContentProvider; import org.eclipse.jpt.ui.internal.jface.DelegatingContentAndLabelProvider; import org.eclipse.jpt.ui.internal.jface.DelegatingTreeContentAndLabelProvider; import org.eclipse.jpt.ui.internal.jface.TreeItemContentProvider; import org.eclipse.jpt.ui.internal.jface.TreeItemContentProviderFactory; +import org.eclipse.jpt.ui.internal.platform.generic.PersistentAttributeItemContentProvider; public abstract class GeneralJpaMappingItemContentProviderFactory implements TreeItemContentProviderFactory @@ -34,25 +34,4 @@ public abstract class GeneralJpaMappingItemContentProviderFactory } protected abstract TreeItemContentProvider buildPersistentTypeItemContentProvider(PersistentType persistentType, DelegatingTreeContentAndLabelProvider treeContentProvider); - - - - @SuppressWarnings("unchecked") - public static class PersistentAttributeItemContentProvider extends AbstractTreeItemContentProvider - { - public PersistentAttributeItemContentProvider( - PersistentAttribute persistentAttribute, DelegatingTreeContentAndLabelProvider contentProvider) { - super(persistentAttribute, contentProvider); - } - - @Override - public Object getParent() { - return ((PersistentAttribute) model()).parent(); - } - - @Override - public boolean hasChildren() { - return false; - } - } } diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/structure/GeneralJpaMappingItemLabelProviderFactory.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/structure/GeneralJpaMappingItemLabelProviderFactory.java index 330392fafc..8624d6b307 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/structure/GeneralJpaMappingItemLabelProviderFactory.java +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/structure/GeneralJpaMappingItemLabelProviderFactory.java @@ -11,15 +11,11 @@ package org.eclipse.jpt.ui.internal.structure; import org.eclipse.jpt.core.context.PersistentAttribute; import org.eclipse.jpt.core.context.PersistentType; -import org.eclipse.jpt.ui.internal.JpaMappingImageHelper; -import org.eclipse.jpt.ui.internal.JptUiIcons; -import org.eclipse.jpt.ui.internal.jface.AbstractItemLabelProvider; import org.eclipse.jpt.ui.internal.jface.DelegatingContentAndLabelProvider; import org.eclipse.jpt.ui.internal.jface.ItemLabelProvider; import org.eclipse.jpt.ui.internal.jface.ItemLabelProviderFactory; -import org.eclipse.jpt.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.utility.model.value.PropertyValueModel; -import org.eclipse.swt.graphics.Image; +import org.eclipse.jpt.ui.internal.platform.generic.PersistentAttributeItemLabelProvider; +import org.eclipse.jpt.ui.internal.platform.generic.PersistentTypeItemLabelProvider; public abstract class GeneralJpaMappingItemLabelProviderFactory implements ItemLabelProviderFactory @@ -34,68 +30,4 @@ public abstract class GeneralJpaMappingItemLabelProviderFactory } return null; } - - - public static class PersistentTypeItemLabelProvider extends AbstractItemLabelProvider - { - public PersistentTypeItemLabelProvider( - PersistentType persistentType, DelegatingContentAndLabelProvider labelProvider) { - super(persistentType, labelProvider); - } - - @Override - protected PropertyValueModel<String> buildTextModel() { - return new PropertyAspectAdapter<PersistentType, String>(PersistentType.NAME_PROPERTY, (PersistentType) model()) { - @Override - protected String buildValue_() { - return subject.getName(); - } - }; - } - - @Override - protected PropertyValueModel<Image> buildImageModel() { - return new PropertyAspectAdapter<PersistentType, Image>(PersistentType.MAPPING_PROPERTY, (PersistentType) model()) { - @Override - protected Image buildValue_() { - return JpaMappingImageHelper.imageForTypeMapping(subject.mappingKey()); - } - }; - } - } - - - public static class PersistentAttributeItemLabelProvider extends AbstractItemLabelProvider - { - public PersistentAttributeItemLabelProvider( - PersistentAttribute persistentAttribute, DelegatingContentAndLabelProvider labelProvider) { - super(persistentAttribute, labelProvider); - } - - @Override - protected PropertyValueModel<String> buildTextModel() { - return new PropertyAspectAdapter<PersistentAttribute, String>(PersistentAttribute.NAME_PROPERTY, (PersistentAttribute) model()) { - @Override - protected String buildValue_() { - return subject.getName(); - } - }; - } - - @Override - protected PropertyValueModel<Image> buildImageModel() { - return new PropertyAspectAdapter<PersistentAttribute, Image>( - new String[] {PersistentAttribute.DEFAULT_MAPPING_PROPERTY, PersistentAttribute.SPECIFIED_MAPPING_PROPERTY}, - (PersistentAttribute) model()) { - @Override - protected Image buildValue_() { - Image image = JpaMappingImageHelper.imageForAttributeMapping(subject.mappingKey()); - if (((PersistentAttribute) model()).isVirtual()) { - return JptUiIcons.ghost(image); - } - return image; - } - }; - } - } } diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/structure/JavaItemContentProviderFactory.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/structure/JavaItemContentProviderFactory.java index 4e4a228836..b80dbde7f9 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/structure/JavaItemContentProviderFactory.java +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/structure/JavaItemContentProviderFactory.java @@ -12,13 +12,14 @@ package org.eclipse.jpt.ui.internal.structure; import java.util.ListIterator; import org.eclipse.jpt.core.JpaStructureNode; import org.eclipse.jpt.core.ResourceModel; -import org.eclipse.jpt.core.context.PersistentAttribute; import org.eclipse.jpt.core.context.PersistentType; +import org.eclipse.jpt.core.context.java.JavaPersistentType; import org.eclipse.jpt.core.internal.resource.java.JavaResourceModel; import org.eclipse.jpt.ui.internal.jface.AbstractTreeItemContentProvider; import org.eclipse.jpt.ui.internal.jface.DelegatingContentAndLabelProvider; import org.eclipse.jpt.ui.internal.jface.DelegatingTreeContentAndLabelProvider; import org.eclipse.jpt.ui.internal.jface.TreeItemContentProvider; +import org.eclipse.jpt.ui.internal.platform.generic.JavaPersistentTypeItemContentProvider; import org.eclipse.jpt.utility.internal.model.value.ListAspectAdapter; import org.eclipse.jpt.utility.model.value.ListValueModel; @@ -37,36 +38,9 @@ public class JavaItemContentProviderFactory extends GeneralJpaMappingItemContent @Override protected TreeItemContentProvider buildPersistentTypeItemContentProvider(PersistentType persistentType, DelegatingTreeContentAndLabelProvider treeContentProvider) { - return new PersistentTypeItemContentProvider(persistentType, treeContentProvider); + return new JavaPersistentTypeItemContentProvider((JavaPersistentType) persistentType, treeContentProvider); } - public static class PersistentTypeItemContentProvider extends AbstractTreeItemContentProvider<PersistentAttribute> - { - public PersistentTypeItemContentProvider( - PersistentType persistentType, DelegatingTreeContentAndLabelProvider contentProvider) { - super(persistentType, contentProvider); - } - - @Override - public Object getParent() { - return ((PersistentType) model()).parent(); - } - - @Override - protected ListValueModel<PersistentAttribute> buildChildrenModel() { - return new ListAspectAdapter<PersistentType, PersistentAttribute>(new String[]{PersistentType.SPECIFIED_ATTRIBUTES_LIST}, (PersistentType) model()) { - @Override - protected ListIterator<PersistentAttribute> listIterator_() { - return subject.attributes(); - } - - @Override - protected int size_() { - return subject.attributesSize(); - } - }; - } - } public static class JavaResourceModelItemContentProvider extends AbstractTreeItemContentProvider<JpaStructureNode> { public JavaResourceModelItemContentProvider( diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/structure/OrmItemContentProviderFactory.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/structure/OrmItemContentProviderFactory.java index 7b5ff77b8f..e08cef9962 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/structure/OrmItemContentProviderFactory.java +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/structure/OrmItemContentProviderFactory.java @@ -9,20 +9,18 @@ ******************************************************************************/ package org.eclipse.jpt.ui.internal.structure; -import java.util.ArrayList; import java.util.ListIterator; import org.eclipse.jpt.core.JpaStructureNode; import org.eclipse.jpt.core.ResourceModel; import org.eclipse.jpt.core.context.PersistentType; import org.eclipse.jpt.core.context.orm.EntityMappings; -import org.eclipse.jpt.core.context.orm.OrmPersistentAttribute; import org.eclipse.jpt.core.context.orm.OrmPersistentType; import org.eclipse.jpt.core.resource.orm.OrmResourceModel; import org.eclipse.jpt.ui.internal.jface.AbstractTreeItemContentProvider; import org.eclipse.jpt.ui.internal.jface.DelegatingContentAndLabelProvider; import org.eclipse.jpt.ui.internal.jface.DelegatingTreeContentAndLabelProvider; import org.eclipse.jpt.ui.internal.jface.TreeItemContentProvider; -import org.eclipse.jpt.utility.internal.model.value.CompositeListValueModel; +import org.eclipse.jpt.ui.internal.platform.generic.OrmPersistentTypeItemContentProvider; import org.eclipse.jpt.utility.internal.model.value.ListAspectAdapter; import org.eclipse.jpt.utility.model.value.ListValueModel; @@ -41,60 +39,11 @@ public class OrmItemContentProviderFactory extends GeneralJpaMappingItemContentP return super.buildItemContentProvider(item, treeContentProvider); } - @Override protected TreeItemContentProvider buildPersistentTypeItemContentProvider(PersistentType persistentType, DelegatingTreeContentAndLabelProvider treeContentProvider) { - return new PersistentTypeItemContentProvider((OrmPersistentType) persistentType, treeContentProvider); + return new OrmPersistentTypeItemContentProvider((OrmPersistentType) persistentType, treeContentProvider); } - public static class PersistentTypeItemContentProvider extends AbstractTreeItemContentProvider<OrmPersistentAttribute> - { - public PersistentTypeItemContentProvider( - OrmPersistentType persistentType, DelegatingTreeContentAndLabelProvider contentProvider) { - super(persistentType, contentProvider); - } - - @Override - public Object getParent() { - return ((OrmPersistentType) model()).parent(); - } - - @Override - protected ListValueModel<OrmPersistentAttribute> buildChildrenModel() { - java.util.List<ListValueModel<OrmPersistentAttribute>> list = new ArrayList<ListValueModel<OrmPersistentAttribute>>(); - list.add(buildSpecifiedPersistentAttributesListHolder()); - list.add(buildVirtualPersistentAttributesListHolder()); - return new CompositeListValueModel<ListValueModel<OrmPersistentAttribute>, OrmPersistentAttribute>(list); - } - - - protected ListValueModel<OrmPersistentAttribute> buildSpecifiedPersistentAttributesListHolder() { - return new ListAspectAdapter<OrmPersistentType, OrmPersistentAttribute>(new String[]{PersistentType.SPECIFIED_ATTRIBUTES_LIST}, (OrmPersistentType) model()) { - @Override - protected ListIterator<OrmPersistentAttribute> listIterator_() { - return subject.specifiedAttributes(); - } - @Override - protected int size_() { - return subject.specifiedAttributesSize(); - } - }; - } - - protected ListValueModel<OrmPersistentAttribute> buildVirtualPersistentAttributesListHolder() { - return new ListAspectAdapter<OrmPersistentType, OrmPersistentAttribute>(new String[]{OrmPersistentType.VIRTUAL_ATTRIBUTES_LIST}, (OrmPersistentType) model()) { - @Override - protected ListIterator<OrmPersistentAttribute> listIterator_() { - return subject.virtualAttributes(); - } - @Override - protected int size_() { - return subject.virtualAttributesSize(); - } - }; - } -} - public static class OrmResourceModelItemContentProvider extends AbstractTreeItemContentProvider<JpaStructureNode> { diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/structure/OrmItemLabelProviderFactory.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/structure/OrmItemLabelProviderFactory.java index 608dab506a..2c6d20cbb9 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/structure/OrmItemLabelProviderFactory.java +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/structure/OrmItemLabelProviderFactory.java @@ -10,15 +10,9 @@ package org.eclipse.jpt.ui.internal.structure; import org.eclipse.jpt.core.context.orm.EntityMappings; -import org.eclipse.jpt.ui.JptUiPlugin; -import org.eclipse.jpt.ui.internal.JptUiIcons; -import org.eclipse.jpt.ui.internal.JptUiMessages; -import org.eclipse.jpt.ui.internal.jface.AbstractItemLabelProvider; import org.eclipse.jpt.ui.internal.jface.DelegatingContentAndLabelProvider; import org.eclipse.jpt.ui.internal.jface.ItemLabelProvider; -import org.eclipse.jpt.utility.internal.model.value.StaticPropertyValueModel; -import org.eclipse.jpt.utility.model.value.PropertyValueModel; -import org.eclipse.swt.graphics.Image; +import org.eclipse.jpt.ui.internal.platform.generic.EntityMappingsItemLabelProvider; public class OrmItemLabelProviderFactory extends GeneralJpaMappingItemLabelProviderFactory { @@ -29,23 +23,4 @@ public class OrmItemLabelProviderFactory extends GeneralJpaMappingItemLabelProvi } else return super.buildItemLabelProvider(item, labelProvider); } - - - public static class EntityMappingsItemLabelProvider extends AbstractItemLabelProvider - { - public EntityMappingsItemLabelProvider( - EntityMappings entityMappings, DelegatingContentAndLabelProvider labelProvider) { - super(entityMappings, labelProvider); - } - - @Override - protected PropertyValueModel<String> buildTextModel() { - return new StaticPropertyValueModel<String>(JptUiMessages.OrmItemLabelProviderFactory_entityMappingsLabel); - } - - @Override - protected PropertyValueModel<Image> buildImageModel() { - return new StaticPropertyValueModel<Image>(JptUiPlugin.getImage(JptUiIcons.ENTITY_MAPPINGS)); - } - } } diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/structure/PersistenceItemContentProviderFactory.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/structure/PersistenceItemContentProviderFactory.java index 89e8244412..13c7d4ae61 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/structure/PersistenceItemContentProviderFactory.java +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/structure/PersistenceItemContentProviderFactory.java @@ -130,6 +130,7 @@ public class PersistenceItemContentProviderFactory PersistenceUnit.SPECIFIED_MAPPING_FILE_REF_LIST, (PersistenceUnit) model()) { @Override + @SuppressWarnings("unchecked") protected ListIterator<JpaStructureNode> listIterator_() { return new ReadOnlyCompositeListIterator<JpaStructureNode>( subject.specifiedMappingFileRefs()); @@ -152,6 +153,7 @@ public class PersistenceItemContentProviderFactory new String[] {PersistenceUnit.SPECIFIED_CLASS_REF_LIST, PersistenceUnit.IMPLIED_CLASS_REF_LIST}, (PersistenceUnit) model()) { @Override + @SuppressWarnings("unchecked") protected ListIterator<JpaStructureNode> listIterator_() { return new ReadOnlyCompositeListIterator<JpaStructureNode>( subject.classRefs()); diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/structure/PersistenceItemLabelProviderFactory.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/structure/PersistenceItemLabelProviderFactory.java index 76d9844838..64bd3cc265 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/structure/PersistenceItemLabelProviderFactory.java +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/structure/PersistenceItemLabelProviderFactory.java @@ -13,17 +13,13 @@ import org.eclipse.jpt.core.context.persistence.ClassRef; import org.eclipse.jpt.core.context.persistence.MappingFileRef; import org.eclipse.jpt.core.context.persistence.Persistence; import org.eclipse.jpt.core.context.persistence.PersistenceUnit; -import org.eclipse.jpt.ui.JptUiPlugin; -import org.eclipse.jpt.ui.internal.JptUiIcons; -import org.eclipse.jpt.ui.internal.JptUiMessages; -import org.eclipse.jpt.ui.internal.jface.AbstractItemLabelProvider; import org.eclipse.jpt.ui.internal.jface.DelegatingContentAndLabelProvider; import org.eclipse.jpt.ui.internal.jface.ItemLabelProvider; import org.eclipse.jpt.ui.internal.jface.ItemLabelProviderFactory; -import org.eclipse.jpt.utility.internal.model.value.PropertyAspectAdapter; -import org.eclipse.jpt.utility.internal.model.value.StaticPropertyValueModel; -import org.eclipse.jpt.utility.model.value.PropertyValueModel; -import org.eclipse.swt.graphics.Image; +import org.eclipse.jpt.ui.internal.platform.generic.ClassRefItemLabelProvider; +import org.eclipse.jpt.ui.internal.platform.generic.MappingFileRefItemLabelProvider; +import org.eclipse.jpt.ui.internal.platform.generic.PersistenceItemLabelProvider; +import org.eclipse.jpt.ui.internal.platform.generic.PersistenceUnitItemLabelProvider; public class PersistenceItemLabelProviderFactory implements ItemLabelProviderFactory @@ -44,103 +40,4 @@ public class PersistenceItemLabelProviderFactory } return null; } - - - public static class PersistenceItemLabelProvider extends AbstractItemLabelProvider - { - public PersistenceItemLabelProvider( - Persistence persistence, DelegatingContentAndLabelProvider labelProvider) { - super(persistence, labelProvider); - } - - @Override - protected PropertyValueModel<String> buildTextModel() { - return new StaticPropertyValueModel<String>(JptUiMessages.PersistenceItemLabelProviderFactory_persistenceLabel); - } - - @Override - protected PropertyValueModel<Image> buildImageModel() { - return new StaticPropertyValueModel<Image>(JptUiPlugin.getImage(JptUiIcons.PERSISTENCE)); - } - } - - - public static class PersistenceUnitItemLabelProvider extends AbstractItemLabelProvider - { - public PersistenceUnitItemLabelProvider( - PersistenceUnit persistenceUnit, DelegatingContentAndLabelProvider labelProvider) { - super(persistenceUnit, labelProvider); - } - - @Override - protected PropertyValueModel<String> buildTextModel() { - return new PropertyAspectAdapter<PersistenceUnit, String>(PersistenceUnit.NAME_PROPERTY, (PersistenceUnit) model()) { - @Override - protected String buildValue_() { - return subject.getName(); - } - }; - } - - @Override - protected PropertyValueModel<Image> buildImageModel() { - return new StaticPropertyValueModel<Image>(JptUiPlugin.getImage(JptUiIcons.PERSISTENCE_UNIT)); - } - } - - - public static class MappingFileRefItemLabelProvider extends AbstractItemLabelProvider - { - public MappingFileRefItemLabelProvider( - MappingFileRef mappingFileRef, DelegatingContentAndLabelProvider labelProvider) { - super(mappingFileRef, labelProvider); - } - - @Override - protected PropertyValueModel<String> buildTextModel() { - return new PropertyAspectAdapter<MappingFileRef, String>(MappingFileRef.FILE_NAME_PROPERTY, (MappingFileRef) model()) { - @Override - protected String buildValue_() { - return subject.getFileName(); - } - }; - } - - @Override - protected PropertyValueModel<Image> buildImageModel() { - Image image = JptUiPlugin.getImage(JptUiIcons.MAPPING_FILE_REF); - if (((MappingFileRef) model()).isVirtual()) { - image = JptUiIcons.ghost(image); - } - return new StaticPropertyValueModel<Image>(image); - } - } - - - public static class ClassRefItemLabelProvider extends AbstractItemLabelProvider - { - public ClassRefItemLabelProvider( - ClassRef classRef, DelegatingContentAndLabelProvider labelProvider) { - super(classRef, labelProvider); - } - - @Override - protected PropertyValueModel<String> buildTextModel() { - return new PropertyAspectAdapter<ClassRef, String>(ClassRef.CLASS_NAME_PROPERTY, (ClassRef) model()) { - @Override - protected String buildValue_() { - return subject.getClassName(); - } - }; - } - - @Override - protected PropertyValueModel<Image> buildImageModel() { - Image image = JptUiPlugin.getImage(JptUiIcons.CLASS_REF); - if (((ClassRef) model()).isVirtual()) { - image = JptUiIcons.ghost(image); - } - return new StaticPropertyValueModel<Image>(image); - } - } } diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/structure/ResourceModelStructureProvider.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/structure/ResourceModelStructureProvider.java index 11a2a27115..41c2e536b4 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/structure/ResourceModelStructureProvider.java +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/structure/ResourceModelStructureProvider.java @@ -11,6 +11,7 @@ package org.eclipse.jpt.ui.internal.structure; import org.eclipse.jpt.core.ResourceModel; +import org.eclipse.jpt.ui.structure.JpaStructureProvider; public abstract class ResourceModelStructureProvider implements JpaStructureProvider diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/views/structure/JpaStructurePage.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/views/structure/JpaStructurePage.java index e37c59bba0..4e18a77306 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/views/structure/JpaStructurePage.java +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/views/structure/JpaStructurePage.java @@ -28,7 +28,7 @@ import org.eclipse.jpt.core.JpaStructureNode; import org.eclipse.jpt.ui.internal.jface.DelegatingTreeContentAndLabelProvider; import org.eclipse.jpt.ui.internal.selection.DefaultJpaSelection; import org.eclipse.jpt.ui.internal.selection.JpaSelection; -import org.eclipse.jpt.ui.internal.structure.JpaStructureProvider; +import org.eclipse.jpt.ui.structure.JpaStructureProvider; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.widgets.Composite; diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/views/structure/JpaStructureView.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/views/structure/JpaStructureView.java index 1e0b68c165..65ac3a903f 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/views/structure/JpaStructureView.java +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/views/structure/JpaStructureView.java @@ -16,7 +16,7 @@ import org.eclipse.jpt.ui.internal.JptUiMessages; import org.eclipse.jpt.ui.internal.selection.JpaSelection; import org.eclipse.jpt.ui.internal.selection.JpaSelectionManager; import org.eclipse.jpt.ui.internal.selection.SelectionManagerFactory; -import org.eclipse.jpt.ui.internal.structure.JpaStructureProvider; +import org.eclipse.jpt.ui.structure.JpaStructureProvider; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.IEditorPart; import org.eclipse.ui.IWorkbenchPage; diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/navigator/JpaNavigatorProvider.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/navigator/JpaNavigatorProvider.java new file mode 100644 index 0000000000..20bd43a4af --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/navigator/JpaNavigatorProvider.java @@ -0,0 +1,44 @@ +/******************************************************************************* + * Copyright (c) 2008 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.navigator; + +import org.eclipse.jpt.ui.internal.jface.ItemLabelProvider; +import org.eclipse.jpt.ui.internal.jface.ItemLabelProviderFactory; +import org.eclipse.jpt.ui.internal.jface.TreeItemContentProvider; +import org.eclipse.jpt.ui.internal.jface.TreeItemContentProviderFactory; + +/** + * This provider is responsible to create the Project Navigator view contents and + * labels for a given JPA project. + * + * @version 2.0 + * @since 2.0 + * + * Provisional API: This interface is part of an interim API that is still + * under development and expected to change significantly before reaching + * stability. It is available at this early stage to solicit feedback from + * pioneering adopters on the understanding that any code that uses this API + * will almost certainly be broken (repeatedly) as the API evolves. + */ +public interface JpaNavigatorProvider +{ + /** + * Build an factory to create {@link TreeItemContentProvider}s + */ + TreeItemContentProviderFactory treeItemContentProviderFactory(); + + /** + * Build a factory to create {@link ItemLabelProvider}s + */ + ItemLabelProviderFactory itemLabelProviderFactory(); + + void dispose(); +} diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/structure/JpaStructureProvider.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/structure/JpaStructureProvider.java index 553a57e2fd..01b3c0466f 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/structure/JpaStructureProvider.java +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/structure/JpaStructureProvider.java @@ -6,11 +6,26 @@ * * Contributors: Oracle. - initial API and implementation *******************************************************************************/ -package org.eclipse.jpt.ui.internal.structure; +package org.eclipse.jpt.ui.structure; +import org.eclipse.jpt.ui.internal.jface.ItemLabelProvider; import org.eclipse.jpt.ui.internal.jface.ItemLabelProviderFactory; +import org.eclipse.jpt.ui.internal.jface.TreeItemContentProvider; import org.eclipse.jpt.ui.internal.jface.TreeItemContentProviderFactory; +/** + * This provider is responsible to create the JPA Structure view contents and + * labels for a given JPA resource. + * + * @version 2.0 + * @since 2.0 + * + * Provisional API: This interface is part of an interim API that is still + * under development and expected to change significantly before reaching + * stability. It is available at this early stage to solicit feedback from + * pioneering adopters on the understanding that any code that uses this API + * will almost certainly be broken (repeatedly) as the API evolves. + */ public interface JpaStructureProvider { // TODO - change this |