Author: snjeza
Date: 2009-09-09 20:27:18 -0400 (Wed, 09 Sep 2009)
New Revision: 17509
Added:
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/internal/project/facet/JSFPortletLibraryValidator.java
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/internal/project/facet/PortletLibraryValidator.java
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/libprov/
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/libprov/JSFPortletServerRuntimeLibraryProviderInstallOperation.java
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/libprov/JSFPortletServerRuntimeLibraryProviderInstallOperationConfig.java
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/libprov/JSFPortletServerRuntimeLibraryProviderUninstallOperation.java
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/libprov/JSFPortletbridgeRuntimeLibraryProviderInstallOperation.java
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/libprov/JSFPortletbridgeRuntimeLibraryProviderInstallOperationConfig.java
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/libprov/JSFPortletbridgeRuntimeLibraryProviderUninstallOperation.java
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/libprov/PortletServerRuntimeLibraryProviderInstallOperation.java
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/libprov/PortletServerRuntimeLibraryProviderInstallOperationConfig.java
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/libprov/PortletServerRuntimeLibraryProviderUninstallOperation.java
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/libprov/RuntimeLibraryProviderPropertyTester.java
trunk/portlet/plugins/org.jboss.tools.portlet.ui/src/org/jboss/tools/portlet/ui/internal/libprov/
trunk/portlet/plugins/org.jboss.tools.portlet.ui/src/org/jboss/tools/portlet/ui/internal/libprov/JSFPortletServerRuntimeProviderInstallPanel.java
trunk/portlet/plugins/org.jboss.tools.portlet.ui/src/org/jboss/tools/portlet/ui/internal/libprov/JSFPortletbridgeRuntimeProviderInstallPanel.java
trunk/portlet/plugins/org.jboss.tools.portlet.ui/src/org/jboss/tools/portlet/ui/internal/libprov/PortletServerRuntimeProviderInstallPanel.java
Modified:
trunk/portlet/plugins/org.jboss.tools.portlet.core/META-INF/MANIFEST.MF
trunk/portlet/plugins/org.jboss.tools.portlet.core/plugin.properties
trunk/portlet/plugins/org.jboss.tools.portlet.core/plugin.xml
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/IPortletConstants.java
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/Messages.java
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/internal/PortletRuntimeComponentProvider.java
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/internal/project/facet/JSFPortletFacetInstallDataModelProvider.java
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/internal/project/facet/JSFPortletFacetInstallDelegate.java
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/internal/project/facet/PortletFacetInstallDataModelProvider.java
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/internal/project/facet/PortletFacetInstallDelegate.java
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/internal/project/facet/PortletPostInstallListener.java
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/messages.properties
trunk/portlet/plugins/org.jboss.tools.portlet.ui/META-INF/MANIFEST.MF
trunk/portlet/plugins/org.jboss.tools.portlet.ui/plugin.xml
trunk/portlet/plugins/org.jboss.tools.portlet.ui/src/org/jboss/tools/portlet/ui/Messages.java
trunk/portlet/plugins/org.jboss.tools.portlet.ui/src/org/jboss/tools/portlet/ui/internal/project/facet/JSFPortletFacetInstallPage.java
trunk/portlet/plugins/org.jboss.tools.portlet.ui/src/org/jboss/tools/portlet/ui/internal/project/facet/PortletFacetInstallPage.java
trunk/portlet/plugins/org.jboss.tools.portlet.ui/src/org/jboss/tools/portlet/ui/messages.properties
Log:
https://jira.jboss.org/jira/browse/JBIDE-4689 Integrate Portlet facet with WTP 3.1 Library
Framework
Modified: trunk/portlet/plugins/org.jboss.tools.portlet.core/META-INF/MANIFEST.MF
===================================================================
--- trunk/portlet/plugins/org.jboss.tools.portlet.core/META-INF/MANIFEST.MF 2009-09-09
23:59:43 UTC (rev 17508)
+++ trunk/portlet/plugins/org.jboss.tools.portlet.core/META-INF/MANIFEST.MF 2009-09-10
00:27:18 UTC (rev 17509)
@@ -7,7 +7,7 @@
Bundle-Vendor: %BundleVendor
Require-Bundle: org.eclipse.core.runtime,
org.eclipse.wst.common.project.facet.core,
- org.eclipse.jst.common.project.facet.core,
+ org.eclipse.jst.common.project.facet.core;visibility:=reexport,
org.eclipse.core.resources,
org.eclipse.wst.common.frameworks,
org.eclipse.jst.j2ee,
@@ -24,10 +24,13 @@
org.eclipse.wst.server.core;visibility:=reexport,
org.eclipse.jem.util,
org.jboss.ide.eclipse.as.core;visibility:=reexport,
- org.eclipse.core.commands
+ org.eclipse.core.commands,
+ org.eclipse.core.expressions
Bundle-ActivationPolicy: lazy
Export-Package: org.jboss.tools.portlet.core,
org.jboss.tools.portlet.core.internal,
- org.jboss.tools.portlet.core.internal.project.facet
+ org.jboss.tools.portlet.core.internal.project.facet,
+ org.jboss.tools.portlet.core.libprov,
+ org.jboss.tools.portlet.core.preferences
Bundle-Localization: plugin
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Modified: trunk/portlet/plugins/org.jboss.tools.portlet.core/plugin.properties
===================================================================
--- trunk/portlet/plugins/org.jboss.tools.portlet.core/plugin.properties 2009-09-09
23:59:43 UTC (rev 17508)
+++ trunk/portlet/plugins/org.jboss.tools.portlet.core/plugin.properties 2009-09-10
00:27:18 UTC (rev 17509)
@@ -1,3 +1,12 @@
#Properties file for org.jboss.tools.portlet.core
BundleVendor = JBoss by Red Hat
-BundleName = Portlet Core Plug-in
\ No newline at end of file
+BundleName = Portlet Core Plug-in
+
+noOpLibraryProviderWarning = Library configuration is disabled. Further classpath changes
may be required later.
+noOpLibraryProviderMessage = This facet requires Portlet implementation library to be
present on project classpath. By disabling library configuration, user takes on
responsibility of configuring classpath appropriately via alternate means.
+portletLibraryProviderLabel=Portlet Target Runtime Provider
+
+noOpLibraryJSFPortletProviderWarning = Library configuration is disabled. Further
classpath changes may be required later.
+noOpLibraryJSFPortletProviderMessage = This facet requires JSF Portlet implementation
library to be present on project classpath. By disabling library configuration, user takes
on responsibility of configuring classpath appropriately via alternate means.
+jsfportletLibraryProviderLabel=JSF Portlet Target Runtime Provider
+jsfportletbridgeLibraryProviderLabel=JSF Portletbridge Runtime Provider
Modified: trunk/portlet/plugins/org.jboss.tools.portlet.core/plugin.xml
===================================================================
--- trunk/portlet/plugins/org.jboss.tools.portlet.core/plugin.xml 2009-09-09 23:59:43 UTC
(rev 17508)
+++ trunk/portlet/plugins/org.jboss.tools.portlet.core/plugin.xml 2009-09-10 00:27:18 UTC
(rev 17509)
@@ -309,5 +309,133 @@
point="org.eclipse.core.runtime.preferences">
<initializer
class="org.jboss.tools.portlet.core.preferences.JBossPortletPreferencesInitializer"/>
</extension>
-
+
+ <extension
point="org.eclipse.jst.common.project.facet.core.libraryProviders">
+ <provider id="portlet-user-library-provider"
extends="wtp-user-library-provider">
+ <param name="validator"
value="org.jboss.tools.portlet.core.internal.project.facet.PortletLibraryValidator"/>
+ <param name="validator.param.0"
value="javax.portlet.GenericPortlet"/>
+ <enablement>
+ <with variable="requestingProjectFacet">
+ <test
property="org.eclipse.wst.common.project.facet.core.projectFacet"
value="jboss.portlet" forcePluginActivation="true"/>
+ </with>
+ </enablement>
+ </provider>
+ </extension>
+
+ <extension
point="org.eclipse.jst.common.project.facet.core.libraryProviders">
+ <provider id="portlet-no-op-library-provider"
extends="no-op-library-provider">
+ <param name="message"
value="%noOpLibraryProviderMessage"/>
+ <param name="warning"
value="%noOpLibraryProviderWarning"/>
+ <enablement>
+ <with variable="requestingProjectFacet">
+ <test
property="org.eclipse.wst.common.project.facet.core.projectFacet"
value="jboss.portlet" forcePluginActivation="true"/>
+ </with>
+ </enablement>
+ </provider>
+ </extension>
+
+ <extension
point="org.eclipse.jst.common.project.facet.core.libraryProviders">
+ <provider id="portlet-library-provider">
+ <label>%portletLibraryProviderLabel</label>
+ <priority>500</priority>
+ <action type="INSTALL">
+ <config
class="org.jboss.tools.portlet.core.libprov.PortletServerRuntimeLibraryProviderInstallOperationConfig"/>
+ <operation
class="org.jboss.tools.portlet.core.libprov.PortletServerRuntimeLibraryProviderInstallOperation"/>
+ </action>
+
+ <action type="UNINSTALL">
+ <operation
class="org.jboss.tools.portlet.core.libprov.PortletServerRuntimeLibraryProviderUninstallOperation"/>
+ </action>
+ <enablement>
+ <and>
+ <with variable="requestingProjectFacet">
+ <test
property="org.eclipse.wst.common.project.facet.core.projectFacet"
value="jboss.portlet" forcePluginActivation="true"/>
+ </with>
+ <with variable="context">
+ <test
property="org.jboss.tools.portlet.core.libprov.isPortletRuntime"
forcePluginActivation="true"/>
+ </with>
+ </and>
+ </enablement>
+ </provider>
+ </extension>
+
+ <extension point="org.eclipse.core.expressions.propertyTesters">
+ <propertyTester
+ id="org.jboss.tools.portlet.core.libprov.isPortletRuntime"
+
type="org.eclipse.jst.common.project.facet.core.libprov.EnablementExpressionContext"
+ namespace="org.jboss.tools.portlet.core.libprov"
+ properties="isPortletRuntime,isJSFPortletRuntime"
+
class="org.jboss.tools.portlet.core.libprov.RuntimeLibraryProviderPropertyTester">
+ </propertyTester>
+ </extension>
+
+ <extension
point="org.eclipse.jst.common.project.facet.core.libraryProviders">
+ <provider id="jsfportlet-no-op-library-provider"
extends="no-op-library-provider">
+ <param name="message"
value="%noOpLibraryJSFPortletProviderMessage"/>
+ <param name="warning"
value="%noOpLibraryJSFPortletProviderWarning"/>
+ <enablement>
+ <with variable="requestingProjectFacet">
+ <test
property="org.eclipse.wst.common.project.facet.core.projectFacet"
value="jboss.jsfportlet" forcePluginActivation="true"/>
+ </with>
+ </enablement>
+ </provider>
+ </extension>
+
+ <extension
point="org.eclipse.jst.common.project.facet.core.libraryProviders">
+ <provider id="jsfportlet-user-library-provider"
extends="wtp-user-library-provider">
+ <param name="validator"
value="org.jboss.tools.portlet.core.internal.project.facet.JSFPortletLibraryValidator"/>
+ <param name="validator.param.0"
value="javax.portlet.faces.GenericFacesPortlet"/>
+ <enablement>
+ <with variable="requestingProjectFacet">
+ <test
property="org.eclipse.wst.common.project.facet.core.projectFacet"
value="jboss.jsfportlet" forcePluginActivation="true"/>
+ </with>
+ </enablement>
+ </provider>
+ </extension>
+
+ <extension
point="org.eclipse.jst.common.project.facet.core.libraryProviders">
+ <provider id="jsfportlet-library-provider">
+ <label>%jsfportletLibraryProviderLabel</label>
+ <priority>500</priority>
+ <action type="INSTALL">
+ <config
class="org.jboss.tools.portlet.core.libprov.JSFPortletServerRuntimeLibraryProviderInstallOperationConfig"/>
+ <operation
class="org.jboss.tools.portlet.core.libprov.JSFPortletServerRuntimeLibraryProviderInstallOperation"/>
+ </action>
+
+ <action type="UNINSTALL">
+ <operation
class="org.jboss.tools.portlet.core.libprov.JSFPortletServerRuntimeLibraryProviderUninstallOperation"/>
+ </action>
+ <enablement>
+ <and>
+ <with variable="requestingProjectFacet">
+ <test
property="org.eclipse.wst.common.project.facet.core.projectFacet"
value="jboss.jsfportlet" forcePluginActivation="true"/>
+ </with>
+ <with variable="context">
+ <test
property="org.jboss.tools.portlet.core.libprov.isJSFPortletRuntime"
forcePluginActivation="true"/>
+ </with>
+ </and>
+ </enablement>
+ </provider>
+ </extension>
+
+ <extension
point="org.eclipse.jst.common.project.facet.core.libraryProviders">
+ <provider id="jsfportletbridge-library-provider">
+ <label>%jsfportletbridgeLibraryProviderLabel</label>
+ <priority>500</priority>
+ <action type="INSTALL">
+ <config
class="org.jboss.tools.portlet.core.libprov.JSFPortletbridgeRuntimeLibraryProviderInstallOperationConfig"/>
+ <operation
class="org.jboss.tools.portlet.core.libprov.JSFPortletbridgeRuntimeLibraryProviderInstallOperation"/>
+ </action>
+
+ <action type="UNINSTALL">
+ <operation
class="org.jboss.tools.portlet.core.libprov.JSFPortletbridgeRuntimeLibraryProviderUninstallOperation"/>
+ </action>
+ <enablement>
+ <with variable="requestingProjectFacet">
+ <test
property="org.eclipse.wst.common.project.facet.core.projectFacet"
value="jboss.jsfportlet" forcePluginActivation="true"/>
+ </with>
+ </enablement>
+ </provider>
+ </extension>
+
</plugin>
Modified:
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/IPortletConstants.java
===================================================================
---
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/IPortletConstants.java 2009-09-09
23:59:43 UTC (rev 17508)
+++
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/IPortletConstants.java 2009-09-10
00:27:18 UTC (rev 17509)
@@ -96,4 +96,14 @@
static final String PORTLET_SAR_LIB =
"deploy/jboss-portal.sar/portal-identity.sar/portal-identity.war/WEB-INF/lib";
//$NON-NLS-1$
static final String PORTLET_SAR_HA_LIB =
"deploy/jboss-portal-ha.sar/portal-identity.sar/portal-identity.war/WEB-INF/lib";
//$NON-NLS-1$
+
+ static final String PORTLET_LIBRARY_PROVIDER_DELEGATE =
"PORTLET_LIBRARY_PROVIDER_DELEGATE"; //$NON-NLS-1$
+
+ static final String JSFPORTLET_LIBRARY_PROVIDER_DELEGATE =
"JSFPORTLET_LIBRARY_PROVIDER_DELEGATE"; //$NON-NLS-1$
+
+ static final String PORTLETBRIDGE_HOME = "portletbridgeHome"; //$NON-NLS-1$
+
+ static final String PREFS_PORTLETBRIDGE_HOME =
"jsfportlet.library.provider/portletbridge_home"; //$NON-NLS-1$
+
+ static final String PORTLET_BRIDGE_HOME = "portletBridgeHome"; //$NON-NLS-1$
}
Modified:
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/Messages.java
===================================================================
---
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/Messages.java 2009-09-09
23:59:43 UTC (rev 17508)
+++
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/Messages.java 2009-09-10
00:27:18 UTC (rev 17509)
@@ -4,7 +4,10 @@
public class Messages extends NLS {
private static final String BUNDLE_NAME =
"org.jboss.tools.portlet.core.messages"; //$NON-NLS-1$
+ public static String
JSFPortletLibraryValidator_MISSING_JSFPORTLET_IMPLEMENTATION_CLASSES;
+ public static String PortletLibraryValidator_MISSING_PORTLET_IMPLEMENTATION_CLASSES;
public static String PortletPostInstallListener_Invalid_Richfaces_Runtime;
+ public static String PortletPostInstallListener_Cannot_find_Richfaces_ibraries;
public static String PortletPostInstallListener_Cannot_find_Richfaces_Runtime;
public static String Libraries_provided_by_richfaces;
public static String Libraries_provided_by_portletbridge ;
@@ -38,6 +41,8 @@
public static String
SeamPortletFacetInstallDelegate_Cannot_configure_web_module_for_JBoss_Seam_Portlet_Facet;
public static String SeamPortletFacetInstallDelegate_Missing_configuration;
public static String
SeamPortletFacetInstallDelegate_The_web_xml_file_is_not_updateable;
+ public static String
JSFPortletFacetInstallPage_Portletbridge_Runtime_directory_is_required;
+ public static String
JSFPortletFacetInstallPage_Invalid_Portletbridge_Runtime_directory;
static {
// initialize resource bundle
NLS.initializeMessages(BUNDLE_NAME, Messages.class);
Modified:
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/internal/PortletRuntimeComponentProvider.java
===================================================================
---
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/internal/PortletRuntimeComponentProvider.java 2009-09-09
23:59:43 UTC (rev 17508)
+++
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/internal/PortletRuntimeComponentProvider.java 2009-09-10
00:27:18 UTC (rev 17509)
@@ -23,6 +23,8 @@
public class PortletRuntimeComponentProvider extends
RuntimeFacetComponentProviderDelegate {
+ private static final String IS_PORTLET_RUNTIME = "isPortletRuntime";
//$NON-NLS-1$
+
private static final IRuntimeComponentType PORTAL_TYPE = RuntimeManager
.getRuntimeComponentType("org.jboss.tools.portlet.core.runtime.component");
//$NON-NLS-1$
@@ -34,7 +36,7 @@
if (runtime != null && runtime.getLocation() != null) {
File location = runtime.getLocation().toFile();
- if (isPortalPresent(location, runtime)) {
+ if (isPortalPresentInternal(location, runtime)) {
final IRuntimeComponent portalComponent = RuntimeManager
.createRuntimeComponent(PORTAL_VERSION_1, null);
components.add(portalComponent);
@@ -44,12 +46,18 @@
}
- private static boolean isPortalPresent(final File location, IRuntime runtime) {
+ private static boolean isPortalPresentInternal(final File location, IRuntime runtime) {
boolean check =
PortletCoreActivator.getDefault().getPluginPreferences().getBoolean(PortletCoreActivator.CHECK_RUNTIMES);
if (!check) {
return true;
}
+ return isPortalPresent(location, runtime, IS_PORTLET_RUNTIME);
+ }
+
+
+ public static boolean isPortalPresent(final File location,
+ IRuntime runtime, String property) {
IJBossServerRuntime jbossRuntime =
(IJBossServerRuntime)runtime.loadAdapter(IJBossServerRuntime.class, new
NullProgressMonitor());
if (jbossRuntime != null) {
// JBoss Portal server
@@ -71,8 +79,12 @@
IPortletConstants.SERVER_DEFAULT_DEPLOY_SIMPLE_PORTAL)) {
return true;
}
+ return false;
}
// Tomcat portletcontainer
+ if (!IS_PORTLET_RUNTIME.equals(property)) {
+ return false;
+ }
File tomcatLib = new File(location,IPortletConstants.TOMCAT_LIB);
if (tomcatLib.exists() && tomcatLib.isDirectory()) {
String[] files = tomcatLib.list(new FilenameFilter() {
@@ -88,7 +100,7 @@
return files.length > 0;
}
- return false;
+ return false;
}
Modified:
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/internal/project/facet/JSFPortletFacetInstallDataModelProvider.java
===================================================================
---
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/internal/project/facet/JSFPortletFacetInstallDataModelProvider.java 2009-09-09
23:59:43 UTC (rev 17508)
+++
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/internal/project/facet/JSFPortletFacetInstallDataModelProvider.java 2009-09-10
00:27:18 UTC (rev 17509)
@@ -12,9 +12,14 @@
import java.util.Set;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.jst.common.project.facet.core.libprov.IPropertyChangeListener;
+import org.eclipse.jst.common.project.facet.core.libprov.LibraryInstallDelegate;
import org.eclipse.wst.common.componentcore.datamodel.FacetInstallDataModelProvider;
+import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
+import org.eclipse.wst.common.project.facet.core.IFacetedProjectWorkingCopy;
+import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
import org.jboss.tools.portlet.core.IPortletConstants;
-import org.jboss.tools.portlet.core.Messages;
/**
* @author snjeza
@@ -23,6 +28,27 @@
public class JSFPortletFacetInstallDataModelProvider extends
FacetInstallDataModelProvider implements IPortletConstants {
+ private LibraryInstallDelegate libraryInstallDelegate = null;
+
+ private void initLibraryInstallDelegate() {
+ final IFacetedProjectWorkingCopy fpjwc = (IFacetedProjectWorkingCopy)
getProperty(FACETED_PROJECT_WORKING_COPY);
+ final IProjectFacetVersion fv = (IProjectFacetVersion) getProperty(FACET_VERSION);
+ if (libraryInstallDelegate == null && fpjwc != null && fv != null) {
+ libraryInstallDelegate = new LibraryInstallDelegate(fpjwc, fv);
+ libraryInstallDelegate.addListener(new IPropertyChangeListener() {
+
+ public void propertyChanged(final String property,
+ final Object oldValue, final Object newValue) {
+ final IDataModel dm = getDataModel();
+ if (dm != null) {
+ dm.notifyPropertyChange(JSFPORTLET_LIBRARY_PROVIDER_DELEGATE,IDataModel.VALUE_CHG);
+ }
+ }
+
+ });
+ }
+ }
+
@Override
public Object getDefaultProperty(String propertyName) {
if(propertyName.equals(FACET_ID)){
@@ -52,6 +78,9 @@
if (propertyName.equals(IPortletConstants.USER_LIBRARY_NAME)) {
return ""; //$NON-NLS-1$
}
+ if (propertyName.equals(JSFPORTLET_LIBRARY_PROVIDER_DELEGATE)) {
+ return libraryInstallDelegate;
+ }
return super.getDefaultProperty(propertyName);
}
@@ -66,6 +95,30 @@
propertyNames.add(IPortletConstants.RICHFACES_LIBRARIES_SELECTED);
propertyNames.add(IPortletConstants.RICHFACES_LIBRARIES_TYPE);
propertyNames.add(IPortletConstants.RICHFACES_CAPABILITIES);
+ propertyNames.add(JSFPORTLET_LIBRARY_PROVIDER_DELEGATE);
+
return propertyNames;
}
+
+ @Override
+ public boolean propertySet(final String propertyName,
+ final Object propertyValue) {
+ if (propertyName.equals(FACETED_PROJECT_WORKING_COPY)
+ || propertyName.equals(FACET_VERSION)) {
+ initLibraryInstallDelegate();
+ if (this.libraryInstallDelegate != null && propertyName.equals(FACET_VERSION))
{
+ final IProjectFacetVersion fv = (IProjectFacetVersion) getProperty(FACET_VERSION);
+ this.libraryInstallDelegate.setProjectFacetVersion(fv);
+ }
+ }
+
+ return super.propertySet(propertyName, propertyValue);
+ }
+
+ public IStatus validate(String name) {
+ if (name.equals(JSFPORTLET_LIBRARY_PROVIDER_DELEGATE)) {
+ return ((LibraryInstallDelegate)
getProperty(JSFPORTLET_LIBRARY_PROVIDER_DELEGATE)).validate();
+ }
+ return super.validate(name);
+ }
}
Modified:
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/internal/project/facet/JSFPortletFacetInstallDelegate.java
===================================================================
---
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/internal/project/facet/JSFPortletFacetInstallDelegate.java 2009-09-09
23:59:43 UTC (rev 17508)
+++
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/internal/project/facet/JSFPortletFacetInstallDelegate.java 2009-09-10
00:27:18 UTC (rev 17509)
@@ -30,6 +30,7 @@
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.core.JavaCore;
import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jst.common.project.facet.core.libprov.LibraryInstallDelegate;
import org.eclipse.jst.j2ee.classpathdep.ClasspathDependencyUtil;
import org.eclipse.jst.j2ee.classpathdep.IClasspathDependencyConstants;
import org.eclipse.jst.j2ee.model.IModelProvider;
@@ -113,7 +114,11 @@
configureFacesConfig(project, monitor, config);
- configureClassPath(project, monitor, config);
+ //configureClassPath(project, monitor, config);
+
+ //Configure libraries
+ ( (LibraryInstallDelegate) config.getProperty(
IPortletConstants.JSFPORTLET_LIBRARY_PROVIDER_DELEGATE ) ).execute( new
NullProgressMonitor() );
+
configureWebApp(project, monitor, config);
Added:
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/internal/project/facet/JSFPortletLibraryValidator.java
===================================================================
---
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/internal/project/facet/JSFPortletLibraryValidator.java
(rev 0)
+++
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/internal/project/facet/JSFPortletLibraryValidator.java 2009-09-10
00:27:18 UTC (rev 17509)
@@ -0,0 +1,23 @@
+package org.jboss.tools.portlet.core.internal.project.facet;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jst.common.project.facet.core.libprov.user.KeyClassesValidator;
+import
org.eclipse.jst.common.project.facet.core.libprov.user.UserLibraryProviderInstallOperationConfig;
+import org.jboss.tools.portlet.core.Messages;
+import org.jboss.tools.portlet.core.PortletCoreActivator;
+
+public class JSFPortletLibraryValidator extends KeyClassesValidator {
+
+ @Override
+ public IStatus validate(UserLibraryProviderInstallOperationConfig config) {
+ IStatus status = super.validate(config);
+ if (status.getSeverity() == IStatus.OK)
+ return status;
+
+ String message =
Messages.JSFPortletLibraryValidator_MISSING_JSFPORTLET_IMPLEMENTATION_CLASSES;
+ return new Status( IStatus.ERROR, PortletCoreActivator.PLUGIN_ID, message );
+
+ }
+
+}
Modified:
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/internal/project/facet/PortletFacetInstallDataModelProvider.java
===================================================================
---
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/internal/project/facet/PortletFacetInstallDataModelProvider.java 2009-09-09
23:59:43 UTC (rev 17508)
+++
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/internal/project/facet/PortletFacetInstallDataModelProvider.java 2009-09-10
00:27:18 UTC (rev 17509)
@@ -12,9 +12,14 @@
import java.util.Set;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.jst.common.project.facet.core.libprov.IPropertyChangeListener;
+import org.eclipse.jst.common.project.facet.core.libprov.LibraryInstallDelegate;
import org.eclipse.wst.common.componentcore.datamodel.FacetInstallDataModelProvider;
+import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
+import org.eclipse.wst.common.project.facet.core.IFacetedProjectWorkingCopy;
+import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
import org.jboss.tools.portlet.core.IPortletConstants;
-import org.jboss.tools.portlet.core.Messages;
import org.jboss.tools.portlet.core.PortletCoreActivator;
/**
@@ -24,6 +29,27 @@
public class PortletFacetInstallDataModelProvider extends
FacetInstallDataModelProvider implements IPortletConstants {
+ private LibraryInstallDelegate libraryInstallDelegate = null;
+
+ private void initLibraryInstallDelegate() {
+ final IFacetedProjectWorkingCopy fpjwc = (IFacetedProjectWorkingCopy)
getProperty(FACETED_PROJECT_WORKING_COPY);
+ final IProjectFacetVersion fv = (IProjectFacetVersion) getProperty(FACET_VERSION);
+ if (libraryInstallDelegate == null && fpjwc != null && fv != null) {
+ libraryInstallDelegate = new LibraryInstallDelegate(fpjwc, fv);
+ libraryInstallDelegate.addListener(new IPropertyChangeListener() {
+
+ public void propertyChanged(final String property,
+ final Object oldValue, final Object newValue) {
+ final IDataModel dm = getDataModel();
+ if (dm != null) {
+ dm.notifyPropertyChange(PORTLET_LIBRARY_PROVIDER_DELEGATE,IDataModel.VALUE_CHG);
+ }
+ }
+
+ });
+ }
+ }
+
@Override
public Object getDefaultProperty(String propertyName) {
if(propertyName.equals(FACET_ID)){
@@ -49,6 +75,9 @@
}
//return IPortletConstants.LIBRARY_PROVIDED_BY_JBOSS_TOOLS;
}
+ if (propertyName.equals(PORTLET_LIBRARY_PROVIDER_DELEGATE)) {
+ return libraryInstallDelegate;
+ }
return super.getDefaultProperty(propertyName);
}
@@ -59,8 +88,30 @@
propertyNames.add(IPortletConstants.ENABLE_IMPLEMENTATION_LIBRARY);
propertyNames.add(IPortletConstants.USER_LIBRARY_NAME);
propertyNames.add(IPortletConstants.IMPLEMENTATION_LIBRARY);
+ propertyNames.add(PORTLET_LIBRARY_PROVIDER_DELEGATE);
return propertyNames;
}
+
+ @Override
+ public boolean propertySet(final String propertyName,
+ final Object propertyValue) {
+ if (propertyName.equals(FACETED_PROJECT_WORKING_COPY)
+ || propertyName.equals(FACET_VERSION)) {
+ initLibraryInstallDelegate();
+ if (this.libraryInstallDelegate != null && propertyName.equals(FACET_VERSION))
{
+ final IProjectFacetVersion fv = (IProjectFacetVersion) getProperty(FACET_VERSION);
+ this.libraryInstallDelegate.setProjectFacetVersion(fv);
+ }
+ }
+ return super.propertySet(propertyName, propertyValue);
+ }
+
+ public IStatus validate(String name) {
+ if (name.equals(PORTLET_LIBRARY_PROVIDER_DELEGATE)) {
+ return ((LibraryInstallDelegate)
getProperty(PORTLET_LIBRARY_PROVIDER_DELEGATE)).validate();
+ }
+ return super.validate(name);
+ }
}
Modified:
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/internal/project/facet/PortletFacetInstallDelegate.java
===================================================================
---
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/internal/project/facet/PortletFacetInstallDelegate.java 2009-09-09
23:59:43 UTC (rev 17508)
+++
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/internal/project/facet/PortletFacetInstallDelegate.java 2009-09-10
00:27:18 UTC (rev 17509)
@@ -16,11 +16,12 @@
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.jdt.core.IClasspathEntry;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.core.JavaCore;
-import org.eclipse.jdt.core.JavaModelException;
+import org.eclipse.jst.common.project.facet.core.libprov.LibraryInstallDelegate;
import org.eclipse.jst.j2ee.model.IModelProvider;
import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
import org.eclipse.wst.common.project.facet.core.IDelegate;
@@ -76,12 +77,15 @@
}
}
- IJavaProject javaProject = JavaCore.create(project);
+ /*IJavaProject javaProject = JavaCore.create(project);
boolean enableImplementationLibrary =
config.getBooleanProperty(IPortletConstants.ENABLE_IMPLEMENTATION_LIBRARY);
if (enableImplementationLibrary) {
setClasspath(monitor, javaProject, config);
- }
+ }*/
+ //Configure libraries
+ ( (LibraryInstallDelegate) config.getProperty(
IPortletConstants.PORTLET_LIBRARY_PROVIDER_DELEGATE ) ).execute( new NullProgressMonitor()
);
+
createPortletXml(project, fv, config, monitor);
if (monitor != null) {
Added:
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/internal/project/facet/PortletLibraryValidator.java
===================================================================
---
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/internal/project/facet/PortletLibraryValidator.java
(rev 0)
+++
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/internal/project/facet/PortletLibraryValidator.java 2009-09-10
00:27:18 UTC (rev 17509)
@@ -0,0 +1,23 @@
+package org.jboss.tools.portlet.core.internal.project.facet;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jst.common.project.facet.core.libprov.user.KeyClassesValidator;
+import
org.eclipse.jst.common.project.facet.core.libprov.user.UserLibraryProviderInstallOperationConfig;
+import org.jboss.tools.portlet.core.Messages;
+import org.jboss.tools.portlet.core.PortletCoreActivator;
+
+public class PortletLibraryValidator extends KeyClassesValidator {
+
+ @Override
+ public IStatus validate(UserLibraryProviderInstallOperationConfig config) {
+ IStatus status = super.validate(config);
+ if (status.getSeverity() == IStatus.OK)
+ return status;
+
+ String message =
Messages.PortletLibraryValidator_MISSING_PORTLET_IMPLEMENTATION_CLASSES;
+ return new Status( IStatus.ERROR, PortletCoreActivator.PLUGIN_ID, message );
+
+ }
+
+}
Modified:
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/internal/project/facet/PortletPostInstallListener.java
===================================================================
---
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/internal/project/facet/PortletPostInstallListener.java 2009-09-09
23:59:43 UTC (rev 17508)
+++
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/internal/project/facet/PortletPostInstallListener.java 2009-09-10
00:27:18 UTC (rev 17509)
@@ -21,6 +21,8 @@
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.preferences.IEclipsePreferences;
import org.eclipse.core.runtime.preferences.IScopeContext;
+import org.eclipse.jst.common.project.facet.core.libprov.ILibraryProvider;
+import org.eclipse.jst.common.project.facet.core.libprov.LibraryInstallDelegate;
import org.eclipse.jst.j2ee.commonarchivecore.internal.helpers.ArchiveManifest;
import org.eclipse.jst.j2ee.commonarchivecore.internal.helpers.ArchiveManifestImpl;
import org.eclipse.jst.j2ee.commonarchivecore.internal.util.ArchiveUtil;
@@ -36,16 +38,22 @@
import org.eclipse.wst.common.project.facet.core.IFacetedProject;
import org.eclipse.wst.common.project.facet.core.IProjectFacet;
import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
+import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager;
import org.eclipse.wst.common.project.facet.core.events.IFacetedProjectEvent;
import org.eclipse.wst.common.project.facet.core.events.IFacetedProjectListener;
import org.eclipse.wst.common.project.facet.core.events.IProjectFacetActionEvent;
+import org.eclipse.wst.server.core.IRuntime;
+import org.jboss.ide.eclipse.as.core.server.IJBossServerConstants;
+import org.jboss.ide.eclipse.as.core.server.IJBossServerRuntime;
import org.jboss.tools.portlet.core.IPortletConstants;
import org.jboss.tools.portlet.core.Messages;
import org.jboss.tools.portlet.core.PortletCoreActivator;
+import
org.jboss.tools.portlet.core.libprov.JSFPortletbridgeRuntimeLibraryProviderInstallOperationConfig;
public class PortletPostInstallListener implements IFacetedProjectListener {
- private static final String SEAM_FACET_ID = "jst.seam"; //$NON-NLS-1$
+ private static final String JSFPORTLETBRIDGE_LIBRARY_PROVIDER =
"jsfportletbridge-library-provider"; //$NON-NLS-1$
+ private static final IProjectFacet seamFacet =
ProjectFacetsManager.getProjectFacet("jst.seam"); //$NON-NLS-1$
private static final IOverwriteQuery OVERWRITE_NONE_QUERY = new IOverwriteQuery()
{
public String queryOverwrite(String pathString)
@@ -54,11 +62,12 @@
}
};
private String portletbridgeRuntime;
- private boolean richfacesCapabilities;
- private boolean richfacesSelected;
- private String richfacesType;
+ //private boolean richfacesCapabilities;
+ //private boolean richfacesSelected;
+ //private String richfacesType;
private String richfacesRuntime;
+
public void handleEvent(IFacetedProjectEvent event) {
if (event instanceof IProjectFacetActionEvent) {
IProjectFacetActionEvent actionEvent = (IProjectFacetActionEvent) event;
@@ -72,17 +81,14 @@
Set<IProjectFacetVersion> projectFacets = facetedProject
.getProjectFacets();
boolean isJSFPortlet = false;
- boolean isSeamProject = false;
+ boolean richfacesFromServerRuntime = false;
+
for (IProjectFacetVersion projectFacetVersion : projectFacets) {
IProjectFacet projectFacet = projectFacetVersion.getProjectFacet();
if (IPortletConstants.JSFPORTLET_FACET_ID.equals(projectFacet
.getId())) {
isJSFPortlet = true;
}
- if (SEAM_FACET_ID.equals(projectFacet.getId())) {
- isSeamProject = true;
- }
-
}
if (!isJSFPortlet)
return;
@@ -91,26 +97,151 @@
IProjectFacetActionEvent actionEvent = (IProjectFacetActionEvent) event;
IDataModel dataModel = (IDataModel) actionEvent.getActionConfig();
try {
- portletbridgeRuntime = dataModel
- .getStringProperty(IPortletConstants.PORTLET_BRIDGE_RUNTIME);
- richfacesCapabilities =
dataModel.getBooleanProperty(IPortletConstants.RICHFACES_CAPABILITIES);
- richfacesSelected =
dataModel.getBooleanProperty(IPortletConstants.RICHFACES_LIBRARIES_SELECTED);
- richfacesType =
dataModel.getStringProperty(IPortletConstants.RICHFACES_LIBRARIES_TYPE);
- richfacesRuntime = dataModel.getStringProperty(IPortletConstants.RICHFACES_RUNTIME);
+ LibraryInstallDelegate libraryDelegate = ( (LibraryInstallDelegate)
dataModel.getProperty( IPortletConstants.JSFPORTLET_LIBRARY_PROVIDER_DELEGATE ) );
+ ILibraryProvider libraryProvider = libraryDelegate.getLibraryProvider();
+ String providerId = libraryProvider.getId();
+ if (JSFPORTLETBRIDGE_LIBRARY_PROVIDER.equals(providerId)) {
+ JSFPortletbridgeRuntimeLibraryProviderInstallOperationConfig libraryConfig =
(JSFPortletbridgeRuntimeLibraryProviderInstallOperationConfig)
libraryDelegate.getLibraryProviderOperationConfig(libraryProvider);
+ portletbridgeRuntime = libraryConfig.getPortletbridgeHome();
+ } else {
+ portletbridgeRuntime = null;
+ }
+ richfacesFromServerRuntime =
"jsfportlet-library-provider".equals(providerId); //$NON-NLS-1$
+
+ //richfacesCapabilities =
dataModel.getBooleanProperty(IPortletConstants.RICHFACES_CAPABILITIES);
+ //richfacesSelected =
dataModel.getBooleanProperty(IPortletConstants.RICHFACES_LIBRARIES_SELECTED);
+ //richfacesType =
dataModel.getStringProperty(IPortletConstants.RICHFACES_LIBRARIES_TYPE);
+ //richfacesRuntime =
dataModel.getStringProperty(IPortletConstants.RICHFACES_RUNTIME);
} catch (Exception e) {
//PortletCoreActivator.log(e);
}
}
- if (!richfacesCapabilities || !richfacesSelected) {
+ //if (!richfacesCapabilities || !richfacesSelected) {
+ // return;
+ //}
+ if (isJSFPortlet) {
+ if (portletbridgeRuntime != null) {
+ addRichfacesFromPortletBridgeRuntime(facetedProject,portletbridgeRuntime);
+ }
+ else if (richfacesFromServerRuntime) {
+ addRichFacesFromServerRuntime(facetedProject);
+ }
+ //else {
+ // addRichfacesFromRichfacesRuntime(facetedProject,isSeamProject);
+ //}
+ }
+ }
+
+ private void addRichFacesFromServerRuntime(IFacetedProject facetedProject) {
+ final boolean isSeamProject = facetedProject.hasProjectFacet(seamFacet);
+ if (isSeamProject) {
return;
}
- if (isJSFPortlet) {
- if (IPortletConstants.LIBRARIES_PROVIDED_BY_PORTLETBRIDGE.equals(richfacesType)) {
- addRichfacesFromPortletBridgeRuntime(facetedProject,isSeamProject);
- } else {
- addRichfacesFromRichfacesRuntime(facetedProject,isSeamProject);
+ org.eclipse.wst.common.project.facet.core.runtime.IRuntime facetRuntime =
facetedProject.getPrimaryRuntime();
+ if (facetRuntime == null) {
+ return;
+ }
+ IRuntime runtime = PortletCoreActivator.getRuntime(facetRuntime);
+ if (runtime == null) {
+ return;
+ }
+ IJBossServerRuntime jbossRuntime =
(IJBossServerRuntime)runtime.loadAdapter(IJBossServerRuntime.class, new
NullProgressMonitor());
+ if (jbossRuntime != null) {
+ IPath jbossLocation = runtime.getLocation();
+ IPath configPath =
jbossLocation.append(IJBossServerConstants.SERVER).append(jbossRuntime.getJBossConfiguration());
+ IPath portletLib = configPath.append(IPortletConstants.PORTLET_SAR_LIB);
+ File libFile = portletLib.toFile();
+ if (!libFile.exists()) {
+ portletLib = configPath.append(IPortletConstants.PORTLET_SAR_HA_LIB);
+ libFile = portletLib.toFile();
}
+ File richfacesLib = libFile;
+ if (!richfacesLib.exists()) {
+ PortletCoreActivator.log(null,
Messages.PortletPostInstallListener_Cannot_find_Richfaces_ibraries);
+ return;
+ }
+ if (!richfacesLib.isDirectory()) {
+ PortletCoreActivator.log(null,
Messages.PortletPostInstallListener_Cannot_find_Richfaces_ibraries);
+ return;
+ }
+ try {
+ IProject project = facetedProject.getProject();
+ final IProject earProject = getEarProject(project, isSeamProject);
+ String[] fileList = richfacesLib.list(new FilenameFilter() {
+
+ public boolean accept(File dir, String name) {
+ if (name.startsWith("richfaces-ui") &&
name.endsWith(".jar")) { //$NON-NLS-1$ //$NON-NLS-2$
+ return true;
+ }
+ if (name.startsWith("richfaces-impl") &&
name.endsWith(".jar")) { //$NON-NLS-1$ //$NON-NLS-2$
+ return true;
+ }
+ if (earProject == null) {
+ if (name.startsWith("richfaces-api") &&
name.endsWith(".jar")) { //$NON-NLS-1$ //$NON-NLS-2$
+ return true;
+ }
+ }
+ if (!isSeamProject) {
+ if (name.startsWith("portal")) { //$NON-NLS-1$
+ return false;
+ }
+ if (name.startsWith("portletbridge")) { //$NON-NLS-1$
+ return false;
+ }
+ return true;
+ }
+ return false;
+ }
+
+ });
+ List<File> filesToImport = new ArrayList<File>();
+ for (int i = 0; i < fileList.length; i++) {
+ filesToImport.add(new File(richfacesLib, fileList[i]));
+ }
+ IVirtualComponent component = ComponentCore.createComponent(project);
+ IVirtualFolder rootFolder = component.getRootFolder();
+ IContainer folder = rootFolder.getUnderlyingFolder();
+ IContainer webinf = folder.getFolder(new Path(IPortletConstants.WEB_INF_LIB));
+
+ deleteOldRichfacesLibs(earProject, webinf);
+
+ ImportOperation importOperation = new ImportOperation(webinf.getFullPath(),
richfacesLib,
+ FileSystemStructureProvider.INSTANCE,
+ PortletCoreActivator.OVERWRITE_ALL_QUERY, filesToImport);
+ importOperation.setCreateContainerStructure(false);
+ importOperation.run(new NullProgressMonitor());
+ if (earProject != null) {
+ fileList = richfacesLib.list(new FilenameFilter() {
+
+ public boolean accept(File dir, String name) {
+ if (name.startsWith("richfaces-api") &&
name.endsWith(".jar")) { //$NON-NLS-1$ //$NON-NLS-2$
+ return true;
+ }
+ return false;
+ }
+
+ });
+ filesToImport = new ArrayList<File>();
+ for (int i = 0; i < fileList.length; i++) {
+ filesToImport.add(new File(richfacesLib, fileList[i]));
+ }
+ component = ComponentCore.createComponent(earProject);
+ rootFolder = component.getRootFolder();
+ folder = rootFolder.getUnderlyingFolder();
+
+ deleteOldRichFacesApi(folder);
+
+ importOperation = new ImportOperation(folder.getFullPath(), richfacesLib,
+ FileSystemStructureProvider.INSTANCE,
+ PortletCoreActivator.OVERWRITE_ALL_QUERY, filesToImport);
+ importOperation.setCreateContainerStructure(false);
+ importOperation.run(new NullProgressMonitor());
+ updateEARLibraries(project,isSeamProject);
+ }
+ } catch (Exception e) {
+ PortletCoreActivator.log(e,Messages.JSFPortletFacetInstallDelegate_Error_loading_classpath_container);
+ }
}
}
@@ -229,7 +360,7 @@
}
}
- private void addRichfacesFromPortletBridgeRuntime(IFacetedProject facetedProject,
boolean isSeamProject) {
+ private void addRichfacesFromPortletBridgeRuntime(IFacetedProject facetedProject, String
portletbridgeRuntime) {
File portletbridgeHome = new File(portletbridgeRuntime);
if (!portletbridgeHome.exists()) {
PortletCoreActivator.log(null,
Messages.PortletPostInstallListener_Cannot_find_Portletbridge_Runtime);
@@ -253,6 +384,7 @@
ZipFile zipFile = new ZipFile(richFacesPortletZip);
ZipFileStructureProvider structureProvider = new ZipFileStructureProvider(
zipFile );
+ boolean isSeamProject = facetedProject.hasProjectFacet(seamFacet);
List<ZipEntry> list = prepareList(zipFile, facetedProject, isSeamProject);
IProject project = facetedProject.getProject();
Added:
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/libprov/JSFPortletServerRuntimeLibraryProviderInstallOperation.java
===================================================================
---
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/libprov/JSFPortletServerRuntimeLibraryProviderInstallOperation.java
(rev 0)
+++
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/libprov/JSFPortletServerRuntimeLibraryProviderInstallOperation.java 2009-09-10
00:27:18 UTC (rev 17509)
@@ -0,0 +1,112 @@
+package org.jboss.tools.portlet.core.libprov;
+
+import java.io.File;
+import java.io.FilenameFilter;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.resources.IFile;
+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.jst.common.project.facet.core.libprov.LibraryProviderOperation;
+import org.eclipse.jst.common.project.facet.core.libprov.LibraryProviderOperationConfig;
+import org.eclipse.ui.wizards.datatransfer.FileSystemStructureProvider;
+import org.eclipse.ui.wizards.datatransfer.ImportOperation;
+import org.eclipse.wst.common.componentcore.ComponentCore;
+import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
+import org.eclipse.wst.common.componentcore.resources.IVirtualFile;
+import org.eclipse.wst.common.project.facet.core.IFacetedProjectBase;
+import org.eclipse.wst.common.project.facet.core.IProjectFacet;
+import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager;
+import org.eclipse.wst.server.core.IRuntime;
+import org.jboss.ide.eclipse.as.core.server.IJBossServerConstants;
+import org.jboss.ide.eclipse.as.core.server.IJBossServerRuntime;
+import org.jboss.tools.portlet.core.IPortletConstants;
+import org.jboss.tools.portlet.core.Messages;
+import org.jboss.tools.portlet.core.PortletCoreActivator;
+
+public class JSFPortletServerRuntimeLibraryProviderInstallOperation extends
+ LibraryProviderOperation {
+
+ @Override
+ public void execute(LibraryProviderOperationConfig config,
+ IProgressMonitor monitor) throws CoreException {
+ IFacetedProjectBase facetedProject = config.getFacetedProject();
+ IProjectFacet seamFacet = ProjectFacetsManager.getProjectFacet("jst.seam");
//$NON-NLS-1$
+ boolean hasSeamFacet = facetedProject.hasProjectFacet(seamFacet);
+ org.eclipse.wst.common.project.facet.core.runtime.IRuntime facetRuntime =
facetedProject.getPrimaryRuntime();
+ IProject project = facetedProject.getProject();
+ IRuntime runtime = PortletCoreActivator.getRuntime(facetRuntime);
+ IJBossServerRuntime jbossRuntime =
(IJBossServerRuntime)runtime.loadAdapter(IJBossServerRuntime.class, new
NullProgressMonitor());
+ if (jbossRuntime != null) {
+ // JBoss Portal server
+ IPath jbossLocation = runtime.getLocation();
+ IPath configPath =
jbossLocation.append(IJBossServerConstants.SERVER).append(jbossRuntime.getJBossConfiguration());
+ IPath portletLib = configPath.append(IPortletConstants.PORTLET_SAR_LIB);
+ File portletLibFile = portletLib.toFile();
+ String[] files = getPortletbridgeLibraries(portletLibFile, hasSeamFacet);
+ if (files == null) {
+ portletLib = configPath.append(IPortletConstants.PORTLET_SAR_HA_LIB);
+ portletLibFile = portletLib.toFile();
+ files = getPortletbridgeLibraries(portletLibFile, hasSeamFacet);
+
+ }
+ if (files != null) {
+ try {
+ List<File> filesToImport = new ArrayList<File>();
+
+ for (int i = 0; i < files.length; i++) {
+ filesToImport.add(new File(portletLibFile, files[i]));
+ }
+ IVirtualComponent component = ComponentCore
+ .createComponent(project);
+ IVirtualFile libVirtualFile = component.getRootFolder()
+ .getFile(IPortletConstants.WEB_INF_LIB);
+
+ IFile folder = libVirtualFile.getUnderlyingFile();
+
+ File sourceFolder = new File(portletLib.toOSString());
+ ImportOperation importOperation = new ImportOperation(
+ folder.getFullPath(), sourceFolder,
+ FileSystemStructureProvider.INSTANCE,
+ PortletCoreActivator.OVERWRITE_ALL_QUERY,
+ filesToImport);
+ importOperation.setCreateContainerStructure(false);
+ importOperation.run(monitor);
+ } catch (Exception e) {
+ PortletCoreActivator
+ .log(e, Messages.JSFPortletFacetInstallDelegate_Error_loading_classpath_container);
+ }
+ }
+ }
+ }
+
+ private String[] getPortletbridgeLibraries(File file, final boolean hasSeamFacet) {
+ if (file != null && file.isDirectory()) {
+ String[] list = file.list(new FilenameFilter() {
+
+ public boolean accept(File dir, String name) {
+ if ("portletbridge-api.jar".equals(name) || //$NON-NLS-1$
+ "portletbridge-impl.jar".equals(name)) { //$NON-NLS-1$
+ return true;
+ }
+ if (!hasSeamFacet) {
+ if (name.startsWith("portal")) { //$NON-NLS-1$
+ return false;
+ } else {
+ return true;
+ }
+
+ }
+ return false;
+ }
+
+ });
+ return list;
+ }
+ return null;
+ }
+}
Added:
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/libprov/JSFPortletServerRuntimeLibraryProviderInstallOperationConfig.java
===================================================================
---
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/libprov/JSFPortletServerRuntimeLibraryProviderInstallOperationConfig.java
(rev 0)
+++
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/libprov/JSFPortletServerRuntimeLibraryProviderInstallOperationConfig.java 2009-09-10
00:27:18 UTC (rev 17509)
@@ -0,0 +1,8 @@
+package org.jboss.tools.portlet.core.libprov;
+
+import
org.eclipse.jst.common.project.facet.core.libprov.LibraryProviderInstallOperationConfig;
+
+public class JSFPortletServerRuntimeLibraryProviderInstallOperationConfig extends
+ LibraryProviderInstallOperationConfig {
+
+}
Added:
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/libprov/JSFPortletServerRuntimeLibraryProviderUninstallOperation.java
===================================================================
---
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/libprov/JSFPortletServerRuntimeLibraryProviderUninstallOperation.java
(rev 0)
+++
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/libprov/JSFPortletServerRuntimeLibraryProviderUninstallOperation.java 2009-09-10
00:27:18 UTC (rev 17509)
@@ -0,0 +1,16 @@
+package org.jboss.tools.portlet.core.libprov;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jst.common.project.facet.core.libprov.LibraryProviderOperation;
+import org.eclipse.jst.common.project.facet.core.libprov.LibraryProviderOperationConfig;
+
+public class JSFPortletServerRuntimeLibraryProviderUninstallOperation extends
LibraryProviderOperation {
+
+ @Override
+ public void execute(LibraryProviderOperationConfig config,
+ IProgressMonitor monitor) throws CoreException {
+
+ }
+
+}
Added:
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/libprov/JSFPortletbridgeRuntimeLibraryProviderInstallOperation.java
===================================================================
---
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/libprov/JSFPortletbridgeRuntimeLibraryProviderInstallOperation.java
(rev 0)
+++
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/libprov/JSFPortletbridgeRuntimeLibraryProviderInstallOperation.java 2009-09-10
00:27:18 UTC (rev 17509)
@@ -0,0 +1,95 @@
+package org.jboss.tools.portlet.core.libprov;
+
+import java.io.File;
+import java.io.FilenameFilter;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jst.common.project.facet.core.libprov.LibraryProviderOperation;
+import org.eclipse.jst.common.project.facet.core.libprov.LibraryProviderOperationConfig;
+import org.eclipse.ui.wizards.datatransfer.FileSystemStructureProvider;
+import org.eclipse.ui.wizards.datatransfer.ImportOperation;
+import org.eclipse.wst.common.componentcore.ComponentCore;
+import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
+import org.eclipse.wst.common.componentcore.resources.IVirtualFile;
+import org.eclipse.wst.common.project.facet.core.FacetedProjectFramework;
+import org.eclipse.wst.common.project.facet.core.IFacetedProjectBase;
+import org.jboss.tools.portlet.core.IPortletConstants;
+import org.jboss.tools.portlet.core.Messages;
+import org.jboss.tools.portlet.core.PortletCoreActivator;
+import org.osgi.service.prefs.BackingStoreException;
+import org.osgi.service.prefs.Preferences;
+
+public class JSFPortletbridgeRuntimeLibraryProviderInstallOperation extends
+ LibraryProviderOperation {
+
+ @Override
+ public void execute(LibraryProviderOperationConfig config,
+ IProgressMonitor monitor) throws CoreException {
+ IFacetedProjectBase facetedProject = config.getFacetedProject();
+ IProject project = facetedProject.getProject();
+ JSFPortletbridgeRuntimeLibraryProviderInstallOperationConfig portletbridgeConfig =
(JSFPortletbridgeRuntimeLibraryProviderInstallOperationConfig) config;
+ String pbRuntime = portletbridgeConfig.getPortletbridgeHome();
+ getPortletbridgeLibraries(monitor, project, pbRuntime);
+
+ try {
+ Preferences prefs = FacetedProjectFramework.getPreferences( config.getProjectFacet()
);
+ prefs = prefs.node(IPortletConstants.PORTLET_BRIDGE_HOME);
+ prefs.put(IPortletConstants.PREFS_PORTLETBRIDGE_HOME, pbRuntime);
+ prefs.flush();
+ } catch (BackingStoreException e) {
+ PortletCoreActivator.log(e);
+ }
+ }
+
+ private void getPortletbridgeLibraries(IProgressMonitor monitor,
+ IProject project, String pbRuntime) {
+ if (pbRuntime != null && pbRuntime.trim().length() > 0) {
+ pbRuntime = pbRuntime.trim();
+ File pbFolder = new File(pbRuntime);
+ if (pbFolder.exists() && pbFolder.isDirectory()) {
+ String[] fileList = pbFolder.list(new FilenameFilter() {
+
+ public boolean accept(File dir, String name) {
+ if (name.startsWith("portletbridge") || name.endsWith(".jar"))
{ //$NON-NLS-1$ //$NON-NLS-2$
+ return true;
+ }
+
+ return false;
+ }
+
+ });
+
+ List<File> filesToImport = new ArrayList<File>();
+
+ for (int i = 0; i < fileList.length; i++) {
+ filesToImport.add(new File(pbRuntime, fileList[i]));
+ }
+ IVirtualComponent component = ComponentCore
+ .createComponent(project);
+ IVirtualFile libVirtualFile = component.getRootFolder()
+ .getFile(IPortletConstants.WEB_INF_LIB);
+
+ IFile folder = libVirtualFile.getUnderlyingFile();
+
+ ImportOperation importOperation = new ImportOperation(
+ folder.getFullPath(), pbFolder,
+ FileSystemStructureProvider.INSTANCE,
+ PortletCoreActivator.OVERWRITE_ALL_QUERY,
+ filesToImport);
+ importOperation.setCreateContainerStructure(false);
+ try {
+ importOperation.run(monitor);
+ } catch (Exception e) {
+ PortletCoreActivator.log(e,
Messages.JSFPortletFacetInstallDelegate_Error_loading_classpath_container);
+ }
+ }
+ }
+ }
+
+
+}
Added:
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/libprov/JSFPortletbridgeRuntimeLibraryProviderInstallOperationConfig.java
===================================================================
---
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/libprov/JSFPortletbridgeRuntimeLibraryProviderInstallOperationConfig.java
(rev 0)
+++
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/libprov/JSFPortletbridgeRuntimeLibraryProviderInstallOperationConfig.java 2009-09-10
00:27:18 UTC (rev 17509)
@@ -0,0 +1,108 @@
+package org.jboss.tools.portlet.core.libprov;
+
+import java.io.File;
+import java.io.FilenameFilter;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.jst.common.project.facet.core.libprov.ILibraryProvider;
+import
org.eclipse.jst.common.project.facet.core.libprov.LibraryProviderInstallOperationConfig;
+import org.eclipse.wst.common.project.facet.core.FacetedProjectFramework;
+import org.eclipse.wst.common.project.facet.core.IFacetedProjectBase;
+import org.eclipse.wst.common.project.facet.core.IProjectFacet;
+import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
+import org.jboss.tools.portlet.core.IPortletConstants;
+import org.jboss.tools.portlet.core.Messages;
+import org.jboss.tools.portlet.core.PortletCoreActivator;
+import org.osgi.service.prefs.BackingStoreException;
+import org.osgi.service.prefs.Preferences;
+
+public class JSFPortletbridgeRuntimeLibraryProviderInstallOperationConfig extends
+ LibraryProviderInstallOperationConfig {
+
+ private String portletbridgeHome;
+
+ @Override
+ public synchronized IStatus validate() {
+ IStatus status = super.validate();
+ if (!status.isOK()) {
+ return status;
+ }
+ if (portletbridgeHome == null) {
+ return getInvalidPortletbridgeRuntime();
+ }
+ portletbridgeHome = portletbridgeHome.trim();
+ if (portletbridgeHome.length() <= 0) {
+ status = new Status( IStatus.ERROR, PortletCoreActivator.PLUGIN_ID,
Messages.JSFPortletFacetInstallPage_Portletbridge_Runtime_directory_is_required );
+ return status;
+ }
+ File folder = new File(portletbridgeHome);
+ if (!folder.exists() || !folder.isDirectory()) {
+ return getInvalidPortletbridgeRuntime();
+ }
+ String[] fileList = folder.list(new FilenameFilter() {
+
+ public boolean accept(File dir, String name) {
+ if (name.startsWith("portletbridge") || name.endsWith(".jar")) {
//$NON-NLS-1$ //$NON-NLS-2$
+ return true;
+ }
+ return false;
+ }
+
+ });
+ if (fileList.length < 2) {
+ return getInvalidPortletbridgeRuntime();
+ }
+ return Status.OK_STATUS;
+ }
+
+ private IStatus getInvalidPortletbridgeRuntime() {
+ IStatus status = new Status( IStatus.ERROR, PortletCoreActivator.PLUGIN_ID,
Messages.JSFPortletFacetInstallPage_Invalid_Portletbridge_Runtime_directory );
+ return status;
+ }
+
+ public String getPortletbridgeHome() {
+ return portletbridgeHome;
+ }
+
+ public void setPortletbridgeHome(String portletbridgeHome) {
+ String oldValue = this.portletbridgeHome;
+ this.portletbridgeHome = portletbridgeHome;
+ notifyListeners(IPortletConstants.PORTLETBRIDGE_HOME, oldValue, portletbridgeHome);
+ updatePreferences();
+ }
+
+ @Override
+ public void init(IFacetedProjectBase fpj, IProjectFacetVersion fv,
+ ILibraryProvider provider) {
+ super.init(fpj, fv, provider);
+ reset();
+ }
+
+ @Override
+ public void reset() {
+ IProjectFacet f = getProjectFacet();
+ try {
+ Preferences prefs = FacetedProjectFramework.getPreferences( f );
+ prefs = prefs.node(IPortletConstants.PORTLET_BRIDGE_HOME);
+ if( prefs.nodeExists( IPortletConstants.PREFS_PORTLETBRIDGE_HOME ) ) {
+ portletbridgeHome = prefs.get(IPortletConstants.PREFS_PORTLETBRIDGE_HOME, null);
+ }
+ } catch (BackingStoreException e) {
+ PortletCoreActivator.log(e);
+ }
+ }
+
+ private void updatePreferences() {
+ IProjectFacet f = getProjectFacet();
+ try {
+ Preferences prefs = FacetedProjectFramework.getPreferences( f );
+ prefs = prefs.node(IPortletConstants.PORTLET_BRIDGE_HOME);
+ prefs.put(IPortletConstants.PREFS_PORTLETBRIDGE_HOME, portletbridgeHome);
+ } catch (BackingStoreException e) {
+ PortletCoreActivator.log(e);
+ }
+ }
+
+
+}
Added:
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/libprov/JSFPortletbridgeRuntimeLibraryProviderUninstallOperation.java
===================================================================
---
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/libprov/JSFPortletbridgeRuntimeLibraryProviderUninstallOperation.java
(rev 0)
+++
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/libprov/JSFPortletbridgeRuntimeLibraryProviderUninstallOperation.java 2009-09-10
00:27:18 UTC (rev 17509)
@@ -0,0 +1,16 @@
+package org.jboss.tools.portlet.core.libprov;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jst.common.project.facet.core.libprov.LibraryProviderOperation;
+import org.eclipse.jst.common.project.facet.core.libprov.LibraryProviderOperationConfig;
+
+public class JSFPortletbridgeRuntimeLibraryProviderUninstallOperation extends
LibraryProviderOperation {
+
+ @Override
+ public void execute(LibraryProviderOperationConfig config,
+ IProgressMonitor monitor) throws CoreException {
+
+ }
+
+}
Added:
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/libprov/PortletServerRuntimeLibraryProviderInstallOperation.java
===================================================================
---
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/libprov/PortletServerRuntimeLibraryProviderInstallOperation.java
(rev 0)
+++
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/libprov/PortletServerRuntimeLibraryProviderInstallOperation.java 2009-09-10
00:27:18 UTC (rev 17509)
@@ -0,0 +1,41 @@
+package org.jboss.tools.portlet.core.libprov;
+
+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.Path;
+import org.eclipse.jdt.core.IClasspathEntry;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jst.common.project.facet.core.libprov.ILibraryProvider;
+import org.eclipse.jst.common.project.facet.core.libprov.LibraryProviderOperation;
+import org.eclipse.jst.common.project.facet.core.libprov.LibraryProviderOperationConfig;
+import org.eclipse.wst.common.project.facet.core.IFacetedProjectBase;
+import org.jboss.tools.portlet.core.IPortletConstants;
+
+public class PortletServerRuntimeLibraryProviderInstallOperation extends
+ LibraryProviderOperation {
+
+ @Override
+ public void execute(LibraryProviderOperationConfig config,
+ IProgressMonitor monitor) throws CoreException {
+ IFacetedProjectBase facetedProject = config.getFacetedProject();
+ IProject project = facetedProject.getProject();
+
+ IJavaProject javaProject = JavaCore.create(project);
+ IPath containerPath = new Path(IPortletConstants.PORTLET_RUNTIME_CONTAINER_ID);
+ setContainerPath(monitor, javaProject, containerPath);
+
+ }
+
+ private void setContainerPath(IProgressMonitor monitor, IJavaProject javaProject,IPath
containerPath) throws CoreException {
+ IClasspathEntry entry = JavaCore.newContainerEntry(containerPath, true);
+ IClasspathEntry[] entries = javaProject.getRawClasspath();
+ IClasspathEntry[] newEntries = new IClasspathEntry[entries.length + 1];
+ System.arraycopy( entries, 0, newEntries, 0, entries.length );
+ newEntries[entries.length] = entry;
+ javaProject.setRawClasspath(newEntries, monitor);
+ }
+
+}
Added:
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/libprov/PortletServerRuntimeLibraryProviderInstallOperationConfig.java
===================================================================
---
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/libprov/PortletServerRuntimeLibraryProviderInstallOperationConfig.java
(rev 0)
+++
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/libprov/PortletServerRuntimeLibraryProviderInstallOperationConfig.java 2009-09-10
00:27:18 UTC (rev 17509)
@@ -0,0 +1,8 @@
+package org.jboss.tools.portlet.core.libprov;
+
+import
org.eclipse.jst.common.project.facet.core.libprov.LibraryProviderInstallOperationConfig;
+
+public class PortletServerRuntimeLibraryProviderInstallOperationConfig extends
+ LibraryProviderInstallOperationConfig {
+
+}
Added:
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/libprov/PortletServerRuntimeLibraryProviderUninstallOperation.java
===================================================================
---
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/libprov/PortletServerRuntimeLibraryProviderUninstallOperation.java
(rev 0)
+++
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/libprov/PortletServerRuntimeLibraryProviderUninstallOperation.java 2009-09-10
00:27:18 UTC (rev 17509)
@@ -0,0 +1,46 @@
+package org.jboss.tools.portlet.core.libprov;
+
+import java.util.ArrayList;
+import java.util.List;
+
+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.Path;
+import org.eclipse.jdt.core.IClasspathEntry;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jst.common.project.facet.core.libprov.LibraryProviderOperation;
+import org.eclipse.jst.common.project.facet.core.libprov.LibraryProviderOperationConfig;
+import org.eclipse.wst.common.project.facet.core.IFacetedProjectBase;
+import org.jboss.tools.portlet.core.IPortletConstants;
+
+public class PortletServerRuntimeLibraryProviderUninstallOperation extends
LibraryProviderOperation {
+
+ @Override
+ public void execute(LibraryProviderOperationConfig config,
+ IProgressMonitor monitor) throws CoreException {
+ IFacetedProjectBase facetedProject = config.getFacetedProject();
+ IProject project = facetedProject.getProject();
+
+ IJavaProject javaProject = JavaCore.create(project);
+ IPath containerPath = new Path(IPortletConstants.PORTLET_RUNTIME_CONTAINER_ID);
+ List<IClasspathEntry> list = new ArrayList<IClasspathEntry>();
+ IClasspathEntry[] entries = javaProject.getRawClasspath();
+ boolean changed = false;
+ for (int i = 0; i < entries.length; i++) {
+ IClasspathEntry entry = entries[i];
+ if (!entry.getPath().equals(containerPath)) {
+ list.add(entry);
+ } else {
+ changed = true;
+ }
+ }
+ if (changed) {
+ IClasspathEntry[] newEntries = list.toArray(new IClasspathEntry[0]);
+ javaProject.setRawClasspath(newEntries, monitor);
+ }
+ }
+
+}
Added:
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/libprov/RuntimeLibraryProviderPropertyTester.java
===================================================================
---
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/libprov/RuntimeLibraryProviderPropertyTester.java
(rev 0)
+++
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/libprov/RuntimeLibraryProviderPropertyTester.java 2009-09-10
00:27:18 UTC (rev 17509)
@@ -0,0 +1,36 @@
+package org.jboss.tools.portlet.core.libprov;
+
+import java.io.File;
+
+import org.eclipse.core.expressions.PropertyTester;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.jst.common.project.facet.core.libprov.EnablementExpressionContext;
+import org.eclipse.jst.j2ee.internal.project.J2EEProjectUtilities;
+import org.eclipse.wst.common.project.facet.core.IFacetedProjectBase;
+import org.eclipse.wst.server.core.IRuntime;
+import org.eclipse.wst.server.core.internal.facets.FacetUtil;
+import org.jboss.tools.portlet.core.internal.PortletRuntimeComponentProvider;
+
+
+public final class RuntimeLibraryProviderPropertyTester extends PropertyTester {
+
+ public boolean test(final Object receiver, final String property,
+ final Object[] args, final Object value) {
+ if (receiver instanceof EnablementExpressionContext) {
+ EnablementExpressionContext context = (EnablementExpressionContext) receiver;
+ IFacetedProjectBase facetedProject = context.getFacetedProject();
+ org.eclipse.wst.common.project.facet.core.runtime.IRuntime primaryRuntime =
facetedProject.getPrimaryRuntime();
+ if (primaryRuntime == null) {
+ return false;
+ }
+ IRuntime runtime = FacetUtil.getRuntime(primaryRuntime);
+ if (runtime != null) {
+ File location = runtime.getLocation().toFile();
+ return PortletRuntimeComponentProvider.isPortalPresent(location, runtime, property);
+ }
+ }
+ return false;
+ }
+
+}
Modified:
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/messages.properties
===================================================================
---
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/messages.properties 2009-09-09
23:59:43 UTC (rev 17508)
+++
trunk/portlet/plugins/org.jboss.tools.portlet.core/src/org/jboss/tools/portlet/core/messages.properties 2009-09-10
00:27:18 UTC (rev 17509)
@@ -21,6 +21,7 @@
PortletFacetInstallDelegate_The_web_xml_file_is_not_updateable=The web.xml file is not
updateable
PortletFacetInstallDelegate_User_library_name_is_invalid=User library name is invalid.
PortletPostInstallListener_Cannot_find_Portletbridge_Runtime=Cannot find Portletbridge
Runtime.
+PortletPostInstallListener_Cannot_find_Richfaces_ibraries=Cannot find Richfaces
libraries.
PortletPostInstallListener_Cannot_find_Richfaces_Runtime=Cannot find Richfaces Runtime.
PortletPostInstallListener_Cannot_find_the_examples_directory=Cannot find the examples
directory.
PortletPostInstallListener_Cannot_find_the_RichFacesPortlet_war_file=Cannot find the
RichFacesPortlet.war file.
@@ -31,4 +32,8 @@
SeamPortletFacetInstallDelegate_Missing_configuration=Internal Error creating JBoss Seam
Portlet Facet. Missing configuration.
SeamPortletFacetInstallDelegate_The_web_xml_file_is_not_updateable=The web.xml file is
not updateable
Libraries_provided_by_portletbridge=Libraries provided by portletbridge distribution
-Libraries_provided_by_richfaces=Libraries provided by richfaces distribution
\ No newline at end of file
+Libraries_provided_by_richfaces=Libraries provided by richfaces distribution
+PortletLibraryValidator_MISSING_PORTLET_IMPLEMENTATION_CLASSES=Selected libraries are
missing key Portlet implementation classes (javax.portlet.faces.GenericFacesPortlet)
+JSFPortletLibraryValidator_MISSING_JSFPORTLET_IMPLEMENTATION_CLASSES=Selected libraries
are missing key JSF Portlet implementation classes (javax.portlet.GenericPortlet)
+JSFPortletFacetInstallPage_Portletbridge_Runtime_directory_is_required=Portletbridge
Runtime directory is required.
+JSFPortletFacetInstallPage_Invalid_Portletbridge_Runtime_directory=Invalid Portletbridge
Runtime directory.
Modified: trunk/portlet/plugins/org.jboss.tools.portlet.ui/META-INF/MANIFEST.MF
===================================================================
--- trunk/portlet/plugins/org.jboss.tools.portlet.ui/META-INF/MANIFEST.MF 2009-09-09
23:59:43 UTC (rev 17508)
+++ trunk/portlet/plugins/org.jboss.tools.portlet.ui/META-INF/MANIFEST.MF 2009-09-10
00:27:18 UTC (rev 17509)
@@ -8,6 +8,7 @@
Require-Bundle: org.eclipse.ui,
org.eclipse.core.runtime,
org.eclipse.wst.common.project.facet.ui,
+ org.eclipse.jst.common.project.facet.ui,
org.eclipse.wst.common.frameworks.ui,
org.eclipse.core.resources,
org.eclipse.jst.servlet.ui,
Modified: trunk/portlet/plugins/org.jboss.tools.portlet.ui/plugin.xml
===================================================================
--- trunk/portlet/plugins/org.jboss.tools.portlet.ui/plugin.xml 2009-09-09 23:59:43 UTC
(rev 17508)
+++ trunk/portlet/plugins/org.jboss.tools.portlet.ui/plugin.xml 2009-09-10 00:27:18 UTC
(rev 17509)
@@ -61,6 +61,24 @@
class="org.jboss.tools.portlet.ui.internal.preferences.JBossPortletPreferencePage"
id="org.jboss.tools.portlet.core.ui.JBossPortletPreferencePage"
name="%JBoss_Portlet"/>
- </extension>
-
+ </extension>
+
+ <extension
point="org.eclipse.jst.common.project.facet.ui.libraryProviderActionPanels">
+ <panel
+ provider="portlet-library-provider"
+
class="org.jboss.tools.portlet.ui.internal.libprov.PortletServerRuntimeProviderInstallPanel"/>
+ </extension>
+
+ <extension
point="org.eclipse.jst.common.project.facet.ui.libraryProviderActionPanels">
+ <panel
+ provider="jsfportlet-library-provider"
+
class="org.jboss.tools.portlet.ui.internal.libprov.JSFPortletServerRuntimeProviderInstallPanel"/>
+ </extension>
+
+ <extension
point="org.eclipse.jst.common.project.facet.ui.libraryProviderActionPanels">
+ <panel
+ provider="jsfportletbridge-library-provider"
+
class="org.jboss.tools.portlet.ui.internal.libprov.JSFPortletbridgeRuntimeProviderInstallPanel"/>
+ </extension>
+
</plugin>
Modified:
trunk/portlet/plugins/org.jboss.tools.portlet.ui/src/org/jboss/tools/portlet/ui/Messages.java
===================================================================
---
trunk/portlet/plugins/org.jboss.tools.portlet.ui/src/org/jboss/tools/portlet/ui/Messages.java 2009-09-09
23:59:43 UTC (rev 17508)
+++
trunk/portlet/plugins/org.jboss.tools.portlet.ui/src/org/jboss/tools/portlet/ui/Messages.java 2009-09-10
00:27:18 UTC (rev 17509)
@@ -4,6 +4,9 @@
public class Messages extends NLS {
private static final String BUNDLE_NAME =
"org.jboss.tools.portlet.ui.messages"; //$NON-NLS-1$
+ public static String
JSFPortletServerRuntimeProviderInstallPanel_The_targeted_runtime_contains_a_portlet_library;
+ public static String JSFPortletFacetInstallPage_JSFPortletImplementationLibrariesFrame;
+ public static String PortletFacetInstallPage_PortletImplementationLibrariesFrame;
public static String JBossPortletPreferencePage_Check_Runtimes_for_Portlet_Components;
public static String AddPortletWizardPage_Edit;
public static String AddPortletWizardPage_Help;
@@ -55,10 +58,11 @@
public static String JSFPortletFacetInstallPage_Select_RichFaces_Runtime;
public static String PortletFacetInstallPage_Add;
public static String
PortletFacetInstallPage_Add_JBoss_Portlet_capabilities_to_this_Web_Project;
- public static String PortletFacetInstallPage_Enable_implementation_library;
+ //public static String PortletFacetInstallPage_Enable_implementation_library;
public static String PortletFacetInstallPage_JBoss_Portlet_Capabilities;
public static String PortletFacetInstallPage_User_Library;
- public static String PortletFacetInstallPage_You_have_to_choose_an_user_library;
+ //public static String PortletFacetInstallPage_You_have_to_choose_an_user_library;
+ public static String
PortletServerRuntimeProviderInstallPanel_The_targeted_runtime_contains_a_portlet_library;
public static String PortletUIActivator_The_portlet_xml_file_doesnt_exist;
static {
// initialize resource bundle
Added:
trunk/portlet/plugins/org.jboss.tools.portlet.ui/src/org/jboss/tools/portlet/ui/internal/libprov/JSFPortletServerRuntimeProviderInstallPanel.java
===================================================================
---
trunk/portlet/plugins/org.jboss.tools.portlet.ui/src/org/jboss/tools/portlet/ui/internal/libprov/JSFPortletServerRuntimeProviderInstallPanel.java
(rev 0)
+++
trunk/portlet/plugins/org.jboss.tools.portlet.ui/src/org/jboss/tools/portlet/ui/internal/libprov/JSFPortletServerRuntimeProviderInstallPanel.java 2009-09-10
00:27:18 UTC (rev 17509)
@@ -0,0 +1,29 @@
+package org.jboss.tools.portlet.ui.internal.libprov;
+
+import static org.eclipse.wst.common.project.facet.ui.internal.util.GridLayoutUtil.gl;
+
+import org.eclipse.jst.common.project.facet.ui.libprov.LibraryProviderOperationPanel;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Link;
+import org.jboss.tools.portlet.ui.Messages;
+
+public class JSFPortletServerRuntimeProviderInstallPanel extends
LibraryProviderOperationPanel {
+
+ @Override
+ public Control createControl( final Composite parent )
+ {
+ final Composite composite = new Composite( parent, SWT.NONE );
+ composite.setLayout( gl( 1, 0, 0 ) );
+
+ final Link link = new Link( composite, SWT.WRAP );
+ final GridData data = new GridData( SWT.FILL, SWT.BEGINNING, true, false );
+ data.widthHint = 300;
+ link.setLayoutData( data );
+ link.setText(
Messages.JSFPortletServerRuntimeProviderInstallPanel_The_targeted_runtime_contains_a_portlet_library
);
+
+ return composite;
+ }
+}
Added:
trunk/portlet/plugins/org.jboss.tools.portlet.ui/src/org/jboss/tools/portlet/ui/internal/libprov/JSFPortletbridgeRuntimeProviderInstallPanel.java
===================================================================
---
trunk/portlet/plugins/org.jboss.tools.portlet.ui/src/org/jboss/tools/portlet/ui/internal/libprov/JSFPortletbridgeRuntimeProviderInstallPanel.java
(rev 0)
+++
trunk/portlet/plugins/org.jboss.tools.portlet.ui/src/org/jboss/tools/portlet/ui/internal/libprov/JSFPortletbridgeRuntimeProviderInstallPanel.java 2009-09-10
00:27:18 UTC (rev 17509)
@@ -0,0 +1,118 @@
+package org.jboss.tools.portlet.ui.internal.libprov;
+
+import java.io.File;
+import java.io.FilenameFilter;
+
+import org.eclipse.jface.dialogs.IDialogSettings;
+import org.eclipse.jst.common.project.facet.ui.libprov.LibraryProviderOperationPanel;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.DirectoryDialog;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Link;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Text;
+import org.jboss.tools.portlet.core.IPortletConstants;
+import
org.jboss.tools.portlet.core.libprov.JSFPortletbridgeRuntimeLibraryProviderInstallOperationConfig;
+import org.jboss.tools.portlet.ui.Messages;
+import org.jboss.tools.portlet.ui.PortletUIActivator;
+
+public class JSFPortletbridgeRuntimeProviderInstallPanel extends
LibraryProviderOperationPanel {
+
+ @Override
+ public Control createControl( final Composite parent )
+ {
+ final Composite composite = new Composite( parent, SWT.NONE );
+ final GridLayout layout = new GridLayout( 1, false );
+
+ layout.marginWidth = 0;
+ layout.marginHeight = 0;
+ composite.setLayout( layout );
+ addPortletBridgeGroup(composite);
+// final Link link = new Link( composite, SWT.WRAP );
+// final GridData data = new GridData( SWT.FILL, SWT.BEGINNING, true, false );
+// data.widthHint = 300;
+// link.setLayoutData( data );
+// link.setText(
Messages.JSFPortletServerRuntimeProviderInstallPanel_The_targeted_runtime_contains_a_portlet_library
);
+//
+ return composite;
+ }
+
+ private void addPortletBridgeGroup(Composite composite) {
+ GridData gd;
+ Group portletBridgeGroup = new Group(composite, SWT.NONE);
+ portletBridgeGroup.setText(Messages.JSFPortletFacetInstallPage_Portletbridge_Runtime);
+ portletBridgeGroup.setLayout(new GridLayout(2, false));
+ gd = new GridData(GridData.FILL_HORIZONTAL);
+ portletBridgeGroup.setLayoutData(gd);
+
+ final Text folderText = new Text(portletBridgeGroup, SWT.SINGLE | SWT.BORDER);
+ folderText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+
+ final JSFPortletbridgeRuntimeLibraryProviderInstallOperationConfig config =
(JSFPortletbridgeRuntimeLibraryProviderInstallOperationConfig) getOperationConfig();
+
+ folderText.addModifyListener(new ModifyListener() {
+
+ public void modifyText(ModifyEvent e) {
+ config.setPortletbridgeHome(folderText.getText());
+ IDialogSettings section = getPortletBridgeSection();
+ section.put(IPortletConstants.PORTLET_BRIDGE_HOME, folderText.getText());
+ }
+ });
+ String portletbridgeRuntime = config.getPortletbridgeHome();
+ if (portletbridgeRuntime == null) {
+ IDialogSettings section = getPortletBridgeSection();
+ portletbridgeRuntime = section.get(IPortletConstants.PORTLET_BRIDGE_HOME);
+ if (portletbridgeRuntime == null){
+ portletbridgeRuntime = ""; //$NON-NLS-1$
+ }
+ config.setPortletbridgeHome(portletbridgeRuntime);
+ }
+ folderText.setText(portletbridgeRuntime);
+
+ Button folderButton = new Button(portletBridgeGroup, SWT.PUSH);
+ folderButton.setText(Messages.JSFPortletFacetInstallPage_Browse);
+ folderButton.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL));
+ folderButton.addSelectionListener(new SelectionAdapter() {
+ public void widgetSelected(SelectionEvent e) {
+ handleFolderButtonPressed(folderText);
+ }
+
+ });
+ }
+
+ private IDialogSettings getPortletBridgeSection() {
+ IDialogSettings dialogSettings = PortletUIActivator.getDefault().getDialogSettings();
+ IDialogSettings section =
dialogSettings.getSection(IPortletConstants.PORTLET_BRIDGE_HOME);
+ if (section == null) {
+ section = dialogSettings.addNewSection(IPortletConstants.PORTLET_BRIDGE_HOME);
+ }
+ return section;
+ }
+
+ private void handleFolderButtonPressed(Text folderText) {
+ String lastPath = folderText.getText();
+ DirectoryDialog dialog = new DirectoryDialog(getShell(), SWT.MULTI);
+ dialog.setText(Messages.JSFPortletFacetInstallPage_Select_Portletbridge_Runtime);
+ dialog.setFilterPath(lastPath);
+ String res = dialog.open();
+ if (res == null) {
+ return;
+ }
+ String newPath = dialog.getFilterPath();
+ folderText.setText(newPath);
+ }
+
+ private Shell getShell() {
+ return Display.getCurrent().getActiveShell();
+ }
+}
Added:
trunk/portlet/plugins/org.jboss.tools.portlet.ui/src/org/jboss/tools/portlet/ui/internal/libprov/PortletServerRuntimeProviderInstallPanel.java
===================================================================
---
trunk/portlet/plugins/org.jboss.tools.portlet.ui/src/org/jboss/tools/portlet/ui/internal/libprov/PortletServerRuntimeProviderInstallPanel.java
(rev 0)
+++
trunk/portlet/plugins/org.jboss.tools.portlet.ui/src/org/jboss/tools/portlet/ui/internal/libprov/PortletServerRuntimeProviderInstallPanel.java 2009-09-10
00:27:18 UTC (rev 17509)
@@ -0,0 +1,29 @@
+package org.jboss.tools.portlet.ui.internal.libprov;
+
+import static org.eclipse.wst.common.project.facet.ui.internal.util.GridLayoutUtil.gl;
+
+import org.eclipse.jst.common.project.facet.ui.libprov.LibraryProviderOperationPanel;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Link;
+import org.jboss.tools.portlet.ui.Messages;
+
+public class PortletServerRuntimeProviderInstallPanel extends
LibraryProviderOperationPanel {
+
+ @Override
+ public Control createControl( final Composite parent )
+ {
+ final Composite composite = new Composite( parent, SWT.NONE );
+ composite.setLayout( gl( 1, 0, 0 ) );
+
+ final Link link = new Link( composite, SWT.WRAP );
+ final GridData data = new GridData( SWT.FILL, SWT.BEGINNING, true, false );
+ data.widthHint = 300;
+ link.setLayoutData( data );
+ link.setText(
Messages.PortletServerRuntimeProviderInstallPanel_The_targeted_runtime_contains_a_portlet_library
);
+
+ return composite;
+ }
+}
Modified:
trunk/portlet/plugins/org.jboss.tools.portlet.ui/src/org/jboss/tools/portlet/ui/internal/project/facet/JSFPortletFacetInstallPage.java
===================================================================
---
trunk/portlet/plugins/org.jboss.tools.portlet.ui/src/org/jboss/tools/portlet/ui/internal/project/facet/JSFPortletFacetInstallPage.java 2009-09-09
23:59:43 UTC (rev 17508)
+++
trunk/portlet/plugins/org.jboss.tools.portlet.ui/src/org/jboss/tools/portlet/ui/internal/project/facet/JSFPortletFacetInstallPage.java 2009-09-10
00:27:18 UTC (rev 17509)
@@ -8,6 +8,8 @@
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.jdt.core.JavaCore;
import org.eclipse.jface.dialogs.IDialogSettings;
+import org.eclipse.jst.common.project.facet.core.libprov.LibraryInstallDelegate;
+import org.eclipse.jst.common.project.facet.ui.libprov.LibraryProviderFrameworkUi;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
@@ -18,6 +20,7 @@
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.DirectoryDialog;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Shell;
@@ -25,14 +28,19 @@
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.internal.dialogs.WorkbenchPreferenceDialog;
import
org.eclipse.wst.common.componentcore.datamodel.properties.IFacetDataModelProperties;
+import org.eclipse.wst.common.frameworks.datamodel.AbstractDataModelProvider;
+import org.eclipse.wst.common.frameworks.datamodel.DataModelEvent;
+import org.eclipse.wst.common.frameworks.datamodel.DataModelFactory;
import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
+import org.eclipse.wst.common.frameworks.datamodel.IDataModelListener;
import org.eclipse.wst.common.frameworks.internal.datamodel.ui.DataModelSynchHelper;
+import org.eclipse.wst.common.frameworks.internal.datamodel.ui.DataModelWizardPage;
import org.eclipse.wst.common.project.facet.core.IFacetedProjectWorkingCopy;
import org.eclipse.wst.common.project.facet.core.IProjectFacet;
import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
-import org.eclipse.wst.common.project.facet.ui.AbstractFacetWizardPage;
+import org.eclipse.wst.common.project.facet.ui.IFacetWizardPage;
+import org.eclipse.wst.common.project.facet.ui.IWizardContext;
import org.eclipse.wst.server.core.IRuntime;
-import org.eclipse.wst.server.core.ServerCore;
import org.jboss.ide.eclipse.as.core.server.IJBossServerConstants;
import org.jboss.ide.eclipse.as.core.server.IJBossServerRuntime;
import org.jboss.tools.portlet.core.IPortletConstants;
@@ -43,15 +51,14 @@
/**
* @author snjeza
*/
-public class JSFPortletFacetInstallPage extends AbstractFacetWizardPage {
+public class JSFPortletFacetInstallPage extends DataModelWizardPage implements
IFacetWizardPage {
+ private static final Object PORTLETBRIDGE_LIBRARY_PROVIDER =
"jsfportletbridge-library-provider"; //$NON-NLS-1$
private IDialogSettings dialogSettings;
- private IDataModel model;
private IDialogSettings jsfSection;
private boolean deployJars;
private String portletbridgeRuntime;
private Text folderText;
- private DataModelSynchHelper synchHelper;
private Button folderButton;
private Button deployButton;
private Combo portletBridgeLibraryCombo;
@@ -59,7 +66,7 @@
private String userLibraryName;
private Button add;
private String implementationLibrary;
- private Button addRichFacesCapabilities;
+ //private Button addRichFacesCapabilities;
private boolean hasSeamFacet;
private Button addRichFacesLibraries;
private Combo richFacesLibraryCombo;
@@ -69,7 +76,8 @@
private boolean richFacesLibrariesSelected;
public JSFPortletFacetInstallPage() {
- super("JSFPortletProjectConfigurationWizardPage"); //$NON-NLS-1$
+ super(DataModelFactory.createDataModel(new AbstractDataModelProvider() {
+ }), "jboss.jsfportal.facet.install.page"); //$NON-NLS-1$
setTitle(Messages.JSFPortletFacetInstallPage_JBoss_JSF_Portlet_Capabilities);
setDescription(Messages.JSFPortletFacetInstallPage_Add_JBoss_JSF_Portlet_capabilities_to_this_Web_Project);
// ImageDescriptor imageDesc = getDefaultPageImageDescriptor( );
@@ -122,14 +130,21 @@
}
- public void createControl(Composite parent) {
+ protected Composite createTopLevelComposite(Composite parent) {
initializeDialogUnits(parent);
Composite composite = new Composite(parent, SWT.NONE);
composite.setLayout(new GridLayout(1, false));
+ // createButton(composite);
+ LibraryInstallDelegate librariesInstallDelegate= (LibraryInstallDelegate)
getDataModel().getProperty( IPortletConstants.JSFPORTLET_LIBRARY_PROVIDER_DELEGATE );
+ Control librariesComposite= LibraryProviderFrameworkUi.createInstallLibraryPanel(
composite, librariesInstallDelegate,
+
Messages.JSFPortletFacetInstallPage_JSFPortletImplementationLibrariesFrame );
+ GridData gd = new GridData( GridData.FILL_HORIZONTAL );
+ librariesComposite.setLayoutData( gd );
+
synchHelper = new DataModelSynchHelper(model);
- addFolderGroup(composite);
- // createButton(composite);
- setControl(composite);
+ //addFolderGroup(composite);
+
+ return composite;
}
private void createButton(Composite composite) {
@@ -147,64 +162,61 @@
});
}
- public void setConfig(Object config) {
- this.model = (IDataModel) config;
- }
-
private void addFolderGroup(Composite composite) {
- portletBridgeLibraryCombo = new Combo(composite, SWT.READ_ONLY);
- GridData gd = new GridData(GridData.FILL_HORIZONTAL);
- portletBridgeLibraryCombo.setLayoutData(gd);
- portletBridgeLibraryCombo.addSelectionListener(new SelectionAdapter() {
-
- @Override
- public void widgetSelected(SelectionEvent e) {
- boolean enabled = IPortletConstants.USER_LIBRARY
- .equals(portletBridgeLibraryCombo.getText());
- userLibraries.setEnabled(enabled);
- add.setEnabled(enabled);
-
- enabled =
IPortletConstants.LIBRARIES_PROVIDED_BY_PORTLETBRIDGE.equals(portletBridgeLibraryCombo.getText());
- folderText.setEnabled(enabled);
- folderButton.setEnabled(enabled);
- model.setProperty(IPortletConstants.IMPLEMENTATION_LIBRARY,
- portletBridgeLibraryCombo.getText());
- model.setProperty(IPortletConstants.PORTLET_BRIDGE_RUNTIME,folderText.getText().trim());
- model.setProperty(IPortletConstants.USER_LIBRARY_NAME,userLibraries.getText());
- if
(IPortletConstants.LIBRARIES_PROVIDED_BY_PORTLETBRIDGE.equals(portletBridgeLibraryCombo.getText()))
{
- richFacesLibraryCombo.removeAll();
- richFacesLibraryCombo.add(IPortletConstants.LIBRARIES_PROVIDED_BY_PORTLETBRIDGE);
- richFacesLibraryCombo.add(IPortletConstants.LIBRARIES_PROVIDED_BY_RICHFACES);
- richFacesLibraryCombo.select(0);
- } else {
- richFacesLibraryCombo.removeAll();
- richFacesLibraryCombo.add(IPortletConstants.LIBRARIES_PROVIDED_BY_RICHFACES);
- richFacesLibraryCombo.select(0);
- }
- validatePage();
- }
-
- });
+// portletBridgeLibraryCombo = new Combo(composite, SWT.READ_ONLY);
+// GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+// portletBridgeLibraryCombo.setLayoutData(gd);
+// portletBridgeLibraryCombo.addSelectionListener(new SelectionAdapter() {
+//
+// @Override
+// public void widgetSelected(SelectionEvent e) {
+// boolean enabled = IPortletConstants.USER_LIBRARY
+// .equals(portletBridgeLibraryCombo.getText());
+// userLibraries.setEnabled(enabled);
+// add.setEnabled(enabled);
+//
+// enabled =
IPortletConstants.LIBRARIES_PROVIDED_BY_PORTLETBRIDGE.equals(portletBridgeLibraryCombo.getText());
+// folderText.setEnabled(enabled);
+// folderButton.setEnabled(enabled);
+// model.setProperty(IPortletConstants.IMPLEMENTATION_LIBRARY,
+// portletBridgeLibraryCombo.getText());
+// model.setProperty(IPortletConstants.PORTLET_BRIDGE_RUNTIME,folderText.getText().trim());
+// model.setProperty(IPortletConstants.USER_LIBRARY_NAME,userLibraries.getText());
+// if
(IPortletConstants.LIBRARIES_PROVIDED_BY_PORTLETBRIDGE.equals(portletBridgeLibraryCombo.getText()))
{
+// richFacesLibraryCombo.removeAll();
+// richFacesLibraryCombo.add(IPortletConstants.LIBRARIES_PROVIDED_BY_PORTLETBRIDGE);
+// richFacesLibraryCombo.add(IPortletConstants.LIBRARIES_PROVIDED_BY_RICHFACES);
+// richFacesLibraryCombo.select(0);
+// } else {
+// richFacesLibraryCombo.removeAll();
+// richFacesLibraryCombo.add(IPortletConstants.LIBRARIES_PROVIDED_BY_RICHFACES);
+// richFacesLibraryCombo.select(0);
+// }
+// validatePage();
+// }
+//
+// });
+//
+// if (portletBridgeLibrariesExistOnServer()) {
+// portletBridgeLibraryCombo.add(IPortletConstants.LIBRARIES_PROVIDED_BY_SERVER_RUNTIME);
+// }
+// portletBridgeLibraryCombo.add(IPortletConstants.USER_LIBRARY);
+//
+// addUserLibraryGroup(composite);
+//
+// portletBridgeLibraryCombo.add(IPortletConstants.LIBRARIES_PROVIDED_BY_PORTLETBRIDGE);
+//
+// addPortletBridgeGroup(composite);
+//
+// portletBridgeLibraryCombo.setText(implementationLibrary);
+//
+// synchHelper.synchCombo(portletBridgeLibraryCombo,
IPortletConstants.IMPLEMENTATION_LIBRARY, null);
+//
- if (portletBridgeLibrariesExistOnServer()) {
- portletBridgeLibraryCombo.add(IPortletConstants.LIBRARIES_PROVIDED_BY_SERVER_RUNTIME);
- }
- portletBridgeLibraryCombo.add(IPortletConstants.USER_LIBRARY);
-
- addUserLibraryGroup(composite);
-
- portletBridgeLibraryCombo.add(IPortletConstants.LIBRARIES_PROVIDED_BY_PORTLETBRIDGE);
-
- addPortletBridgeGroup(composite);
-
- portletBridgeLibraryCombo.setText(implementationLibrary);
-
- synchHelper.synchCombo(portletBridgeLibraryCombo,
IPortletConstants.IMPLEMENTATION_LIBRARY, null);
-
Group richfacesGroup = new Group(composite, SWT.NONE);
richfacesGroup.setLayout(new GridLayout(2, false));
richfacesGroup.setText(Messages.JSFPortletFacetInstallPage_Richfaces_Capabilities);
- gd = new GridData(GridData.FILL_HORIZONTAL);
+ GridData gd = new GridData(GridData.FILL_HORIZONTAL);
richfacesGroup.setLayoutData(gd);
/*
addRichFacesCapabilities= new Button(richfacesGroup,SWT.CHECK);
@@ -251,14 +263,41 @@
});
addRichFaces(richfacesGroup);
+ changeRichFaces();
+ getDataModel().addListener(new IDataModelListener() {
+
+ public void propertyChanged(DataModelEvent event) {
+ String propertyName = event.getPropertyName();
+ if (IPortletConstants.JSFPORTLET_LIBRARY_PROVIDER_DELEGATE.equals(propertyName)) {
+ changeRichFaces();
+ }
+ }
+ });
addRichFacesLibraries.setSelection(richFacesLibrariesSelected);
enableRichfacesLibraries();
richFacesLibraryCombo.select(0);
- validatePage();
+ //validatePage();
}
+ private void changeRichFaces() {
+ LibraryInstallDelegate librariesInstallDelegate= (LibraryInstallDelegate)
getDataModel().getProperty( IPortletConstants.JSFPORTLET_LIBRARY_PROVIDER_DELEGATE );
+ String providerId = librariesInstallDelegate.getLibraryProvider().getId();
+ if (providerId != null && providerId.equals(PORTLETBRIDGE_LIBRARY_PROVIDER)) {
+ richFacesLibraryCombo.removeAll();
+ richFacesLibraryCombo.add(IPortletConstants.LIBRARIES_PROVIDED_BY_PORTLETBRIDGE);
+ richFacesLibraryCombo.add(IPortletConstants.LIBRARIES_PROVIDED_BY_RICHFACES);
+ richFacesLibraryCombo.select(0);
+ } else {
+ richFacesLibraryCombo.removeAll();
+ richFacesLibraryCombo.add(IPortletConstants.LIBRARIES_PROVIDED_BY_RICHFACES);
+ richFacesLibraryCombo.select(0);
+ }
+ boolean enabled
=IPortletConstants.LIBRARIES_PROVIDED_BY_RICHFACES.equals(richFacesLibraryCombo.getText());
+ richfacesText.setEnabled(enabled);
+ richfacesButton.setEnabled(enabled);
+ }
private void addRichFaces(Composite parent) {
richfacesText = new Text(parent, SWT.SINGLE | SWT.BORDER);
richfacesText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
@@ -382,22 +421,33 @@
validatePage();
}
- private void validatePage() {
- if (!validatePortletBridge()) {
- return;
- }
- if (!validateRichFaces()) {
- return;
- }
- if (portletBridgeLibraryCombo.getText().equals(IPortletConstants.USER_LIBRARY)
&& userLibraries.getText().trim().length() <= 0) {
- setErrorMessage(Messages.PortletFacetInstallPage_You_have_to_choose_an_user_library);
- setPageComplete(false);
- } else {
- setErrorMessage(null);
- setPageComplete(true);
- }
+ @Override
+ protected String[] getValidationPropertyNames() {
+ return new String[] { IPortletConstants.JSFPORTLET_LIBRARY_PROVIDER_DELEGATE };
+ }
+ public void setConfig(Object config) {
+ model.removeListener(this);
+ synchHelper.dispose();
+
+ model = (IDataModel) config;
+ model.addListener(this);
+ synchHelper = initializeSynchHelper(model);
}
+
+ @Override
+ public void dispose() {
+ model.removeListener(this);
+ super.dispose();
+ }
+
+ public void setWizardContext(IWizardContext context) {
+
+ }
+
+ public void transferStateToConfig() {
+
+ }
private boolean portletBridgeLibrariesExistOnServer() {
IFacetedProjectWorkingCopy fpwc = (IFacetedProjectWorkingCopy)
model.getProperty(IFacetDataModelProperties.FACETED_PROJECT_WORKING_COPY);
@@ -570,24 +620,6 @@
richfacesText.setText(newPath);
}
- @Override
- public void transferStateToConfig() {
- super.transferStateToConfig();
- if (deployButton != null) {
- jsfSection.put(IPortletConstants.DEPLOY_JARS, deployButton
- .getSelection());
- }
- jsfSection.put(IPortletConstants.PORTLET_BRIDGE_RUNTIME,
- portletbridgeRuntime);
- jsfSection.put(IPortletConstants.RICHFACES_RUNTIME,
- richfacesRuntime);
- jsfSection.put(IPortletConstants.IMPLEMENTATION_LIBRARY,
- implementationLibrary);
- jsfSection.put(IPortletConstants.RICHFACES_LIBRARIES_SELECTED,
- richFacesLibrariesSelected);
-
- }
-
private void enableRichfacesLibraries() {
boolean enabled = addRichFacesLibraries.getSelection();
richFacesLibraryCombo.setEnabled(enabled);
Modified:
trunk/portlet/plugins/org.jboss.tools.portlet.ui/src/org/jboss/tools/portlet/ui/internal/project/facet/PortletFacetInstallPage.java
===================================================================
---
trunk/portlet/plugins/org.jboss.tools.portlet.ui/src/org/jboss/tools/portlet/ui/internal/project/facet/PortletFacetInstallPage.java 2009-09-09
23:59:43 UTC (rev 17508)
+++
trunk/portlet/plugins/org.jboss.tools.portlet.ui/src/org/jboss/tools/portlet/ui/internal/project/facet/PortletFacetInstallPage.java 2009-09-10
00:27:18 UTC (rev 17509)
@@ -2,6 +2,8 @@
import org.eclipse.jdt.core.JavaCore;
import org.eclipse.jface.dialogs.IDialogSettings;
+import org.eclipse.jst.common.project.facet.core.libprov.LibraryInstallDelegate;
+import org.eclipse.jst.common.project.facet.ui.libprov.LibraryProviderFrameworkUi;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
@@ -10,6 +12,7 @@
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Shell;
@@ -103,7 +106,13 @@
composite.setLayout(new GridLayout(1, false));
GridData gd = new GridData(GridData.FILL_BOTH);
composite.setLayoutData(gd);
- enableImplementationLibrary = new Button(composite, SWT.CHECK);
+ LibraryInstallDelegate librariesInstallDelegate= (LibraryInstallDelegate)
getDataModel().getProperty( IPortletConstants.PORTLET_LIBRARY_PROVIDER_DELEGATE );
+ Control librariesComposite= LibraryProviderFrameworkUi.createInstallLibraryPanel(
composite, librariesInstallDelegate,
+
Messages.PortletFacetInstallPage_PortletImplementationLibrariesFrame );
+ gd = new GridData( GridData.FILL_HORIZONTAL );
+ librariesComposite.setLayoutData( gd );
+
+ /*enableImplementationLibrary = new Button(composite, SWT.CHECK);
enableImplementationLibrary.setText(Messages.PortletFacetInstallPage_Enable_implementation_library);
enableImplementationLibrary
.setSelection(enableImplementationLibraryValue);
@@ -215,7 +224,7 @@
model.setProperty(IPortletConstants.USER_LIBRARY_NAME,
userLibraries
.getText());
- /*deployButton = new Button(composite, SWT.CHECK);
+*/ /*deployButton = new Button(composite, SWT.CHECK);
deployButton.setText(Messages.JSFPortletFacetInstallPage_Deploy_jars);
deployButton.setSelection(deployPortletJars);
deployButton.addSelectionListener(new SelectionAdapter() {
@@ -227,7 +236,7 @@
}
}); */
- validatePage();
+ //validatePage();
return composite;
}
@@ -251,7 +260,7 @@
@Override
protected String[] getValidationPropertyNames() {
- return new String[0];
+ return new String[] { IPortletConstants.PORTLET_LIBRARY_PROVIDER_DELEGATE };
}
public void setConfig(Object config) {
@@ -304,20 +313,5 @@
});
super.storeDefaultSettings();
}
-
- @Override
- protected void validatePage() {
- //super.validatePage();
- if (enableImplementationLibrary == null) {
- return;
- }
- if (enableImplementationLibrary.getSelection() &&
implementationLibraryCombo.getText().equals(IPortletConstants.USER_LIBRARY) &&
userLibraries.getText().trim().length() <= 0) {
- setErrorMessage(Messages.PortletFacetInstallPage_You_have_to_choose_an_user_library);
- setPageComplete(false);
- } else {
- setErrorMessage(null);
- setPageComplete(true);
- }
- }
}
Modified:
trunk/portlet/plugins/org.jboss.tools.portlet.ui/src/org/jboss/tools/portlet/ui/messages.properties
===================================================================
---
trunk/portlet/plugins/org.jboss.tools.portlet.ui/src/org/jboss/tools/portlet/ui/messages.properties 2009-09-09
23:59:43 UTC (rev 17508)
+++
trunk/portlet/plugins/org.jboss.tools.portlet.ui/src/org/jboss/tools/portlet/ui/messages.properties 2009-09-10
00:27:18 UTC (rev 17509)
@@ -39,10 +39,10 @@
JSFPortletFacetInstallPage_Select_RichFaces_Runtime=Select RichFaces Runtime
PortletFacetInstallPage_Add=Add...
PortletFacetInstallPage_Add_JBoss_Portlet_capabilities_to_this_Web_Project=Add JBoss
Portlet capabilities to this Web Project
-PortletFacetInstallPage_Enable_implementation_library=Enable implementation library
+#PortletFacetInstallPage_Enable_implementation_library=Enable implementation library
PortletFacetInstallPage_JBoss_Portlet_Capabilities=JBoss Portlet Capabilities
PortletFacetInstallPage_User_Library=User Library
-PortletFacetInstallPage_You_have_to_choose_an_user_library=You have to choose an user
library
+#PortletFacetInstallPage_You_have_to_choose_an_user_library=You have to choose an user
library
PortletUIActivator_The_portlet_xml_file_doesnt_exist=The portlet.xml file doesn't
exist
NewJSFPortletClassWizardPage_Choose_a_JSF_portlet_class=Choose a JSF portlet class:
NewJSFPortletClassWizardPage_Choose_a_Seam_portlet_class=Choose a Seam portlet class:
@@ -54,3 +54,7 @@
NewPortletWizard_Specify_modifiers_interfaces_to_implement_and_method_stubs_to_generate=Specify
modifiers, interfaces to implement and method stubs to generate.
No_portlets_exist_to_add=No portlets exist to add
JBossPortletPreferencePage_Check_Runtimes_for_Portlet_Components=Check Runtimes for
Portlet Components
+PortletFacetInstallPage_PortletImplementationLibrariesFrame=Portlet Implementation
Library
+JSFPortletFacetInstallPage_JSFPortletImplementationLibrariesFrame=JSFPortlet
Implementation Library
+PortletServerRuntimeProviderInstallPanel_The_targeted_runtime_contains_a_portlet_library=The
targeted runtime contains a portlet library. Selecting this option will configure the
classpath container that includes the library.
+JSFPortletServerRuntimeProviderInstallPanel_The_targeted_runtime_contains_a_portlet_library=The
targeted runtime contains a JSF portlet library. Selecting this option will copy libraries
from the Server Runtime.