diff options
author | tle | 2012-07-13 00:27:00 +0000 |
---|---|---|
committer | tle | 2012-07-13 00:27:00 +0000 |
commit | 296e9a86d7e134c4538f1724a83c6a66fda41dda (patch) | |
tree | 9afe0062e79d781dc3ff3e814f68c65310a9da32 /jaxb | |
parent | 2110afedf1e96d8c1020703338c16fe135b80214 (diff) | |
download | webtools.dali-296e9a86d7e134c4538f1724a83c6a66fda41dda.tar.gz webtools.dali-296e9a86d7e134c4538f1724a83c6a66fda41dda.tar.xz webtools.dali-296e9a86d7e134c4538f1724a83c6a66fda41dda.zip |
322550 - JAXB Class Generation wizard should display the default package
Diffstat (limited to 'jaxb')
2 files changed, 63 insertions, 5 deletions
diff --git a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/prefs/JaxbPreferencesManager.java b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/prefs/JaxbPreferencesManager.java index cdbc71baf4..22c8f80049 100644 --- a/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/prefs/JaxbPreferencesManager.java +++ b/jaxb/plugins/org.eclipse.jpt.jaxb.core/src/org/eclipse/jpt/jaxb/core/internal/prefs/JaxbPreferencesManager.java @@ -82,6 +82,15 @@ public class JaxbPreferencesManager */ public static final String SCHEMA_LOCATION_PREF_KEY = "location"; //$NON-NLS-1$ + /** + * The node for storing a JAXB class generator in the project's preferences. + */ + protected static final String CLASS_GEN_PREF_NODE = "classgen"; //$NON-NLS-1$ + + /** + * The key for storing a package name in the project's preferences + */ + protected static final String PACKAGE_PREF_KEY = "package"; //$NON-NLS-1$ // ********** preferences ********** @@ -244,6 +253,24 @@ public class JaxbPreferencesManager return schemaLocations; } + public String getClassGenPackage() { + Preferences prefs = this.getProjectPreferences(); + Preferences classgenPrefs = prefs.node(CLASS_GEN_PREF_NODE); + return classgenPrefs.get(PACKAGE_PREF_KEY, ""); //$NON-NLS-1$ + } + + public void setClassGenPackage(String packageName) { + Preferences prefs = this.getProjectPreferences(); + Preferences classgenPrefs = prefs.node(CLASS_GEN_PREF_NODE); + classgenPrefs.put(PACKAGE_PREF_KEY, packageName); + try { + classgenPrefs.flush(); + } + catch (BackingStoreException bse) { + JptJaxbCorePlugin.log(bse); + } + } + public void setSchemaLocations(List<String> schemaLocations) { Preferences prefs = this.getProjectPreferences(); Preferences schemasPrefs = prefs.node(SCHEMAS_PREF_NODE); diff --git a/jaxb/plugins/org.eclipse.jpt.jaxb.ui/src/org/eclipse/jpt/jaxb/ui/internal/wizards/classesgen/ClassesGeneratorWizardPage.java b/jaxb/plugins/org.eclipse.jpt.jaxb.ui/src/org/eclipse/jpt/jaxb/ui/internal/wizards/classesgen/ClassesGeneratorWizardPage.java index 762aea5275..12773e3828 100644 --- a/jaxb/plugins/org.eclipse.jpt.jaxb.ui/src/org/eclipse/jpt/jaxb/ui/internal/wizards/classesgen/ClassesGeneratorWizardPage.java +++ b/jaxb/plugins/org.eclipse.jpt.jaxb.ui/src/org/eclipse/jpt/jaxb/ui/internal/wizards/classesgen/ClassesGeneratorWizardPage.java @@ -1,5 +1,5 @@ /******************************************************************************* -* Copyright (c) 2010, 2011 Oracle. All rights reserved. +* Copyright (c) 2010, 2012 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. @@ -53,6 +53,7 @@ import org.eclipse.jpt.common.utility.internal.ArrayTools; import org.eclipse.jpt.common.utility.internal.StringTools; import org.eclipse.jpt.jaxb.core.JptJaxbCorePlugin; import org.eclipse.jpt.jaxb.core.internal.gen.ClassesGenerator; +import org.eclipse.jpt.jaxb.core.internal.prefs.JaxbPreferencesManager; import org.eclipse.jpt.jaxb.core.platform.JaxbPlatformDescription; import org.eclipse.jpt.jaxb.core.platform.JaxbPlatformGroupDescription; import org.eclipse.jpt.jaxb.ui.JptJaxbUiPlugin; @@ -143,12 +144,20 @@ public class ClassesGeneratorWizardPage extends NewTypeWizardPage { @Override protected IStatus packageChanged() { IStatus status = super.packageChanged(); - IPackageFragment packageFragment = getPackageFragment(); - if(!status.matches(IStatus.ERROR)) { + IPackageFragment packageFragment = this.getPackageFragment(); + if( ! status.matches(IStatus.ERROR)) { + String newPackageName = packageFragment.getElementName(); + + if( ! this.isPackageInitialInitialization(newPackageName)) { + JaxbPreferencesManager prefs = new JaxbPreferencesManager(this.getJavaProject().getProject()); + if( ! newPackageName.equals(prefs.getClassGenPackage())) { + prefs.setClassGenPackage(newPackageName); + } + } this.targetPackage = packageFragment.getElementName(); } return status; - } + } @Override protected IStatus containerChanged() { @@ -199,11 +208,18 @@ public class ClassesGeneratorWizardPage extends NewTypeWizardPage { } this.validateProjectClasspath(); + if(this.getPackageText().equals("")) { //$NON-NLS-1$ + String packagePref = (new JaxbPreferencesManager(this.getJavaProject().getProject()).getClassGenPackage()); + if( ! StringTools.stringIsEmpty(packagePref)) { + this.setPackageName(this.getPackageFragmentRoot(), packagePref); + } + } + String schemaName = ((ClassesGeneratorWizard) getWizard()).getLocalSchemaUri().lastSegment(); this.setTitle(NLS.bind(JptJaxbUiMessages.ClassesGeneratorWizardPage_title, schemaName)); } } - + /** * Override to allow selection of source folder in current project only * @see org.eclipse.jdt.ui.wizards.NewContainerWizardPage#chooseContainer() @@ -445,6 +461,21 @@ public class ClassesGeneratorWizardPage extends NewTypeWizardPage { return jaxbPlatformGroup == ECLIPSELINK_PLATFORM_GROUP; } + private boolean isPackageInitialInitialization(String newPackageName) { + return this.targetPackage == null && newPackageName.equals(""); //$NON-NLS-1$ + } + + private void setPackageName(IPackageFragmentRoot packageFragmentRoot, String packageName) { + if( packageName == null || packageName.length() == 0 || packageFragmentRoot == null) { + return; + } + IPackageFragment packageFragment = packageFragmentRoot.getPackageFragment(packageName); + this.setPackageFragment(packageFragment, true); + + JaxbPreferencesManager prefs = new JaxbPreferencesManager(this.getJavaProject().getProject()); + prefs.setClassGenPackage(packageName); + } + private void displayWarning(String message) { this.setMessage(message, WARNING); } |