Author: rob.stryker(a)jboss.com
Date: 2009-06-22 02:50:49 -0400 (Mon, 22 Jun 2009)
New Revision: 16105
Added:
trunk/as/plugins/org.jboss.ide.eclipse.as.wtp.override.ui/schema/
trunk/as/plugins/org.jboss.ide.eclipse.as.wtp.override.ui/schema/moduleDependencyPropertyPage.exsd
trunk/as/plugins/org.jboss.ide.eclipse.as.wtp.override.ui/src/org/jboss/ide/eclipse/as/wtp/override/ui/propertypage/DependencyPageExtensionManager.java
trunk/as/plugins/org.jboss.ide.eclipse.as.wtp.override.ui/src/org/jboss/ide/eclipse/as/wtp/override/ui/propertypage/IDependencyPageProvider.java
trunk/as/plugins/org.jboss.ide.eclipse.as.wtp.override.ui/src/org/jboss/ide/eclipse/as/wtp/override/ui/propertypage/IModuleDependenciesControl.java
trunk/as/plugins/org.jboss.ide.eclipse.as.wtp.override.ui/src/org/jboss/ide/eclipse/as/wtp/override/ui/propertypage/impl/
trunk/as/plugins/org.jboss.ide.eclipse.as.wtp.override.ui/src/org/jboss/ide/eclipse/as/wtp/override/ui/propertypage/impl/EarModuleDependenciesPropertyPage.java
trunk/as/plugins/org.jboss.ide.eclipse.as.wtp.override.ui/src/org/jboss/ide/eclipse/as/wtp/override/ui/propertypage/impl/EarModuleDependencyPageProvider.java
Removed:
trunk/as/plugins/org.jboss.ide.eclipse.as.wtp.override.ui/src/org/jboss/ide/eclipse/as/wtp/override/ui/propertypage/EarModuleDependenciesPropertyPage.java
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.wtp.override.ui/plugin.xml
trunk/as/plugins/org.jboss.ide.eclipse.as.wtp.override.ui/src/org/jboss/ide/eclipse/as/wtp/override/ui/propertypage/AddModuleDependenciesPropertiesPage.java
trunk/as/plugins/org.jboss.ide.eclipse.as.wtp.override.ui/src/org/jboss/ide/eclipse/as/wtp/override/ui/propertypage/ComponentDependencyContentProvider.java
trunk/as/plugins/org.jboss.ide.eclipse.as.wtp.override.ui/src/org/jboss/ide/eclipse/as/wtp/override/ui/propertypage/J2EEDependenciesPage.java
Log:
Changes to the main page to allow ESB to at least show this page for testing. Added an
extension point to allow subclassing while having sane reference-providing defaults.
Modified: trunk/as/plugins/org.jboss.ide.eclipse.as.wtp.override.ui/plugin.xml
===================================================================
--- trunk/as/plugins/org.jboss.ide.eclipse.as.wtp.override.ui/plugin.xml 2009-06-22
06:39:57 UTC (rev 16104)
+++ trunk/as/plugins/org.jboss.ide.eclipse.as.wtp.override.ui/plugin.xml 2009-06-22
06:50:49 UTC (rev 16105)
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>
+ <extension-point id="moduleDependencyPropertyPage"
name="org.jboss.ide.eclipse.as.wtp.override.moduleDependencyPropertyPage"
schema="schema/moduleDependencyPropertyPage.exsd"/>
<extension point="org.eclipse.ui.propertyPages">
@@ -8,36 +9,23 @@
<page
adaptable="true"
objectClass="org.eclipse.core.resources.IProject"
- name="JEE Module Dependencies (JBT Beta)"
+ name="Module Dependencies (JBT)"
class="org.jboss.ide.eclipse.as.wtp.override.ui.propertypage.J2EEDependenciesPage"
id="org.jboss.ide.eclipse.as.wtp.override.ui.J2EEDependenciesPage">
<enabledWhen>
<and>
<adapt
type="org.eclipse.core.resources.IProject">
- <or>
- <test forcePluginActivation="true"
- property="org.eclipse.wst.common.project.facet.core.projectFacet"
- value="jst.web" />
- <test forcePluginActivation="true"
- property="org.eclipse.wst.common.project.facet.core.projectFacet"
- value="jst.ejb" />
- <test forcePluginActivation="true"
- property="org.eclipse.wst.common.project.facet.core.projectFacet"
- value="jst.utility" />
- <test forcePluginActivation="true"
- property="org.eclipse.wst.common.project.facet.core.projectFacet"
- value="jst.ear" />
- <test forcePluginActivation="true"
- property="org.eclipse.wst.common.project.facet.core.projectFacet"
- value="jst.appclient" />
- <test forcePluginActivation="true"
- property="org.eclipse.wst.common.project.facet.core.projectFacet"
- value="jst.connector" />
- </or>
</adapt>
</and>
</enabledWhen>
</page>
</extension>
+ <extension
+
point="org.jboss.ide.eclipse.as.wtp.override.ui.moduleDependencyPropertyPage">
+ <dependencyPage
+
class="org.jboss.ide.eclipse.as.wtp.override.ui.propertypage.impl.EarModuleDependencyPageProvider"
+
id="org.jboss.ide.eclipse.as.wtp.override.ui.earDependencyPage">
+ </dependencyPage>
+ </extension>
</plugin>
Added:
trunk/as/plugins/org.jboss.ide.eclipse.as.wtp.override.ui/schema/moduleDependencyPropertyPage.exsd
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.wtp.override.ui/schema/moduleDependencyPropertyPage.exsd
(rev 0)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.wtp.override.ui/schema/moduleDependencyPropertyPage.exsd 2009-06-22
06:50:49 UTC (rev 16105)
@@ -0,0 +1,109 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.jboss.ide.eclipse.as.wtp.override.ui"
xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+ <appinfo>
+ <meta.schema plugin="org.jboss.ide.eclipse.as.wtp.override.ui"
id="moduleDependencyPropertyPage"
name="org.jboss.ide.eclipse.as.wtp.override.moduleDependencyPropertyPage"/>
+ </appinfo>
+ <documentation>
+ [Enter description of this extension point.]
+ </documentation>
+ </annotation>
+
+ <element name="extension">
+ <annotation>
+ <appinfo>
+ <meta.element />
+ </appinfo>
+ </annotation>
+ <complexType>
+ <sequence minOccurs="1" maxOccurs="unbounded">
+ <element ref="dependencyPage"/>
+ </sequence>
+ <attribute name="point" type="string"
use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="id" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="name" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appinfo>
+ <meta.attribute translatable="true"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="dependencyPage">
+ <complexType>
+ <attribute name="id" type="string"
use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="class" type="string"
use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appinfo>
+ <meta.attribute kind="java"
basedOn=":org.jboss.ide.eclipse.as.wtp.override.ui.propertypage.IDependencyPageProvider"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="since"/>
+ </appinfo>
+ <documentation>
+ [Enter the first release in which this extension point appears.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="examples"/>
+ </appinfo>
+ <documentation>
+ [Enter extension point usage example here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="apiinfo"/>
+ </appinfo>
+ <documentation>
+ [Enter API information here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="implementation"/>
+ </appinfo>
+ <documentation>
+ [Enter information about supplied implementation of this extension point.]
+ </documentation>
+ </annotation>
+
+
+</schema>
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.wtp.override.ui/src/org/jboss/ide/eclipse/as/wtp/override/ui/propertypage/AddModuleDependenciesPropertiesPage.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.wtp.override.ui/src/org/jboss/ide/eclipse/as/wtp/override/ui/propertypage/AddModuleDependenciesPropertiesPage.java 2009-06-22
06:39:57 UTC (rev 16104)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.wtp.override.ui/src/org/jboss/ide/eclipse/as/wtp/override/ui/propertypage/AddModuleDependenciesPropertiesPage.java 2009-06-22
06:50:49 UTC (rev 16105)
@@ -51,7 +51,6 @@
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.window.Window;
import org.eclipse.jst.j2ee.componentcore.J2EEModuleVirtualArchiveComponent;
-import org.eclipse.jst.j2ee.internal.IJ2EEDependenciesControl;
import org.eclipse.jst.j2ee.internal.ManifestUIResourceHandler;
import org.eclipse.jst.j2ee.internal.plugin.IJ2EEModuleConstants;
import org.eclipse.jst.j2ee.internal.plugin.J2EEUIMessages;
@@ -94,10 +93,16 @@
import org.eclipse.wst.common.frameworks.datamodel.IDataModelOperation;
import org.eclipse.wst.common.frameworks.datamodel.IDataModelProvider;
-public abstract class AddModuleDependenciesPropertiesPage implements Listener,
- IJ2EEDependenciesControl {
+public class AddModuleDependenciesPropertiesPage implements Listener,
+ IModuleDependenciesControl {
+ private static final String REFERENCE_PROPERTY = new Integer(0).toString();
+ private static final String DEPLOY_PATH_PROPERTY = new Integer(1).toString();
+ private static final String SOURCE_PROPERTY = new Integer(2).toString();
+
+
protected final String PATH_SEPARATOR =
ComponentDependencyContentProvider.PATH_SEPARATOR;
+ private boolean hasInitialized = false;
protected final IProject project;
protected final J2EEDependenciesPage propPage;
protected IVirtualComponent rootComponent = null;
@@ -118,11 +123,6 @@
// This should keep a list of all elements currently in the list (not removed)
protected HashMap<Object, String> objectToRuntimePath = new HashMap<Object,
String>();
- // [Bug 238264] the cached list elements that are new and need to be
- // manually added to the viewer
- // Can be an IProject or IVirtualComponent
- protected ArrayList<Object> addedElements = new ArrayList<Object>();
-
/**
* Constructor for AddModulestoEARPropertiesControl.
*/
@@ -354,11 +354,12 @@
}
protected void addDoubleClickListener() {
- availableComponentsViewer.setColumnProperties(new String[] { "a",
"b",
- "c" });
+ availableComponentsViewer.setColumnProperties(new String[] {
+ REFERENCE_PROPERTY, DEPLOY_PATH_PROPERTY, SOURCE_PROPERTY
+ });
CellEditor[] editors = new CellEditor[] { new TextCellEditor(),
- new TextCellEditor(),
- new TextCellEditor(availableComponentsViewer.getTable()) };
+ new TextCellEditor(availableComponentsViewer.getTable()),
+ new TextCellEditor()};
availableComponentsViewer.setCellEditors(editors);
availableComponentsViewer
.setCellModifier(new RuntimePathCellModifier());
@@ -385,10 +386,7 @@
private class RuntimePathCellModifier implements ICellModifier {
public boolean canModify(Object element, String property) {
- int columnIndex = Arrays.asList(
- availableComponentsViewer.getColumnProperties()).indexOf(
- property);
- if (columnIndex == 2) {
+ if( property.equals(DEPLOY_PATH_PROPERTY)) {
if (element instanceof VirtualArchiveComponent) {
try {
boolean sameProject = ((VirtualArchiveComponent) element)
@@ -413,10 +411,10 @@
}
public void modify(Object element, String property, Object value) {
- if (element instanceof TableItem) {
+ if (property.equals(DEPLOY_PATH_PROPERTY)) {
TableItem item = (TableItem) element;
- item.setText(2, (String) value);
objectToRuntimePath.put(item.getData(), (String) value);
+ refresh();
}
}
@@ -442,7 +440,6 @@
IProject selected = (IProject) d.getFirstResult();
Object selected2 = ModuleCoreNature.isFlexibleProject(selected) ?
ComponentCore.createComponent(selected) : selected;
- addedElements.add(selected2);
objectToRuntimePath.put(selected2, "/");
refresh();
TableItem[] items = availableComponentsViewer.getTable().getItems();
@@ -547,7 +544,6 @@
// also force check it
if (!refAlreadyExists) {
this.objectToRuntimePath.put(archive, new Path("/").toString());
- this.addedElements.add(archive);
availableComponentsViewer.add(archive);
TableItem[] items = availableComponentsViewer.getTable().getItems();
for (int i = 0; i < items.length; i++) {
@@ -636,17 +632,17 @@
// table columns
TableColumn fileNameColumn = new TableColumn(table, SWT.NONE, 0);
- fileNameColumn.setText(ManifestUIResourceHandler.JAR_Module_UI_);
+ fileNameColumn.setText("Reference");
fileNameColumn.setResizable(true);
- TableColumn projectColumn = new TableColumn(table, SWT.NONE, 1);
- projectColumn.setText(ManifestUIResourceHandler.Project_UI_);
- projectColumn.setResizable(true);
-
- TableColumn bndColumn = new TableColumn(table, SWT.NONE, 2);
- bndColumn.setText(ManifestUIResourceHandler.Packed_In_Lib_UI_);
+ TableColumn bndColumn = new TableColumn(table, SWT.NONE, 1);
+ bndColumn.setText("Deploy Path");
bndColumn.setResizable(true);
+ TableColumn projectColumn = new TableColumn(table, SWT.NONE, 2);
+ projectColumn.setText("Source");
+ projectColumn.setResizable(true);
+
tableLayout.layout(table, true);
return availableComponentsViewer;
@@ -682,8 +678,6 @@
}
- private boolean hasInitialized = false;
-
/**
* This should only be called on changes, such as adding a project
* reference, adding a lib reference etc.
@@ -759,12 +753,14 @@
* This is where the OK work goes. Lots of it. Watch your head.
* xiao xin
*/
-
-
-
- protected abstract boolean preHandleChanges(IProgressMonitor monitor);
- protected abstract boolean postHandleChanges(IProgressMonitor monitor);
+ protected boolean preHandleChanges(IProgressMonitor monitor) {
+ return true;
+ }
+ protected boolean postHandleChanges(IProgressMonitor monitor) {
+ return true;
+ }
+
public boolean performOk() {
// grab what's checked
ArrayList<Object> checked = new ArrayList<Object>();
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.wtp.override.ui/src/org/jboss/ide/eclipse/as/wtp/override/ui/propertypage/ComponentDependencyContentProvider.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.wtp.override.ui/src/org/jboss/ide/eclipse/as/wtp/override/ui/propertypage/ComponentDependencyContentProvider.java 2009-06-22
06:39:57 UTC (rev 16104)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.wtp.override.ui/src/org/jboss/ide/eclipse/as/wtp/override/ui/propertypage/ComponentDependencyContentProvider.java 2009-06-22
06:50:49 UTC (rev 16105)
@@ -17,7 +17,6 @@
import org.eclipse.core.resources.IWorkspaceRoot;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
-import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.jface.viewers.LabelProvider;
@@ -52,7 +51,7 @@
Object[] empty = new Object[0];
if( !(inputElement instanceof IWorkspaceRoot))
return empty;
- return runtimePaths.keySet().toArray();
+ return runtimePaths.keySet().toArray();
}
public Image getColumnImage(Object element, int columnIndex) {
@@ -65,15 +64,15 @@
if( columnIndex == 0 ){
return comp.getName();
} else if (columnIndex == 1) {
- return comp.getProject().getName();
- } else if (columnIndex == 2) {
if( runtimePaths == null || runtimePaths.get(element) == null) {
return new Path(PATH_SEPARATOR).toString();
}
return runtimePaths.get(element);
+ } else if (columnIndex == 2) {
+ return comp.getProject().getName();
}
} else if (element instanceof IProject){
- if (columnIndex != 2) {
+ if (columnIndex != 1) {
return ((IProject)element).getName();
} else {
if( runtimePaths == null || runtimePaths.get(element) == null) {
@@ -81,7 +80,7 @@
}
return runtimePaths.get(element);
}
- }
+ }
return null;
}
Added:
trunk/as/plugins/org.jboss.ide.eclipse.as.wtp.override.ui/src/org/jboss/ide/eclipse/as/wtp/override/ui/propertypage/DependencyPageExtensionManager.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.wtp.override.ui/src/org/jboss/ide/eclipse/as/wtp/override/ui/propertypage/DependencyPageExtensionManager.java
(rev 0)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.wtp.override.ui/src/org/jboss/ide/eclipse/as/wtp/override/ui/propertypage/DependencyPageExtensionManager.java 2009-06-22
06:50:49 UTC (rev 16105)
@@ -0,0 +1,50 @@
+package org.jboss.ide.eclipse.as.wtp.override.ui.propertypage;
+
+import java.util.HashMap;
+import java.util.Iterator;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtensionRegistry;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.wst.common.project.facet.core.IFacetedProject;
+import org.jboss.ide.eclipse.as.wtp.override.ui.WTPOveridePlugin;
+
+public class DependencyPageExtensionManager {
+ private static DependencyPageExtensionManager manager = null;
+ public static DependencyPageExtensionManager getManager() {
+ if( manager == null )
+ manager = new DependencyPageExtensionManager();
+ return manager;
+ }
+
+ private HashMap<String, IDependencyPageProvider> providers = null;
+
+ public IDependencyPageProvider getProvider(IFacetedProject project) {
+ if( providers == null )
+ loadProviders();
+ Iterator<IDependencyPageProvider> i = providers.values().iterator();
+ IDependencyPageProvider temp;
+ while(i.hasNext()) {
+ temp = i.next();
+ if( temp.canHandle(project))
+ return temp;
+ }
+ return null;
+ }
+
+ private void loadProviders() {
+ HashMap<String, IDependencyPageProvider> temp = new HashMap<String,
IDependencyPageProvider>();
+ IExtensionRegistry registry = Platform.getExtensionRegistry();
+ IConfigurationElement[] cf = registry.getConfigurationElementsFor(
+ WTPOveridePlugin.PLUGIN_ID, "moduleDependencyPropertyPage");
+ for( int i = 0; i < cf.length; i++ ) {
+ try {
+ temp.put(cf[i].getAttribute("id"), //$NON-NLS-1$
+ (IDependencyPageProvider)cf[i].createExecutableExtension("class"));
//$NON-NLS-1$
+ } catch( CoreException ce ) {}
+ }
+ providers = temp;
+ }
+
+}
Deleted:
trunk/as/plugins/org.jboss.ide.eclipse.as.wtp.override.ui/src/org/jboss/ide/eclipse/as/wtp/override/ui/propertypage/EarModuleDependenciesPropertyPage.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.wtp.override.ui/src/org/jboss/ide/eclipse/as/wtp/override/ui/propertypage/EarModuleDependenciesPropertyPage.java 2009-06-22
06:39:57 UTC (rev 16104)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.wtp.override.ui/src/org/jboss/ide/eclipse/as/wtp/override/ui/propertypage/EarModuleDependenciesPropertyPage.java 2009-06-22
06:50:49 UTC (rev 16105)
@@ -1,196 +0,0 @@
-package org.jboss.ide.eclipse.as.wtp.override.ui.propertypage;
-
-import java.util.ArrayList;
-import java.util.Set;
-
-import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.jface.dialogs.Dialog;
-import org.eclipse.jface.dialogs.MessageDialog;
-import
org.eclipse.jst.j2ee.application.internal.operations.AddComponentToEnterpriseApplicationDataModelProvider;
-import
org.eclipse.jst.j2ee.application.internal.operations.RemoveComponentFromEnterpriseApplicationDataModelProvider;
-import org.eclipse.jst.j2ee.internal.J2EEConstants;
-import org.eclipse.jst.j2ee.internal.J2EEVersionConstants;
-import org.eclipse.jst.j2ee.internal.common.classpath.J2EEComponentClasspathUpdater;
-import org.eclipse.jst.j2ee.internal.dialogs.ChangeLibDirDialog;
-import org.eclipse.jst.j2ee.internal.plugin.J2EEUIMessages;
-import org.eclipse.jst.j2ee.internal.plugin.J2EEUIPlugin;
-import org.eclipse.jst.j2ee.model.IEARModelProvider;
-import org.eclipse.jst.j2ee.model.ModelProviderManager;
-import org.eclipse.jst.j2ee.project.EarUtilities;
-import org.eclipse.jst.j2ee.project.JavaEEProjectUtilities;
-import org.eclipse.jst.j2ee.project.facet.EarFacetRuntimeHandler;
-import org.eclipse.jst.javaee.application.Application;
-import org.eclipse.jst.jee.project.facet.EarCreateDeploymentFilesDataModelProvider;
-import org.eclipse.jst.jee.project.facet.ICreateDeploymentFilesDataModelProperties;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
-import org.eclipse.wst.common.componentcore.resources.IVirtualFile;
-import org.eclipse.wst.common.frameworks.datamodel.DataModelFactory;
-import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
-import org.eclipse.wst.common.frameworks.datamodel.IDataModelOperation;
-import org.eclipse.wst.common.frameworks.datamodel.IDataModelProvider;
-import org.eclipse.wst.common.project.facet.core.IFacetedProject;
-import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
-import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager;
-
-public class EarModuleDependenciesPropertyPage extends
- AddModuleDependenciesPropertiesPage {
- protected Button changeLibPathButton;
- protected String libDir = null;
- protected String oldLibDir;
- protected boolean isVersion5;
- public EarModuleDependenciesPropertyPage(IProject project,
- J2EEDependenciesPage page) {
- super(project, page);
- initMemberVariables();
- }
-
- protected void initMemberVariables() {
- boolean hasEE5Facet = false;
- try {
- IFacetedProject facetedProject = ProjectFacetsManager.create(project);
- if(facetedProject != null){
- IProjectFacetVersion facetVersion =
facetedProject.getProjectFacetVersion(EarUtilities.ENTERPRISE_APPLICATION_FACET);
- if(facetVersion.equals(EarUtilities.ENTERPRISE_APPLICATION_50)){
- hasEE5Facet = true;
- }
- }
- } catch (CoreException e) {
- J2EEUIPlugin.logError(e);
- }
-
- if(hasEE5Facet){
- String earDDVersion = JavaEEProjectUtilities.getJ2EEDDProjectVersion(project);
- if (earDDVersion.equals(J2EEVersionConstants.VERSION_5_0_TEXT)) {
- isVersion5 = true;
- Application app =
(Application)ModelProviderManager.getModelProvider(project).getModelObject();
- if (app != null)
- oldLibDir = app.getLibraryDirectory();
- if (oldLibDir == null) oldLibDir = J2EEConstants.EAR_DEFAULT_LIB_DIR;
- libDir = oldLibDir;
- }
- }
- }
-
- protected void createPushButtons() {
- super.createPushButtons();
- if (isVersion5)
- changeLibPathButton =
createPushButton(J2EEUIMessages.getResourceString(J2EEUIMessages.CHANGE_LIB_DIR));//$NON-NLS-1$
-
- }
-
- public void handleEvent(Event event) {
- if( event.widget == changeLibPathButton)
- handleChangeLibDirButton(true);
- else
- super.handleEvent(event);
- }
-
-
- private void handleChangeLibDirButton(boolean warnBlank) {
- IVirtualFile vFile = rootComponent.getRootFolder().getFile(new
Path(J2EEConstants.APPLICATION_DD_URI));
- if (!vFile.exists()) {
- if (!MessageDialog.openQuestion(null,
- J2EEUIMessages.getResourceString(J2EEUIMessages.NO_DD_MSG_TITLE),
- J2EEUIMessages.getResourceString(J2EEUIMessages.GEN_DD_QUESTION))) return;
- createDD(new NullProgressMonitor());
- }
- Application app =
(Application)ModelProviderManager.getModelProvider(project).getModelObject();
- if (libDir == null) {
- libDir = app.getLibraryDirectory();
- if (libDir == null) libDir = J2EEConstants.EAR_DEFAULT_LIB_DIR;
- }
-
- ChangeLibDirDialog dlg = new
ChangeLibDirDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow()
- .getShell(), libDir, warnBlank);
- if (dlg.open() == Dialog.CANCEL) return;
- libDir = dlg.getValue().trim();
- if (libDir.length() > 0) {
- if (!libDir.startsWith(J2EEConstants.EAR_ROOT_DIR)) libDir = IPath.SEPARATOR +
libDir;
- }
- }
-
- protected void createDD(IProgressMonitor monitor) {
- if( rootComponent != null ){
- IDataModelOperation op = generateEARDDOperation();
- try {
- op.execute(monitor, null);
- } catch (ExecutionException e) {
- J2EEUIPlugin.logError(e);
- }
- }
- }
-
- protected IDataModelOperation generateEARDDOperation() {
- IDataModel model = DataModelFactory.createDataModel(new
EarCreateDeploymentFilesDataModelProvider());
- model.setProperty(ICreateDeploymentFilesDataModelProperties.GENERATE_DD,
rootComponent);
- model.setProperty(ICreateDeploymentFilesDataModelProperties.TARGET_PROJECT, project);
- return model.getDefaultOperation();
- }
-
- private void updateLibDir(IProgressMonitor monitor) {
- if (libDir.equals(oldLibDir)) return;
- final IEARModelProvider earModel =
(IEARModelProvider)ModelProviderManager.getModelProvider(project);
- final Application app =
(Application)ModelProviderManager.getModelProvider(project).getModelObject();
- oldLibDir = app.getLibraryDirectory();
- if (oldLibDir == null) oldLibDir = J2EEConstants.EAR_DEFAULT_LIB_DIR;
- earModel.modify(new Runnable() {
- public void run() {
- app.setLibraryDirectory(libDir);
- }}, null);
- }
-
- public boolean postHandleChanges(IProgressMonitor monitor) {
- return true;
- }
-
- public boolean preHandleChanges(IProgressMonitor monitor) {
- if (isVersion5) {
- if (libDir.length() == 0) {
-
- MessageDialog dlg = new MessageDialog(null,
- J2EEUIMessages.getResourceString(J2EEUIMessages.BLANK_LIB_DIR),
- null,
J2EEUIMessages.getResourceString(J2EEUIMessages.BLANK_LIB_DIR_WARN_QUESTION),
- MessageDialog.QUESTION, new String[] {J2EEUIMessages.YES_BUTTON,
- J2EEUIMessages.NO_BUTTON,
- J2EEUIMessages.CANCEL_BUTTON}, 1);
- switch (dlg.open()) {
- case 0: break;
- case 1: {
- handleChangeLibDirButton(false);
- return false;
- }
- case 2: return false;
- default: return false;
- }
- }
- updateLibDir(monitor);
- }
- return true;
- }
-
- protected void handleRemoved(ArrayList<IVirtualComponent> removed) {
- super.handleRemoved(removed);
- J2EEComponentClasspathUpdater.getInstance().queueUpdateEAR(rootComponent.getProject());
- }
-
- protected IDataModelProvider getRemoveReferenceDataModelProvider(Object component) {
- return new RemoveComponentFromEnterpriseApplicationDataModelProvider();
- }
-
- protected void postAddProjects(Set moduleProjects) throws CoreException {
- EarFacetRuntimeHandler.updateModuleProjectRuntime(rootComponent.getProject(),
moduleProjects, new NullProgressMonitor());
- }
-
- protected IDataModelProvider getAddReferenceDataModelProvider(IVirtualComponent
component) {
- return new AddComponentToEnterpriseApplicationDataModelProvider();
- }
-}
Added:
trunk/as/plugins/org.jboss.ide.eclipse.as.wtp.override.ui/src/org/jboss/ide/eclipse/as/wtp/override/ui/propertypage/IDependencyPageProvider.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.wtp.override.ui/src/org/jboss/ide/eclipse/as/wtp/override/ui/propertypage/IDependencyPageProvider.java
(rev 0)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.wtp.override.ui/src/org/jboss/ide/eclipse/as/wtp/override/ui/propertypage/IDependencyPageProvider.java 2009-06-22
06:50:49 UTC (rev 16105)
@@ -0,0 +1,10 @@
+package org.jboss.ide.eclipse.as.wtp.override.ui.propertypage;
+
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.wst.common.project.facet.core.IFacetedProject;
+
+public interface IDependencyPageProvider {
+ public boolean canHandle(IFacetedProject project);
+ public IModuleDependenciesControl[] createPages(IFacetedProject project,
J2EEDependenciesPage parent);
+ public Composite createRootControl(IModuleDependenciesControl[] pages, Composite
parent);
+}
Added:
trunk/as/plugins/org.jboss.ide.eclipse.as.wtp.override.ui/src/org/jboss/ide/eclipse/as/wtp/override/ui/propertypage/IModuleDependenciesControl.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.wtp.override.ui/src/org/jboss/ide/eclipse/as/wtp/override/ui/propertypage/IModuleDependenciesControl.java
(rev 0)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.wtp.override.ui/src/org/jboss/ide/eclipse/as/wtp/override/ui/propertypage/IModuleDependenciesControl.java 2009-06-22
06:50:49 UTC (rev 16105)
@@ -0,0 +1,42 @@
+package org.jboss.ide.eclipse.as.wtp.override.ui.propertypage;
+
+import org.eclipse.swt.widgets.Composite;
+
+public interface IModuleDependenciesControl {
+ /**
+ * Creates the Composite associated with this control.
+ * @param parent Parent Composite.
+ * @return Composite for the control.
+ */
+ Composite createContents(Composite parent);
+
+ /**
+ * Called when the property page's <code>performOk()</code> method is
called.
+ * @return
+ */
+ boolean performOk();
+
+ /**
+ * Called when the property page's <code>performDefaults()</code> method
is called.
+ * @return
+ */
+ void performDefaults();
+
+ /**
+ * Called when the property page's <code>performCancel()</code> method
is called.
+ * @return
+ */
+ boolean performCancel();
+
+ /**
+ * Called when the property page's <code>setVisible()</code> method is
called.
+ * @return
+ */
+ void setVisible(boolean visible);
+
+ /**
+ * Called when the property page's <code>dispose()</code> method is
called.
+ * @return
+ */
+ void dispose();
+}
Modified:
trunk/as/plugins/org.jboss.ide.eclipse.as.wtp.override.ui/src/org/jboss/ide/eclipse/as/wtp/override/ui/propertypage/J2EEDependenciesPage.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.wtp.override.ui/src/org/jboss/ide/eclipse/as/wtp/override/ui/propertypage/J2EEDependenciesPage.java 2009-06-22
06:39:57 UTC (rev 16104)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.wtp.override.ui/src/org/jboss/ide/eclipse/as/wtp/override/ui/propertypage/J2EEDependenciesPage.java 2009-06-22
06:50:49 UTC (rev 16105)
@@ -15,50 +15,47 @@
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
-import org.eclipse.jst.j2ee.internal.IJ2EEDependenciesControl;
-import org.eclipse.jst.j2ee.internal.JARDependencyPropertiesPage;
-import org.eclipse.jst.j2ee.internal.ManifestUIResourceHandler;
-import org.eclipse.jst.j2ee.internal.WebLibDependencyPropertiesPage;
-import org.eclipse.jst.j2ee.internal.WebRefDependencyPropertiesPage;
-import org.eclipse.jst.j2ee.internal.plugin.J2EEUIMessages;
-import org.eclipse.jst.j2ee.internal.project.J2EEProjectUtilities;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.TabFolder;
-import org.eclipse.swt.widgets.TabItem;
import org.eclipse.swt.widgets.Text;
-import org.eclipse.wst.common.componentcore.internal.util.IModuleConstants;
+import org.eclipse.ui.dialogs.PropertyPage;
import org.eclipse.wst.common.project.facet.core.IFacetedProject;
import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager;
+import
org.jboss.ide.eclipse.as.wtp.override.ui.propertypage.impl.EarModuleDependenciesPropertyPage;
/*
* The only change in this file between here and upstream is
* the method createEARContent
+ *
+ * We'd obviously prefer to remove the extension of the superclass here
+ * but elements in the web ui demand we be a part of that tree for right now
+ * Also we'd switch to depending on IModuleDependenciesControl (local)
*/
/**
* Primary project property page for J2EE dependencies; content is dynamically
* generated based on the project facets and will be comprised by a
* set of IJ2EEDependenciesControl implementations.
+ *
*/
-public class J2EEDependenciesPage extends
org.eclipse.jst.j2ee.internal.J2EEDependenciesPage {
+public class J2EEDependenciesPage extends PropertyPage {
- public String DESCRIPTION = J2EEUIMessages.getResourceString("DESCRIPTION");
//$NON-NLS-1$
+ public String DESCRIPTION = "ModuleDependency Page Description";
private IProject project;
- private IJ2EEDependenciesControl[] controls = new IJ2EEDependenciesControl[0];
+ private IModuleDependenciesControl[] controls = new IModuleDependenciesControl[0];
public J2EEDependenciesPage() {
super();
}
private Composite getFacetErrorComposite(final Composite parent) {
- final String errorCheckingFacet =
ManifestUIResourceHandler.Error_Checking_Project_Facets;
+ final String errorCheckingFacet = "Error Checking Project Facets";
setErrorMessage(errorCheckingFacet);
setValid(false);
return getErrorComposite(parent, errorCheckingFacet);
@@ -76,12 +73,6 @@
return composite;
}
- private Composite getUnreferencedErrorComposite(final Composite parent) {
- final String msg = ManifestUIResourceHandler.Unreferenced_Module_Error;
- setErrorMessage(msg);
- return getErrorComposite(parent, msg);
- }
-
/* (non-Javadoc)
* @see org.eclipse.jface.preference.IPreferencePage#performOk()
*/
@@ -166,20 +157,26 @@
// Need to find out what type of project we are handling
project = (IProject) getElement().getAdapter(IResource.class);
- Control created = null;
- try {
- final IFacetedProject facetedProject = ProjectFacetsManager.create(project);
- if (facetedProject == null) {
- return getFacetErrorComposite(parent);
+ if( project != null ) {
+ try {
+ IFacetedProject facetedProject = ProjectFacetsManager.create(project);
+ IDependencyPageProvider provider = null;
+ if( facetedProject == null )
+ return getFacetErrorComposite(parent);
+
+ provider = DependencyPageExtensionManager.getManager().getProvider(facetedProject);
+ if( provider != null ) {
+ controls = provider.createPages(facetedProject, this);
+ return provider.createRootControl(controls, parent);
+ }
+ AddModuleDependenciesPropertiesPage page = new
AddModuleDependenciesPropertiesPage(project, this);
+ controls = new IModuleDependenciesControl[1];
+ controls[0] = page;
+ return page.createContents(parent);
+ } catch( CoreException ce ) {
}
- created = createContents2(parent, facetedProject);
- } catch (CoreException ce) {
- return getFacetErrorComposite(parent);
}
-
- if( created == null )
- return createNonEARContent(parent);
- return created;
+ return getFacetErrorComposite(parent);
}
/*
@@ -187,14 +184,13 @@
* This is the area that needs to be extended.
*/
protected Control createContents2(Composite parent, IFacetedProject facetedProject) {
-
- boolean isEAR =
facetedProject.hasProjectFacet(ProjectFacetsManager.getProjectFacet(IModuleConstants.JST_EAR_MODULE));
- boolean isWEB =
facetedProject.hasProjectFacet(ProjectFacetsManager.getProjectFacet(IModuleConstants.JST_WEB_MODULE));
- if (isEAR) {
- return createEARContent(parent);
- } else if (isWEB) {
- return createWebContent(parent);
- }
+// boolean isEAR =
facetedProject.hasProjectFacet(ProjectFacetsManager.getProjectFacet(IModuleConstants.JST_EAR_MODULE));
+// boolean isWEB =
facetedProject.hasProjectFacet(ProjectFacetsManager.getProjectFacet(IModuleConstants.JST_WEB_MODULE));
+// if (isEAR) {
+// return createEARContent(parent);
+// } else if (isWEB) {
+// return createWebContent(parent);
+// }
return null;
}
@@ -205,57 +201,57 @@
private Composite createEARContent(final Composite parent) {
//AddModuleDependenciesPropertiesPage page = new
AddModuleDependenciesPropertiesPage(project, this);
EarModuleDependenciesPropertyPage page = new EarModuleDependenciesPropertyPage(project,
this);
- controls = new IJ2EEDependenciesControl[1];
+ controls = new IModuleDependenciesControl[1];
controls[0] = page;
return page.createContents(parent);
}
- private Composite createWebContent(final Composite parent) {
- final boolean standalone = J2EEProjectUtilities.isStandaloneProject(project);
-
- if (standalone) {
- // only need to create the Web Libraries page
- controls = new IJ2EEDependenciesControl[1];
- controls[0] = new WebLibDependencyPropertiesPage(project, this);
- return controls[0].createContents(parent);
- } else {
- // Create a tabbed folder with both "J2EE Modules" and "Web
Libraries"
- final TabFolder folder = new TabFolder(parent, SWT.LEFT);
- folder.setLayoutData(new GridData(GridData.FILL_BOTH));
- folder.setFont(parent.getFont());
-
- // Create the two tabs
- controls = new IJ2EEDependenciesControl[2];
-
- controls[0] = new JARDependencyPropertiesPage(project, this);
- TabItem tab = new TabItem(folder, SWT.NONE);
- tab.setControl(controls[0].createContents(folder));
- tab.setText(ManifestUIResourceHandler.J2EE_Modules);
- controls[1] = new WebLibDependencyPropertiesPage(project, this);
- tab = new TabItem(folder, SWT.NONE);
- tab.setControl(controls[1].createContents(folder));
- tab.setText(ManifestUIResourceHandler.Web_Libraries);
-
- folder.setSelection(0);
- return folder;
- }
- }
-
- private Composite createNonEARContent(final Composite parent) {
- controls = new IJ2EEDependenciesControl[1];
- final boolean standalone = J2EEProjectUtilities.isStandaloneProject(project);
- if (standalone) {
- // if not referenced by an EAR, check if referenced by a dynamic web project
- if (J2EEProjectUtilities.getReferencingWebProjects(project).length > 0) {
- controls[0] = new WebRefDependencyPropertiesPage(project, this);
- } else {
- return getUnreferencedErrorComposite(parent);
- }
- } else {
- controls[0] = new JARDependencyPropertiesPage(project, this);
- }
-
- return controls[0].createContents(parent);
- }
-
+// private Composite createWebContent(final Composite parent) {
+// final boolean standalone = J2EEProjectUtilities.isStandaloneProject(project);
+//
+// if (standalone) {
+// // only need to create the Web Libraries page
+// controls = new IJ2EEDependenciesControl[1];
+// controls[0] = new WebLibDependencyPropertiesPage(project, this);
+// return controls[0].createContents(parent);
+// } else {
+// // Create a tabbed folder with both "J2EE Modules" and "Web
Libraries"
+// final TabFolder folder = new TabFolder(parent, SWT.LEFT);
+// folder.setLayoutData(new GridData(GridData.FILL_BOTH));
+// folder.setFont(parent.getFont());
+//
+// // Create the two tabs
+// controls = new IJ2EEDependenciesControl[2];
+//
+// controls[0] = new JARDependencyPropertiesPage(project, this);
+// TabItem tab = new TabItem(folder, SWT.NONE);
+// tab.setControl(controls[0].createContents(folder));
+// tab.setText(ManifestUIResourceHandler.J2EE_Modules);
+// controls[1] = new WebLibDependencyPropertiesPage(project, this);
+// tab = new TabItem(folder, SWT.NONE);
+// tab.setControl(controls[1].createContents(folder));
+// tab.setText(ManifestUIResourceHandler.Web_Libraries);
+//
+// folder.setSelection(0);
+// return folder;
+// }
+// }
+//
+// private Composite createNonEARContent(final Composite parent) {
+// controls = new IJ2EEDependenciesControl[1];
+// final boolean standalone = J2EEProjectUtilities.isStandaloneProject(project);
+// if (standalone) {
+// // if not referenced by an EAR, check if referenced by a dynamic web project
+// if (J2EEProjectUtilities.getReferencingWebProjects(project).length > 0) {
+// controls[0] = new WebRefDependencyPropertiesPage(project, this);
+// } else {
+// return getUnreferencedErrorComposite(parent);
+// }
+// } else {
+// controls[0] = new JARDependencyPropertiesPage(project, this);
+// }
+//
+// return controls[0].createContents(parent);
+// }
+//
}
Copied:
trunk/as/plugins/org.jboss.ide.eclipse.as.wtp.override.ui/src/org/jboss/ide/eclipse/as/wtp/override/ui/propertypage/impl/EarModuleDependenciesPropertyPage.java
(from rev 16039,
trunk/as/plugins/org.jboss.ide.eclipse.as.wtp.override.ui/src/org/jboss/ide/eclipse/as/wtp/override/ui/propertypage/EarModuleDependenciesPropertyPage.java)
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.wtp.override.ui/src/org/jboss/ide/eclipse/as/wtp/override/ui/propertypage/impl/EarModuleDependenciesPropertyPage.java
(rev 0)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.wtp.override.ui/src/org/jboss/ide/eclipse/as/wtp/override/ui/propertypage/impl/EarModuleDependenciesPropertyPage.java 2009-06-22
06:50:49 UTC (rev 16105)
@@ -0,0 +1,198 @@
+package org.jboss.ide.eclipse.as.wtp.override.ui.propertypage.impl;
+
+import java.util.ArrayList;
+import java.util.Set;
+
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.dialogs.MessageDialog;
+import
org.eclipse.jst.j2ee.application.internal.operations.AddComponentToEnterpriseApplicationDataModelProvider;
+import
org.eclipse.jst.j2ee.application.internal.operations.RemoveComponentFromEnterpriseApplicationDataModelProvider;
+import org.eclipse.jst.j2ee.internal.J2EEConstants;
+import org.eclipse.jst.j2ee.internal.J2EEVersionConstants;
+import org.eclipse.jst.j2ee.internal.common.classpath.J2EEComponentClasspathUpdater;
+import org.eclipse.jst.j2ee.internal.dialogs.ChangeLibDirDialog;
+import org.eclipse.jst.j2ee.internal.plugin.J2EEUIMessages;
+import org.eclipse.jst.j2ee.internal.plugin.J2EEUIPlugin;
+import org.eclipse.jst.j2ee.model.IEARModelProvider;
+import org.eclipse.jst.j2ee.model.ModelProviderManager;
+import org.eclipse.jst.j2ee.project.EarUtilities;
+import org.eclipse.jst.j2ee.project.JavaEEProjectUtilities;
+import org.eclipse.jst.j2ee.project.facet.EarFacetRuntimeHandler;
+import org.eclipse.jst.javaee.application.Application;
+import org.eclipse.jst.jee.project.facet.EarCreateDeploymentFilesDataModelProvider;
+import org.eclipse.jst.jee.project.facet.ICreateDeploymentFilesDataModelProperties;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
+import org.eclipse.wst.common.componentcore.resources.IVirtualFile;
+import org.eclipse.wst.common.frameworks.datamodel.DataModelFactory;
+import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
+import org.eclipse.wst.common.frameworks.datamodel.IDataModelOperation;
+import org.eclipse.wst.common.frameworks.datamodel.IDataModelProvider;
+import org.eclipse.wst.common.project.facet.core.IFacetedProject;
+import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
+import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager;
+import
org.jboss.ide.eclipse.as.wtp.override.ui.propertypage.AddModuleDependenciesPropertiesPage;
+import org.jboss.ide.eclipse.as.wtp.override.ui.propertypage.J2EEDependenciesPage;
+
+public class EarModuleDependenciesPropertyPage extends
+ AddModuleDependenciesPropertiesPage {
+ protected Button changeLibPathButton;
+ protected String libDir = null;
+ protected String oldLibDir;
+ protected boolean isVersion5;
+ public EarModuleDependenciesPropertyPage(IProject project,
+ J2EEDependenciesPage page) {
+ super(project, page);
+ initMemberVariables();
+ }
+
+ protected void initMemberVariables() {
+ boolean hasEE5Facet = false;
+ try {
+ IFacetedProject facetedProject = ProjectFacetsManager.create(project);
+ if(facetedProject != null){
+ IProjectFacetVersion facetVersion =
facetedProject.getProjectFacetVersion(EarUtilities.ENTERPRISE_APPLICATION_FACET);
+ if(facetVersion.equals(EarUtilities.ENTERPRISE_APPLICATION_50)){
+ hasEE5Facet = true;
+ }
+ }
+ } catch (CoreException e) {
+ J2EEUIPlugin.logError(e);
+ }
+
+ if(hasEE5Facet){
+ String earDDVersion = JavaEEProjectUtilities.getJ2EEDDProjectVersion(project);
+ if (earDDVersion.equals(J2EEVersionConstants.VERSION_5_0_TEXT)) {
+ isVersion5 = true;
+ Application app =
(Application)ModelProviderManager.getModelProvider(project).getModelObject();
+ if (app != null)
+ oldLibDir = app.getLibraryDirectory();
+ if (oldLibDir == null) oldLibDir = J2EEConstants.EAR_DEFAULT_LIB_DIR;
+ libDir = oldLibDir;
+ }
+ }
+ }
+
+ protected void createPushButtons() {
+ super.createPushButtons();
+ if (isVersion5)
+ changeLibPathButton =
createPushButton(J2EEUIMessages.getResourceString(J2EEUIMessages.CHANGE_LIB_DIR));//$NON-NLS-1$
+
+ }
+
+ public void handleEvent(Event event) {
+ if( event.widget == changeLibPathButton)
+ handleChangeLibDirButton(true);
+ else
+ super.handleEvent(event);
+ }
+
+
+ private void handleChangeLibDirButton(boolean warnBlank) {
+ IVirtualFile vFile = rootComponent.getRootFolder().getFile(new
Path(J2EEConstants.APPLICATION_DD_URI));
+ if (!vFile.exists()) {
+ if (!MessageDialog.openQuestion(null,
+ J2EEUIMessages.getResourceString(J2EEUIMessages.NO_DD_MSG_TITLE),
+ J2EEUIMessages.getResourceString(J2EEUIMessages.GEN_DD_QUESTION))) return;
+ createDD(new NullProgressMonitor());
+ }
+ Application app =
(Application)ModelProviderManager.getModelProvider(project).getModelObject();
+ if (libDir == null) {
+ libDir = app.getLibraryDirectory();
+ if (libDir == null) libDir = J2EEConstants.EAR_DEFAULT_LIB_DIR;
+ }
+
+ ChangeLibDirDialog dlg = new
ChangeLibDirDialog(PlatformUI.getWorkbench().getActiveWorkbenchWindow()
+ .getShell(), libDir, warnBlank);
+ if (dlg.open() == Dialog.CANCEL) return;
+ libDir = dlg.getValue().trim();
+ if (libDir.length() > 0) {
+ if (!libDir.startsWith(J2EEConstants.EAR_ROOT_DIR)) libDir = IPath.SEPARATOR +
libDir;
+ }
+ }
+
+ protected void createDD(IProgressMonitor monitor) {
+ if( rootComponent != null ){
+ IDataModelOperation op = generateEARDDOperation();
+ try {
+ op.execute(monitor, null);
+ } catch (ExecutionException e) {
+ J2EEUIPlugin.logError(e);
+ }
+ }
+ }
+
+ protected IDataModelOperation generateEARDDOperation() {
+ IDataModel model = DataModelFactory.createDataModel(new
EarCreateDeploymentFilesDataModelProvider());
+ model.setProperty(ICreateDeploymentFilesDataModelProperties.GENERATE_DD,
rootComponent);
+ model.setProperty(ICreateDeploymentFilesDataModelProperties.TARGET_PROJECT, project);
+ return model.getDefaultOperation();
+ }
+
+ private void updateLibDir(IProgressMonitor monitor) {
+ if (libDir.equals(oldLibDir)) return;
+ final IEARModelProvider earModel =
(IEARModelProvider)ModelProviderManager.getModelProvider(project);
+ final Application app =
(Application)ModelProviderManager.getModelProvider(project).getModelObject();
+ oldLibDir = app.getLibraryDirectory();
+ if (oldLibDir == null) oldLibDir = J2EEConstants.EAR_DEFAULT_LIB_DIR;
+ earModel.modify(new Runnable() {
+ public void run() {
+ app.setLibraryDirectory(libDir);
+ }}, null);
+ }
+
+ public boolean postHandleChanges(IProgressMonitor monitor) {
+ return true;
+ }
+
+ public boolean preHandleChanges(IProgressMonitor monitor) {
+ if (isVersion5) {
+ if (libDir.length() == 0) {
+
+ MessageDialog dlg = new MessageDialog(null,
+ J2EEUIMessages.getResourceString(J2EEUIMessages.BLANK_LIB_DIR),
+ null,
J2EEUIMessages.getResourceString(J2EEUIMessages.BLANK_LIB_DIR_WARN_QUESTION),
+ MessageDialog.QUESTION, new String[] {J2EEUIMessages.YES_BUTTON,
+ J2EEUIMessages.NO_BUTTON,
+ J2EEUIMessages.CANCEL_BUTTON}, 1);
+ switch (dlg.open()) {
+ case 0: break;
+ case 1: {
+ handleChangeLibDirButton(false);
+ return false;
+ }
+ case 2: return false;
+ default: return false;
+ }
+ }
+ updateLibDir(monitor);
+ }
+ return true;
+ }
+
+ protected void handleRemoved(ArrayList<IVirtualComponent> removed) {
+ super.handleRemoved(removed);
+ J2EEComponentClasspathUpdater.getInstance().queueUpdateEAR(rootComponent.getProject());
+ }
+
+ protected IDataModelProvider getRemoveReferenceDataModelProvider(Object component) {
+ return new RemoveComponentFromEnterpriseApplicationDataModelProvider();
+ }
+
+ protected void postAddProjects(Set moduleProjects) throws CoreException {
+ EarFacetRuntimeHandler.updateModuleProjectRuntime(rootComponent.getProject(),
moduleProjects, new NullProgressMonitor());
+ }
+
+ protected IDataModelProvider getAddReferenceDataModelProvider(IVirtualComponent
component) {
+ return new AddComponentToEnterpriseApplicationDataModelProvider();
+ }
+}
Added:
trunk/as/plugins/org.jboss.ide.eclipse.as.wtp.override.ui/src/org/jboss/ide/eclipse/as/wtp/override/ui/propertypage/impl/EarModuleDependencyPageProvider.java
===================================================================
---
trunk/as/plugins/org.jboss.ide.eclipse.as.wtp.override.ui/src/org/jboss/ide/eclipse/as/wtp/override/ui/propertypage/impl/EarModuleDependencyPageProvider.java
(rev 0)
+++
trunk/as/plugins/org.jboss.ide.eclipse.as.wtp.override.ui/src/org/jboss/ide/eclipse/as/wtp/override/ui/propertypage/impl/EarModuleDependencyPageProvider.java 2009-06-22
06:50:49 UTC (rev 16105)
@@ -0,0 +1,30 @@
+package org.jboss.ide.eclipse.as.wtp.override.ui.propertypage.impl;
+
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.wst.common.project.facet.core.IFacetedProject;
+import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager;
+import org.jboss.ide.eclipse.as.wtp.override.ui.propertypage.IDependencyPageProvider;
+import org.jboss.ide.eclipse.as.wtp.override.ui.propertypage.IModuleDependenciesControl;
+import org.jboss.ide.eclipse.as.wtp.override.ui.propertypage.J2EEDependenciesPage;
+
+public class EarModuleDependencyPageProvider implements IDependencyPageProvider {
+
+ public boolean canHandle(IFacetedProject project) {
+ boolean isEAR =
project.hasProjectFacet(ProjectFacetsManager.getProjectFacet("jst.ear"));
+ return isEAR;
+ }
+
+ public IModuleDependenciesControl[] createPages(IFacetedProject project,
+ J2EEDependenciesPage parent) {
+ return new IModuleDependenciesControl[] {
+ new EarModuleDependenciesPropertyPage(project.getProject(), parent)
+ };
+ }
+
+ public Composite createRootControl(IModuleDependenciesControl[] pages,
+ Composite parent) {
+ if( pages.length == 1 && pages[0] != null)
+ return pages[0].createContents(parent);
+ return null;
+ }
+}