Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkmoore2008-04-08 13:54:38 +0000
committerkmoore2008-04-08 13:54:38 +0000
commit7c26cf8352d0480ca293aa6cdd6c29fce8daddde (patch)
treec18e8a14ef76fb5f0ff46d30e63dad492cff431c /jpa/plugins
parent3054c093f34c31240cbed35939cd3c914e9cc842 (diff)
downloadwebtools.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')
-rw-r--r--jpa/plugins/org.eclipse.jpt.ui/property_files/jpt_ui_persistence.properties10
-rw-r--r--jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/BaseJpaUiFactory.java2
-rw-r--r--jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/JpaHelpContextIds.java3
-rw-r--r--jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/persistence/JptUiPersistenceMessages.java12
-rw-r--r--jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/persistence/details/PersistenceUnitConnectionDatabaseComposite.java11
-rw-r--r--jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/persistence/details/PersistenceUnitConnectionGeneralComposite.java13
-rw-r--r--jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/persistence/details/PersistenceUnitGeneralComposite.java97
-rw-r--r--jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/persistence/details/PersistenceUnitMappingFilesComposite.java9
-rw-r--r--jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/persistence/details/PersistenceUnitPropertiesComposite.java356
-rw-r--r--jpa/plugins/org.eclipse.jpt.ui/src/org/eclipse/jpt/ui/internal/widgets/AbstractPane.java52
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);

Back to the top