Author: dgeraskov
Date: 2009-07-23 10:04:34 -0400 (Thu, 23 Jul 2009)
New Revision: 16748
Added:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/GenericGeneratorsComposite.java
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/widgets/
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/widgets/EnterNameDialog.java
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/widgets/NameStateObject.java
Removed:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/GenericGeneratorComposite.java
Modified:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/HibernateGeneratorsComposite.java
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/HibernateUIMappingMessages.java
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/ParametersComposite.java
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/messages.properties
Log:
https://jira.jboss.org/jira/browse/JBIDE-4649
Deleted:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/GenericGeneratorComposite.java
===================================================================
---
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/GenericGeneratorComposite.java 2009-07-23
13:40:36 UTC (rev 16747)
+++
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/GenericGeneratorComposite.java 2009-07-23
14:04:34 UTC (rev 16748)
@@ -1,97 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007-2009 Red Hat, Inc.
- * Distributed under license by Red Hat, Inc. All rights reserved.
- * This program is 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
- *
- * Contributor:
- * Red Hat, Inc. - initial API and implementation
- ******************************************************************************/
-package org.jboss.tools.hibernate.jpt.ui.internal.mapping.details;
-
-import org.eclipse.jpt.core.context.GeneratorHolder;
-import org.eclipse.jpt.ui.internal.mappings.details.GeneratorComposite;
-import org.eclipse.jpt.ui.internal.widgets.Pane;
-import org.eclipse.jpt.utility.internal.StringConverter;
-import org.eclipse.jpt.utility.internal.model.value.PropertyAspectAdapter;
-import org.eclipse.jpt.utility.internal.model.value.SimpleListValueModel;
-import org.eclipse.jpt.utility.model.value.WritablePropertyValueModel;
-import org.eclipse.swt.widgets.Composite;
-import org.jboss.tools.hibernate.jpt.core.internal.context.java.GenericGenerator;
-import org.jboss.tools.hibernate.jpt.core.internal.context.java.GenericGeneratorHolder;
-import
org.jboss.tools.hibernate.jpt.core.internal.context.java.JavaGenericGeneratorImpl;
-
-/**
- * @author Dmitry Geraskov
- *
- */
-public class GenericGeneratorComposite extends GeneratorComposite<GenericGenerator>
{
-
- public GenericGeneratorComposite(Pane<? extends GeneratorHolder> parentPane,
Composite parent) {
- super(parentPane, parent);
- }
-
- @Override
- protected GenericGenerator buildGenerator(GeneratorHolder subject) {
- return ((GenericGeneratorHolder)subject).addGenericGenerator();
- }
-
- protected GenericGenerator buildGenerator() {
- return this.buildGenerator(this.getSubject());
- }
-
- @Override
- protected GenericGenerator getGenerator(GeneratorHolder subject) {
- return ((GenericGeneratorHolder)subject).getGenericGenerator();
- }
-
- @Override
- protected String getPropertyName() {
- return GenericGeneratorHolder.GENERIC_GENERATOR_PROPERTY;
- }
-
- @Override
- protected void initializeLayout(Composite container) {
-
- // Name widgets
- addLabeledText(
- container,
- HibernateUIMappingMessages.GenericGeneratorComposite_name,
- buildGeneratorNameHolder(),
- null//TODO add help
- );
-
- addLabeledEditableCombo(
- container,
- HibernateUIMappingMessages.GenericGeneratorComposite_strategy,
- new SimpleListValueModel<String>(JavaGenericGeneratorImpl.generatorClasses),
- buildStrategyHolder(),
- StringConverter.Default.<String>instance(),
- null);//TODO add help
-
- new ParametersComposite(this, container);
- }
-
- protected WritablePropertyValueModel<String> buildStrategyHolder() {
- return new PropertyAspectAdapter<GeneratorHolder, String>(getSubjectHolder(),
- GenericGenerator.GENERIC_STRATEGY_PROPERTY) {
- @Override
- protected String buildValue_() {
- return ((GenericGeneratorHolder)subject).getGenericGenerator() == null ?
- null : ((GenericGeneratorHolder)subject).getGenericGenerator().getStrategy();
- }
-
- @Override
- protected void setValue_(String value) {
- if ("".equals(value))value = null; //$NON-NLS-1$
- GenericGenerator generator =
((GenericGeneratorHolder)subject).getGenericGenerator();
- if (generator == null){
- generator = ((GenericGeneratorHolder)subject).addGenericGenerator();
- }
- generator.setStrategy(value);
- }
- };
- }
-
-}
Added:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/GenericGeneratorsComposite.java
===================================================================
---
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/GenericGeneratorsComposite.java
(rev 0)
+++
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/GenericGeneratorsComposite.java 2009-07-23
14:04:34 UTC (rev 16748)
@@ -0,0 +1,327 @@
+/*******************************************************************************
+ * Copyright (c) 2007-2009 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is 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
+ *
+ * Contributor:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.hibernate.jpt.ui.internal.mapping.details;
+
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.ListIterator;
+import java.util.Set;
+
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.window.Window;
+import org.eclipse.jpt.core.context.Generator;
+import org.eclipse.jpt.core.context.IdMapping;
+import org.eclipse.jpt.core.context.SequenceGenerator;
+import org.eclipse.jpt.ui.internal.mappings.db.SequenceCombo;
+import org.eclipse.jpt.ui.internal.mappings.details.GenerationComposite;
+import org.eclipse.jpt.ui.internal.util.ControlEnabler;
+import org.eclipse.jpt.ui.internal.widgets.AddRemoveListPane;
+import org.eclipse.jpt.ui.internal.widgets.Pane;
+import org.eclipse.jpt.ui.internal.widgets.AddRemovePane.Adapter;
+import org.eclipse.jpt.utility.internal.CollectionTools;
+import org.eclipse.jpt.utility.internal.StringConverter;
+import org.eclipse.jpt.utility.internal.model.value.ItemPropertyListValueModelAdapter;
+import org.eclipse.jpt.utility.internal.model.value.ListAspectAdapter;
+import org.eclipse.jpt.utility.internal.model.value.PropertyAspectAdapter;
+import org.eclipse.jpt.utility.internal.model.value.SimpleListValueModel;
+import org.eclipse.jpt.utility.internal.model.value.SimplePropertyValueModel;
+import org.eclipse.jpt.utility.internal.model.value.TransformationPropertyValueModel;
+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.osgi.util.NLS;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.jboss.tools.hibernate.jpt.core.internal.context.java.GenericGenerator;
+import org.jboss.tools.hibernate.jpt.core.internal.context.java.GenericGeneratorHolder;
+import
org.jboss.tools.hibernate.jpt.core.internal.context.java.JavaGenericGeneratorImpl;
+import org.jboss.tools.hibernate.jpt.ui.internal.widgets.EnterNameDialog;
+
+/**
+ * @author Dmitry Geraskov
+ *
+ *
+ * Here the layout of this pane:
+ * <pre>
+ * -----------------------------------------------------------------------------
+ * | ----------------------------------------------------- |
+ * | Name: | I | |
+ * | ----------------------------------------------------- |
+ * | ----------------------------------------------------- |
+ * | Sequence : | SequenceCombo | |
+ * | ----------------------------------------------------- |
+ * | - Parameters ----------------------------------------------------------- |
+ * | | --------------------------------------------------------------------- | |
+ * | | | | | |
+ * | | | ParametersComposite | | |
+ * | | | | | |
+ * | | --------------------------------------------------------------------- | |
+ * | ------------------------------------------------------------------------- |
+ *
-----------------------------------------------------------------------------</pre>
+ *
+ * @see IdMapping
+ * @see SequenceGenerator
+ * @see GenerationComposite - The parent container
+ * @see SequenceCombo
+ *
+ * @version 2.0
+ * @since 1.0
+ */
+public class GenericGeneratorsComposite extends Pane<GenericGeneratorHolder> {
+
+ /**
+ * Shows is Member can contains only 1 @GenericGenerator or not.
+ */
+ private boolean singleGenerator;
+
+ private AddRemoveListPane<GenericGeneratorHolder> listPane;
+ private WritablePropertyValueModel<GenericGenerator> generatorHolder;
+
+ public GenericGeneratorsComposite(Pane<? extends GenericGeneratorHolder>
parentPane, Composite parent, boolean singleGenerator) {
+ super(parentPane, parent, false);
+ this.singleGenerator = singleGenerator;
+ }
+
+ private void addGenericGenerator() {
+ Set<String> generatorNames = new HashSet<String>();
+ for (Iterator<Generator> generators =
this.getSubject().getPersistenceUnit().generators(); generators.hasNext(); ) {
+ generatorNames.add(generators.next().getName());
+ }
+ EnterNameDialog dialog = new EnterNameDialog(getControl().getShell(),
+ HibernateUIMappingMessages.GenericGeneratorsComposite_addGeneratorNameDescription,
+ null,
+ generatorNames);
+ if (dialog.open() != Window.OK) {
+ return;
+ }
+ String name = dialog.getName();
+ GenericGenerator generator =
getSubject().addGenericGenerator(getSubject().genericGeneratorsSize());
+ generator.setName(name);
+ }
+
+ private ListValueModel<GenericGenerator> buildDisplayableGeneratorsListHolder() {
+ return new ItemPropertyListValueModelAdapter<GenericGenerator>(
+ buildGeneratorsListHolder(),
+ GenericGenerator.NAME_PROPERTY
+ );
+ }
+
+ private ListValueModel<GenericGenerator> buildGeneratorsListHolder() {
+ return new ListAspectAdapter<GenericGeneratorHolder, GenericGenerator>(
+ getSubjectHolder(),
+ GenericGeneratorHolder.GENERIC_GENERATORS_LIST)
+ {
+ @Override
+ protected ListIterator<GenericGenerator> listIterator_() {
+ return this.subject.genericGenerators();
+ }
+
+ @Override
+ protected int size_() {
+ return this.subject.genericGeneratorsSize();
+ }
+ };
+ }
+
+ private AddRemoveListPane<GenericGeneratorHolder> addListPane(Composite container)
{
+
+ return new AddRemoveListPane<GenericGeneratorHolder>(
+ this,
+ container,
+ buildGenericGeneratorsAdapter(),
+ buildDisplayableGeneratorsListHolder(),
+ this.generatorHolder,
+ buildGeneratorsListLabelProvider(),
+ null//TODO help
+ );
+ }
+
+
+ private ListValueModel<GenericGenerator> buildGenericGeneratorsListHolder() {
+ return new ListAspectAdapter<GenericGeneratorHolder, GenericGenerator>(
+ getSubjectHolder(),
+ GenericGeneratorHolder.GENERIC_GENERATORS_LIST)
+ {
+ @Override
+ protected ListIterator<GenericGenerator> listIterator_() {
+ return this.subject.genericGenerators();
+ }
+
+ @Override
+ protected int size_() {
+ return this.subject.genericGeneratorsSize();
+ }
+ };
+ }
+
+ private Adapter buildGenericGeneratorsAdapter() {
+
+ return new AddRemoveListPane.AbstractAdapter() {
+
+ public void addNewItem(ObjectListSelectionModel listSelectionModel) {
+ addGenericGenerator();
+ }
+
+ public void removeSelectedItems(ObjectListSelectionModel listSelectionModel) {
+ for (Object item : listSelectionModel.selectedValues()) {
+ getSubject().removeGenericGenerator((GenericGenerator) item);
+ }
+ }
+ };
+ }
+
+
+ private ILabelProvider buildGeneratorsListLabelProvider() {
+ return new LabelProvider() {
+ @Override
+ public String getText(Object element) {
+ GenericGenerator genericGenerator = (GenericGenerator) element;
+ String name = genericGenerator.getName();
+
+ if (name == null) {
+ int index = CollectionTools.indexOf(getSubject().genericGenerators(),
genericGenerator);
+ name =
NLS.bind(HibernateUIMappingMessages.GenericGeneratorsComposite_generatorNullName, index);
+ }
+
+ return name;
+ }
+ };
+ }
+
+ private WritablePropertyValueModel<GenericGenerator> buildGenericGeneratorHolder()
{
+ return new SimplePropertyValueModel<GenericGenerator>();
+ }
+
+ @Override
+ public void enableWidgets(boolean enabled) {
+ super.enableWidgets(enabled);
+ this.listPane.enableWidgets(enabled);
+ }
+
+ @Override
+ protected void initialize() {
+ super.initialize();
+ this.generatorHolder = buildGenericGeneratorHolder();
+ }
+
+ @Override
+ protected void initializeLayout(Composite container) {
+
+ if (singleGenerator){
+ // Name widgets
+ addLabeledText(
+ container,
+ HibernateUIMappingMessages.GenericGeneratorComposite_name,
+ buildGeneratorNameHolder(),
+ null//TODO add help
+ );
+ } else {
+ // List pane
+ this.listPane = addListPane(container);
+ }
+
+ Combo c = addLabeledEditableCombo(
+ container,
+ HibernateUIMappingMessages.GenericGeneratorComposite_strategy,
+ new SimpleListValueModel<String>(JavaGenericGeneratorImpl.generatorClasses),
+ buildStrategyHolder(),
+ StringConverter.Default.<String>instance(),
+ null);//TODO add help
+ new ControlEnabler(buildControlEnabler(), c);
+
+ new ParametersComposite(this, container, generatorHolder);
+
+
+ }
+
+ private PropertyValueModel<Boolean> buildControlEnabler() {
+ return new TransformationPropertyValueModel<GenericGenerator,
Boolean>(generatorHolder){
+ public Boolean transform(GenericGenerator generator) {
+ return generator != null;
+ }
+ };
+ }
+
+ protected final WritablePropertyValueModel<String> buildGeneratorNameHolder() {
+ return new PropertyAspectAdapter<GenericGenerator, String>(this.generatorHolder,
GenericGenerator.NAME_PROPERTY) {
+ @Override
+ protected String buildValue_() {
+ return subject == null ? null : subject.getName();
+ }
+
+ @Override
+ public void setValue(String value) {
+ if (subject != null) {
+ setValue_(value);
+ return;
+ }
+
+ if ("".equals(value)){ //$NON-NLS-1$
+ return;
+ }
+
+ GenericGenerator generator =
+ (getSubject().genericGeneratorsSize() == 0) ? getSubject().addGenericGenerator(0)
+ : getSubject().genericGenerators().next();
+
+ generator.setName(value);
+ }
+
+ @Override
+ protected void setValue_(String value) {
+ if ("".equals(value)) {//$NON-NLS-1$
+ value = null;
+ }
+ subject.setName(value);
+ }
+ };
+ }
+
+ protected WritablePropertyValueModel<String> buildStrategyHolder() {
+ return new PropertyAspectAdapter<GenericGenerator, String>(this.generatorHolder,
+ GenericGenerator.GENERIC_STRATEGY_PROPERTY) {
+ @Override
+ protected String buildValue_() {
+ return subject == null ? null : subject.getStrategy();
+ }
+
+ @Override
+ public void setValue(String value) {
+ if (subject != null) {
+ setValue_(value);
+ return;
+ }
+
+ if ("".equals(value)){ //$NON-NLS-1$
+ return;
+ }
+
+ GenericGenerator generator =
+ (getSubject().genericGeneratorsSize() == 0) ? getSubject().addGenericGenerator(0)
+ : getSubject().genericGenerators().next();
+
+ generator.setStrategy(value);
+ }
+
+ @Override
+ protected void setValue_(String value) {
+ if ("".equals(value)) {//$NON-NLS-1$
+ value = null;
+ }
+ subject.setStrategy(value);
+ }
+ };
+ }
+
+
+}
Property changes on:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/GenericGeneratorsComposite.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Name: svn:keywords
+ Author Id Revision Date
Name: svn:eol-style
+ native
Modified:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/HibernateGeneratorsComposite.java
===================================================================
---
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/HibernateGeneratorsComposite.java 2009-07-23
13:40:36 UTC (rev 16747)
+++
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/HibernateGeneratorsComposite.java 2009-07-23
14:04:34 UTC (rev 16748)
@@ -18,7 +18,9 @@
import org.eclipse.jpt.utility.model.value.WritablePropertyValueModel;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
+import org.jboss.tools.hibernate.jpt.core.internal.context.java.GenericGenerator;
import org.jboss.tools.hibernate.jpt.core.internal.context.java.GenericGeneratorHolder;
+import org.jboss.tools.hibernate.jpt.core.internal.context.java.HibernateJavaIdMapping;
/**
* @author Dmitry Geraskov
@@ -45,6 +47,7 @@
initializeGenericGeneratorPane(container);
}
+ @SuppressWarnings("unchecked")
protected void initializeGenericGeneratorPane(Composite container) {
// Sequence Generator sub-section
@@ -62,29 +65,35 @@
null//TODO add help
);
- // Sequence Generator pane
- new GenericGeneratorComposite(
- this,
- addSubPane(container, 0, genericGeneratorCheckBox.getBorderWidth() + 16)
+ // Generic Generator pane
+ new GenericGeneratorsComposite(
+ (Pane<? extends GenericGeneratorHolder>) this,
+ addSubPane(container, 0, genericGeneratorCheckBox.getBorderWidth() + 16),
+ (getSubject() instanceof HibernateJavaIdMapping)
);
}
+
+ protected GenericGenerator getGenerator(GeneratorHolder subject) {
+ return (((GenericGeneratorHolder)subject).genericGeneratorsSize() == 0) ? null
+ : ((GenericGeneratorHolder)subject).genericGenerators().next();
+ }
private WritablePropertyValueModel<Boolean> buildGenericGeneratorBooleanHolder()
{
- return new PropertyAspectAdapter<GeneratorHolder, Boolean>(getSubjectHolder(),
GenericGeneratorHolder.GENERIC_GENERATOR_PROPERTY) {
+ return new PropertyAspectAdapter<GeneratorHolder, Boolean>(getSubjectHolder(),
GenericGeneratorHolder.GENERIC_GENERATORS_LIST) {
+
@Override
protected Boolean buildValue_() {
- return ((GenericGeneratorHolder)subject).getGenericGenerator() != null;
+ return getGenerator(subject) != null;
}
@Override
protected void setValue_(Boolean value) {
-
- if (value && (((GenericGeneratorHolder)subject).getGenericGenerator() ==
null)) {
- ((GenericGeneratorHolder)subject).addGenericGenerator();
+ if (value && (getGenerator(subject) == null)) {
+ ((GenericGeneratorHolder)subject).addGenericGenerator(0);
}
- else if (!value && (((GenericGeneratorHolder)subject).getGenericGenerator()
!= null)) {
- ((GenericGeneratorHolder)subject).removeGenericGenerator();
+ else if (!value && (getGenerator(subject) != null)) {
+ ((GenericGeneratorHolder)subject).removeGenericGenerator(0);
}
}
};
Modified:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/HibernateUIMappingMessages.java
===================================================================
---
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/HibernateUIMappingMessages.java 2009-07-23
13:40:36 UTC (rev 16747)
+++
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/HibernateUIMappingMessages.java 2009-07-23
14:04:34 UTC (rev 16748)
@@ -19,7 +19,7 @@
public class HibernateUIMappingMessages extends NLS {
private static final String BUNDLE_NAME =
"org.jboss.tools.hibernate.jpt.ui.internal.mapping.details.messages";
//$NON-NLS-1$
-
+
public static String GenericGeneratorComposite_name;
public static String GenericGeneratorComposite_strategy;
public static String HibernateGeneratorsComposite_CheckBoxLabel;
@@ -35,7 +35,12 @@
public static String NamedQueryPropertyComposite_timeout;
public static String HibernateAddQueryDialog_hibernateNamedQuery;
public static String HibernateAddQueryDialog_hibernateNamedNativeQuery;
-
+ public static String GenericGeneratorsComposite_generatorNullName;
+ public static String GenericGeneratorsComposite_addGeneratorNameDescription;
+ public static String EnterNameDialog_title;
+ public static String EnterNameDialog_labelText;
+ public static String NameStateObject_nameMustBeSpecified;
+ public static String NameStateObject_nameAlreadyExists;
private HibernateUIMappingMessages() {}
Modified:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/ParametersComposite.java
===================================================================
---
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/ParametersComposite.java 2009-07-23
13:40:36 UTC (rev 16747)
+++
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/ParametersComposite.java 2009-07-23
14:04:34 UTC (rev 16748)
@@ -19,8 +19,6 @@
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.TextCellEditor;
-import org.eclipse.jpt.core.context.Generator;
-import org.eclipse.jpt.core.context.GeneratorHolder;
import org.eclipse.jpt.ui.internal.mappings.JptUiMappingsMessages;
import org.eclipse.jpt.ui.internal.swt.ColumnAdapter;
import org.eclipse.jpt.ui.internal.util.PaneEnabler;
@@ -42,15 +40,14 @@
import org.eclipse.swt.widgets.TableItem;
import org.jboss.tools.hibernate.jpt.core.internal.context.Parameter;
import org.jboss.tools.hibernate.jpt.core.internal.context.java.GenericGenerator;
-import org.jboss.tools.hibernate.jpt.core.internal.context.java.GenericGeneratorHolder;
/**
* @author Dmitry Geraskov
*
*/
-public class ParametersComposite extends Pane<GeneratorHolder> {
+public class ParametersComposite extends Pane<GenericGenerator> {
- private PropertyValueModel<Generator> generatorHolder;
+ //private WritablePropertyValueModel<GenericGenerator> generatorHolder;
private WritablePropertyValueModel<Parameter> parameterHolder;
@@ -60,20 +57,17 @@
* @param parentPane The parent pane of this one
* @param parent The parent container
*/
- public ParametersComposite(Pane<? extends GeneratorHolder> parentPane,
- Composite container) {
+ public ParametersComposite(Pane<?> parentPane,
+ Composite container, WritablePropertyValueModel<GenericGenerator>
generatorHolder) {
- super(parentPane,container);
+ super(parentPane, generatorHolder, container, false);
}
-
- protected GenericGenerator getGenericGenerator(){
- return ((GenericGeneratorHolder) getSubject()).getGenericGenerator();
- }
+
private PropertyValueModel<Boolean> buildPaneEnableHolder() {
- return new TransformationPropertyValueModel<GeneratorHolder,
Boolean>(getSubjectHolder()) {
+ return new TransformationPropertyValueModel<GenericGenerator,
Boolean>(getSubjectHolder()) {
@Override
- protected Boolean transform(GeneratorHolder generator) {
+ protected Boolean transform(GenericGenerator generator) {
return (generator != null);
}
};
@@ -82,13 +76,13 @@
private Adapter buildParameterAdapter() {
return new AddRemoveTablePane.AbstractAdapter() {
public void addNewItem(ObjectListSelectionModel listSelectionModel) {
- Parameter parameter =
getGenericGenerator().addParameter(getGenericGenerator().parametersSize());
+ Parameter parameter = getSubject().addParameter(getSubject().parametersSize());
parameterHolder.setValue(parameter);
}
public void removeSelectedItems(ObjectListSelectionModel listSelectionModel) {
for (Object item : listSelectionModel.selectedValues()) {
- getGenericGenerator().removeParameter((Parameter) item);
+ getSubject().removeParameter((Parameter) item);
}
}
};
@@ -103,23 +97,21 @@
}
private ListValueModel<Parameter> buildParameterListHolder() {
- return new ListAspectAdapter<Generator, Parameter>(
- generatorHolder,
+ return new ListAspectAdapter<GenericGenerator, Parameter>(
+ getSubjectHolder(),
GenericGenerator.PARAMETERS_LIST) {
@Override
protected ListIterator<Parameter> listIterator_() {
- GenericGenerator generator = (GenericGenerator) subject;
- if (generator == null ){
+ if (subject == null ){
return EmptyListIterator.instance();
} else {
- return generator.parameters();
+ return subject.parameters();
}
}
@Override
protected int size_() {
- GenericGenerator generator = (GenericGenerator) subject;
- return generator == null ? 0 : generator.parametersSize();
+ return subject == null ? 0 : subject.parametersSize();
}
};
}
@@ -127,20 +119,9 @@
@Override
protected void initialize() {
super.initialize();
- this.generatorHolder = buildGeneratorHolder();
parameterHolder = buildParameterHolder();
}
- private PropertyValueModel<Generator> buildGeneratorHolder() {
- return new PropertyAspectAdapter<GeneratorHolder, Generator>(getSubjectHolder(),
- GenericGeneratorHolder.GENERIC_GENERATOR_PROPERTY) {
- @Override
- protected Generator buildValue_() {
- return ParametersComposite.this.getGenericGenerator();
- }
- };
- }
-
@Override
protected void initializeLayout(Composite container) {
@@ -247,7 +228,7 @@
}
}
- private class TablePane extends AddRemoveTablePane<GeneratorHolder> {
+ private class TablePane extends AddRemoveTablePane<GenericGenerator> {
private TablePane(Composite parent) {
super(ParametersComposite.this,
Modified:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/messages.properties
===================================================================
---
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/messages.properties 2009-07-23
13:40:36 UTC (rev 16747)
+++
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/mapping/details/messages.properties 2009-07-23
14:04:34 UTC (rev 16748)
@@ -12,4 +12,10 @@
NamedQueryPropertyComposite_fetchSize=Fetch Size
NamedQueryPropertyComposite_timeout=Timeout
HibernateAddQueryDialog_hibernateNamedQuery=Named Query (hibernate)
-HibernateAddQueryDialog_hibernateNamedNativeQuery=Named Native Query (hibernate)
\ No newline at end of file
+HibernateAddQueryDialog_hibernateNamedNativeQuery=Named Native Query (hibernate)
+GenericGeneratorsComposite_generatorNullName=GenericGenerator_{0}
+GenericGeneratorsComposite_addGeneratorNameDescription=Enter a GenericGenerator name
+EnterNameDialog_title=Name dialog
+EnterNameDialog_labelText=Name
+NameStateObject_nameMustBeSpecified=A name must be specified
+NameStateObject_nameAlreadyExists=The name already exists.
\ No newline at end of file
Added:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/widgets/EnterNameDialog.java
===================================================================
---
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/widgets/EnterNameDialog.java
(rev 0)
+++
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/widgets/EnterNameDialog.java 2009-07-23
14:04:34 UTC (rev 16748)
@@ -0,0 +1,157 @@
+/*******************************************************************************
+ * Copyright (c) 2007-2009 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is 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
+ *
+ * Contributor:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.hibernate.jpt.ui.internal.widgets;
+
+import java.util.Collection;
+
+import org.eclipse.jpt.ui.internal.widgets.DialogPane;
+import org.eclipse.jpt.ui.internal.widgets.ValidatingDialog;
+import org.eclipse.jpt.utility.internal.model.value.PropertyAspectAdapter;
+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.Shell;
+import org.eclipse.swt.widgets.Text;
+import
org.jboss.tools.hibernate.jpt.ui.internal.mapping.details.HibernateUIMappingMessages;
+
+/**
+ * @author Dmitry Geraskov
+ *
+ */
+public class EnterNameDialog extends ValidatingDialog<NameStateObject> {
+
+ private String description;
+ private Image descriptionImage;
+ private String descriptionTitle;
+ private String labelText;
+ private String name;
+ private Collection<String> names;
+
+ public EnterNameDialog(Shell parentShell, String descriptionTitle){
+ this(parentShell, descriptionTitle, null, null);
+ }
+
+ public EnterNameDialog(Shell parentShell, String descriptionTitle, String name,
+ Collection<String> names){
+ this(parentShell,
+ HibernateUIMappingMessages.EnterNameDialog_title,
+ descriptionTitle,
+ null,
+ null,
+ HibernateUIMappingMessages.EnterNameDialog_labelText,
+ name,
+ names);
+ }
+
+ /**
+ * Creates a new <code>EnterNameDialog</code>.
+ *
+ */
+ public EnterNameDialog(Shell parentShell,
+ String dialogTitle,
+ String descriptionTitle,
+ Image descriptionImage,
+ String description,
+ String labelText,
+ String name,
+ Collection<String> names)
+ {
+ super(parentShell, dialogTitle);
+
+ this.name = name;
+ this.labelText = labelText;
+ this.description = description;
+ this.descriptionImage = descriptionImage;
+ this.descriptionTitle = descriptionTitle;
+ this.names = names;
+ }
+
+ @Override
+ protected DialogPane<NameStateObject> buildLayout(Composite container) {
+ return new NewNameDialogPane(container);
+ }
+
+ @Override
+ protected NameStateObject buildStateObject() {
+ return new NameStateObject(name, names);
+ }
+
+ @Override
+ public void create() {
+ super.create();
+
+ NewNameDialogPane pane = (NewNameDialogPane) getPane();
+ pane.selectAll();
+
+ getButton(OK).setEnabled(false);
+ }
+
+ @Override
+ protected String getDescription() {
+ return description;
+ }
+
+ @Override
+ protected Image getDescriptionImage() {
+ return descriptionImage;
+ }
+
+ @Override
+ protected String getDescriptionTitle() {
+ return descriptionTitle;
+ }
+
+ /**
+ * Returns the text field's input, which is the new name the user entered.
+ *
+ * @return The name the user entered
+ */
+ public String getName() {
+ return getSubject().getName();
+ }
+
+ private class NewNameDialogPane extends DialogPane<NameStateObject> {
+
+ private Text text;
+
+ NewNameDialogPane(Composite parent) {
+ super(EnterNameDialog.this.getSubjectHolder(), parent);
+ }
+
+ private WritablePropertyValueModel<String> buildNameHolder() {
+ return new PropertyAspectAdapter<NameStateObject, String>(getSubjectHolder(),
NameStateObject.NAME_PROPERTY) {
+ @Override
+ protected String buildValue_() {
+ return subject.getName();
+ }
+
+ @Override
+ protected void setValue_(String value) {
+ subject.setName(value);
+ }
+ };
+ }
+
+ @Override
+ protected void initializeLayout(Composite container) {
+
+ text = addLabeledText(
+ container,
+ labelText,
+ buildNameHolder()
+ );
+ }
+
+ void selectAll() {
+ text.selectAll();
+ }
+ }
+}
Property changes on:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/widgets/EnterNameDialog.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Name: svn:keywords
+ Author Id Revision Date
Name: svn:eol-style
+ native
Added:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/widgets/NameStateObject.java
===================================================================
---
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/widgets/NameStateObject.java
(rev 0)
+++
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/widgets/NameStateObject.java 2009-07-23
14:04:34 UTC (rev 16748)
@@ -0,0 +1,106 @@
+/*******************************************************************************
+ * Copyright (c) 2007-2009 Red Hat, Inc.
+ * Distributed under license by Red Hat, Inc. All rights reserved.
+ * This program is 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
+ *
+ * Contributor:
+ * Red Hat, Inc. - initial API and implementation
+ ******************************************************************************/
+package org.jboss.tools.hibernate.jpt.ui.internal.widgets;
+
+import java.util.Collection;
+import java.util.List;
+
+
+import org.eclipse.jpt.utility.internal.StringTools;
+import org.eclipse.jpt.utility.internal.node.AbstractNode;
+import org.eclipse.jpt.utility.internal.node.Node;
+import org.eclipse.jpt.utility.internal.node.Problem;
+import
org.jboss.tools.hibernate.jpt.ui.internal.mapping.details.HibernateUIMappingMessages;
+
+/**
+ * @author Dmitry Geraskov
+ *
+ */
+final class NameStateObject extends AbstractNode
+{
+ /**
+ * The initial name or <code>null</code>
+ */
+ private String name;
+
+ /**
+ * The collection of names that can't be used or an empty collection if none
+ * are available.
+ */
+ private Collection<String> names;
+
+ /**
+ * The <code>Validator</code> used to validate this state object.
+ */
+ private Validator validator;
+
+ /**
+ * Notifies a change in the data value property.
+ */
+ static final String NAME_PROPERTY = "nameProperty"; //$NON-NLS-1$
+
+ /**
+ * Creates a new <code>NameStateObject</code>.
+ *
+ * @param name The initial input or <code>null</code> if no initial value
can
+ * be specified
+ * @param names The collection of names that can't be used or an empty
+ * collection if none are available
+ */
+ NameStateObject(String name, Collection<String> names) {
+ super(null);
+ this.name = name;
+ this.names = names;
+ }
+
+ private void addNameProblemsTo(List<Problem> currentProblems) {
+ if (StringTools.stringIsEmpty(this.name)) {
+ currentProblems.add(buildProblem(HibernateUIMappingMessages.NameStateObject_nameMustBeSpecified));
+ } else if (names != null && names.contains(name.trim())) {
+ currentProblems.add(buildProblem(HibernateUIMappingMessages.NameStateObject_nameAlreadyExists));
+ }
+ }
+
+ @Override
+ protected void addProblemsTo(List<Problem> currentProblems) {
+ super.addProblemsTo(currentProblems);
+ addNameProblemsTo(currentProblems);
+ }
+
+ @Override
+ protected void checkParent(Node parentNode) {
+ //no parent
+ }
+
+ public String displayString() {
+ return null;
+ }
+
+ String getName() {
+ return this.name;
+ }
+
+ public void setName(String newName) {
+ String oldName = this.name;
+ this.name = newName;
+ firePropertyChanged(NAME_PROPERTY, oldName, newName);
+ }
+
+ @Override
+ public void setValidator(Validator validator) {
+ this.validator = validator;
+ }
+
+ @Override
+ public Validator getValidator() {
+ return this.validator;
+ }
+}
\ No newline at end of file
Property changes on:
trunk/hibernatetools/plugins/org.jboss.tools.hibernate.jpt.ui/src/org/jboss/tools/hibernate/jpt/ui/internal/widgets/NameStateObject.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Name: svn:keywords
+ Author Id Revision Date
Name: svn:eol-style
+ native