diff options
author | kmoore | 2008-04-08 13:54:38 +0000 |
---|---|---|
committer | kmoore | 2008-04-08 13:54:38 +0000 |
commit | 7c26cf8352d0480ca293aa6cdd6c29fce8daddde (patch) | |
tree | c18e8a14ef76fb5f0ff46d30e63dad492cff431c /jpa/plugins | |
parent | 3054c093f34c31240cbed35939cd3c914e9cc842 (diff) | |
download | webtools.dali-7c26cf8352d0480ca293aa6cdd6c29fce8daddde.tar.gz webtools.dali-7c26cf8352d0480ca293aa6cdd6c29fce8daddde.tar.xz webtools.dali-7c26cf8352d0480ca293aa6cdd6c29fce8daddde.zip |
225681 - patch from pascal - persistence.xml persistence unit name text field and property tables
Diffstat (limited to 'jpa/plugins')
10 files changed, 494 insertions, 71 deletions
diff --git a/jpa/plugins/org.eclipse.jpt.ui/property_files/jpt_ui_persistence.properties b/jpa/plugins/org.eclipse.jpt.ui/property_files/jpt_ui_persistence.properties index d55397106c..db775e27a2 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/property_files/jpt_ui_persistence.properties +++ b/jpa/plugins/org.eclipse.jpt.ui/property_files/jpt_ui_persistence.properties @@ -21,7 +21,6 @@ PersistenceUnitClassesComposite_mappedClassesNoName=<name not set> PersistenceUnitClassesComposite_open=Open PersistenceUnitConnectionGeneralComposite_default=Default(JTA) -PersistenceUnitConnectionGeneralComposite_description= PersistenceUnitConnectionGeneralComposite_jta=JTA PersistenceUnitConnectionGeneralComposite_resource_local=Resource Local @@ -29,7 +28,6 @@ PersistenceUnitConnectionComposite_connection=Connection PersistenceUnitConnectionComposite_database=Database PersistenceUnitConnectionComposite_general=General -PersistenceUnitConnectionDatabaseComposite_description= PersistenceUnitConnectionDatabaseComposite_jtaDatasourceName=JTA Data Source Name: PersistenceUnitConnectionDatabaseComposite_nonJtaDatasourceName=Non-JTA Data Source Name: @@ -38,10 +36,16 @@ PersistenceUnitConnectionGeneralComposite_transactionType=Transaction Type: PersistenceUnitGeneralComposite_general=General PersistenceUnitGeneralComposite_javaArchives=Java Archives PersistenceUnitGeneralComposite_jpaMappingDescriptors=XML Mapping Files +PersistenceUnitGeneralComposite_jpaMappingDescriptors_description=Specify the XML mapping files for this persistence unit. PersistenceUnitGeneralComposite_mappedClasses=Managed Classes +PersistenceUnitGeneralComposite_name=Name: PersistenceUnitGeneralComposite_persistenceProvider=Persistence Provider: -PersistenceUnitMappingFilesComposite_description=Specify the XML mapping files for this persistence unit. PersistenceUnitMappingFilesComposite_mappingFileDialog_message=Choose the XML mapping files to be added to the persistence unit. PersistenceUnitMappingFilesComposite_mappingFileDialog_title=JPA XML Mapping File Selection PersistenceUnitMappingFilesComposite_ormNoName=<name not set> + +PersistenceUnitPropertiesComposite_nameColumn=Name +PersistenceUnitPropertiesComposite_properties=Properties +PersistenceUnitPropertiesComposite_properties_description=This table lists all properties that are defined for this persistence unit. +PersistenceUnitPropertiesComposite_valueColumn=Value
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/BaseJpaUiFactory.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/BaseJpaUiFactory.java index f7a96a3e63..21ad37ed84 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/BaseJpaUiFactory.java +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/BaseJpaUiFactory.java @@ -46,6 +46,7 @@ import org.eclipse.jpt.ui.internal.mappings.details.VersionMappingComposite; import org.eclipse.jpt.ui.internal.orm.details.OrmEntityComposite; import org.eclipse.jpt.ui.internal.persistence.details.PersistenceUnitConnectionComposite; import org.eclipse.jpt.ui.internal.persistence.details.PersistenceUnitGeneralComposite; +import org.eclipse.jpt.ui.internal.persistence.details.PersistenceUnitPropertiesComposite; import org.eclipse.jpt.utility.model.value.PropertyValueModel; import org.eclipse.swt.widgets.Composite; @@ -166,6 +167,7 @@ public abstract class BaseJpaUiFactory implements JpaUiFactory pages.add(new PersistenceUnitGeneralComposite(subjectHolder, parent, widgetFactory)); pages.add(new PersistenceUnitConnectionComposite(subjectHolder, parent, widgetFactory)); + pages.add(new PersistenceUnitPropertiesComposite(subjectHolder, parent, widgetFactory)); return pages.listIterator(); } diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/JpaHelpContextIds.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/JpaHelpContextIds.java index 431612e2ba..e132f2fca2 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/JpaHelpContextIds.java +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/JpaHelpContextIds.java @@ -114,6 +114,7 @@ public interface JpaHelpContextIds { public static final String PERSISTENCE_OUTLINE = PREFIX + "persistenceOutline"; //PersistenceUnit - public static final String PERSISTENCE_UNIT_GENERAL = PREFIX + "persistenceUnit_general"; public static final String PERSISTENCE_UNIT_CONNECTION = PREFIX + "persistenceUnit_connection"; + public static final String PERSISTENCE_UNIT_GENERAL = PREFIX + "persistenceUnit_general"; + public static final String PERSISTENCE_UNIT_PROPERTIES = PREFIX + "persistenceUnit_properties"; }
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/persistence/JptUiPersistenceMessages.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/persistence/JptUiPersistenceMessages.java index f83a7c0478..8c4d51cddf 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/persistence/JptUiPersistenceMessages.java +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/persistence/JptUiPersistenceMessages.java @@ -35,12 +35,10 @@ public class JptUiPersistenceMessages public static String PersistenceUnitConnectionComposite_database; public static String PersistenceUnitConnectionComposite_general; - public static String PersistenceUnitConnectionDatabaseComposite_description; public static String PersistenceUnitConnectionDatabaseComposite_jtaDatasourceName; public static String PersistenceUnitConnectionDatabaseComposite_nonJtaDatasourceName; public static String PersistenceUnitConnectionGeneralComposite_default; - public static String PersistenceUnitConnectionGeneralComposite_description; public static String PersistenceUnitConnectionGeneralComposite_jta; public static String PersistenceUnitConnectionGeneralComposite_resource_local; public static String PersistenceUnitConnectionGeneralComposite_transactionType; @@ -48,14 +46,20 @@ public class JptUiPersistenceMessages public static String PersistenceUnitGeneralComposite_general; public static String PersistenceUnitGeneralComposite_javaArchives; public static String PersistenceUnitGeneralComposite_jpaMappingDescriptors; + public static String PersistenceUnitGeneralComposite_jpaMappingDescriptors_description; public static String PersistenceUnitGeneralComposite_mappedClasses; + public static String PersistenceUnitGeneralComposite_name; public static String PersistenceUnitGeneralComposite_persistenceProvider; - public static String PersistenceUnitMappingFilesComposite_description; public static String PersistenceUnitMappingFilesComposite_mappingFileDialog_message; public static String PersistenceUnitMappingFilesComposite_mappingFileDialog_title; public static String PersistenceUnitMappingFilesComposite_ormNoName; + public static String PersistenceUnitPropertiesComposite_nameColumn; + public static String PersistenceUnitPropertiesComposite_properties; + public static String PersistenceUnitPropertiesComposite_properties_description; + public static String PersistenceUnitPropertiesComposite_valueColumn; + static { NLS.initializeMessages("jpt_ui_persistence", JptUiPersistenceMessages.class); } @@ -63,4 +67,4 @@ public class JptUiPersistenceMessages private JptUiPersistenceMessages() { throw new UnsupportedOperationException(); } -} +}
\ No newline at end of file diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/persistence/details/PersistenceUnitConnectionDatabaseComposite.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/persistence/details/PersistenceUnitConnectionDatabaseComposite.java index 7b9d7e35d5..3c3a3aaeb2 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/persistence/details/PersistenceUnitConnectionDatabaseComposite.java +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/persistence/details/PersistenceUnitConnectionDatabaseComposite.java @@ -25,9 +25,6 @@ import org.eclipse.swt.widgets.Text; * Here the layout of this pane: * <pre> * ----------------------------------------------------------------------------- - * | | - * | Description | - * | | * | ------------------------------------------------ | * | JTA Datasource Name: | I | | * | ------------------------------------------------ | @@ -53,7 +50,7 @@ public class PersistenceUnitConnectionDatabaseComposite extends AbstractPane<Per public PersistenceUnitConnectionDatabaseComposite(AbstractPane<PersistenceUnit> subjectHolder, Composite container) { - super(subjectHolder, container, false); + super(subjectHolder, container); } private PropertyValueModel<Boolean> buildJTADatasourceNameBooleanHolder() { @@ -127,12 +124,6 @@ public class PersistenceUnitConnectionDatabaseComposite extends AbstractPane<Per @Override protected void initializeLayout(Composite container) { - // Description - buildMultiLineLabel( - container, - JptUiPersistenceMessages.PersistenceUnitConnectionDatabaseComposite_description - ); - // JTA Datasource Name widgets Text text = buildLabeledText( container, diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/persistence/details/PersistenceUnitConnectionGeneralComposite.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/persistence/details/PersistenceUnitConnectionGeneralComposite.java index 35429879df..4149abc57b 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/persistence/details/PersistenceUnitConnectionGeneralComposite.java +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/persistence/details/PersistenceUnitConnectionGeneralComposite.java @@ -21,16 +21,13 @@ import org.eclipse.swt.widgets.Composite; * Here the layout of this pane: * <pre> * ----------------------------------------------------------------------------- - * | | - * | Description | - * | | * | ------------------------------------------------------ | * | Transaction Type: | |v| | * | ------------------------------------------------------ | * -----------------------------------------------------------------------------</pre> * * @see PersistenceUnit - * @see PersistenceUnitGeneralComposite - The parent container + * @see PersistenceUnitConnectionComposite - The parent container * * @version 2.0 * @since 2.0 @@ -46,7 +43,7 @@ public class PersistenceUnitConnectionGeneralComposite extends AbstractPane<Pers public PersistenceUnitConnectionGeneralComposite(AbstractPane<PersistenceUnit> subjectHolder, Composite container) { - super(subjectHolder, container, false); + super(subjectHolder, container); } private EnumFormComboViewer<PersistenceUnit, PersistenceUnitTransactionType> buildTransactionTypeCombo(Composite container) { @@ -97,12 +94,6 @@ public class PersistenceUnitConnectionGeneralComposite extends AbstractPane<Pers @Override protected void initializeLayout(Composite container) { - // Description - buildMultiLineLabel( - container, - JptUiPersistenceMessages.PersistenceUnitConnectionGeneralComposite_description - ); - // Transaction Type widgets buildLabeledComposite( container, diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/persistence/details/PersistenceUnitGeneralComposite.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/persistence/details/PersistenceUnitGeneralComposite.java index 4899f35efb..dd97b70f6d 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/persistence/details/PersistenceUnitGeneralComposite.java +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/persistence/details/PersistenceUnitGeneralComposite.java @@ -30,29 +30,40 @@ import org.eclipse.swt.widgets.Composite; * ----------------------------------------------------------------------------- * | | * | - General --------------------------------------------------------------- | - * | --------------------------------------------------- | - * | Persistence Provider: | |v| | - * | --------------------------------------------------- | + * | ------------------------------------------------- | + * | Name: | I | | + * | ------------------------------------------------- | + * | ------------------------------------------------- | + * | Persistence Provider: | |v| | + * | ------------------------------------------------- | * | | - * | - JPA Mapping Descriptors ----------------------------------------------- | - * | ------------------------------------------------------------------------- | - * | | | | - * | | PersistenceUnitJPAMappingDescriptorsComposite | | - * | | | | - * | ------------------------------------------------------------------------- | * | | * | - Mapped Classes -------------------------------------------------------- | - * | ------------------------------------------------------------------------- | - * | | | | - * | | PersistenceUnitMappedClassesComposite | | - * | | | | - * | ------------------------------------------------------------------------- | + * | | + * | Description | + * | | + * | ----------------------------------------------------------------------- | + * | | | | + * | | PersistenceUnitMappedClassesComposite | | + * | | | | + * | ----------------------------------------------------------------------- | + * | | + * | | + * | - XML Mapping Files ----------------------------------------------------- | + * | | + * | Description | + * | | + * | ----------------------------------------------------------------------- | + * | | | | + * | | PersistenceUnitMappingFilesComposite | | + * | | | | + * | ----------------------------------------------------------------------- | * -----------------------------------------------------------------------------</pre> * * @see PersistenceUnit - * @see PersistenceUnitJPAMappingDescriptorsComposite - * @see PersistenceUnitJavaArchivesComposite + * @see PersistenceUnitJarFilesComposite * @see PersistenceUnitMappedClassesComposite + * @see PersistenceUnitMappingFilesComposite * * @version 2.0 * @since 2.0 @@ -122,6 +133,20 @@ public class PersistenceUnitGeneralComposite extends AbstractFormPane<Persistenc }; } + private WritablePropertyValueModel<String> buildPersistenceUnitNameHolder() { + return new PropertyAspectAdapter<PersistenceUnit, String>(getSubjectHolder(), PersistenceUnit.NAME_PROPERTY) { + @Override + protected String buildValue_() { + return subject.getName(); + } + + @Override + protected void setValue_(String value) { + subject.setName(value); + } + }; + } + /* * (non-Javadoc) */ @@ -129,6 +154,20 @@ public class PersistenceUnitGeneralComposite extends AbstractFormPane<Persistenc return JpaHelpContextIds.PERSISTENCE_UNIT_GENERAL; } + /* + * (non-Javadoc) + */ + public Image getPageImage() { + return null; + } + + /* + * (non-Javadoc) + */ + public String getPageText() { + return JptUiPersistenceMessages.PersistenceUnitGeneralComposite_general; + } + private void initializeGeneralPane(Composite container) { container = buildSection( @@ -136,6 +175,13 @@ public class PersistenceUnitGeneralComposite extends AbstractFormPane<Persistenc JptUiPersistenceMessages.PersistenceUnitGeneralComposite_general ); + // Name widgets + buildLabeledText( + container, + JptUiPersistenceMessages.PersistenceUnitGeneralComposite_name, + buildPersistenceUnitNameHolder() + ); + // Persistence Provider widgets buildLabeledText( container, @@ -148,7 +194,8 @@ public class PersistenceUnitGeneralComposite extends AbstractFormPane<Persistenc container = buildSection( container, - JptUiPersistenceMessages.PersistenceUnitGeneralComposite_jpaMappingDescriptors + JptUiPersistenceMessages.PersistenceUnitGeneralComposite_jpaMappingDescriptors, + JptUiPersistenceMessages.PersistenceUnitGeneralComposite_jpaMappingDescriptors_description ); updateGridData(container); @@ -167,7 +214,7 @@ public class PersistenceUnitGeneralComposite extends AbstractFormPane<Persistenc initializeMappedClassesPane(container); initializeJPAMappingDescriptorsPane(container); // initializeJavaArchivesPane(container); - + } private void initializeMappedClassesPane(Composite container) { @@ -183,20 +230,6 @@ public class PersistenceUnitGeneralComposite extends AbstractFormPane<Persistenc new PersistenceUnitClassesComposite(this, container); } - /* - * (non-Javadoc) - */ - public Image getPageImage() { - return null; - } - - /* - * (non-Javadoc) - */ - public String getPageText() { - return JptUiPersistenceMessages.PersistenceUnitGeneralComposite_general; - } - private void updateGridData(Composite container) { GridData gridData = new GridData(); diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/persistence/details/PersistenceUnitMappingFilesComposite.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/persistence/details/PersistenceUnitMappingFilesComposite.java index 65f23300b3..2d5b0b1ec5 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/persistence/details/PersistenceUnitMappingFilesComposite.java +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/persistence/details/PersistenceUnitMappingFilesComposite.java @@ -66,9 +66,6 @@ import org.xml.sax.helpers.DefaultHandler; * Here the layout of this pane: * <pre> * ----------------------------------------------------------------------------- - * | | - * | Description | - * | | * | ------------------------------------------------------------------------- | * | | | | * | | AddRemoveListPane | | @@ -257,12 +254,6 @@ public class PersistenceUnitMappingFilesComposite extends AbstractPane<Persisten @Override protected void initializeLayout(Composite container) { - // Description - buildMultiLineLabel( - container, - JptUiPersistenceMessages.PersistenceUnitMappingFilesComposite_description - ); - // List pane new AddRemoveListPane<PersistenceUnit>( this, diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/persistence/details/PersistenceUnitPropertiesComposite.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/persistence/details/PersistenceUnitPropertiesComposite.java new file mode 100644 index 0000000000..7c344a0573 --- /dev/null +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/persistence/details/PersistenceUnitPropertiesComposite.java @@ -0,0 +1,356 @@ +/******************************************************************************* + * 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.persistence.details; + +import java.util.ListIterator; +import org.eclipse.jface.viewers.CellEditor; +import org.eclipse.jface.viewers.IBaseLabelProvider; +import org.eclipse.jface.viewers.ICellModifier; +import org.eclipse.jface.viewers.ITableLabelProvider; +import org.eclipse.jface.viewers.LabelProvider; +import org.eclipse.jface.viewers.TableViewer; +import org.eclipse.jface.viewers.TextCellEditor; +import org.eclipse.jpt.core.context.persistence.PersistenceUnit; +import org.eclipse.jpt.core.context.persistence.Property; +import org.eclipse.jpt.ui.WidgetFactory; +import org.eclipse.jpt.ui.details.JpaPageComposite; +import org.eclipse.jpt.ui.internal.JpaHelpContextIds; +import org.eclipse.jpt.ui.internal.persistence.JptUiPersistenceMessages; +import org.eclipse.jpt.ui.internal.swt.ColumnAdapter; +import org.eclipse.jpt.ui.internal.widgets.AbstractPane; +import org.eclipse.jpt.ui.internal.widgets.AddRemoveTablePane; +import org.eclipse.jpt.utility.internal.model.value.ListAspectAdapter; +import org.eclipse.jpt.utility.internal.model.value.PropertyAspectAdapter; +import org.eclipse.jpt.utility.internal.model.value.SimplePropertyValueModel; +import org.eclipse.jpt.utility.internal.model.value.swing.ObjectListSelectionModel; +import org.eclipse.jpt.utility.model.value.ListValueModel; +import org.eclipse.jpt.utility.model.value.PropertyValueModel; +import org.eclipse.jpt.utility.model.value.WritablePropertyValueModel; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Table; +import org.eclipse.swt.widgets.TableItem; + +/** + * Here the layout of this pane: + * <pre> + * ----------------------------------------------------------------------------- + * | - Properties ------------------------------------------------------------ | + * | | + * | Description | + * | | + * | ----------------------------------------------------------------------- | + * | | | | + * | | AddRemoveTablePane | | + * | | | | + * | ----------------------------------------------------------------------- | + * -----------------------------------------------------------------------------</pre> + * + * @see PersistenceUnit + * @see BaseJpaUiFactory - The invoker + * @see AddRemoveTablePane + * + * @version 2.0 + * @since 2.0 + */ +@SuppressWarnings("nls") +public class PersistenceUnitPropertiesComposite extends AbstractPane<PersistenceUnit> + implements JpaPageComposite<PersistenceUnit> +{ + private WritablePropertyValueModel<Property> propertyHolder; + + /** + * Creates a new <code>PersistenceUnitPropertiesComposite</code>. + * + * @param subjectHolder The holder of this pane's subject + * @param parent The parent container + * @param widgetFactory The factory used to create various common widgets + */ + public PersistenceUnitPropertiesComposite(PropertyValueModel<PersistenceUnit> subjectHolder, + Composite container, + WidgetFactory widgetFactory) { + + super(subjectHolder, container, widgetFactory); + } + + private ListValueModel<Property> buildPropertiesListHolder() { + return new ListAspectAdapter<PersistenceUnit, Property>(getSubjectHolder(), PersistenceUnit.PROPERTIES_LIST) { + @Override + protected ListIterator<Property> listIterator_() { + return subject.properties(); + } + + @Override + protected int size_() { + return subject.propertiesSize(); + } + }; + } + + private ITableLabelProvider buildPropertyLabelProvider() { + return new TableLabelProvider(); + } + + private AddRemoveTablePane.Adapter buildTableAdapter() { + return new AddRemoveTablePane.AbstractAdapter() { + public void addNewItem(ObjectListSelectionModel listSelectionModel) { + Property property = subject().addProperty(); + propertyHolder.setValue(property); + } + + public void removeSelectedItems(ObjectListSelectionModel listSelectionModel) { + for (Object item : listSelectionModel.selectedValues()) { + subject().removeProperty((Property) item); + } + } + }; + } + + /* + * (non-Javadoc) + */ + public String getHelpID() { + return JpaHelpContextIds.PERSISTENCE_UNIT_PROPERTIES; + } + + /* + * (non-Javadoc) + */ + public Image getPageImage() { + return null; + } + + /* + * (non-Javadoc) + */ + public String getPageText() { + return JptUiPersistenceMessages.PersistenceUnitPropertiesComposite_properties; + } + + /* + * (non-Javadoc) + */ + @Override + protected void initialize() { + super.initialize(); + propertyHolder = new SimplePropertyValueModel<Property>(); + } + + /* + * (non-Javadoc) + */ + @Override + protected void initializeLayout(Composite container) { + + buildLabel( + container, + JptUiPersistenceMessages.PersistenceUnitPropertiesComposite_properties_description + ); + + new TablePane(container); + } + + private static class PropertyColumnAdapter implements ColumnAdapter<Property> { + + public static final int COLUMN_COUNT = 2; + public static final int NAME_COLUMN_INDEX = 0; + public static final int VALUE_COLUMN_INDEX = 1; + + private WritablePropertyValueModel<String> buildNameHolder(Property subject) { + return new PropertyAspectAdapter<Property, String>(Property.NAME_PROPERTY, subject) { + @Override + protected String buildValue_() { + return subject.getName(); + } + + @Override + protected void setValue_(String value) { + subject.setName(value); + } + }; + } + + private WritablePropertyValueModel<String> buildValueHolder(Property subject) { + return new PropertyAspectAdapter<Property, String>(Property.VALUE_PROPERTY, subject) { + @Override + protected String buildValue_() { + return subject.getValue(); + } + + @Override + protected void setValue_(String value) { + subject.setValue(value); + } + }; + } + + public WritablePropertyValueModel<?>[] cellModels(Property subject) { + WritablePropertyValueModel<?>[] holders = new WritablePropertyValueModel<?>[2]; + holders[0] = buildNameHolder(subject); + holders[1] = buildValueHolder(subject); + return holders; + } + + public int columnCount() { + return COLUMN_COUNT; + } + + public String columnName(int columnIndex) { + + switch (columnIndex) { + case PropertyColumnAdapter.NAME_COLUMN_INDEX: { + return JptUiPersistenceMessages.PersistenceUnitPropertiesComposite_nameColumn; + } + + case PropertyColumnAdapter.VALUE_COLUMN_INDEX: { + return JptUiPersistenceMessages.PersistenceUnitPropertiesComposite_valueColumn; + } + + default: { + return null; + } + } + } + } + + private class TableLabelProvider extends LabelProvider + implements ITableLabelProvider { + + public Image getColumnImage(Object element, int columnIndex) { + return null; + } + + public String getColumnText(Object element, int columnIndex) { + + Property property = (Property) element; + String value = null; + + switch (columnIndex) { + case PropertyColumnAdapter.NAME_COLUMN_INDEX: { + value = property.getName(); + break; + } + + case PropertyColumnAdapter.VALUE_COLUMN_INDEX: { + value = property.getValue(); + break; + } + } + + if (value == null) { + value = ""; + } + + return value; + } + } + + private class TablePane extends AddRemoveTablePane<PersistenceUnit> { + + private TablePane(Composite parent) { + super(PersistenceUnitPropertiesComposite.this, + parent, + buildTableAdapter(), + buildPropertiesListHolder(), + propertyHolder, + buildPropertyLabelProvider()); + } + + private CellEditor[] buildCellEditors(Table table) { + return new CellEditor[] { + new TextCellEditor(table), + new TextCellEditor(table) + }; + } + + private ICellModifier buildCellModifier() { + return new ICellModifier() { + + public boolean canModify(Object element, String property) { + return true; + } + + public Object getValue(Object element, String property) { + Property propertyModel = (Property) element; + String value = null; + + if (property == Property.NAME_PROPERTY) { + value = propertyModel.getName(); + } + else if (property == Property.VALUE_PROPERTY) { + value = propertyModel.getValue(); + } + + if (value == null) { + value = ""; + } + + return value; + } + + public void modify(Object element, String property, Object value) { + Property propertyModel; + + if (element instanceof TableItem) { + TableItem tableItem = (TableItem) element; + propertyModel = (Property) tableItem.getData(); + } + else { + propertyModel = (Property) element; + } + + if (property == Property.NAME_PROPERTY) { + propertyModel.setName(value.toString()); + } + else if (property == Property.VALUE_PROPERTY) { + propertyModel.setValue(value.toString()); + } + } + }; + } + + @Override + protected ColumnAdapter<?> buildColumnAdapter() { + return new PropertyColumnAdapter(); + } + + private String[] buildColumnProperties() { + return new String[] { + Property.NAME_PROPERTY, + Property.VALUE_PROPERTY + }; + } + + @Override + protected void initializeMainComposite(Composite container, + Adapter adapter, + ListValueModel<?> listHolder, + WritablePropertyValueModel<?> selectedItemHolder, + IBaseLabelProvider labelProvider, + String helpId) { + + super.initializeMainComposite( + container, + adapter, + listHolder, + selectedItemHolder, + labelProvider, + helpId + ); + + Table table = getTable(); + + TableViewer tableViewer = new TableViewer(table); + tableViewer.setCellEditors(buildCellEditors(table)); + tableViewer.setCellModifier(buildCellModifier()); + tableViewer.setColumnProperties(buildColumnProperties()); + } + } +} diff --git a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/widgets/AbstractPane.java b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/widgets/AbstractPane.java index 9fab13b5a1..01db99331a 100644 --- a/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/widgets/AbstractPane.java +++ b/jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/widgets/AbstractPane.java @@ -3026,12 +3026,62 @@ public abstract class AbstractPane<T extends Model> String sectionText, int type) { - Section section = this.widgetFactory.createSection(container, type); + return this.buildSection(container, sectionText, null, type); + } + + /** + * Creates a new <code>Section</code>. A sub-pane is automatically added as + * its client and is the returned <code>Composite</code>. + * + * @param container The container of the new widget + * @param sectionText The text of the new section + * @param description The section's description + * @return The <code>Section</code>'s sub-pane + * + * @category Layout + */ + protected final Composite buildSection(Composite container, + String sectionText, + String description) { + + return this.buildSection( + container, + sectionText, + description, + ExpandableComposite.TITLE_BAR + ); + } + + /** + * Creates a new <code>Section</code>. A sub-pane is automatically added as + * its client and is the returned <code>Composite</code>. + * + * @param container The container of the new widget + * @param sectionText The text of the new section + * @param description The section's description or <code>null</code> if none + * was provider + * @param type The type of section to create + * @param expandedStateHolder The holder of the boolean that will dictate + * when to expand or collapse the section + * @return The <code>Section</code>'s sub-pane + * + * @category Layout + */ + private Composite buildSection(Composite container, + String sectionText, + String description, + int type) { + + Section section = this.widgetFactory.createSection(container, type | ((description != null) ? Section.DESCRIPTION : SWT.NULL)); section.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); section.setText(sectionText); section.marginWidth = 0; section.marginHeight = 0; + if (description != null) { + section.setDescription(description); + } + Composite subPane = this.buildSubPane(section); section.setClient(subPane); |