diff options
author | tle | 2008-09-16 20:17:00 +0000 |
---|---|---|
committer | tle | 2008-09-16 20:17:00 +0000 |
commit | a4cab0873e21fba1ef428558108fd7ce72d5bfae (patch) | |
tree | 087ea37dd586cad677804493fadfc5ef9d6253f6 /jpa/plugins | |
parent | e847b65c39a5bb0974d0b0061c7ab69cec83241d (diff) | |
download | webtools.dali-a4cab0873e21fba1ef428558108fd7ce72d5bfae.tar.gz webtools.dali-a4cab0873e21fba1ef428558108fd7ce72d5bfae.tar.xz webtools.dali-a4cab0873e21fba1ef428558108fd7ce72d5bfae.zip |
228090 - EclipseLink persistence.xml Logger could have 'Browse...' button
Diffstat (limited to 'jpa/plugins')
3 files changed, 133 insertions, 16 deletions
diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/property_files/eclipselink_ui.properties b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/property_files/eclipselink_ui.properties index fe084040c5..30b5d17c84 100644 --- a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/property_files/eclipselink_ui.properties +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/property_files/eclipselink_ui.properties @@ -190,6 +190,7 @@ LoggingLevelComposite_finer = Finer LoggingLevelComposite_finest = Finest PersistenceXmlLoggingTab_loggerLabel = Logger: +PersistenceXmlLoggingTabb_browse = Browse... LoggerComposite_default_logger = Default Logger LoggerComposite_java_logger = Java Logger diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/EclipseLinkUiMessages.java b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/EclipseLinkUiMessages.java index a595c82526..420ce3623a 100644 --- a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/EclipseLinkUiMessages.java +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/EclipseLinkUiMessages.java @@ -206,6 +206,7 @@ public class EclipseLinkUiMessages extends NLS public static String LoggingLevelComposite_finest; public static String PersistenceXmlLoggingTab_loggerLabel; + public static String PersistenceXmlLoggingTabb_browse; public static String LoggerComposite_default_logger; public static String LoggerComposite_java_logger; diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/logging/LoggerComposite.java b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/logging/LoggerComposite.java index 943acf62de..b93d3720a4 100644 --- a/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/logging/LoggerComposite.java +++ b/jpa/plugins/org.eclipse.jpt.eclipselink.ui/src/org/eclipse/jpt/eclipselink/ui/internal/logging/LoggerComposite.java @@ -14,11 +14,26 @@ import java.util.ArrayList; import java.util.Comparator; import java.util.Iterator; +import org.eclipse.core.resources.IProject; +import org.eclipse.jdt.core.IJavaElement; +import org.eclipse.jdt.core.IJavaProject; +import org.eclipse.jdt.core.IPackageFragmentRoot; +import org.eclipse.jdt.core.IType; +import org.eclipse.jdt.core.JavaCore; +import org.eclipse.jdt.core.JavaModelException; +import org.eclipse.jdt.core.search.IJavaSearchScope; +import org.eclipse.jdt.core.search.SearchEngine; +import org.eclipse.jdt.ui.IJavaElementSearchConstants; +import org.eclipse.jdt.ui.JavaUI; +import org.eclipse.jface.window.Window; import org.eclipse.jpt.eclipselink.core.internal.context.logging.Logger; import org.eclipse.jpt.eclipselink.core.internal.context.logging.Logging; +import org.eclipse.jpt.eclipselink.ui.JptEclipseLinkUiPlugin; import org.eclipse.jpt.eclipselink.ui.internal.EclipseLinkUiMessages; -import org.eclipse.jpt.ui.internal.util.SWTUtil; +import org.eclipse.jpt.ui.JptUiPlugin; +import org.eclipse.jpt.ui.internal.JptUiMessages; import org.eclipse.jpt.ui.internal.widgets.Pane; +import org.eclipse.jpt.utility.internal.ClassTools; import org.eclipse.jpt.utility.internal.CollectionTools; import org.eclipse.jpt.utility.internal.StringConverter; import org.eclipse.jpt.utility.internal.iterators.TransformationIterator; @@ -33,7 +48,12 @@ 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.custom.CCombo; +import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.dialogs.SelectionDialog; +import org.eclipse.ui.progress.IProgressService; /** * LoggerComposite @@ -136,8 +156,8 @@ public class LoggerComposite extends Pane<Logging> private ListValueModel<String> buildLoggerListHolder() { ArrayList<ListValueModel<String>> holders = new ArrayList<ListValueModel<String>>(2); - holders.add(buildDefaultLoggerListHolder()); - holders.add(buildLoggersListHolder()); + holders.add(this.buildDefaultLoggerListHolder()); + holders.add(this.buildLoggersListHolder()); return new CompositeListValueModel<ListValueModel<String>, String>(holders); } @@ -152,14 +172,14 @@ public class LoggerComposite extends Pane<Logging> private CollectionValueModel<String> buildLoggersCollectionHolder() { return new SimpleCollectionValueModel<String>( - CollectionTools.collection(buildLoggers()) + CollectionTools.collection(this.buildLoggers()) ); } private ListValueModel<String> buildLoggersListHolder() { return new SortedListValueModelAdapter<String>( - buildLoggersCollectionHolder(), - buildLoggerComparator() + this.buildLoggersCollectionHolder(), + this.buildLoggerComparator() ); } @@ -176,22 +196,117 @@ public class LoggerComposite extends Pane<Logging> return EclipseLinkUiMessages.PersistenceXmlLoggingTab_defaultEmpty; } } + + @Override + protected void initializeLayout(Composite container) { - /* - * (non-Javadoc) - */ - @Override - protected void initializeLayout(Composite container) { + CCombo combo = this.addLoggerCCombo(container); + + this.addLabeledComposite( + container, + this.addLeftControl(container), + combo.getParent(), + this.addBrowseButton(container), + null + ); + } + + protected CCombo addLoggerCCombo(Composite container) { - CCombo combo = addLabeledEditableCCombo( + return this.addEditableCCombo( container, - EclipseLinkUiMessages.PersistenceXmlLoggingTab_loggerLabel, this.buildLoggerListHolder(), this.buildLoggerHolder(), - this.buildLoggerConverter(), - null // EclipseLinkHelpContextIds.LOGGER_NAME + this.buildLoggerConverter() ); + } + + protected Control addLeftControl(Composite container) { + return this.addLabel(container, EclipseLinkUiMessages.PersistenceXmlLoggingTab_loggerLabel); + } + + protected Button addBrowseButton(Composite parent) { + return this.addPushButton( + parent, + EclipseLinkUiMessages.PersistenceXmlLoggingTabb_browse, + this.buildBrowseAction() + ); + } + + private Runnable buildBrowseAction() { + return new Runnable() { + public void run() { + promptType(); + } + }; + } + + protected void promptType() { + IType type = this.chooseType(); + + if (type != null) { + String className = type.getFullyQualifiedName('.'); + this.getSubject().setLogger(className); + } + } + + /** + * Prompts the user the Open Type dialog. + * + * @return Either the selected type or <code>null</code> if the user + * cancelled the dialog + */ + protected IType chooseType() { + + IPackageFragmentRoot root = this.getPackageFragmentRoot(); + + if (root == null) { + return null; + } + + IJavaElement[] elements = new IJavaElement[] { root.getJavaProject() }; + IJavaSearchScope scope = SearchEngine.createJavaSearchScope(elements); + IProgressService service = PlatformUI.getWorkbench().getProgressService(); + SelectionDialog typeSelectionDialog; + + try { + typeSelectionDialog = JavaUI.createTypeDialog( + getShell(), + service, + scope, + IJavaElementSearchConstants.CONSIDER_CLASSES, + false, + this.getClassName() != null ? ClassTools.shortNameForClassNamed(this.getClassName()) : "" + ); + } + catch (JavaModelException e) { + JptUiPlugin.log(e); + return null; + } - SWTUtil.attachDefaultValueHandler(combo); + typeSelectionDialog.setTitle(JptUiMessages.ClassChooserPane_dialogTitle); + typeSelectionDialog.setMessage(JptUiMessages.ClassChooserPane_dialogMessage); + + if (typeSelectionDialog.open() == Window.OK) { + return (IType) typeSelectionDialog.getResult()[0]; + } + return null; + } + + protected String getClassName() { + return this.getSubject().getLogger(); + } + + protected IPackageFragmentRoot getPackageFragmentRoot() { + IProject project = this.getSubject().getJpaProject().getProject(); + IJavaProject root = JavaCore.create(project); + + try { + return root.getAllPackageFragmentRoots()[0]; + } + catch (JavaModelException e) { + JptEclipseLinkUiPlugin.log(e); + } + return null; } }
\ No newline at end of file |