Author: julien(a)jboss.com
Date: 2007-04-23 10:59:51 -0400 (Mon, 23 Apr 2007)
New Revision: 7029
Removed:
trunk/core-admin/src/main/org/jboss/portal/core/admin/ui/PropertiesFilter.java
Modified:
trunk/core-admin/src/main/org/jboss/portal/core/admin/ui/PortalObjectManagerBean.java
trunk/core-admin/src/main/org/jboss/portal/core/admin/ui/PreferencesBean.java
trunk/core-admin/src/main/org/jboss/portal/core/admin/ui/PropertiesBean.java
trunk/core-admin/src/main/org/jboss/portal/core/admin/ui/PropertyBean.java
trunk/core-admin/src/main/org/jboss/portal/core/admin/ui/PropertyInfo.java
trunk/core-admin/src/main/org/jboss/portal/core/admin/ui/actions/PropertyAction.java
trunk/core-admin/src/resources/portal-admin-war/WEB-INF/faces-config.xml
trunk/core-admin/src/resources/portal-admin-war/WEB-INF/jsf/common/editProperties.xhtml
Log:
- portal object property editor updates were not persisted in backend implying a reset of
properties set at runtime on next reboot
- update the property editor layout to be more usable and use correct CSS class names
Modified:
trunk/core-admin/src/main/org/jboss/portal/core/admin/ui/PortalObjectManagerBean.java
===================================================================
---
trunk/core-admin/src/main/org/jboss/portal/core/admin/ui/PortalObjectManagerBean.java 2007-04-23
12:58:04 UTC (rev 7028)
+++
trunk/core-admin/src/main/org/jboss/portal/core/admin/ui/PortalObjectManagerBean.java 2007-04-23
14:59:51 UTC (rev 7029)
@@ -22,7 +22,6 @@
******************************************************************************/
package org.jboss.portal.core.admin.ui;
-import org.jboss.portal.common.i18n.LocalizedString;
import org.jboss.portal.core.admin.ui.actions.AddPageAction;
import org.jboss.portal.core.admin.ui.common.PageManagerBean;
import org.jboss.portal.core.admin.ui.portlet.PortletDefinitionInvoker;
@@ -61,7 +60,6 @@
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
-import java.util.Locale;
import java.util.Map;
import java.util.Set;
@@ -474,7 +472,11 @@
{
selectedId = new PortalObjectId();
}
+
+ //
selectedObject = portalObjectContainer.getObject(selectedId);
+
+ //
if (selectedObject.getType() == PortalObject.TYPE_PAGE)
{
if (pageManager == null)
@@ -485,6 +487,9 @@
}
//
+ selectedProperties = new PropertiesBean(this, true);
+
+ //
Collection pages = getSelectedObject().getChildren(PortalObject.PAGE_MASK);
ArrayList list = new ArrayList(pages.size() + 1);
for (Iterator iterator = pages.iterator(); iterator.hasNext();)
@@ -497,21 +502,6 @@
portalPageItems = (SelectItem[])list.toArray(new SelectItem[list.size()]);
//
- if (selectedProperties == null)
- {
- PortalObject object = getSelectedObject();
- PropertiesBean properties = new PropertiesBean(true);
- for (Iterator i = object.getDeclaredProperties().entrySet().iterator();
i.hasNext();)
- {
- Map.Entry entry = (Map.Entry)i.next();
- PropertyInfo info = new PropertyInfo(object, (String)entry.getKey(), false);
- info.setDisplayName(new LocalizedString((String)entry.getKey(),
Locale.ENGLISH));
- properties.addEntry(info, (String)entry.getValue());
- }
- selectedProperties = PropertiesFilter.filter(object, properties);
- }
-
- //
PortalObject o = getSelectedObject();
ArrayList path = new ArrayList();
while (o != null)
@@ -534,17 +524,6 @@
instanceItems = (SelectItem[])tmp.toArray(new SelectItem[tmp.size()]);
}
- public SelectItem[] getProperties()
- {
- List items = new ArrayList();
- // items.add(new SelectItem(DynaRenderOptions.DND_ENABLED, "DnD
enabled"));
- items.add(new SelectItem(DynaRenderOptions.PARTIAL_REFRESH_ENABLED, "Partial
Refresh Enabled"));
- items.add(new SelectItem(ThemeConstants.PORTAL_PROP_ORDER, "Order"));
- items.add(new SelectItem(PortalObject.PORTAL_PROP_DEFAULT_OBJECT_NAME,
"Default child name"));
- items.add(new SelectItem("other", "Other"));
- return (SelectItem[])items.toArray(new SelectItem[items.size()]);
- }
-
public void processEvent(ActionEvent event)
{
if (event instanceof PortletActionEvent)
Modified: trunk/core-admin/src/main/org/jboss/portal/core/admin/ui/PreferencesBean.java
===================================================================
---
trunk/core-admin/src/main/org/jboss/portal/core/admin/ui/PreferencesBean.java 2007-04-23
12:58:04 UTC (rev 7028)
+++
trunk/core-admin/src/main/org/jboss/portal/core/admin/ui/PreferencesBean.java 2007-04-23
14:59:51 UTC (rev 7029)
@@ -111,7 +111,7 @@
{
if (pref.container != null)
{
- throw new IllegalArgumentException("Already contained somewhere");
+ throw new IllegalStateException("Already contained somewhere");
}
pref.container = this;
entries.add(pref);
Modified: trunk/core-admin/src/main/org/jboss/portal/core/admin/ui/PropertiesBean.java
===================================================================
---
trunk/core-admin/src/main/org/jboss/portal/core/admin/ui/PropertiesBean.java 2007-04-23
12:58:04 UTC (rev 7028)
+++
trunk/core-admin/src/main/org/jboss/portal/core/admin/ui/PropertiesBean.java 2007-04-23
14:59:51 UTC (rev 7029)
@@ -22,9 +22,18 @@
******************************************************************************/
package org.jboss.portal.core.admin.ui;
+import org.jboss.portal.common.i18n.LocalizedString;
+import org.jboss.portal.core.model.portal.PortalObject;
+import org.jboss.portal.theme.ThemeConstants;
+import org.jboss.portal.theme.impl.render.dynamic.DynaRenderOptions;
+
+import javax.faces.model.SelectItem;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Locale;
/**
* @author <a href="mailto:julien@jboss.org">Julien Viet</a>
@@ -43,9 +52,74 @@
/** . */
private boolean mutable;
- public PropertiesBean(boolean mutable)
+ /** . */
+ final PortalObjectManagerBean pomgr;
+
+ public PropertiesBean(PortalObjectManagerBean pomgr, boolean mutable)
{
- this.entries = new ArrayList();
+ // Get the selected object
+ PortalObject selectedObject = pomgr.getSelectedObject();
+
+ // Look at declared properties
+ List entries = new ArrayList();
+ for (Iterator i = selectedObject.getDeclaredProperties().entrySet().iterator();
i.hasNext();)
+ {
+ Map.Entry entry = (Map.Entry)i.next();
+ String value = (String)entry.getValue();
+ String name = (String)entry.getKey();
+
+ //
+ String type = "java.lang.String";
+ LocalizedString displayName = new LocalizedString(name, Locale.ENGLISH);
+
+ //
+ if (name.equals(ThemeConstants.PORTAL_PROP_LAYOUT))
+ {
+ continue;
+ }
+ else if (name.equals(ThemeConstants.PORTAL_PROP_THEME))
+ {
+ continue;
+ }
+ else if (name.equals(ThemeConstants.PORTAL_PROP_RENDERSET))
+ {
+ continue;
+ }
+ else if (name.equals(ThemeConstants.PORTAL_PROP_ORDER))
+ {
+ displayName = new LocalizedString("Order", Locale.ENGLISH);
+ }
+ else if (name.equals(PortalObject.PORTAL_PROP_DEFAULT_OBJECT_NAME))
+ {
+ displayName = new LocalizedString("Default child name",
Locale.ENGLISH);
+ }
+ else if (name.equals(DynaRenderOptions.PARTIAL_REFRESH_ENABLED))
+ {
+ displayName = new LocalizedString("Partial Refresh Enabled",
Locale.ENGLISH);
+ type = "java.lang.Boolean";
+ }
+
+ //
+
+ if (!mutable)
+ {
+ throw new IllegalStateException("Cannot add non mutable entry to a
mutable preferences bean");
+ }
+
+ //
+ PropertyInfo info = new PropertyInfo(name, displayName, type, false);
+
+ //
+ PropertyBean propertyBean = new PropertyBean(this, info, value);
+
+ //
+ entries.add(propertyBean);
+ }
+ Collections.sort(entries);
+
+ //
+ this.pomgr = pomgr;
+ this.entries = entries;
this.selectedIndex = -1;
this.mutable = mutable;
}
@@ -83,36 +157,24 @@
return (PreferenceBean)entries.get(selectedIndex);
}
- public void addEntry(PropertyInfo info, String value)
+ public List getEntries()
{
- if (!mutable)
- {
- throw new IllegalStateException("Cannot add non mutable entry to a mutable
preferences bean");
- }
-
- //
- addEntry(new PropertyBean(info, value));
+ return entries;
}
- private void addEntry(PropertyBean pref)
+ public int getSize()
{
- if (pref.container != null)
- {
- throw new IllegalArgumentException("Already contained somewhere");
- }
- pref.container = this;
- entries.add(pref);
- Collections.sort(entries);
+ return entries.size();
}
- public List getEntries()
+ public SelectItem[] getPropertyItems()
{
- return entries;
+ List items = new ArrayList();
+ // items.add(new SelectItem(DynaRenderOptions.DND_ENABLED, "DnD
enabled"));
+ items.add(new SelectItem(DynaRenderOptions.PARTIAL_REFRESH_ENABLED, "Partial
Refresh Enabled"));
+ items.add(new SelectItem(ThemeConstants.PORTAL_PROP_ORDER, "Order"));
+ items.add(new SelectItem(PortalObject.PORTAL_PROP_DEFAULT_OBJECT_NAME,
"Default child name"));
+ return (SelectItem[])items.toArray(new SelectItem[items.size()]);
}
- public int getSize()
- {
- return entries.size();
- }
-
}
Deleted: trunk/core-admin/src/main/org/jboss/portal/core/admin/ui/PropertiesFilter.java
===================================================================
---
trunk/core-admin/src/main/org/jboss/portal/core/admin/ui/PropertiesFilter.java 2007-04-23
12:58:04 UTC (rev 7028)
+++
trunk/core-admin/src/main/org/jboss/portal/core/admin/ui/PropertiesFilter.java 2007-04-23
14:59:51 UTC (rev 7029)
@@ -1,60 +0,0 @@
-package org.jboss.portal.core.admin.ui;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Locale;
-
-import org.jboss.portal.common.i18n.LocalizedString;
-import org.jboss.portal.core.model.portal.PortalObject;
-import org.jboss.portal.theme.ThemeConstants;
-import org.jboss.portal.theme.impl.render.dynamic.DynaRenderOptions;
-
-public class PropertiesFilter
-{
-
- public static PropertiesBean filter(PortalObject portalObject, PropertiesBean
properties)
- {
- Iterator it = properties.getEntries().iterator();
- List toRemove = new ArrayList();
-
- while (it.hasNext())
- {
- PropertyBean propertyBean = (PropertyBean)it.next();
- if (propertyBean.getName().equals(ThemeConstants.PORTAL_PROP_LAYOUT))
- {
- toRemove.add(propertyBean);
- }
- else if (propertyBean.getName().equals(ThemeConstants.PORTAL_PROP_THEME))
- {
- toRemove.add(propertyBean);
- }
- else if (propertyBean.getName().equals(ThemeConstants.PORTAL_PROP_RENDERSET))
- {
- toRemove.add(propertyBean);
- }
- else if (propertyBean.getName().equals(ThemeConstants.PORTAL_PROP_ORDER))
- {
- propertyBean.setDisplayName(new LocalizedString("Order",
Locale.ENGLISH));
- }
- else if
(propertyBean.getName().equals(PortalObject.PORTAL_PROP_DEFAULT_OBJECT_NAME))
- {
- propertyBean.setDisplayName(new LocalizedString("Default child
name", Locale.ENGLISH));
- }
- else if
(propertyBean.getName().equals(DynaRenderOptions.PARTIAL_REFRESH_ENABLED))
- {
- propertyBean.setDisplayName(new LocalizedString("Partial Refresh
Enabled", Locale.ENGLISH));
- propertyBean.setType("java.lang.Boolean");
- }
- }
-
- it = toRemove.iterator();
- while (it.hasNext())
- {
- properties.getEntries().remove(it.next());
- }
-
- return properties;
- }
-
-}
Modified: trunk/core-admin/src/main/org/jboss/portal/core/admin/ui/PropertyBean.java
===================================================================
--- trunk/core-admin/src/main/org/jboss/portal/core/admin/ui/PropertyBean.java 2007-04-23
12:58:04 UTC (rev 7028)
+++ trunk/core-admin/src/main/org/jboss/portal/core/admin/ui/PropertyBean.java 2007-04-23
14:59:51 UTC (rev 7029)
@@ -33,25 +33,22 @@
public class PropertyBean implements Comparable
{
-
/** . */
private String value;
- PropertiesBean container;
+ /** . */
+ private final PropertiesBean container;
- private PropertyInfo info;
+ /** . */
+ private final PropertyInfo info;
- public PropertyBean(PropertyInfo info, String value)
+ public PropertyBean(PropertiesBean container, PropertyInfo info, String value)
{
+ this.container = container;
this.info = info;
this.value = value;
}
- private PortalObject getPortalObject()
- {
- return info.getPortalObject();
- }
-
public String getName()
{
return info.getName();
@@ -67,16 +64,11 @@
return info.getDisplayName();
}
- public void setDisplayName(LocalizedString displayName)
- {
- info.setDisplayName(displayName);
- }
-
public Object getValue()
{
if (info.getType().equals("java.lang.Boolean"))
{
- return new Boolean(value);
+ return Boolean.valueOf(value);
}
else
{
@@ -87,7 +79,12 @@
public void setValue(Object value)
{
this.value = value.toString();
- getPortalObject().setDeclaredProperty(getName(), value.toString());
+
+ // Need to use the container as it will contain the refreshed object
+ PortalObject portalObject = container.pomgr.getSelectedObject();
+
+ //
+ portalObject.setDeclaredProperty(getName(), value.toString());
}
public int compareTo(Object o)
@@ -100,10 +97,4 @@
{
return info.getType();
}
-
- public void setType(String type)
- {
- info.setType(type);
- }
-
}
Modified: trunk/core-admin/src/main/org/jboss/portal/core/admin/ui/PropertyInfo.java
===================================================================
--- trunk/core-admin/src/main/org/jboss/portal/core/admin/ui/PropertyInfo.java 2007-04-23
12:58:04 UTC (rev 7028)
+++ trunk/core-admin/src/main/org/jboss/portal/core/admin/ui/PropertyInfo.java 2007-04-23
14:59:51 UTC (rev 7029)
@@ -23,7 +23,6 @@
package org.jboss.portal.core.admin.ui;
import org.jboss.portal.common.i18n.LocalizedString;
-import org.jboss.portal.core.model.portal.PortalObject;
/**
* @author <a href="mailto:theute@jboss.org">Thomas Heute</a>
@@ -31,25 +30,25 @@
*/
public class PropertyInfo
{
+
/** . */
private String name;
/** . */
private boolean readOnly;
+ /** . */
private String type;
/** . */
private LocalizedString displayName;
-
- private PortalObject portalObject;
- public PropertyInfo(PortalObject portalObject, String name, boolean readOnly)
+ public PropertyInfo(String name, LocalizedString displayName, String type, boolean
readOnly)
{
this.name = name;
this.readOnly = readOnly;
- this.portalObject = portalObject;
- this.type = "java.lang.String";
+ this.displayName = displayName;
+ this.type = type;
}
public LocalizedString getDisplayName()
@@ -57,44 +56,18 @@
return displayName;
}
- public void setDisplayName(LocalizedString displayName)
- {
- this.displayName = displayName;
- }
-
public String getName()
{
return name;
}
- public void setName(String name)
- {
- this.name = name;
- }
-
public boolean isReadOnly()
{
return readOnly;
}
- public void setReadOnly(boolean readOnly)
- {
- this.readOnly = readOnly;
- }
-
- public PortalObject getPortalObject()
- {
- return portalObject;
- }
-
public String getType()
{
return type;
}
-
- public void setType(String type)
- {
- this.type = type;
- }
-
}
Modified:
trunk/core-admin/src/main/org/jboss/portal/core/admin/ui/actions/PropertyAction.java
===================================================================
---
trunk/core-admin/src/main/org/jboss/portal/core/admin/ui/actions/PropertyAction.java 2007-04-23
12:58:04 UTC (rev 7028)
+++
trunk/core-admin/src/main/org/jboss/portal/core/admin/ui/actions/PropertyAction.java 2007-04-23
14:59:51 UTC (rev 7029)
@@ -38,25 +38,24 @@
*/
public class PropertyAction
{
+
/** . */
private PortalObjectManagerBean pomgr;
+ /** . */
private String selectedProperty;
+ /** . */
private String propertyValue;
+ /** . */
private String otherPropertyName;
+ /** . */
private static final String ERROR_EMPTY_NAME = "Property name cannot be
blank!";
public PortalObjectManagerBean getPortalObjectManager()
{
- //don't know why but this isn't injected properly in faces-config.xml
- if (pomgr == null)
- {
- FacesContext ctx = FacesContext.getCurrentInstance();
- pomgr =
(PortalObjectManagerBean)ctx.getApplication().createValueBinding("#{portalobjectmgr}").getValue(ctx);
- }
return pomgr;
}
@@ -96,8 +95,6 @@
FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,
PropertyAction.ERROR_EMPTY_NAME, PropertyAction.ERROR_EMPTY_NAME);
throw new ValidatorException(message);
}
-
-
}
public void selectProperty()
@@ -113,23 +110,23 @@
public void updateProperty()
{
- String propertyName = selectedProperty.trim();
- if (getSelectedProperty() != null)
+ String propertyName = otherPropertyName.trim();
+
+ //
+ if (propertyName.length() == 0 && selectedProperty != null)
{
- if (selectedProperty.equals("other"))
- {
- propertyName = otherPropertyName.trim();
- }
+ propertyName = selectedProperty.trim();
+ }
- if (! propertyName.equals(""))
+ //
+ if (propertyName.length() > 0)
+ {
+ String value = getPropertyValue();
+ if (value == null)
{
- String value = getPropertyValue();
- if (value == null)
- {
- value = "";
- }
-
getPortalObjectManager().getSelectedObject().setDeclaredProperty(propertyName, value);
+ value = "";
}
+ getPortalObjectManager().getSelectedObject().setDeclaredProperty(propertyName,
value);
}
}
@@ -142,5 +139,4 @@
{
this.otherPropertyName = otherPropertyName;
}
-
}
Modified: trunk/core-admin/src/resources/portal-admin-war/WEB-INF/faces-config.xml
===================================================================
--- trunk/core-admin/src/resources/portal-admin-war/WEB-INF/faces-config.xml 2007-04-23
12:58:04 UTC (rev 7028)
+++ trunk/core-admin/src/resources/portal-admin-war/WEB-INF/faces-config.xml 2007-04-23
14:59:51 UTC (rev 7029)
@@ -202,10 +202,11 @@
<value>#{sessionScope.instancemgr}</value>
</managed-property>
</managed-bean>
+
<managed-bean>
<managed-bean-name>propertyAction</managed-bean-name>
<managed-bean-class>org.jboss.portal.core.admin.ui.actions.PropertyAction</managed-bean-class>
- <managed-bean-scope>session</managed-bean-scope>
+ <managed-bean-scope>request</managed-bean-scope>
<managed-property>
<property-name>portalObjectManager</property-name>
<value>#{sessionScope.portalobjectmgr}</value>
Modified:
trunk/core-admin/src/resources/portal-admin-war/WEB-INF/jsf/common/editProperties.xhtml
===================================================================
---
trunk/core-admin/src/resources/portal-admin-war/WEB-INF/jsf/common/editProperties.xhtml 2007-04-23
12:58:04 UTC (rev 7028)
+++
trunk/core-admin/src/resources/portal-admin-war/WEB-INF/jsf/common/editProperties.xhtml 2007-04-23
14:59:51 UTC (rev 7029)
@@ -27,10 +27,10 @@
<td>
<c:choose>
<c:when
test="#{prop.type=='java.lang.Boolean'}">
- <h:selectBooleanCheckbox value="#{prop.value}" />
+ <h:selectBooleanCheckbox
styleClass="portlet-form-button" value="#{prop.value}" />
</c:when>
<c:otherwise>
- <h:inputText value="#{prop.value}" />
+ <h:inputText styleClass="portlet-form-input-field"
value="#{prop.value}" />
</c:otherwise>
</c:choose>
</td>
@@ -47,25 +47,41 @@
<h:commandButton value="Update"
styleClass="portlet-form-button"/>
</h:form>
+ <!-- Separation -->
+ <hr/>
+
+ <h3>Add a new property</h3>
+
+ <p>You can either create a predefined property or create one with the name of
your choice</p>
+
<h:form>
- <table width="100%">
- <thead class="portlet-section-header"
style="text-align:left;">
- <tr>
- <th>Property name</th>
- </tr>
- </thead>
- <tbody>
- <tr class="#{status.index % 2 == 0 ? 'portlet-section-body' :
'portlet-section-alternate'}">
- <td>
- <h:selectOneMenu
value="#{propertyAction.selectedProperty}">
- <f:selectItems value="#{portalobjectmgr.properties}"/>
- </h:selectOneMenu>
- <h:outputText value="Other:"/> <h:inputText
value="#{propertyAction.otherPropertyName}" />
- </td>
- </tr>
- </tbody>
- </table>
- <h:commandButton value="Add property"
styleClass="portlet-form-button"
action="#{propertyAction.updateProperty}"/>
+ <fieldset style="border: 1px solid;">
+ <table>
+ <tbody>
+ <tr>
+ <td class="portlet-form-field-label">
+ <h:outputLabel for="predefinedProperty">Select a
predefined property: </h:outputLabel>
+ </td>
+ <td>
+ <h:selectOneMenu id="predefinedProperty"
styleClass="portlet-form-button"
value="#{propertyAction.selectedProperty}">
+ <f:selectItems
value="#{properties.propertyItems}"/>
+ </h:selectOneMenu>
+ </td>
+ </tr>
+ <tr>
+ <td class="portlet-form-field-label">
+ <h:outputLabel for="property">Or enter a property
name: </h:outputLabel>
+ </td>
+ <td>
+ <h:inputText id="property"
styleClass="portlet-form-input-field"
value="#{propertyAction.otherPropertyName}" />
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </fieldset>
+ <div style="text-align:center;padding: 1em 0 1em 0">
+ <h:commandButton value="Add property"
styleClass="portlet-form-button"
action="#{propertyAction.updateProperty}"/>
+ </div>
</h:form>
</div>