[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>