diff options
author | psabeva | 2012-07-05 15:16:57 +0000 |
---|---|---|
committer | psabeva | 2012-07-05 15:16:57 +0000 |
commit | 2470465030f5a39a8c2bf1015389e00034cee3ed (patch) | |
tree | 16d0582ce96f7a2e253fc3bfbd1898523ebe58cc | |
parent | 26dbfcddbcbcfcbe10d5a3236498b8810713bcf6 (diff) | |
download | webtools.dali-2470465030f5a39a8c2bf1015389e00034cee3ed.tar.gz webtools.dali-2470465030f5a39a8c2bf1015389e00034cee3ed.tar.xz webtools.dali-2470465030f5a39a8c2bf1015389e00034cee3ed.zip |
[383648] - JPA Details view does not show the proper information
2 files changed, 229 insertions, 148 deletions
diff --git a/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/JPADiagramEditor.java b/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/JPADiagramEditor.java index 9472327c2c..9e1cde6123 100644 --- a/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/JPADiagramEditor.java +++ b/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/JPADiagramEditor.java @@ -20,6 +20,7 @@ import java.util.Iterator; import java.util.List; import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; @@ -29,7 +30,6 @@ import org.eclipse.emf.transaction.RecordingCommand; import org.eclipse.emf.transaction.TransactionalEditingDomain; import org.eclipse.emf.transaction.util.TransactionUtil; import org.eclipse.gef.ContextMenuProvider; -import org.eclipse.gef.DefaultEditDomain; import org.eclipse.gef.EditPart; import org.eclipse.gef.EditPolicy; import org.eclipse.graphiti.features.IFeatureProvider; @@ -47,9 +47,20 @@ import org.eclipse.jface.operation.IRunnableWithProgress; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jpt.common.core.internal.utility.PlatformTools; +import org.eclipse.jpt.common.utility.internal.AbstractTransformer; +import org.eclipse.jpt.common.utility.internal.Transformer; +import org.eclipse.jpt.common.utility.internal.model.value.DoublePropertyValueModel; +import org.eclipse.jpt.common.utility.internal.model.value.SimplePropertyValueModel; +import org.eclipse.jpt.common.utility.internal.model.value.TransformationPropertyValueModel; +import org.eclipse.jpt.common.utility.model.value.ModifiablePropertyValueModel; +import org.eclipse.jpt.common.utility.model.value.PropertyValueModel; +import org.eclipse.jpt.jpa.core.JpaFile; import org.eclipse.jpt.jpa.core.JpaStructureNode; +import org.eclipse.jpt.jpa.core.context.java.JavaPersistentAttribute; import org.eclipse.jpt.jpa.core.context.java.JavaPersistentType; import org.eclipse.jpt.jpa.core.context.persistence.PersistenceUnit; +import org.eclipse.jpt.jpa.ui.JpaFileModel; +import org.eclipse.jpt.jpa.ui.selection.JpaEditorManager; import org.eclipse.jpt.jpa.ui.selection.JpaSelectionManager; import org.eclipse.jpt.jpadiagrameditor.ui.internal.i18n.JPAEditorMessages; import org.eclipse.jpt.jpadiagrameditor.ui.internal.modelintegration.ui.JPADiagramEditorInput; @@ -66,6 +77,7 @@ import org.eclipse.jpt.jpadiagrameditor.ui.internal.util.JpaArtifactFactory; import org.eclipse.jpt.jpadiagrameditor.ui.internal.util.Wrp; import org.eclipse.osgi.util.NLS; import org.eclipse.ui.IEditorInput; +import org.eclipse.ui.IEditorPart; import org.eclipse.ui.IEditorSite; import org.eclipse.ui.IFileEditorInput; import org.eclipse.ui.IWorkbenchPart; @@ -75,23 +87,33 @@ import org.eclipse.ui.views.properties.IPropertySheetPage; @SuppressWarnings("restriction") -public class JPADiagramEditor extends DiagramEditor { - +public class JPADiagramEditor extends DiagramEditor implements JpaEditorManager{ + + private final ModifiablePropertyValueModel<JpaStructureNode> jpaSelectionModel = new SimplePropertyValueModel<JpaStructureNode>(); + public final static String ID = "org.eclipse.jpt.jpadiagrameditor.ui"; //$NON-NLS-1$ - private DefaultEditDomain editDomain; private JavaPersistentType inputJptType; private ISelectionManagerFactory jpaSelectionManagerFactory; + + private final ModifiablePropertyValueModel<IFile> fileModel = new SimplePropertyValueModel<IFile>(); + + /** + * We use the JPA file to calculate the JPA selection. + * We update the JPA file model's file model whenever the text editor's + * file changes. + */ + private final PropertyValueModel<JpaFile> jpaFileModel; + public JPADiagramEditor() { this(new SelectionManagerFactoryImpl()); - editDomain = new DefaultEditDomain(this); } public JPADiagramEditor(ISelectionManagerFactory jpaSelectionManagerFactory) { super(); this.jpaSelectionManagerFactory = jpaSelectionManagerFactory; - editDomain = new DefaultEditDomain(this); + this.jpaFileModel = this.buildJpaFileModel(); } @Override @@ -287,9 +309,15 @@ public class JPADiagramEditor extends DiagramEditor { Object bo = getFeatureProvider() .getBusinessObjectForPictogramElement( (PictogramElement) m); - if ((bo == null) || (!(bo instanceof JpaStructureNode))) + if ((bo == null) || (!(bo instanceof JpaStructureNode))){ + jpaSelectionModel.setValue(null); + setFileModel(null); return; - selectionManager.setSelection((JpaStructureNode) bo); + } + JpaStructureNode jpaStructureNode = (JpaStructureNode) bo; + jpaSelectionModel.setValue(jpaStructureNode); + setFileModel(jpaStructureNode); + selectionManager.setSelection(jpaStructureNode); return; } } @@ -312,10 +340,58 @@ public class JPADiagramEditor extends DiagramEditor { } } + + public IEditorPart getEditor() { + return this.getEditor(); + } + + public ModifiablePropertyValueModel<JpaStructureNode> getJpaSelectionModel() { + return this.jpaSelectionModel; + } - @Override - public DefaultEditDomain getEditDomain() { - return editDomain; + public PropertyValueModel<JpaFile> getJpaFileModel() { + return this.jpaFileModel; + } + + private PropertyValueModel<JpaFile> buildJpaFileModel() { + return new DoublePropertyValueModel<JpaFile>(this.buildJpaFileModelModel()); + } + + private PropertyValueModel<PropertyValueModel<JpaFile>> buildJpaFileModelModel() { + return new TransformationPropertyValueModel<IFile, PropertyValueModel<JpaFile>>(this.fileModel, JPA_FILE_MODEL_TRANSFORMER); + } + + private static final Transformer<IFile, PropertyValueModel<JpaFile>> JPA_FILE_MODEL_TRANSFORMER = new JpaFileModelTransformer(); + + /* CU private */ static class JpaFileModelTransformer + extends AbstractTransformer<IFile, PropertyValueModel<JpaFile>> + { + @Override + protected PropertyValueModel<JpaFile> transform_(IFile file) { + return (JpaFileModel) file.getAdapter(JpaFileModel.class); + } + } + + private void setFileModel(JpaStructureNode node) { + this.fileModel.setValue(getSelectedEntityFile(node)); } + private IFile getSelectedEntityFile(JpaStructureNode node) { + IResource resource = null; + if (node != null) { + if (node.getType().isAssignableFrom(JavaPersistentType.class)) { + resource = ((JavaPersistentType) node).getResource(); + } else if (node.getType().isAssignableFrom(JavaPersistentAttribute.class)) { + resource = ((JavaPersistentAttribute) node).getResource(); + } + + if (resource != null && resource.exists() && (resource instanceof IFile)) { + return (IFile) resource; + } + } + + return null; + } + + } diff --git a/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/propertypage/JPADiagramPropertyPage.java b/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/propertypage/JPADiagramPropertyPage.java index 56f0bee90a..0ab27283c9 100644 --- a/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/propertypage/JPADiagramPropertyPage.java +++ b/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/src/org/eclipse/jpt/jpadiagrameditor/ui/internal/propertypage/JPADiagramPropertyPage.java @@ -54,13 +54,13 @@ import org.eclipse.swt.widgets.Text; import org.eclipse.ui.dialogs.PropertyPage; public class JPADiagramPropertyPage extends PropertyPage { - + public static final String PROJECT_SETTINGS_PATH = "/.settings/org.eclipse.jpt.jpadiagrameditor.ui"; //$NON-NLS-1$; protected IProject project = null; protected boolean isJPA10Project = false; //$NON-NLS-1$; - + private Properties editorProps; - + private Text txtDefaultFolderField; private Text txtDefaultEntityPackageField; private Text txtDefaultTableNamePrefix; @@ -78,28 +78,28 @@ public class JPADiagramPropertyPage extends PropertyPage { private boolean propsModified = false; static private final String QUALIFIER = "org.eclipse.jpt.jpadiagrameditor.ui"; //$NON-NLS-1$ - static public final QualifiedName PROP_DEFAULT_DIAGRAM_FOLDER = new QualifiedName(QUALIFIER, "diagramFolder"); //$NON-NLS-1$; + static public final QualifiedName PROP_DEFAULT_DIAGRAM_FOLDER = new QualifiedName(QUALIFIER, "diagramFolder"); //$NON-NLS-1$; static public final QualifiedName PROP_DEFAULT_PACKAGE = new QualifiedName(QUALIFIER, "defaultPackage"); //$NON-NLS-1$ static public final QualifiedName PROP_DEFAULT_TABLE_NAME_PREFIX = new QualifiedName(QUALIFIER, "defaultTableNamePrefix"); //$NON-NLS-1$; static public final QualifiedName PROP_DIRECT_EDIT_AFFECTS_CLASS = new QualifiedName(QUALIFIER, "directEditAffectsClass"); //$NON-NLS-1$; static public final QualifiedName PROP_ACCESS_TYPE = new QualifiedName(QUALIFIER, "accessType"); //$NON-NLS-1$; static public final QualifiedName PROP_COLLECTION_TYPE = new QualifiedName(QUALIFIER, "collectionType"); //$NON-NLS-1$; static public final QualifiedName PROP_ONE_TO_MANY_OLD_STYLE = new QualifiedName(QUALIFIER, "oneToManyOldStyle"); //$NON-NLS-1$; - + public static final String COLLECTION_TYPE = "java.util.Collection"; //$NON-NLS-1$ public static final String LIST_TYPE = "java.util.List"; //$NON-NLS-1$ public static final String SET_TYPE = "java.util.Set"; //$NON-NLS-1$ public static final String MAP_TYPE = "java.util.Map"; //$NON-NLS-1$ - + private IPreferenceStore store = JPADiagramEditorPlugin.getDefault().getPreferenceStore(); @Override protected Control createContents(Composite parent) { final Composite composite = createCompositeContainer(parent); project = (IProject)getElement().getAdapter(IProject.class); - isJPA10Project = JPAEditorUtil.checkJPAFacetVersion(project, "1.0"); //$NON-NLS-1$; + isJPA10Project = JPAEditorUtil.checkJPAFacetVersion(project, "1.0"); //$NON-NLS-1$; loadProperties(); createDefaultFolderControl(composite); createDefaultPackageControl(composite); @@ -111,10 +111,10 @@ public class JPADiagramPropertyPage extends PropertyPage { createOneToManyOldStyleControl(composite); Dialog.applyDialogFont(composite); validatePage(); - return composite; + return composite; } - - private Composite createCompositeContainer(Composite parent) { + + private Composite createCompositeContainer(Composite parent) { final Composite composite= new Composite(parent, SWT.NONE); composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); GridLayout gl = new GridLayout(); @@ -122,19 +122,19 @@ public class JPADiagramPropertyPage extends PropertyPage { composite.setLayout(gl); return composite; } - + private void createDefaultFolderControl(Composite composite) { - Label lblDefaultFolder = new Label(composite, SWT.FILL); + Label lblDefaultFolder = new Label(composite, SWT.FILL); lblDefaultFolder.setText(JPAEditorMessages.JPAEditorPreferencesPage_defaultFolderControlLabel); lblDefaultFolder.setToolTipText(JPAEditorMessages.JPAEditorPreferencesPage_defaultFolderControlTooltip); GridData gd = new GridData(); - lblDefaultFolder.setLayoutData(gd); + lblDefaultFolder.setLayoutData(gd); txtDefaultFolderField = new Text(composite, SWT.FLAT | SWT.BORDER | SWT.FILL); lblDefaultFolder.setToolTipText(JPAEditorMessages.JPAEditorPreferencesPage_defaultFolderControlTooltip); gd = new GridData(GridData.HORIZONTAL_ALIGN_FILL); gd.grabExcessHorizontalSpace = true; txtDefaultFolderField.setLayoutData(gd); - + String defaultFolder = editorProps.getProperty(PROP_DEFAULT_DIAGRAM_FOLDER.getLocalName()); txtDefaultFolderField.setText(defaultFolder); txtDefaultFolderField.setToolTipText(JPAEditorMessages.JPAEditorPreferencesPage_defaultFolderControlTooltip); @@ -142,23 +142,23 @@ public class JPADiagramPropertyPage extends PropertyPage { public void modifyText(ModifyEvent e) { validatePage(); propsModified = true; - } + } }); } - - + + private void createDefaultPackageControl(Composite composite) { - Label lblDefaultPackage = new Label(composite, SWT.FILL); + Label lblDefaultPackage = new Label(composite, SWT.FILL); lblDefaultPackage.setText(JPAEditorMessages.JPAEditorPreferencesPage_DefaultPackageToUse); lblDefaultPackage.setToolTipText(JPAEditorMessages.JPAEditorPreferencesPage_DefaultPackageMsg); GridData gd = new GridData(); - lblDefaultPackage.setLayoutData(gd); + lblDefaultPackage.setLayoutData(gd); txtDefaultEntityPackageField = new Text(composite, SWT.FLAT | SWT.BORDER | SWT.FILL); lblDefaultPackage.setToolTipText(JPAEditorMessages.JPAEditorPreferencesPage_DefaultPackageMsg); gd = new GridData(GridData.HORIZONTAL_ALIGN_FILL); gd.grabExcessHorizontalSpace = true; txtDefaultEntityPackageField.setLayoutData(gd); - + String defaultPackageName = editorProps.getProperty(PROP_DEFAULT_PACKAGE.getLocalName()); txtDefaultEntityPackageField.setText(defaultPackageName); txtDefaultEntityPackageField.setToolTipText(JPAEditorMessages.JPAEditorPreferencesPage_DefaultPackageMsg); @@ -166,67 +166,67 @@ public class JPADiagramPropertyPage extends PropertyPage { public void modifyText(ModifyEvent e) { validatePage(); propsModified = true; - } + } }); } - + private void createDefaultTableNamePrefixControl(Composite composite) { - Label lblDefaultTableNamePrfix = new Label(composite, SWT.FILL); + Label lblDefaultTableNamePrfix = new Label(composite, SWT.FILL); lblDefaultTableNamePrfix.setText(JPAEditorMessages.JPAEditorPreferencesPage_DefaultTableNameLabel); lblDefaultTableNamePrfix.setToolTipText(JPAEditorMessages.JPAEditorPreferencesPage_DefaultTableNamePrefixMsg); GridData gd = new GridData(); - lblDefaultTableNamePrfix.setLayoutData(gd); + lblDefaultTableNamePrfix.setLayoutData(gd); txtDefaultTableNamePrefix = new Text(composite, SWT.FLAT | SWT.BORDER); lblDefaultTableNamePrfix.setToolTipText(JPAEditorMessages.JPAEditorPreferencesPage_DefaultTableNamePrefixMsg); gd = new GridData(GridData.HORIZONTAL_ALIGN_FILL); gd.grabExcessHorizontalSpace = true; txtDefaultTableNamePrefix.setLayoutData(gd); - + String defaultTableNamePrefix = editorProps.getProperty(PROP_DEFAULT_TABLE_NAME_PREFIX.getLocalName()); - txtDefaultTableNamePrefix.setText(defaultTableNamePrefix); + txtDefaultTableNamePrefix.setText(defaultTableNamePrefix); txtDefaultTableNamePrefix.setToolTipText(JPAEditorMessages.JPAEditorPreferencesPage_DefaultTableNamePrefixMsg); txtDefaultTableNamePrefix.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent e) { validatePage(); propsModified = true; - } - }); + } + }); } - + private void createDirectEditAffectsClassControl(Composite composite) { checkDirectEditAffectsClass = new Button(composite, SWT.FLAT | SWT.CHECK); checkDirectEditAffectsClass.setText(JPAEditorMessages.JPAEditorPreferencesPage_directEditAffectsClass); checkDirectEditAffectsClass.setToolTipText(JPAEditorMessages.JPAEditorPreferencesPage_directEditAffectsClassTooltip); checkDirectEditAffectsClass.setLayoutData(new GridData(SWT.FILL, SWT.TOP, false, false, 2, 1)); - + boolean defaultDirectEditAffectsClass = Boolean.parseBoolean(editorProps.getProperty(PROP_DIRECT_EDIT_AFFECTS_CLASS.getLocalName())); checkDirectEditAffectsClass.setSelection(defaultDirectEditAffectsClass); checkDirectEditAffectsClass.addSelectionListener(new SelectionListener() { public void widgetSelected(SelectionEvent e) { propsModified = true; } - public void widgetDefaultSelected(SelectionEvent e) {} - }); + public void widgetDefaultSelected(SelectionEvent e) {} + }); } - + private void createOneToManyOldStyleControl(Composite composite) { checkOneToManyOldStyle = new Button(composite, SWT.FLAT | SWT.CHECK); checkOneToManyOldStyle.setText(JPAEditorMessages.JPAEditorPropertyPage_oneToManyOldStyle); checkOneToManyOldStyle.setToolTipText(JPAEditorMessages.JPAEditorPropertyPage_oneToManyOldStyleTooltip); checkOneToManyOldStyle.setLayoutData(new GridData(SWT.FILL, SWT.TOP, false, false, 2, 1)); - + boolean defaultDirectEditAffectsClass = Boolean.parseBoolean(editorProps.getProperty(PROP_ONE_TO_MANY_OLD_STYLE.getLocalName())); checkOneToManyOldStyle.setSelection(defaultDirectEditAffectsClass); checkOneToManyOldStyle.addSelectionListener(new SelectionListener() { public void widgetSelected(SelectionEvent e) { propsModified = true; } - public void widgetDefaultSelected(SelectionEvent e) {} - }); + public void widgetDefaultSelected(SelectionEvent e) {} + }); } - - - + + + private void createDefaultCollectionTypeControl(Composite composite) { groupCollectionType = new Group(composite, 0); groupCollectionType.setText(JPAEditorMessages.JPAEditorPreferencesPage_DefaultCollectionTypeSectionTittle); @@ -235,20 +235,20 @@ public class JPADiagramPropertyPage extends PropertyPage { gd.grabExcessHorizontalSpace = true; gd.horizontalSpan = 2; groupCollectionType.setLayoutData(gd); - + GridLayout gl = new GridLayout(); gl.numColumns = 1; groupCollectionType.setLayout(gl); - + String defaultCollectionType = editorProps.getProperty(PROP_COLLECTION_TYPE.getLocalName()); - + createCollectionTypeButton(composite, gd, defaultCollectionType); createListTypeButton(composite, gd, defaultCollectionType); createSetTypeButton(composite, gd, defaultCollectionType); createMapTypeButton(composite, gd, defaultCollectionType); } - + private void createAccessTypeControl(Composite composite) { groupAccessType = new Group(composite, 0); groupAccessType.setText(JPAEditorMessages.JPAEditorPreferencesPage_entityAccessTypeButtonGroupLabel); @@ -257,17 +257,17 @@ public class JPADiagramPropertyPage extends PropertyPage { gd.grabExcessHorizontalSpace = true; gd.horizontalSpan = 2; groupAccessType.setLayoutData(gd); - + GridLayout gl = new GridLayout(); gl.numColumns = 1; groupAccessType.setLayout(gl); - + String defaultAccessType = editorProps.getProperty(PROP_ACCESS_TYPE.getLocalName()); - + createFieldAccessButton(composite, gd, defaultAccessType); createPropertyAccessButton(composite, gd, defaultAccessType); } - + private void createCollectionTypeButton(Composite composite, GridData gd, String defaultCollectionType) { btnCollectionType = new Button(groupCollectionType, SWT.RADIO | SWT.FLAT); btnCollectionType.setText(COLLECTION_TYPE); @@ -278,10 +278,10 @@ public class JPADiagramPropertyPage extends PropertyPage { public void widgetSelected(SelectionEvent e) { propsModified = true; } - public void widgetDefaultSelected(SelectionEvent e) {} + public void widgetDefaultSelected(SelectionEvent e) {} }); } - + private void createListTypeButton(Composite composite, GridData gd, String defaultCollectionType) { btnListType = new Button(groupCollectionType, SWT.RADIO | SWT.FLAT); btnListType.setText(LIST_TYPE); @@ -292,10 +292,10 @@ public class JPADiagramPropertyPage extends PropertyPage { public void widgetSelected(SelectionEvent e) { propsModified = true; } - public void widgetDefaultSelected(SelectionEvent e) {} + public void widgetDefaultSelected(SelectionEvent e) {} }); } - + private void createSetTypeButton(Composite composite, GridData gd, String defaultCollectionType) { btnSetType = new Button(groupCollectionType, SWT.RADIO | SWT.FLAT); btnSetType.setText(SET_TYPE); @@ -306,10 +306,10 @@ public class JPADiagramPropertyPage extends PropertyPage { public void widgetSelected(SelectionEvent e) { propsModified = true; } - public void widgetDefaultSelected(SelectionEvent e) {} + public void widgetDefaultSelected(SelectionEvent e) {} }); } - + private void createMapTypeButton(Composite composite, GridData gd, String defaultCollectionType) { btnMapType = new Button(groupCollectionType, SWT.RADIO | SWT.FLAT); btnMapType.setText(MAP_TYPE); @@ -320,10 +320,10 @@ public class JPADiagramPropertyPage extends PropertyPage { public void widgetSelected(SelectionEvent e) { propsModified = true; } - public void widgetDefaultSelected(SelectionEvent e) {} + public void widgetDefaultSelected(SelectionEvent e) {} }); - } - + } + private void createFieldAccessButton(Composite composite, GridData gd, String defaultAccessType) { btnFieldBasedAccess = new Button(groupAccessType, SWT.RADIO | SWT.FLAT); btnFieldBasedAccess.setText(JPAEditorMessages.JPAEditorPreferencesPage_entityFieldBasedAccessButtonLabel); @@ -334,49 +334,50 @@ public class JPADiagramPropertyPage extends PropertyPage { public void widgetSelected(SelectionEvent e) { propsModified = true; } - public void widgetDefaultSelected(SelectionEvent e) {} + public void widgetDefaultSelected(SelectionEvent e) {} }); } - + private void createPropertyAccessButton(Composite composite, GridData gd, String defaultAccessType) { btnPropertyBasedAccess = new Button(groupAccessType, SWT.RADIO | SWT.FLAT); btnPropertyBasedAccess.setText(JPAEditorMessages.JPAEditorPreferencesPage_entityPropertyBasedAccessButtonLabel); gd = new GridData(); - btnPropertyBasedAccess.setLayoutData(gd); + btnPropertyBasedAccess.setLayoutData(gd); btnPropertyBasedAccess.setSelection(defaultAccessType.equals(JPAEditorPreferenceInitializer.PROPERTY_VAL_ACCESS_PROPERTY_BASED)); btnPropertyBasedAccess.addSelectionListener(new SelectionListener() { public void widgetSelected(SelectionEvent e) { propsModified = true; } - public void widgetDefaultSelected(SelectionEvent e) {} - }); + public void widgetDefaultSelected(SelectionEvent e) {} + }); } - - protected void performDefaults() { + + @Override + protected void performDefaults() { String defaultFolder = store.getString(JPAEditorPreferenceInitializer.PROPERTY_DIAGRAM_FOLDER); - txtDefaultFolderField.setText(defaultFolder); + txtDefaultFolderField.setText(defaultFolder); String defaultPackageName = store.getString(JPAEditorPreferenceInitializer.PROPERTY_ENTITY_PACKAGE); - txtDefaultEntityPackageField.setText(defaultPackageName); + txtDefaultEntityPackageField.setText(defaultPackageName); String defaultTableNamePrefix = store.getString(JPAEditorPreferenceInitializer.PROPERTY_TABLE_NAME_PREFIX); - txtDefaultTableNamePrefix.setText(defaultTableNamePrefix); + txtDefaultTableNamePrefix.setText(defaultTableNamePrefix); boolean defaultDirectEditAffectsClass = store.getBoolean(JPAEditorPreferenceInitializer.PROPERTY_DIRECT_EDIT_CLASS_NAME); checkDirectEditAffectsClass.setSelection(defaultDirectEditAffectsClass); String defaultAccessType = store.getString(JPAEditorPreferenceInitializer.PROPERTY_ENTITY_ACCESS_TYPE); btnFieldBasedAccess.setSelection(defaultAccessType.equals(JPAEditorPreferenceInitializer.PROPERTY_VAL_ACCESS_FIELD_BASED)); - btnPropertyBasedAccess.setSelection(defaultAccessType.equals(JPAEditorPreferenceInitializer.PROPERTY_VAL_ACCESS_PROPERTY_BASED)); + btnPropertyBasedAccess.setSelection(defaultAccessType.equals(JPAEditorPreferenceInitializer.PROPERTY_VAL_ACCESS_PROPERTY_BASED)); String defaultCollectionType = store.getString(JPAEditorPreferenceInitializer.PROPERTY_DEFAULT_COLLECTION_TYPE); btnCollectionType.setSelection(defaultCollectionType.equals(JPAEditorPreferenceInitializer.PROPERTY_VAL_COLLECTION_TYPE)); - btnListType.setSelection(defaultCollectionType.equals(JPAEditorPreferenceInitializer.PROPERTY_VAL_LIST_TYPE)); + btnListType.setSelection(defaultCollectionType.equals(JPAEditorPreferenceInitializer.PROPERTY_VAL_LIST_TYPE)); btnSetType.setSelection(defaultCollectionType.equals(JPAEditorPreferenceInitializer.PROPERTY_VAL_SET_TYPE)); btnMapType.setSelection(defaultCollectionType.equals(JPAEditorPreferenceInitializer.PROPERTY_VAL_MAP_TYPE)); boolean defaultOneToManyOldStyle = store.getBoolean(JPAEditorPreferenceInitializer.PROPERTY_ONE_TO_MANY_OLD_STYLE); if (!isJPA10Project) - checkOneToManyOldStyle.setSelection(defaultOneToManyOldStyle); + checkOneToManyOldStyle.setSelection(defaultOneToManyOldStyle); super.performDefaults(); } - + synchronized protected void validatePage() { - IStatus statFolder = JPAEditorPreferencesPage.validateDefaultFolder(txtDefaultFolderField.getText().trim(), + IStatus statFolder = JPAEditorPreferencesPage.validateDefaultFolder(txtDefaultFolderField.getText().trim(), project.getName()); IStatus statPack = JPAEditorPreferencesPage.validateDefaultPackage(txtDefaultEntityPackageField.getText().trim()); IStatus statPref = JPAEditorPreferencesPage.validateTableNamePrefix(txtDefaultTableNamePrefix.getText().trim()); @@ -384,12 +385,12 @@ public class JPADiagramPropertyPage extends PropertyPage { setErrorMessage(statFolder.getMessage()); setValid(false); return; - } + } if (statPack.getSeverity() == IStatus.ERROR) { setErrorMessage(statPack.getMessage()); setValid(false); return; - } + } if (statPref.getSeverity() == IStatus.ERROR) { setErrorMessage(statPref.getMessage()); setValid(false); @@ -397,25 +398,27 @@ public class JPADiagramPropertyPage extends PropertyPage { } setErrorMessage(null); setValid(true); - if (statPack.getSeverity() == IStatus.WARNING) { + if (statPack.getSeverity() == IStatus.WARNING) { setMessage(statPack.getMessage(), IMessageProvider.WARNING); return; } - if (statPref.getSeverity() == IStatus.WARNING) { + if (statPref.getSeverity() == IStatus.WARNING) { setMessage(statPref.getMessage(), IMessageProvider.WARNING); return; } setMessage(null, IMessageProvider.NONE); } - - protected void performApply() { + + @Override + protected void performApply() { saveSettingsIfModified(); } - - public boolean performOk() { + + @Override + public boolean performOk() { return saveSettingsIfModified(); } - + private boolean saveSettingsIfModified() { if (propsModified) { boolean saved = saveSettings(); @@ -424,39 +427,39 @@ public class JPADiagramPropertyPage extends PropertyPage { } return true; } - + private boolean saveSettings() { putNewValsInProps(); IProject project = (IProject)getElement().getAdapter(IProject.class); Path path = new Path(PROJECT_SETTINGS_PATH); - IFile quartzDataXMLFile = project.getFile(path); + IFile quartzDataXMLFile = project.getFile(path); File file = new File(quartzDataXMLFile.getLocation().toOSString()); - OutputStream os = null; + OutputStream os = null; try { - os = new FileOutputStream(file); + os = new FileOutputStream(file); editorProps.store(os, "This file contains JPA Diagram Editor settings"); //$NON-NLS-1$; os.close(); return true; } catch (IOException e) { - MessageDialog.openError(Display.getCurrent().getActiveShell(), - JPAEditorMessages.JPADiagramPropertyPage_errSavePropsMsgTitle, + MessageDialog.openError(Display.getCurrent().getActiveShell(), + JPAEditorMessages.JPADiagramPropertyPage_errSavePropsMsgTitle, JPAEditorMessages.JPADiagramPropertyPage_errSavePropsMsgText); return false; } } - + private void putNewValsInProps() { editorProps.put(PROP_DEFAULT_DIAGRAM_FOLDER.getLocalName(), txtDefaultFolderField.getText().trim()); editorProps.put(PROP_DEFAULT_PACKAGE.getLocalName(), txtDefaultEntityPackageField.getText().trim()); editorProps.put(PROP_DEFAULT_TABLE_NAME_PREFIX.getLocalName(), txtDefaultTableNamePrefix.getText().trim()); editorProps.put(PROP_DIRECT_EDIT_AFFECTS_CLASS.getLocalName(), "" + checkDirectEditAffectsClass.getSelection()); //$NON-NLS-1$; - editorProps.put(PROP_ACCESS_TYPE.getLocalName(), btnFieldBasedAccess.getSelection() ? JPAEditorPreferenceInitializer.PROPERTY_VAL_ACCESS_FIELD_BASED : JPAEditorPreferenceInitializer.PROPERTY_VAL_ACCESS_PROPERTY_BASED); + editorProps.put(PROP_ACCESS_TYPE.getLocalName(), btnFieldBasedAccess.getSelection() ? JPAEditorPreferenceInitializer.PROPERTY_VAL_ACCESS_FIELD_BASED : JPAEditorPreferenceInitializer.PROPERTY_VAL_ACCESS_PROPERTY_BASED); editorProps.put(PROP_COLLECTION_TYPE.getLocalName(), getCollectionProperty()); if (!isJPA10Project) editorProps.put(PROP_ONE_TO_MANY_OLD_STYLE.getLocalName(), "" + checkOneToManyOldStyle.getSelection()); //$NON-NLS-1$; } - - + + private String getCollectionProperty(){ if (btnCollectionType.getSelection()) return JPAEditorPreferenceInitializer.PROPERTY_VAL_COLLECTION_TYPE; @@ -468,162 +471,164 @@ public class JPADiagramPropertyPage extends PropertyPage { return JPAEditorPreferenceInitializer.PROPERTY_VAL_MAP_TYPE; return null; } - + private Properties createDefaultProps() { return createDefaultProps(store); } - + static private Properties createDefaultProps(IPreferenceStore store) { - Properties editorDefaultProps = new Properties(); - editorDefaultProps.setProperty(PROP_DEFAULT_DIAGRAM_FOLDER.getLocalName(), store.getString(JPAEditorPreferenceInitializer.PROPERTY_DIAGRAM_FOLDER)); + Properties editorDefaultProps = new Properties(); + editorDefaultProps.setProperty(PROP_DEFAULT_DIAGRAM_FOLDER.getLocalName(), store.getString(JPAEditorPreferenceInitializer.PROPERTY_DIAGRAM_FOLDER)); editorDefaultProps.setProperty(PROP_DEFAULT_PACKAGE.getLocalName(), store.getString(JPAEditorPreferenceInitializer.PROPERTY_ENTITY_PACKAGE)); editorDefaultProps.setProperty(PROP_DEFAULT_TABLE_NAME_PREFIX.getLocalName(), store.getString(JPAEditorPreferenceInitializer.PROPERTY_TABLE_NAME_PREFIX)); editorDefaultProps.setProperty(PROP_DIRECT_EDIT_AFFECTS_CLASS.getLocalName(), "" + store.getBoolean(JPAEditorPreferenceInitializer.PROPERTY_DIRECT_EDIT_CLASS_NAME)); //$NON-NLS-1$; - editorDefaultProps.setProperty(PROP_ACCESS_TYPE.getLocalName(), store.getString(JPAEditorPreferenceInitializer.PROPERTY_ENTITY_ACCESS_TYPE)); + editorDefaultProps.setProperty(PROP_ACCESS_TYPE.getLocalName(), store.getString(JPAEditorPreferenceInitializer.PROPERTY_ENTITY_ACCESS_TYPE)); editorDefaultProps.setProperty(PROP_COLLECTION_TYPE.getLocalName(), store.getString(JPAEditorPreferenceInitializer.PROPERTY_DEFAULT_COLLECTION_TYPE)); editorDefaultProps.setProperty(PROP_ONE_TO_MANY_OLD_STYLE.getLocalName(), "" + store.getBoolean(JPAEditorPreferenceInitializer.PROPERTY_ONE_TO_MANY_OLD_STYLE)); //$NON-NLS-1$; - - + + return editorDefaultProps; } - + private void loadProperties() { Properties defaultProps = createDefaultProps(); editorProps = new Properties(defaultProps); - + IProject project = (IProject)getElement().getAdapter(IProject.class); Path path = new Path(PROJECT_SETTINGS_PATH); IFile editorProjectProperties = project.getFile(path); - + File propertiesFile = new File(editorProjectProperties.getLocation().toOSString()); if (propertiesFile.exists()) { InputStream is = null; try { is = new FileInputStream(propertiesFile); - editorProps.load(is); + editorProps.load(is); is.close(); } catch (IOException e) { // ignore } } } - + static public Properties loadProperties(IProject project) { IPreferenceStore store = JPADiagramEditorPlugin.getDefault().getPreferenceStore(); Properties defaultProps = createDefaultProps(store); Properties editorProps = new Properties(defaultProps); - + Path path = new Path(PROJECT_SETTINGS_PATH); IFile editorProjectProperties = project.getFile(path); - - File propertiesFile = new File(editorProjectProperties.getLocation().toOSString()); - if (propertiesFile.exists()) { - InputStream is = null; - try { - is = new FileInputStream(propertiesFile); - editorProps.load(is); - is.close(); - } catch (IOException e) { - // ignore + + if (editorProjectProperties.getLocation() != null) { + File propertiesFile = new File(editorProjectProperties.getLocation().toOSString()); + if (propertiesFile.exists()) { + InputStream is = null; + try { + is = new FileInputStream(propertiesFile); + editorProps.load(is); + is.close(); + } catch (IOException e) { + // ignore + } } } return editorProps; } - + public static String getDefaultFolder(IProject project) { Properties props = JPADiagramPropertyPage.loadProperties(project); return getDefaultFolder(project, props); } - + public static String getDefaultPackage(IProject project) { Properties props = JPADiagramPropertyPage.loadProperties(project); return getDefaultPackage(project, props); } - + public static String getDefaultTablePrefixName(IProject project) { Properties props = JPADiagramPropertyPage.loadProperties(project); return getDefaultTablePrefixName(project, props); } - + public static boolean doesDirecteEditingAffectClassNameByDefault(IProject project) { Properties props = JPADiagramPropertyPage.loadProperties(project); return doesDirecteEditingAffectClassNameByDefault(project, props); } - + public static boolean isAccessFieldBased(IProject project) { Properties props = JPADiagramPropertyPage.loadProperties(project); return isAccessFieldBased(project, props); - } - + } + public static boolean isCollectionType(IProject project) { Properties props = JPADiagramPropertyPage.loadProperties(project); return isCollectionType(project, props); } - + public static boolean isListType(IProject project) { Properties props = JPADiagramPropertyPage.loadProperties(project); return isListType(project, props); } - + public static boolean isSetType(IProject project) { Properties props = JPADiagramPropertyPage.loadProperties(project); return isSetType(project, props); } - + public static boolean isMapType(IProject project) { Properties props = JPADiagramPropertyPage.loadProperties(project); return isMapType(project, props); - } - + } + public static boolean shouldOneToManyUnidirBeOldStyle(IProject project) { Properties props = JPADiagramPropertyPage.loadProperties(project); return shouldOneToManyUnidirBeOldStyle(project, props); - } + } //--------------------------------------------------------------------------------------------------- public static String getDefaultFolder(IProject project, Properties props) { return props.getProperty(PROP_DEFAULT_DIAGRAM_FOLDER.getLocalName()); } - + public static String getDefaultPackage(IProject project, Properties props) { return props.getProperty(PROP_DEFAULT_PACKAGE.getLocalName()); } - + public static String getDefaultTablePrefixName(IProject project, Properties props) { return props.getProperty(PROP_DEFAULT_TABLE_NAME_PREFIX.getLocalName()); } - + public static boolean doesDirecteEditingAffectClassNameByDefault(IProject project, Properties props) { return Boolean.parseBoolean(props.getProperty(PROP_DIRECT_EDIT_AFFECTS_CLASS.getLocalName())); } - + public static boolean isAccessFieldBased(IProject project, Properties props) { String accessType = props.getProperty(PROP_ACCESS_TYPE.getLocalName()); return accessType.equals("field"); //$NON-NLS-1$; - } - + } + public static boolean isCollectionType(IProject project, Properties props) { String accessType = props.getProperty(PROP_COLLECTION_TYPE.getLocalName()); return accessType.equals("collection"); //$NON-NLS-1$; } - + public static boolean isListType(IProject project, Properties props) { String accessType = props.getProperty(PROP_COLLECTION_TYPE.getLocalName()); return accessType.equals("list"); //$NON-NLS-1$; } - + public static boolean isSetType(IProject project, Properties props) { String accessType = props.getProperty(PROP_COLLECTION_TYPE.getLocalName()); return accessType.equals("set"); //$NON-NLS-1$; } - + public static boolean isMapType(IProject project, Properties props) { String accessType = props.getProperty(PROP_COLLECTION_TYPE.getLocalName()); return accessType.equals("map"); //$NON-NLS-1$; - } - + } + public static boolean shouldOneToManyUnidirBeOldStyle(IProject project, Properties props) { return Boolean.parseBoolean(props.getProperty(PROP_ONE_TO_MANY_OLD_STYLE.getLocalName())); } |