[119311] Create Default Session Bean option
diff --git a/plugins/org.eclipse.jst.ejb.ui/ejb_ui/org/eclipse/jst/jee/ui/internal/quickfixes/ejb/CreateBeanQuickFix.java b/plugins/org.eclipse.jst.ejb.ui/ejb_ui/org/eclipse/jst/jee/ui/internal/quickfixes/ejb/CreateBeanQuickFix.java
new file mode 100644
index 0000000..816adff
--- /dev/null
+++ b/plugins/org.eclipse.jst.ejb.ui/ejb_ui/org/eclipse/jst/jee/ui/internal/quickfixes/ejb/CreateBeanQuickFix.java
@@ -0,0 +1,57 @@
+package org.eclipse.jst.jee.ui.internal.quickfixes.ejb;
+
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.jst.ejb.ui.internal.wizard.AddMessageDrivenBeanWizard;
+import org.eclipse.jst.ejb.ui.internal.wizard.AddSessionBeanWizard;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.IMarkerResolution;
+import org.eclipse.ui.IWorkbenchWizard;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.wst.common.componentcore.internal.operation.IArtifactEditOperationDataModelProperties;
+import org.eclipse.wst.common.frameworks.internal.datamodel.ui.DataModelWizard;
+
+@SuppressWarnings("restriction")
+public class CreateBeanQuickFix implements IMarkerResolution {
+
+ public static enum BEAN_TYPE {
+ SESSION,
+ MESSAGE_DRIVEN
+ }
+
+ private BEAN_TYPE beanType;
+ private IProject project;
+
+ public CreateBeanQuickFix(BEAN_TYPE bType, IProject proj) {
+ this.beanType = bType;
+ this.project = proj;
+ }
+
+ public String getLabel() {
+ return (beanType == BEAN_TYPE.SESSION) ?
+ Messages.CREATE_NEW_SESSION_BEAN :
+ Messages.CREATE_NEW_MDB;
+ }
+
+ public void run(IMarker marker) {
+ Runnable r = new Runnable() {
+ public void run() {
+ openNewBeanWizard();
+ }
+ };
+ Display.getDefault().asyncExec(r);
+ }
+
+ private void openNewBeanWizard() {
+ DataModelWizard wizard = (beanType == BEAN_TYPE.SESSION) ?
+ new AddSessionBeanWizard() :
+ new AddMessageDrivenBeanWizard();
+ wizard.getDataModel().setStringProperty(IArtifactEditOperationDataModelProperties.COMPONENT_NAME, project.getName());
+ ((IWorkbenchWizard) wizard).init(PlatformUI.getWorkbench(), new StructuredSelection(project));
+ WizardDialog dialog = new WizardDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), wizard);
+ dialog.open();
+ }
+
+}
diff --git a/plugins/org.eclipse.jst.ejb.ui/ejb_ui/org/eclipse/jst/jee/ui/internal/quickfixes/ejb/Messages.java b/plugins/org.eclipse.jst.ejb.ui/ejb_ui/org/eclipse/jst/jee/ui/internal/quickfixes/ejb/Messages.java
new file mode 100644
index 0000000..a853a5b
--- /dev/null
+++ b/plugins/org.eclipse.jst.ejb.ui/ejb_ui/org/eclipse/jst/jee/ui/internal/quickfixes/ejb/Messages.java
@@ -0,0 +1,31 @@
+/*******************************************************************************
+ * Copyright (c) 2003, 2006 IBM Corporation and others.
+ * 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:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jst.jee.ui.internal.quickfixes.ejb;
+
+import org.eclipse.osgi.util.NLS;
+
+
+public class Messages extends NLS {
+
+ private static final String BUNDLE_NAME = "org.eclipse.jst.jee.ui.internal.quickfixes.ejb.messages"; //$NON-NLS-1$
+
+
+ private Messages() {
+ // Do not instantiate
+ }
+
+ public static String CREATE_NEW_SESSION_BEAN;
+ public static String CREATE_NEW_MDB;
+
+ static {
+ NLS.initializeMessages(BUNDLE_NAME, Messages.class);
+ }
+}
diff --git a/plugins/org.eclipse.jst.ejb.ui/ejb_ui/org/eclipse/jst/jee/ui/internal/quickfixes/ejb/NoBeansQuickFixer.java b/plugins/org.eclipse.jst.ejb.ui/ejb_ui/org/eclipse/jst/jee/ui/internal/quickfixes/ejb/NoBeansQuickFixer.java
new file mode 100644
index 0000000..c99cf03
--- /dev/null
+++ b/plugins/org.eclipse.jst.ejb.ui/ejb_ui/org/eclipse/jst/jee/ui/internal/quickfixes/ejb/NoBeansQuickFixer.java
@@ -0,0 +1,21 @@
+package org.eclipse.jst.jee.ui.internal.quickfixes.ejb;
+
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.ui.IMarkerResolution;
+import org.eclipse.ui.IMarkerResolutionGenerator2;
+
+public class NoBeansQuickFixer implements IMarkerResolutionGenerator2 {
+
+ public IMarkerResolution[] getResolutions(IMarker marker) {
+ return new IMarkerResolution[] {
+ new CreateBeanQuickFix(CreateBeanQuickFix.BEAN_TYPE.SESSION, (IProject)marker.getResource()),
+ new CreateBeanQuickFix(CreateBeanQuickFix.BEAN_TYPE.MESSAGE_DRIVEN, (IProject)marker.getResource())
+ };
+ }
+
+ public boolean hasResolutions(IMarker marker) {
+ return true;
+ }
+
+}
diff --git a/plugins/org.eclipse.jst.ejb.ui/ejb_ui/org/eclipse/jst/jee/ui/internal/quickfixes/ejb/messages.properties b/plugins/org.eclipse.jst.ejb.ui/ejb_ui/org/eclipse/jst/jee/ui/internal/quickfixes/ejb/messages.properties
new file mode 100644
index 0000000..03c306f
--- /dev/null
+++ b/plugins/org.eclipse.jst.ejb.ui/ejb_ui/org/eclipse/jst/jee/ui/internal/quickfixes/ejb/messages.properties
@@ -0,0 +1,3 @@
+CREATE_NEW_SESSION_BEAN=Create new session bean
+CREATE_NEW_MDB=Create new message driven bean
+
diff --git a/plugins/org.eclipse.jst.ejb.ui/plugin.xml b/plugins/org.eclipse.jst.ejb.ui/plugin.xml
index 7ea7aef..66a7e0a 100644
--- a/plugins/org.eclipse.jst.ejb.ui/plugin.xml
+++ b/plugins/org.eclipse.jst.ejb.ui/plugin.xml
@@ -360,6 +360,11 @@
</image>
</extension>
-
+ <extension point="org.eclipse.ui.ide.markerResolution">
+ <markerResolutionGenerator
+ class="org.eclipse.jst.jee.ui.internal.quickfixes.ejb.NoBeansQuickFixer"
+ markerType="org.eclipse.jst.jee.ejb3.nobeans">
+ </markerResolutionGenerator>
+ </extension>
</plugin>