Author: mbooth
Date: 2004-12-05 11:42:49 +0100 (Sun, 05 Dec 2004)
New Revision: 141
Added:
ccm-ldn-navigation/trunk/sql/ccm-ldn-navigation/upgrade/oracle-se-1.4.3-1.4.4.sql
ccm-ldn-navigation/trunk/sql/ccm-ldn-navigation/upgrade/postgres-1.4.3-1.4.4.sql
Modified:
ccm-ldn-navigation/trunk/application.xml
ccm-ldn-navigation/trunk/pdl/com/arsdigita/london/navigation/portlet/ObjectListPortlet.pdl
ccm-ldn-navigation/trunk/src/ccm-ldn-navigation.upgrade
ccm-ldn-navigation/trunk/src/com/arsdigita/london/navigation/portlet/ObjectListPortlet.java
ccm-ldn-navigation/trunk/src/com/arsdigita/london/navigation/ui/portlet/ObjectListPortletEditor.java
ccm-ldn-navigation/trunk/src/com/arsdigita/london/navigation/ui/portlet/ObjectListPortletRenderer.java
Log:
Add properties to ObjectListPortletEditor
Modified: ccm-ldn-navigation/trunk/application.xml
===================================================================
--- ccm-ldn-navigation/trunk/application.xml 2004-12-05 10:40:38 UTC (rev 140)
+++ ccm-ldn-navigation/trunk/application.xml 2004-12-05 10:42:49 UTC (rev 141)
@@ -2,8 +2,8 @@
<ccm:application name="ccm-ldn-navigation"
prettyName="Navigation"
- version="1.4.3"
- release="9"
+ version="1.4.4"
+ release="1"
webapp="ROOT"
xmlns:ccm="http://ccm.redhat.com/ccm-project">
Modified: ccm-ldn-navigation/trunk/pdl/com/arsdigita/london/navigation/portlet/ObjectListPortlet.pdl
===================================================================
--- ccm-ldn-navigation/trunk/pdl/com/arsdigita/london/navigation/portlet/ObjectListPortlet.pdl 2004-12-05 10:40:38 UTC (rev 140)
+++ ccm-ldn-navigation/trunk/pdl/com/arsdigita/london/navigation/portlet/ObjectListPortlet.pdl 2004-12-05 10:42:49 UTC (rev 141)
@@ -27,6 +27,7 @@
String[1..1] ordering = portlet_object_list.ordering VARCHAR(200);
String[0..1] xmlAttributes = portlet_object_list.xml_attributes VARCHAR(200);
+ String[0..1] dcProperties = portlet_object_list.dc_properties VARCHAR(200);
Integer[1..1] count = portlet_object_list.count INTEGER;
Added: ccm-ldn-navigation/trunk/sql/ccm-ldn-navigation/upgrade/oracle-se-1.4.3-1.4.4.sql
===================================================================
--- ccm-ldn-navigation/trunk/sql/ccm-ldn-navigation/upgrade/oracle-se-1.4.3-1.4.4.sql 2004-12-05 10:40:38 UTC (rev 140)
+++ ccm-ldn-navigation/trunk/sql/ccm-ldn-navigation/upgrade/oracle-se-1.4.3-1.4.4.sql 2004-12-05 10:42:49 UTC (rev 141)
@@ -0,0 +1 @@
+alter table portlet_object_list add dc_properties VARCHAR(200);
Added: ccm-ldn-navigation/trunk/sql/ccm-ldn-navigation/upgrade/postgres-1.4.3-1.4.4.sql
===================================================================
--- ccm-ldn-navigation/trunk/sql/ccm-ldn-navigation/upgrade/postgres-1.4.3-1.4.4.sql 2004-12-05 10:40:38 UTC (rev 140)
+++ ccm-ldn-navigation/trunk/sql/ccm-ldn-navigation/upgrade/postgres-1.4.3-1.4.4.sql 2004-12-05 10:42:49 UTC (rev 141)
@@ -0,0 +1 @@
+alter table portlet_object_list add dc_properties VARCHAR(200);
Modified: ccm-ldn-navigation/trunk/src/ccm-ldn-navigation.upgrade
===================================================================
--- ccm-ldn-navigation/trunk/src/ccm-ldn-navigation.upgrade 2004-12-05 10:40:38 UTC (rev 140)
+++ ccm-ldn-navigation/trunk/src/ccm-ldn-navigation.upgrade 2004-12-05 10:42:49 UTC (rev 141)
@@ -6,4 +6,7 @@
<version from="1.4.2" to="1.4.3">
<script sql="ccm-ldn-navigation/upgrade/::database::-1.4.2-1.4.3.sql"/>
</version>
+ <version from="1.4.3" to="1.4.4">
+ <script sql="ccm-ldn-navigation/upgrade/::database::-1.4.3-1.4.4.sql"/>
+ </version>
</upgrade>
Modified: ccm-ldn-navigation/trunk/src/com/arsdigita/london/navigation/portlet/ObjectListPortlet.java
===================================================================
--- ccm-ldn-navigation/trunk/src/com/arsdigita/london/navigation/portlet/ObjectListPortlet.java 2004-12-05 10:40:38 UTC (rev 140)
+++ ccm-ldn-navigation/trunk/src/com/arsdigita/london/navigation/portlet/ObjectListPortlet.java 2004-12-05 10:42:49 UTC (rev 141)
@@ -26,15 +26,27 @@
import com.arsdigita.kernel.ACSObject;
import com.arsdigita.categorization.Category;
import com.arsdigita.categorization.CategoryCollection;
+
+import com.arsdigita.london.navigation.AbstractNavigationModel;
import com.arsdigita.london.navigation.DataCollectionDefinition;
+import com.arsdigita.london.navigation.DataCollectionProperty;
+import com.arsdigita.london.navigation.DataCollectionPropertyRenderer;
import com.arsdigita.london.navigation.NavigationModel;
-import com.arsdigita.london.navigation.AbstractNavigationModel;
import com.arsdigita.london.navigation.ui.portlet.ObjectListPortletRenderer;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
import java.util.List;
-import java.util.ArrayList;
+import java.util.Map;
+import java.util.StringTokenizer;
+import org.apache.log4j.Logger;
+
public class ObjectListPortlet extends Portlet {
+ private static final Logger s_log =
+ Logger.getLogger( ObjectListPortlet.class );
public static final String BASE_DATA_OBJECT_TYPE =
"com.arsdigita.london.navigation.portlet.ObjectListPortlet";
@@ -43,6 +55,7 @@
public static final String SPECIFIC_OBJECT_TYPE = "specificObjectType";
public static final String ORDERING = "ordering";
public static final String ATTRIBUTES = "xmlAttributes";
+ public static final String PROPERTIES = "dcProperties";
public static final String COUNT = "count";
public static final String FILTER_CATEGORY = "filterCategory";
@@ -51,10 +64,42 @@
public static final String DESCEND_CATEGORIES = "descendCategories";
public static final String EXCLUDE_INDEX_OBJECTS = "excludeIndexObjects";
+ private static final Map s_properties =
+ Collections.synchronizedMap( new HashMap() );
public ObjectListPortlet(DataObject dobj) {
super(dobj);
}
+
+ public static void addProperty( String key, String title,
+ DataCollectionProperty property,
+ DataCollectionPropertyRenderer renderer ) {
+ s_properties.put( key, new Object[] { title, property, renderer } );
+ }
+
+ public static Iterator getRegisteredProperties() {
+ return s_properties.entrySet().iterator();
+ }
+
+ public static DataCollectionProperty getDCProperty( String key ) {
+ Object[] entry = (Object[]) s_properties.get( key );
+ if( null == entry ) {
+ s_log.error( "dcProperty request for non-existent key: " + key );
+ return null;
+ }
+
+ return (DataCollectionProperty) entry[1];
+ }
+
+ public static DataCollectionPropertyRenderer getDCPropertyRenderer( String key ) {
+ Object[] entry = (Object[]) s_properties.get( key );
+ if( null == entry ) {
+ s_log.error( "dcPropertyRenderer request for non-existent key: " + key );
+ return null;
+ }
+
+ return (DataCollectionPropertyRenderer) entry[2];
+ }
public void initialize() {
super.initialize();
@@ -138,6 +183,36 @@
public boolean isExludingIndexObjects() {
return ((Boolean)get(EXCLUDE_INDEX_OBJECTS)).booleanValue();
}
+
+ public void setProperties( Object[] properties ) {
+ StringBuffer buf = new StringBuffer();
+
+ if( null != properties ) {
+ for( int i = 0; i < properties.length; i++ ) {
+ buf.append( properties[i].toString() );
+
+ if( i != properties.length - 1 ) {
+ buf.append( ',' );
+ }
+ }
+ }
+
+ set( PROPERTIES, buf.toString() );
+ }
+
+ public String[] getProperties() {
+ String properties = (String) get( PROPERTIES );
+ if( null == properties ) return new String[] { };
+
+ StringTokenizer tok = new StringTokenizer( properties, "," );
+ String[] result = new String[ tok.countTokens() ];
+
+ for( int i = 0; i < result.length; i++ ) {
+ result[i] = tok.nextToken();
+ }
+
+ return result;
+ }
protected DataCollectionDefinition newDataCollectionDefinition() {
return new DataCollectionDefinition();
@@ -156,6 +231,12 @@
def.setCheckPermissions(isCheckingPermissions());
def.setExcludeIndexObjects(isExludingIndexObjects());
+ String[] properties = getProperties();
+ for( int i = 0; i < properties.length; i++ ) {
+ DataCollectionProperty dcp = getDCProperty( properties[i] );
+ def.addProperty( dcp );
+ }
+
return def;
}
Modified: ccm-ldn-navigation/trunk/src/com/arsdigita/london/navigation/ui/portlet/ObjectListPortletEditor.java
===================================================================
--- ccm-ldn-navigation/trunk/src/com/arsdigita/london/navigation/ui/portlet/ObjectListPortletEditor.java 2004-12-05 10:40:38 UTC (rev 140)
+++ ccm-ldn-navigation/trunk/src/com/arsdigita/london/navigation/ui/portlet/ObjectListPortletEditor.java 2004-12-05 10:42:49 UTC (rev 141)
@@ -18,29 +18,30 @@
package com.arsdigita.london.navigation.ui.portlet;
-import com.arsdigita.bebop.form.Widget;
-import com.arsdigita.bebop.form.SingleSelect;
-import com.arsdigita.bebop.form.RadioGroup;
+import com.arsdigita.london.navigation.portlet.ObjectListPortlet;
+
+import com.arsdigita.bebop.ColumnPanel;
+import com.arsdigita.bebop.FormProcessException;
+import com.arsdigita.bebop.Label;
+import com.arsdigita.bebop.PageState;
+import com.arsdigita.bebop.RequestLocal;
+import com.arsdigita.bebop.event.PrintEvent;
+import com.arsdigita.bebop.event.PrintListener;
+import com.arsdigita.bebop.form.MultipleSelect;
import com.arsdigita.bebop.form.Option;
import com.arsdigita.bebop.form.OptionGroup;
+import com.arsdigita.bebop.form.RadioGroup;
import com.arsdigita.bebop.form.SingleSelect;
import com.arsdigita.bebop.form.TextField;
-import com.arsdigita.bebop.PageState;
-import com.arsdigita.bebop.Label;
-import com.arsdigita.bebop.ColumnPanel;
-import com.arsdigita.bebop.FormProcessException;
-import com.arsdigita.bebop.parameters.ParameterModel;
-import com.arsdigita.bebop.parameters.StringParameter;
+import com.arsdigita.bebop.form.Widget;
+import com.arsdigita.bebop.parameters.ArrayParameter;
import com.arsdigita.bebop.parameters.BooleanParameter;
import com.arsdigita.bebop.parameters.IntegerParameter;
import com.arsdigita.bebop.parameters.NotNullValidationListener;
-import com.arsdigita.bebop.RequestLocal;
-
+import com.arsdigita.bebop.parameters.ParameterModel;
+import com.arsdigita.bebop.parameters.StringParameter;
import com.arsdigita.bebop.portal.PortletConfigFormSection;
-import com.arsdigita.bebop.event.PrintEvent;
-import com.arsdigita.bebop.event.PrintListener;
-
import com.arsdigita.categorization.Category;
import com.arsdigita.portal.Portlet;
import com.arsdigita.kernel.ACSObject;
@@ -52,15 +53,15 @@
import com.arsdigita.util.StringUtils;
import com.arsdigita.kernel.ResourceType;
-import com.arsdigita.london.navigation.portlet.ObjectListPortlet;
import com.arsdigita.london.util.ui.CategoryPicker;
import com.arsdigita.london.util.ui.ApplicationCategoryPicker;
import com.redhat.persistence.metadata.Root;
import com.redhat.persistence.common.Path;
+import java.util.Iterator;
+import java.util.Map;
import java.util.TooManyListenersException;
-import java.util.Iterator;
public class ObjectListPortletEditor extends PortletConfigFormSection {
@@ -72,6 +73,7 @@
private OptionGroup m_descendCategories;
private OptionGroup m_checkPermissions;
private OptionGroup m_excludeIndexObjects;
+ private OptionGroup m_properties;
private Widget m_count;
private Widget m_order;
@@ -142,6 +144,10 @@
m_attributes = buildAttributesWidget(new StringParameter("attributes"));
add(new Label("Output attributes:", Label.BOLD), ColumnPanel.RIGHT);
add(m_attributes);
+
+ m_properties = new MultipleSelect( "properties" );
+ add( new Label( "Output properties:", Label.BOLD ), ColumnPanel.RIGHT );
+ add( m_properties );
}
protected Widget buildBaseObjectTypeWidget(ParameterModel param) {
@@ -197,6 +203,15 @@
Portlet portlet)
throws FormProcessException {
super.initWidgets(state, portlet);
+
+ Iterator properties = ObjectListPortlet.getRegisteredProperties();
+ while( properties.hasNext() ) {
+ Map.Entry entry = (Map.Entry) properties.next();
+ String key = entry.getKey().toString();
+ String title = ((Object[]) entry.getValue())[0].toString();
+
+ m_properties.addOption( new Option( key, title ), state );
+ }
if (portlet != null) {
ObjectListPortlet myportlet = (ObjectListPortlet)portlet;
@@ -216,6 +231,7 @@
m_checkPermissions.setValue(state, new Boolean(myportlet.isCheckingPermissions()));
m_excludeIndexObjects.setValue(state, new Boolean(myportlet.isExludingIndexObjects()));
+ m_properties.setValue( state, myportlet.getProperties() );
} else {
m_baseObjectType.setValue(state, null);
m_restrictedObjectType.setValue(state, null);
@@ -329,7 +345,6 @@
myportlet.setDescendCategories(((Boolean)m_descendCategories.getValue(state)).booleanValue());
myportlet.setCheckPermissions(((Boolean)m_checkPermissions.getValue(state)).booleanValue());
myportlet.setExcludeIndexObjects(((Boolean)m_excludeIndexObjects.getValue(state)).booleanValue());
+ myportlet.setProperties( (Object[]) m_properties.getValue( state ) );
}
-
-
}
Modified: ccm-ldn-navigation/trunk/src/com/arsdigita/london/navigation/ui/portlet/ObjectListPortletRenderer.java
===================================================================
--- ccm-ldn-navigation/trunk/src/com/arsdigita/london/navigation/ui/portlet/ObjectListPortletRenderer.java 2004-12-05 10:40:38 UTC (rev 140)
+++ ccm-ldn-navigation/trunk/src/com/arsdigita/london/navigation/ui/portlet/ObjectListPortletRenderer.java 2004-12-05 10:42:49 UTC (rev 141)
@@ -26,6 +26,8 @@
import com.arsdigita.london.navigation.Navigation;
import com.arsdigita.london.navigation.DataCollectionRenderer;
+import com.arsdigita.london.navigation.DataCollectionProperty;
+import com.arsdigita.london.navigation.DataCollectionPropertyRenderer;
import com.arsdigita.london.navigation.portlet.ObjectListPortlet;
public class ObjectListPortletRenderer extends AbstractPortletRenderer {
@@ -43,6 +45,13 @@
Element parent) {
DataCollectionRenderer renderer = newDataCollectionRenderer();
renderer.setPageSize(m_portlet.getCount());
+
+ String[] dcProperties = m_portlet.getProperties();
+ for( int i = 0; i < dcProperties.length; i++ ) {
+ DataCollectionPropertyRenderer dcpr =
+ ObjectListPortlet.getDCPropertyRenderer( dcProperties[i] );
+ renderer.addProperty( dcpr );
+ }
String attributes = m_portlet.getAttributes();
if (attributes != null) {
|