/******************************************************************************* * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. *******************************************************************************/ package com.liferay.ide.portlet.core.lfportlet.model; import com.liferay.ide.portlet.core.lfportlet.model.internal.IconRelativePathService; import com.liferay.ide.portlet.core.lfportlet.model.internal.LiferayPortletNameValidationService; import org.eclipse.sapphire.Element; import org.eclipse.sapphire.ElementList; import org.eclipse.sapphire.ElementType; import org.eclipse.sapphire.ListProperty; import org.eclipse.sapphire.PossibleValues; import org.eclipse.sapphire.ReferenceValue; import org.eclipse.sapphire.Type; import org.eclipse.sapphire.Unique; import org.eclipse.sapphire.Value; import org.eclipse.sapphire.ValueProperty; import org.eclipse.sapphire.java.JavaType; import org.eclipse.sapphire.java.JavaTypeConstraint; import org.eclipse.sapphire.java.JavaTypeKind; import org.eclipse.sapphire.java.JavaTypeName; import org.eclipse.sapphire.modeling.Path; import org.eclipse.sapphire.modeling.Status.Severity; import org.eclipse.sapphire.modeling.annotations.DefaultValue; import org.eclipse.sapphire.modeling.annotations.FileExtensions; import org.eclipse.sapphire.modeling.annotations.FileSystemResourceType; import org.eclipse.sapphire.modeling.annotations.Image; import org.eclipse.sapphire.modeling.annotations.Label; import org.eclipse.sapphire.modeling.annotations.MustExist; import org.eclipse.sapphire.modeling.annotations.NumericRange; import org.eclipse.sapphire.modeling.annotations.Reference; import org.eclipse.sapphire.modeling.annotations.Required; import org.eclipse.sapphire.modeling.annotations.Service; import org.eclipse.sapphire.modeling.annotations.ValidFileSystemResourceType; import org.eclipse.sapphire.modeling.xml.annotations.XmlBinding; import org.eclipse.sapphire.modeling.xml.annotations.XmlListBinding; /** * @author Simon Jiang */ @Image( path = "images/elcl16/portlet_16x16.png" ) public interface LiferayPortlet extends Element { ElementType TYPE = new ElementType( LiferayPortlet.class ); // *** portlet-name *** @Label( standard = "Portlet Name" ) @Required @Service( impl = LiferayPortletNameValidationService.class ) @Unique @XmlBinding( path = "portlet-name" ) ValueProperty PROP_PORTLET_NAME = new ValueProperty( TYPE, "PortletName" ); Value<String> getPortletName(); void setPortletName( String portletName ); // *** icon? *** @Label( standard = "Icon" ) @MustExist @Service( impl = IconRelativePathService.class ) @Type( base = Path.class ) @ValidFileSystemResourceType( FileSystemResourceType.FILE ) @XmlBinding( path = "icon" ) ValueProperty PROP_ICON = new ValueProperty( TYPE, "Icon" ); Value<Path> getIcon(); void setIcon( Path icon ); void setIcon( String icon ); // css-class-wrapper? @Label( standard = "Css Class Wrapper" ) @XmlBinding( path = "css-class-wrapper" ) ValueProperty PROP_CSS_CLASS_WRAPPER = new ValueProperty( TYPE, "CssClassWrapper" ); Value<String> getCssClassWrapper(); void setCssClassWrappper( String value ); // header-portlet-css* @Label( standard = "Header Portlet Css" ) @Type( base = PortletStyleElement.class) @FileExtensions( expr = ".css" ) @XmlListBinding( mappings = @XmlListBinding.Mapping( element = "header-portlet-css", type = PortletStyleElement.class ) ) ListProperty PROP_HEADER_PORTLET_CSSES = new ListProperty( TYPE, "HeaderPortletCsses" ); ElementList<PortletStyleElement> getHeaderPortletCsses(); // private-request-attributes? @DefaultValue( text = "true" ) @Label( standard = "Private Request Attributes" ) @Type( base = Boolean.class ) @XmlBinding( path = "private-request-attributes" ) ValueProperty PROP_REQUEST_SESSION_ATTRIBUTES = new ValueProperty( TYPE, "PrivateRequestAttributes" ); Value<Boolean> getPrivateRequestAttributes(); void setPrivateRequestAttributes( Boolean value ); void setPrivateRequestAttributes( String value ); // private-session-attributes? @DefaultValue( text = "true" ) @Label( standard = "Private Session Attributes" ) @Type( base = Boolean.class ) @XmlBinding( path = "private-session-attributes" ) ValueProperty PROP_PRIVATE_SESSION_ATTRIBUTES = new ValueProperty( TYPE, "PrivateSessionAttributes" ); Value<Boolean> getPrivateSessionAttributes(); void setPrivateSessionAttributes( Boolean value ); void setPrivateSessionAttributes( String value ); // use-default-template? @DefaultValue( text = "true" ) @Label( standard = "Use Default Template" ) @Type( base = Boolean.class ) @XmlBinding( path = "use-default-template" ) ValueProperty PROP_USE_DEFAULT_TEMPLATE = new ValueProperty( TYPE, "UseDefaultTemplate" ); Value<Boolean> getUseDefaultTemplate(); void setUseDefaultTemplate( Boolean value ); void setUseDefaultTemplate( String value ); // render-weight? @DefaultValue( text = "1" ) @Label( standard = " Render Weight" ) @Type( base = Double.class ) @XmlBinding( path = "render-weight" ) ValueProperty PROP_RENDER_WEIGHT = new ValueProperty( TYPE, "RenderWeight" ); Value<Double> getRenderWeight(); void setRenderWeight( Double value ); void setRenderWeight( String value ); // *** struts-path? *** @Label( standard = "Struts Path" ) @XmlBinding( path = "struts-path" ) ValueProperty PROP_STRUTS_PATH = new ValueProperty( TYPE, "StrutsPath" ); Value<String> getStrutsPath(); void setStrutsPath( String value ); // preferences-owned-by-group? @DefaultValue( text = "true" ) @Label( standard = "Preferences Owned By Group" ) @Type( base = Boolean.class ) @XmlBinding( path = "preferences-owned-by-group" ) ValueProperty PROP_PREFERENCES_OWNED_BY_GROUP = new ValueProperty( TYPE, "PreferencesOwnedByGroup" ); Value<Boolean> getPreferencesOwnedByGroup(); void setPreferencesOwnedByGroup( Boolean value ); void setPreferencesOwnedByGroup( String value ); // *** configuration-action-class? *** @JavaTypeConstraint( kind = JavaTypeKind.CLASS, type = "com.liferay.portal.kernel.portlet.ConfigurationAction" ) @MustExist @Reference( target = JavaType.class ) @Type( base = JavaTypeName.class ) @XmlBinding( path = "configuration-action-class" ) ValueProperty PROP_CONFIGURATION_ACTION_CLASS = new ValueProperty( TYPE, "ConfigurationActionClass" ); ReferenceValue<JavaTypeName, JavaType> getConfigurationActionClass(); void setConfiguration( JavaTypeName value ); void setConfiguration( String value ); // add-default-resource? @Label( standard = "Add Default Resource" ) @Type( base = Boolean.class ) @DefaultValue( text = "false" ) @XmlBinding( path = "add-default-resource" ) ValueProperty PROP_ADD_DEFAULT_RESOURDE = new ValueProperty( TYPE, "AddDefaultResource" ); Value<Boolean> getAddDefaultResource(); void setAddDefaultSystem( Boolean value ); void setAddDefaultSystem( String value ); // footer-portlet-javascript* @Label( standard = "Footer Portlet Javascript" ) @Type( base = PortletStyleElement.class ) @FileExtensions( expr = ".js" ) @XmlListBinding( mappings = @XmlListBinding.Mapping( element = "footer-portlet-javascript", type = PortletStyleElement.class ) ) ListProperty PROP_FOOTER_PORTLET_JAVASCRIPTS = new ListProperty( TYPE, "FooterPortletJavascripts" ); ElementList<PortletStyleElement> getFooterPortletJavascripts(); // staged-model-data-handler-class* @Label( standard = "Staged Model Data Handler Classes" ) @Type( base = StagedModelDataHandlerClass.class ) @XmlListBinding( mappings = @XmlListBinding.Mapping( element = "staged-model-data-handler-class", type = StagedModelDataHandlerClass.class ) ) ListProperty PROP_STAGED_MODEL_DATA_HANDLER_CLASSES = new ListProperty( TYPE, "StagedModelDataHandlerClasses" ); ElementList<StagedModelDataHandlerClass> getStagedModelDataHandlerClasses(); // control-panel-entry-category? @Label( standard = "Control Panel Entry Category" ) @PossibleValues ( invalidValueSeverity = Severity.OK, values = { "apps", "configurations", "sites", "users", "site_administration.configuration", "site_administration.content", "site_administration.pages", "site_administration.users" } ) @XmlBinding( path = "control-panel-entry-category" ) ValueProperty PROP_CONTROL_PANEL_ENTRY_CATEGORY = new ValueProperty( TYPE, "ControlPanelEntryCategory" ); Value<String> getControlPanelEntryCategory(); void setControlPanelEntryCategory( String value ); // control-panel-weight? @Label( standard = "Control Panel Entry Weight" ) @NumericRange( min = "0" ) @Type( base = Double.class ) @XmlBinding( path = "control-panel-entry-weight" ) ValueProperty PROP_CONTROL_PANEL_ENTRY_WEIGHT = new ValueProperty( TYPE, "ControlPanelEntryWeight" ); Value<Double> getControlPanelEntryWeight(); void setControlPanelEntryWeight( Double value ); void setControlPanelEntryWeight( String value ); // friendly-url-mapper-class? @JavaTypeConstraint( kind = JavaTypeKind.CLASS, type = "com.liferay.portal.kernel.portlet.FriendlyURLMapper" ) @Label( standard = "Friendly Url Mapper Class" ) @MustExist @Reference( target = JavaType.class ) @Type( base = JavaTypeName.class ) @XmlBinding( path = "friendly-url-mapper-class" ) ValueProperty PROP_FRIENDLY_URL_MAPPER_CLASS = new ValueProperty( TYPE, "FriendlyURLMapperClass" ); ReferenceValue<JavaTypeName, JavaType> getFriendlyURLMapperClass(); void setFriendlyURLMapperClass( JavaTypeName value ); void setFriendlyURLMapperClass( String value ); // friendly-url-mapping? @Label( standard = "Friendly URL Mapping " ) @XmlBinding( path = "friendly-url-mapping" ) ValueProperty PROP_FRIENDLY_URL_MAPPING = new ValueProperty( TYPE, "FriendlyURLMapping" ); Value<String> getFriendlyURLMapping(); void setFriendlyURLMapping( String value ); // friendly-url-routes? @Label( standard = "Friendly URL Routes " ) @XmlBinding( path = "friendly-url-routes" ) ValueProperty PROP_FRIENDLY_URL_Routes = new ValueProperty( TYPE, "FriendlyURLRoutes" ); Value<String> getFriendlyURLRoutes(); void setFriendlyURLRoutes( String value ); // portlet-data-handler-class? @JavaTypeConstraint( kind = JavaTypeKind.CLASS, type = "com.liferay.portal.kernel.lar.PortletDataHandler" ) @Label( standard = "Portlet Data Handler Class" ) @MustExist @Reference( target = JavaType.class ) @Type( base = JavaTypeName.class ) @XmlBinding( path = "portlet-data-handler-class" ) ValueProperty PROP_PORTLET_DATA_HANDLER_CLASS = new ValueProperty( TYPE, "PortletDataHandlerClass" ); ReferenceValue<JavaTypeName, JavaType> getPortletDataHandlerClass(); void setPortletDataHandlerClass( JavaTypeName value ); void setPortletDataHandlerClass( String value ); // system? @DefaultValue( text = "false" ) @Label( standard = "Make portlet as system portlet" ) @Type( base = Boolean.class ) @XmlBinding( path = "system" ) ValueProperty PROP_SYSTEM = new ValueProperty( TYPE, "System" ); Value<Boolean> getSystem(); void setSystem( Boolean value ); void setSystem( String value ); // instanceable? @DefaultValue( text = "false" ) @Label( standard = "Make multiple portlet instance in Web Page" ) @Type( base = Boolean.class ) @XmlBinding( path = "instanceable" ) ValueProperty PROP_INSTANCEABLE = new ValueProperty( TYPE, "Instanceable" ); Value<Boolean> getInstanceable(); void setInstanceable( Boolean value ); void setInstanceable( String value ); // scopeable? @DefaultValue( text = "false" ) @Label( standard = "Permit user to customize portlet " ) @Type( base = Boolean.class ) @XmlBinding( path = "scopeable" ) ValueProperty PROP_SCOPEABLE = new ValueProperty( TYPE, "Scopeable" ); Value<Boolean> getScopeable(); void setScopeable( Boolean value ); void setScopeable( String value ); // *** indexer-class* *** @Label( standard = "Indexer Class" ) @Type( base = IndexerClass.class ) @XmlListBinding( mappings = @XmlListBinding.Mapping( element = "indexer-class", type = IndexerClass.class ) ) ListProperty PROP_INDEXER_CLASSES = new ListProperty( TYPE, "IndexerClasses" ); ElementList<IndexerClass> getIndexerClasses(); // social-activity-interpreter-class* @Type( base = SocialActivityInterpreterClass.class ) @XmlListBinding( mappings = @XmlListBinding.Mapping( element = "social-activity-interpreter-class", type = SocialActivityInterpreterClass.class ) ) ListProperty PROP_SOCIAL_ACTIVITY_INTERPRETER_CLASSES = new ListProperty( TYPE, "SocialActivityInterpreterClasses" ); ElementList<SocialActivityInterpreterClass> getSocialActivityInterpreterClasses(); // header-portlet-javascript* @Label( standard = "Header Portlet Javascript" ) @Type( base = PortletStyleElement.class ) @FileExtensions( expr = ".js" ) @XmlListBinding( mappings = @XmlListBinding.Mapping( element = "header-portlet-javascript", type = PortletStyleElement.class ) ) ListProperty PROP_HEADER_PORTLET_JAVASCRIPTS = new ListProperty( TYPE, "HeaderPortletJavascripts" ); ElementList<PortletStyleElement> getHeaderPortletJavascripts(); // *** schedule entry* *** @Type( base = SchedulerEntry.class ) @XmlListBinding( mappings = @XmlListBinding.Mapping( element = "scheduler-entry", type = SchedulerEntry.class ) ) ListProperty PROP_SCHEDULER_ENTRIES = new ListProperty( TYPE, "SchedulerEntries" ); ElementList<SchedulerEntry> getSchedulerEntries(); // control-panel-entry-class? @JavaTypeConstraint( kind = JavaTypeKind.CLASS, type = "com.liferay.portlet.ControlPanelEntry" ) @Label( standard = "Control Panel Entry Class" ) @MustExist @Type( base = JavaTypeName.class ) @Reference( target = JavaType.class ) @XmlBinding( path = "control-panel-entry-class" ) ValueProperty PROP_CONTROL_PANEL_ENTRY_CLASS = new ValueProperty( TYPE, "ControlPanelEntryClass" ); ReferenceValue<JavaTypeName, JavaType> getControlPanelEntryClass(); void setControlPanelEntryClass( JavaTypeName value ); void setControlPanleEntryClass( String value ); // asset-renderer-factory* @Label( standard = "Asset Renderer Factories" ) @Type( base = AssetRendererFactory.class ) @XmlListBinding( mappings = @XmlListBinding.Mapping( element = "asset-renderer-factory", type = AssetRendererFactory.class ) ) ListProperty PROP_ASSET_RENDERER_FACTORIES = new ListProperty( TYPE, "AssetRendererFactories" ); ElementList<AssetRendererFactory> getAssetRendererFactories(); // trash-handler* @Label( standard = "Trash Handlers" ) @Type( base = TrashHandler.class ) @XmlListBinding( mappings = @XmlListBinding.Mapping( element = "trash-handler", type = TrashHandler.class ) ) ListProperty PROP_TRASH_HANDLERS = new ListProperty( TYPE, "TrashHandlers" ); ElementList<TrashHandler> getTrashHandlers(); // workflow-handler @JavaTypeConstraint( kind = JavaTypeKind.CLASS, type = "com.liferay.portal.kernel.workflow.WorkflowHandler" ) @Label( standard = "Workflow Handler" ) @MustExist @Reference( target = JavaType.class ) @Type( base = JavaTypeName.class ) @XmlBinding( path = "workflow-handler" ) ValueProperty PROP_WORKFLOW_HANDLER = new ValueProperty( TYPE, "WorkflowHandler" ); ReferenceValue<JavaTypeName, JavaType> getWorkflowHandler(); void setWorkflowHandler( JavaTypeName value ); void setWorkflowHandler( String value ); }