diff options
author | pfullbright | 2009-04-20 21:48:53 +0000 |
---|---|---|
committer | pfullbright | 2009-04-20 21:48:53 +0000 |
commit | 6cf6ce877c047467142d572c46f11f5ecda76c2e (patch) | |
tree | 5c132f3310e215d027e981c320bf8d7aca4d424e | |
parent | 1226d185a3a96490a82f51d1613c7aa778d06a48 (diff) | |
download | webtools.dali-6cf6ce877c047467142d572c46f11f5ecda76c2e.tar.gz webtools.dali-6cf6ce877c047467142d572c46f11f5ecda76c2e.tar.xz webtools.dali-6cf6ce877c047467142d572c46f11f5ecda76c2e.zip |
status bar updates with selection
22 files changed, 347 insertions, 110 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 8366827d8e..92e86d1fd1 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 @@ -75,6 +75,7 @@ JpaStructureView_structureNotAvailable=JPA structure is not available. JpaStructureView_linkWithEditorText=Link with Editor JpaStructureView_linkWithEditorDesc=Link with Active Editor JpaStructureView_linkWithEditorTooltip=Link with Editor +JpaStructureView_numItemsSelected={0} items selected JpaDetailsView_viewNotAvailable=Details are not available for the current selection. 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 29c84696ee..740fb544e8 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 @@ -93,6 +93,7 @@ public class JptUiMessages { public static String JpaStructureView_linkWithEditorText; public static String JpaStructureView_linkWithEditorTooltip; public static String JpaStructureView_structureNotAvailable; + public static String JpaStructureView_numItemsSelected; public static String MappingFileWizard_title; public static String MappingFileWizardPage_title; public static String MappingFileWizardPage_desc; diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jface/AbstractItemLabelProvider.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jface/AbstractItemLabelProvider.java index a4874cf6bd..219d586425 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jface/AbstractItemLabelProvider.java +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/jface/AbstractItemLabelProvider.java @@ -22,12 +22,15 @@ import org.eclipse.swt.graphics.Image; * label information for a Model object. * * The typical subclass will override the following methods: - * #buildTextModel() - * return a {@link PropertyValueModel} that represents the text for the represented - * model object. * #buildImageModel() - * return a {@link PropertyValueModel} that represents the image for the represented - * model object + * return a {@link PropertyValueModel} that represents the image for the + * represented model object + * #buildTextModel() + * return a {@link PropertyValueModel} that represents the text for the + * represented model object. + * #buildDescriptionModel() + * return a {@link PropertyValueModel} that represents the description for + * the represented model object * * Other methods may be overridden, but take care to preserve the logic provided * by this class. @@ -38,9 +41,11 @@ public abstract class AbstractItemLabelProvider implements ItemLabelProvider private Model model; + private PropertyValueModel<Image> imageModel; + private PropertyValueModel<String> textModel; - private PropertyValueModel<Image> imageModel; + private PropertyValueModel<String> descriptionModel; private PropertyChangeListener labelChangeListener; @@ -66,6 +71,41 @@ public abstract class AbstractItemLabelProvider implements ItemLabelProvider } /** + * Return the image value model + * (lazy and just-in-time initialized) + */ + protected PropertyValueModel<Image> imageModel() { + if (imageModel == null) { + imageModel = buildImageModel(); + engageImageModel(); + } + return imageModel; + } + + /** + * Construct an image model + */ + protected abstract PropertyValueModel<Image> buildImageModel(); + + /** + * Should only be overridden with a call to super.engageImageModel() before + * subclass logic + */ + protected void engageImageModel() { + imageModel.addPropertyChangeListener(PropertyValueModel.VALUE, labelChangeListener); + } + + /** + * Should only be overridden with a call to super.disengageImageModel() after + * subclass logic + */ + protected void disengageImageModel() { + if (imageModel != null) { + imageModel.removePropertyChangeListener(PropertyValueModel.VALUE, labelChangeListener); + } + } + + /** * Return the text value model * (lazy and just-in-time initialized) */ @@ -101,37 +141,37 @@ public abstract class AbstractItemLabelProvider implements ItemLabelProvider } /** - * Return the image value model + * Return the description value model * (lazy and just-in-time initialized) */ - protected PropertyValueModel<Image> imageModel() { - if (imageModel == null) { - imageModel = buildImageModel(); - engageImageModel(); + protected PropertyValueModel<String> descriptionModel() { + if (descriptionModel == null) { + descriptionModel = buildDescriptionModel(); + engageDescriptionModel(); } - return imageModel; + return descriptionModel; } /** - * Construct an image model + * Construct a description value model */ - protected abstract PropertyValueModel<Image> buildImageModel(); + protected abstract PropertyValueModel<String> buildDescriptionModel(); /** - * Should only be overridden with a call to super.engageImageModel() before + * Should only be overridden with a call to super.engageDescriptionModel() before * subclass logic */ - protected void engageImageModel() { - imageModel.addPropertyChangeListener(PropertyValueModel.VALUE, labelChangeListener); + protected void engageDescriptionModel() { + descriptionModel.addPropertyChangeListener(PropertyValueModel.VALUE, labelChangeListener); } /** - * Should only be overridden with a call to super.disengageImageModel() after + * Should only be overridden with a call to super.disengageDescriptionModel() after * subclass logic */ - protected void disengageImageModel() { - if (imageModel != null) { - imageModel.removePropertyChangeListener(PropertyValueModel.VALUE, labelChangeListener); + protected void disengageDescriptionModel() { + if (descriptionModel != null) { + descriptionModel.removePropertyChangeListener(PropertyValueModel.VALUE, labelChangeListener); } } @@ -149,12 +189,16 @@ public abstract class AbstractItemLabelProvider implements ItemLabelProvider return labelProvider; } + public Image getImage() { + return imageModel().getValue(); + } + public String getText() { return textModel().getValue(); } - public Image getImage() { - return imageModel().getValue(); + public String getDescription() { + return descriptionModel().getValue(); } public void dispose() { 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 8b74901db1..98e7094831 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 @@ -20,7 +20,8 @@ import org.eclipse.jpt.ui.jface.TreeItemContentProviderFactory; * Extension of {@link DelegatingContentAndLabelProvider} that provides an extension * to provide tree content */ -public class DelegatingTreeContentAndLabelProvider extends DelegatingContentAndLabelProvider +public class DelegatingTreeContentAndLabelProvider + extends DelegatingContentAndLabelProvider implements ITreeContentProvider { public DelegatingTreeContentAndLabelProvider( @@ -35,6 +36,7 @@ public class DelegatingTreeContentAndLabelProvider extends DelegatingContentAndL } + @Override protected TreeItemContentProvider itemContentProvider(Object item) { return (TreeItemContentProvider) super.itemContentProvider(item); } 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 4d92ba983f..d8f44ea461 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 @@ -44,6 +44,7 @@ public class JpaNavigatorLabelProvider extends LabelProvider // **************** IBaseLabelProvider implementation ********************** + @Override public void addListener(ILabelProviderListener listener) { if (delegate != null) { delegate.addListener(listener); @@ -51,6 +52,7 @@ public class JpaNavigatorLabelProvider extends LabelProvider super.addListener(listener); } + @Override public void removeListener(ILabelProviderListener listener) { super.removeListener(listener); if (delegate != null) { @@ -58,6 +60,7 @@ public class JpaNavigatorLabelProvider extends LabelProvider } } + @Override public boolean isLabelProperty(Object element, String property) { if (delegate != null) { return delegate.isLabelProperty(element, property); @@ -66,6 +69,7 @@ public class JpaNavigatorLabelProvider extends LabelProvider return super.isLabelProperty(element, property); } + @Override public void dispose() { if (delegate != null) { delegate.dispose(); @@ -76,6 +80,7 @@ public class JpaNavigatorLabelProvider extends LabelProvider // **************** ILabelProvider implementation ************************** + @Override public Image getImage(Object element) { if (delegate != null) { return delegate.getImage(element); @@ -84,6 +89,7 @@ public class JpaNavigatorLabelProvider extends LabelProvider return super.getImage(element); } + @Override public String getText(Object element) { if (delegate != null) { return delegate.getText(element); @@ -96,8 +102,11 @@ public class JpaNavigatorLabelProvider extends LabelProvider // **************** IDescriptionProvider implementation ******************** public String getDescription(Object element) { - // no op - defer to getText(element) - return getText(element); + if (delegate != null) { + return delegate.getDescription(element); + } + + return super.getText(element); } 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 index e261aedc71..b796a87b96 100644 --- 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 @@ -26,6 +26,16 @@ public class ClassRefItemLabelProvider extends AbstractItemLabelProvider super(classRef, labelProvider); } + + @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); + } + @Override protected PropertyValueModel<String> buildTextModel() { return new PropertyAspectAdapter<ClassRef, String>(ClassRef.CLASS_NAME_PROPERTY, (ClassRef) model()) { @@ -37,11 +47,14 @@ public class ClassRefItemLabelProvider extends AbstractItemLabelProvider } @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); + protected PropertyValueModel<String> buildDescriptionModel() { + return new PropertyAspectAdapter<ClassRef, String>(ClassRef.CLASS_NAME_PROPERTY, (ClassRef) model()) { + @Override + protected String buildValue_() { + return subject.getPersistenceUnit().getName() + + "/\"" + subject.getClassName() + + "\" - " + subject.getResource().getFullPath().makeRelative(); + } + }; } -}
\ 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 index 6945a8d4b6..033fe36924 100644 --- 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 @@ -26,13 +26,23 @@ public class EntityMappingsItemLabelProvider extends AbstractItemLabelProvider super(entityMappings, labelProvider); } + + @Override + protected PropertyValueModel<Image> buildImageModel() { + return new StaticPropertyValueModel<Image>( + JptUiPlugin.getImage(JptUiIcons.ENTITY_MAPPINGS)); + } + @Override protected PropertyValueModel<String> buildTextModel() { - return new StaticPropertyValueModel<String>(JptUiMessages.OrmItemLabelProviderFactory_entityMappingsLabel); + 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 + protected PropertyValueModel<String> buildDescriptionModel() { + return new StaticPropertyValueModel<String>( + JptUiMessages.OrmItemLabelProviderFactory_entityMappingsLabel + + " - " + ((EntityMappings) model()).getResource().getFullPath().makeRelative()); + } +} 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 index 4812a8d0e6..a2de913536 100644 --- 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 @@ -26,6 +26,16 @@ public class MappingFileRefItemLabelProvider extends AbstractItemLabelProvider super(mappingFileRef, labelProvider); } + + @Override + protected PropertyValueModel<Image> buildImageModel() { + Image image = JptUiPlugin.getImage(JptUiIcons.MAPPING_FILE_REF); + if (((MappingFileRef) model()).isImplied()) { + image = JptUiIcons.ghost(image); + } + return new StaticPropertyValueModel<Image>(image); + } + @Override protected PropertyValueModel<String> buildTextModel() { return new PropertyAspectAdapter<MappingFileRef, String>(MappingFileRef.FILE_NAME_PROPERTY, (MappingFileRef) model()) { @@ -37,11 +47,14 @@ public class MappingFileRefItemLabelProvider extends AbstractItemLabelProvider } @Override - protected PropertyValueModel<Image> buildImageModel() { - Image image = JptUiPlugin.getImage(JptUiIcons.MAPPING_FILE_REF); - if (((MappingFileRef) model()).isImplied()) { - image = JptUiIcons.ghost(image); - } - return new StaticPropertyValueModel<Image>(image); + protected PropertyValueModel<String> buildDescriptionModel() { + return new PropertyAspectAdapter<MappingFileRef, String>(MappingFileRef.FILE_NAME_PROPERTY, (MappingFileRef) model()) { + @Override + protected String buildValue_() { + return subject.getPersistenceUnit().getName() + + "/\"" + subject.getFileName() + "\"" + + " - " + subject.getResource().getFullPath().makeRelative(); + } + }; } -}
\ No newline at end of file +} 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 index 83151a9b26..eebe76f5cd 100644 --- 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 @@ -25,13 +25,22 @@ public class OrmXmlItemLabelProvider extends AbstractItemLabelProvider super(ormXml, labelProvider); } + + @Override + protected PropertyValueModel<Image> buildImageModel() { + return new StaticPropertyValueModel<Image>(JptUiPlugin.getImage(JptUiIcons.JPA_FILE)); + } + @Override protected PropertyValueModel<String> buildTextModel() { return new StaticPropertyValueModel<String>(((OrmXml) model()).getResource().getName()); } @Override - protected PropertyValueModel<Image> buildImageModel() { - return new StaticPropertyValueModel<Image>(JptUiPlugin.getImage(JptUiIcons.JPA_FILE)); + protected PropertyValueModel<String> buildDescriptionModel() { + OrmXml ormXml = (OrmXml) model(); + return new StaticPropertyValueModel<String>( + ormXml.getResource().getName() + + " - " + ormXml.getResource().getParent().getFullPath().makeRelative().toString()); } } 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 index bf913aaf8a..59147884c0 100644 --- 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 @@ -26,13 +26,22 @@ public class PersistenceItemLabelProvider extends AbstractItemLabelProvider super(persistence, labelProvider); } + + @Override + protected PropertyValueModel<Image> buildImageModel() { + return new StaticPropertyValueModel<Image>(JptUiPlugin.getImage(JptUiIcons.PERSISTENCE)); + } + @Override protected PropertyValueModel<String> buildTextModel() { - return new StaticPropertyValueModel<String>(JptUiMessages.PersistenceItemLabelProviderFactory_persistenceLabel); + 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 + protected PropertyValueModel<String> buildDescriptionModel() { + return new StaticPropertyValueModel<String>( + JptUiMessages.PersistenceItemLabelProviderFactory_persistenceLabel + + " - " + ((Persistence) model()).getResource().getFullPath().makeRelative()); + } +} 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 index 8cea125d52..7209ad1e43 100644 --- 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 @@ -26,6 +26,12 @@ public class PersistenceUnitItemLabelProvider extends AbstractItemLabelProvider super(persistenceUnit, labelProvider); } + + @Override + protected PropertyValueModel<Image> buildImageModel() { + return new StaticPropertyValueModel<Image>(JptUiPlugin.getImage(JptUiIcons.PERSISTENCE_UNIT)); + } + @Override protected PropertyValueModel<String> buildTextModel() { return new PropertyAspectAdapter<PersistenceUnit, String>(PersistenceUnit.NAME_PROPERTY, (PersistenceUnit) model()) { @@ -37,7 +43,13 @@ public class PersistenceUnitItemLabelProvider extends AbstractItemLabelProvider } @Override - protected PropertyValueModel<Image> buildImageModel() { - return new StaticPropertyValueModel<Image>(JptUiPlugin.getImage(JptUiIcons.PERSISTENCE_UNIT)); + protected PropertyValueModel<String> buildDescriptionModel() { + return new PropertyAspectAdapter<PersistenceUnit, String>(PersistenceUnit.NAME_PROPERTY, (PersistenceUnit) model()) { + @Override + protected String buildValue_() { + return subject.getName() + + " - " + subject.getResource().getFullPath().makeRelative(); + } + }; } -}
\ No newline at end of file +} 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 index c4374f8ec0..902d31af67 100644 --- 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 @@ -25,13 +25,22 @@ public class PersistenceXmlItemLabelProvider extends AbstractItemLabelProvider super(persistenceXml, labelProvider); } + + @Override + protected PropertyValueModel<Image> buildImageModel() { + return new StaticPropertyValueModel<Image>(JptUiPlugin.getImage(JptUiIcons.JPA_FILE)); + } + @Override protected PropertyValueModel<String> buildTextModel() { return new StaticPropertyValueModel<String>(((PersistenceXml) model()).getResource().getName()); } @Override - protected PropertyValueModel<Image> buildImageModel() { - return new StaticPropertyValueModel<Image>(JptUiPlugin.getImage(JptUiIcons.JPA_FILE)); - } + protected PropertyValueModel<String> buildDescriptionModel() { + PersistenceXml persistenceXml = (PersistenceXml) model(); + return new StaticPropertyValueModel<String>( + persistenceXml.getResource().getName() + + " - " + persistenceXml.getResource().getParent().getFullPath().makeRelative().toString()); + } } 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 index 4adb421a6f..92f2224ae0 100644 --- 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 @@ -25,15 +25,7 @@ public class PersistentAttributeItemLabelProvider extends AbstractItemLabelProvi 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() { @@ -49,5 +41,28 @@ public class PersistentAttributeItemLabelProvider extends AbstractItemLabelProvi return image; } }; - } -}
\ No newline at end of file + } + + @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<String> buildDescriptionModel() { + return new PropertyAspectAdapter<PersistentAttribute, String>(PersistentAttribute.NAME_PROPERTY, (PersistentAttribute) model()) { + @Override + protected String buildValue_() { + return subject.getPersistenceUnit().getName() + + "/" + subject.getPersistentType().getName() + + "/" + subject.getName() + + " - " + subject.getResource().getFullPath().makeRelative(); + } + }; + } +} 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 index c7267a4497..c2827329d4 100644 --- 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 @@ -24,6 +24,17 @@ public class PersistentTypeItemLabelProvider extends AbstractItemLabelProvider super(persistentType, labelProvider); } + + @Override + protected PropertyValueModel<Image> buildImageModel() { + return new PropertyAspectAdapter<PersistentType, Image>(PersistentType.MAPPING_PROPERTY, (PersistentType) model()) { + @Override + protected Image buildValue_() { + return JpaMappingImageHelper.imageForTypeMapping(subject.getMappingKey()); + } + }; + } + @Override protected PropertyValueModel<String> buildTextModel() { return new PropertyAspectAdapter<PersistentType, String>(PersistentType.NAME_PROPERTY, (PersistentType) model()) { @@ -35,12 +46,14 @@ public class PersistentTypeItemLabelProvider extends AbstractItemLabelProvider } @Override - protected PropertyValueModel<Image> buildImageModel() { - return new PropertyAspectAdapter<PersistentType, Image>(PersistentType.MAPPING_PROPERTY, (PersistentType) model()) { + protected PropertyValueModel<String> buildDescriptionModel() { + return new PropertyAspectAdapter<PersistentType, String>(PersistentType.NAME_PROPERTY, (PersistentType) model()) { @Override - protected Image buildValue_() { - return JpaMappingImageHelper.imageForTypeMapping(subject.getMappingKey()); + protected String buildValue_() { + return subject.getPersistenceUnit().getName() + + "/" + subject.getName() + + " - " + subject.getResource().getFullPath().makeRelative(); } }; - } -}
\ No newline at end of file + } +} 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 index 75adf5bb52..b9d67b3f7c 100644 --- 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 @@ -26,13 +26,21 @@ public class RootContextItemLabelProvider extends AbstractItemLabelProvider super(rootContextNode, labelProvider); } + + @Override + protected PropertyValueModel<Image> buildImageModel() { + return new StaticPropertyValueModel<Image>(JptUiPlugin.getImage(JptUiIcons.JPA_CONTENT)); + } + @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)); - } + protected PropertyValueModel<String> buildDescriptionModel() { + return new StaticPropertyValueModel<String>( + JptUiMessages.JpaContent_label + + " - " + ((JpaRootContextNode) model()).getResource().getFullPath().makeRelative()); + } } 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 a65b921c31..e91e24de5c 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 @@ -14,22 +14,27 @@ import org.eclipse.core.runtime.ListenerList; import org.eclipse.core.runtime.SafeRunner; import org.eclipse.jface.action.IMenuListener; import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.action.IStatusLineManager; import org.eclipse.jface.action.MenuManager; import org.eclipse.jface.action.Separator; import org.eclipse.jface.util.SafeRunnable; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.ISelectionProvider; +import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.ITreeSelection; import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.jpt.core.JpaFile; import org.eclipse.jpt.core.JpaStructureNode; +import org.eclipse.jpt.ui.internal.JptUiMessages; 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.jface.DelegatingContentAndLabelProvider; import org.eclipse.jpt.ui.structure.JpaStructureProvider; +import org.eclipse.osgi.util.NLS; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.widgets.Composite; @@ -39,8 +44,9 @@ import org.eclipse.ui.IWorkbenchActionConstants; import org.eclipse.ui.part.IPageSite; import org.eclipse.ui.part.Page; -public class JpaStructurePage extends Page - implements ISelectionProvider, ISelectionChangedListener +public class JpaStructurePage + extends Page + implements ISelectionProvider { private final JpaStructureView jpaStructureView; @@ -48,19 +54,32 @@ public class JpaStructurePage extends Page private final JpaStructureProvider structureProvider; - private final ListenerList selectionChangedListenerList; - private Composite control; + private DelegatingContentAndLabelProvider contentAndLabelProvider; + private TreeViewer viewer; - public JpaStructurePage(JpaStructureView jpaStructureView, JpaFile jpaFile, JpaStructureProvider structureProvider) { + private final ListenerList selectionChangedListenerList; + + private final ISelectionChangedListener treeSelectionListener; + + private final ISelectionChangedListener treePostSelectionListener; + + + public JpaStructurePage( + JpaStructureView jpaStructureView, + JpaFile jpaFile, + JpaStructureProvider structureProvider) { this.jpaStructureView = jpaStructureView; this.jpaFile = jpaFile; this.structureProvider = structureProvider; this.selectionChangedListenerList = new ListenerList(); + this.treeSelectionListener = new TreeSelectionChangedListener(); + this.treePostSelectionListener = new TreePostSelectionChangedListener(); } + @Override public void init(IPageSite pageSite) { super.init(pageSite); @@ -77,17 +96,20 @@ public class JpaStructurePage extends Page = new DelegatingTreeContentAndLabelProvider( structureProvider.getTreeItemContentProviderFactory(), structureProvider.getItemLabelProviderFactory()); + this.contentAndLabelProvider = contentAndLabelProvider; viewer.setContentProvider(contentAndLabelProvider); // TODO Use problem decorator viewer.setLabelProvider(contentAndLabelProvider); viewer.setInput(this.jpaFile); - viewer.addSelectionChangedListener(this); + viewer.addSelectionChangedListener(this.treeSelectionListener); + viewer.addPostSelectionChangedListener(this.treePostSelectionListener); initContextMenu(); } @Override public void dispose() { - viewer.removeSelectionChangedListener(this); + viewer.removeSelectionChangedListener(this.treeSelectionListener); + viewer.removePostSelectionChangedListener(this.treePostSelectionListener); super.dispose(); } @@ -168,14 +190,9 @@ public class JpaStructurePage extends Page } } - - - // **************** ISelectionChangedListener impl ************************* - - public void selectionChanged(SelectionChangedEvent event) { - fireSelectionChanged(event.getSelection()); - } - + /* + * relays tree selection event to listeners of this page + */ protected void fireSelectionChanged(ISelection selection) { // create an event final SelectionChangedEvent event = @@ -193,4 +210,40 @@ public class JpaStructurePage extends Page }); } } + + protected void updateStatusBar(ISelection selection) { + IStatusLineManager statusLineManager = getSite().getActionBars().getStatusLineManager(); + if (! (selection instanceof IStructuredSelection) || selection.isEmpty()) { + statusLineManager.setMessage(""); + return; + } + IStructuredSelection sselection = (IStructuredSelection) selection; + if (sselection.size() > 1) { + statusLineManager.setMessage(NLS.bind(JptUiMessages.JpaStructureView_numItemsSelected, sselection.size())); + } + else { + Object selObj = sselection.getFirstElement(); + statusLineManager.setMessage( + this.contentAndLabelProvider.getImage(selObj), + this.contentAndLabelProvider.getDescription(selObj)); + } + } + + + private class TreeSelectionChangedListener + implements ISelectionChangedListener + { + public void selectionChanged(SelectionChangedEvent event) { + JpaStructurePage.this.fireSelectionChanged(event.getSelection()); + } + } + + + private class TreePostSelectionChangedListener + implements ISelectionChangedListener + { + public void selectionChanged(SelectionChangedEvent event) { + JpaStructurePage.this.updateStatusBar(event.getSelection()); + } + } }
\ No newline at end of file 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 fb45b406b9..9ced410525 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 @@ -105,7 +105,6 @@ public class JpaStructureView @Override protected void doDestroyPage(IWorkbenchPart part, PageRec pageRecord) { JpaStructurePage page = (JpaStructurePage) pageRecord.page; - this.removeSelectionChangedListener(page); page.dispose(); pageRecord.dispose(); } diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/jface/DelegatingContentAndLabelProvider.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/jface/DelegatingContentAndLabelProvider.java index a401e428a6..2b6b959bc2 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/jface/DelegatingContentAndLabelProvider.java +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/jface/DelegatingContentAndLabelProvider.java @@ -18,6 +18,7 @@ import org.eclipse.jface.viewers.LabelProviderChangedEvent; import org.eclipse.jface.viewers.StructuredViewer; import org.eclipse.jface.viewers.Viewer; import org.eclipse.swt.graphics.Image; +import org.eclipse.ui.navigator.IDescriptionProvider; /** * Implementation of {@link IStructuredContentProvider} and {@link ILabelProvider} that @@ -35,8 +36,9 @@ import org.eclipse.swt.graphics.Image; * pioneering adopters on the understanding that any code that uses this API * will almost certainly be broken (repeatedly) as the API evolves. */ -public abstract class DelegatingContentAndLabelProvider extends BaseLabelProvider - implements IStructuredContentProvider, ILabelProvider +public abstract class DelegatingContentAndLabelProvider + extends BaseLabelProvider + implements IStructuredContentProvider, ILabelProvider, IDescriptionProvider { private final ItemContentProviderFactory itemContentProviderFactory; @@ -111,6 +113,11 @@ public abstract class DelegatingContentAndLabelProvider extends BaseLabelProvide return (provider == null) ? null : provider.getText(); } + public String getDescription(Object element) { + ItemLabelProvider provider = itemLabelProvider(element); + return (provider == null) ? null : provider.getDescription(); + } + /** * Disposes all items */ diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/jface/ItemLabelProvider.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/jface/ItemLabelProvider.java index d15df3cbcf..a6c3db6c43 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/jface/ItemLabelProvider.java +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/jface/ItemLabelProvider.java @@ -36,6 +36,11 @@ public interface ItemLabelProvider public String getText(); /** + * Return the description for the item + */ + public String getDescription(); + + /** * Dispose of this label provider, cleaning up all references, listeners, etc. */ void dispose(); diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/jface/ItemLabelProviderFactory.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/jface/ItemLabelProviderFactory.java index b3cc358d91..1ce72f8146 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/jface/ItemLabelProviderFactory.java +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/jface/ItemLabelProviderFactory.java @@ -21,6 +21,6 @@ package org.eclipse.jpt.ui.jface; */ public interface ItemLabelProviderFactory { - ItemLabelProvider buildItemLabelProvider( - Object item, DelegatingContentAndLabelProvider contentAndLabelProvider); + ItemLabelProvider buildItemLabelProvider(Object item, + DelegatingContentAndLabelProvider contentAndLabelProvider); } diff --git a/jpa/tests/org.eclipse.jpt.ui.tests/META-INF/MANIFEST.MF b/jpa/tests/org.eclipse.jpt.ui.tests/META-INF/MANIFEST.MF index 3f5d5cc38d..efef310b02 100644 --- a/jpa/tests/org.eclipse.jpt.ui.tests/META-INF/MANIFEST.MF +++ b/jpa/tests/org.eclipse.jpt.ui.tests/META-INF/MANIFEST.MF @@ -14,8 +14,9 @@ Require-Bundle: org.eclipse.jpt.utility, org.eclipse.jpt.core, org.eclipse.jpt.ui, - org.eclipse.ui.workbench;bundle-version="3.4.0", - org.eclipse.ui.forms;bundle-version="3.3.100" + org.eclipse.ui.navigator;bundle-version="3.4.0", + org.eclipse.ui.forms;bundle-version="3.3.100", + org.eclipse.ui.workbench;bundle-version="3.4.0" Export-Package: org.eclipse.jpt.ui.tests;x-internal:=true, org.eclipse.jpt.ui.tests.internal.jface;x-internal:=true, org.eclipse.jpt.ui.tests.internal.platform;x-internal:=true, diff --git a/jpa/tests/org.eclipse.jpt.ui.tests/src/org/eclipse/jpt/ui/tests/internal/jface/DelegatingLabelProviderUiTest.java b/jpa/tests/org.eclipse.jpt.ui.tests/src/org/eclipse/jpt/ui/tests/internal/jface/DelegatingLabelProviderUiTest.java index c1ef40e4b6..d0ace3e69a 100644 --- a/jpa/tests/org.eclipse.jpt.ui.tests/src/org/eclipse/jpt/ui/tests/internal/jface/DelegatingLabelProviderUiTest.java +++ b/jpa/tests/org.eclipse.jpt.ui.tests/src/org/eclipse/jpt/ui/tests/internal/jface/DelegatingLabelProviderUiTest.java @@ -32,7 +32,6 @@ import org.eclipse.jpt.ui.jface.ItemLabelProviderFactory; import org.eclipse.jpt.ui.jface.TreeItemContentProvider; import org.eclipse.jpt.ui.jface.TreeItemContentProviderFactory; import org.eclipse.jpt.utility.internal.ClassTools; -import org.eclipse.jpt.utility.internal.CollectionTools; import org.eclipse.jpt.utility.internal.model.AbstractModel; import org.eclipse.jpt.utility.internal.model.value.NullCollectionValueModel; import org.eclipse.jpt.utility.internal.model.value.PropertyAspectAdapter; @@ -382,6 +381,18 @@ public class DelegatingLabelProviderUiTest extends ApplicationWindow } @Override + protected PropertyValueModel<Image> buildImageModel() { + return new PropertyAspectAdapter<Vehicle, Image>( + new StaticPropertyValueModel<Vehicle>((Vehicle) model()), + Vehicle.COLOR_PROPERTY, Vehicle.GREYED_PROPERTY, Vehicle.TRANSLUCENT_PROPERTY) { + @Override + protected Image buildValue_() { + return subject.image(); + } + }; + } + + @Override protected PropertyValueModel<String> buildTextModel() { return new PropertyAspectAdapter<Vehicle, String>( new StaticPropertyValueModel<Vehicle>((Vehicle) model()), @@ -394,15 +405,8 @@ public class DelegatingLabelProviderUiTest extends ApplicationWindow } @Override - protected PropertyValueModel<Image> buildImageModel() { - return new PropertyAspectAdapter<Vehicle, Image>( - new StaticPropertyValueModel<Vehicle>((Vehicle) model()), - Vehicle.COLOR_PROPERTY, Vehicle.GREYED_PROPERTY, Vehicle.TRANSLUCENT_PROPERTY) { - @Override - protected Image buildValue_() { - return subject.image(); - } - }; + protected PropertyValueModel<String> buildDescriptionModel() { + return buildTextModel(); } } |