You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@empire-db.apache.org by do...@apache.org on 2012/09/03 19:02:32 UTC
svn commit: r1380296 - in
/empire-db/trunk/empire-db-jsf2/src/main/java/org/apache/empire/jsf2:
components/SelectTag.java controls/InputControl.java
controls/SelectInputControl.java utils/TagEncodingHelper.java
Author: doebele
Date: Mon Sep 3 17:02:32 2012
New Revision: 1380296
URL: http://svn.apache.org/viewvc?rev=1380296&view=rev
Log:
EMPIREDB-168
Bugfix: SelectTag made to behave like SelectInputControl
Modified:
empire-db/trunk/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/SelectTag.java
empire-db/trunk/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/controls/InputControl.java
empire-db/trunk/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/controls/SelectInputControl.java
empire-db/trunk/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/utils/TagEncodingHelper.java
Modified: empire-db/trunk/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/SelectTag.java
URL: http://svn.apache.org/viewvc/empire-db/trunk/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/SelectTag.java?rev=1380296&r1=1380295&r2=1380296&view=diff
==============================================================================
--- empire-db/trunk/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/SelectTag.java (original)
+++ empire-db/trunk/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/SelectTag.java Mon Sep 3 17:02:32 2012
@@ -22,14 +22,11 @@ import java.io.IOException;
import java.util.Map;
import javax.faces.component.NamingContainer;
-import javax.faces.component.UIComponent;
import javax.faces.component.UIInput;
-import javax.faces.component.UISelectItem;
import javax.faces.component.html.HtmlSelectOneMenu;
import javax.faces.context.FacesContext;
import org.apache.empire.commons.ObjectUtils;
-import org.apache.empire.commons.OptionEntry;
import org.apache.empire.commons.Options;
import org.apache.empire.commons.StringUtils;
import org.apache.empire.jsf2.app.FacesUtils;
@@ -62,14 +59,31 @@ public class SelectTag extends UIInput i
{
// add label and input components when the view is loaded for the first time
UIInput inputComponent = null;
+ TextResolver textResolver = FacesUtils.getTextResolver(context);
if (getChildCount() > 0)
{
inputComponent = getInputComponent();
+ if (inputComponent instanceof HtmlSelectOneMenu)
+ {
+ SelectInputControl control = (SelectInputControl)InputControlManager.getControl(SelectInputControl.NAME);
+ // disabled
+ boolean disabled = isDisabled();
+ ((HtmlSelectOneMenu)inputComponent).setDisabled(disabled);
+ // Options (sync)
+ Options options = getOptionList();
+ boolean hasEmpty = isAllowNull() && !options.contains("");
+ control.syncOptions((HtmlSelectOneMenu)inputComponent, textResolver, options, hasEmpty, getNullText());
+ }
+ else
+ { // Something's wrong here?
+ log.warn("WARN: Unexpected child node for {}! Child item type is {}.", getClass().getName(), inputComponent.getClass().getName());
+ inputComponent = null;
+ }
}
if (inputComponent == null)
{
- inputComponent = createSelectOneMenu(FacesUtils.getTextResolver(context));
- this.getChildren().add(inputComponent);
+ inputComponent = createSelectOneMenu(textResolver);
+ this.getChildren().add(0, inputComponent);
}
// render components
inputComponent.encodeAll(context);
@@ -160,18 +174,11 @@ public class SelectTag extends UIInput i
copyAttributes(input);
// Options
Options options = getOptionList();
- if (isAllowNull())
- { // Empty entry
- options = new Options(options);
- addSelectItem(input, textResolver, new OptionEntry("", getNullText()));
- }
- for (OptionEntry e : options)
- { // Option entries
- addSelectItem(input, textResolver, e);
- }
- // input.setReadonly(isReadOnly());
- if (isDisabled())
- input.setDisabled(true);
+ boolean addEmpty = isAllowNull() && !options.contains("");
+ control.initOptions(input, textResolver, options, addEmpty, getNullText());
+ // disabled
+ boolean disabled = isDisabled();
+ input.setDisabled(disabled);
// input.setLabel(getLabelString());
// input.setRequired(col.isRequired() && !col.isAutoGenerated());
// input.setId(this.getId() + INPUT_SUFFIX);
@@ -190,18 +197,5 @@ public class SelectTag extends UIInput i
if ((value = attr.get("onchange")) != null)
input.setOnchange(StringUtils.toString(value));
}
-
- private void addSelectItem(UIComponent input, TextResolver textResolver, OptionEntry e)
- {
- UISelectItem selectItem = new UISelectItem();
- // set value
- selectItem.setItemValue(e.getValueString());
- // set text
- String text = e.getText();
- text = textResolver.resolveText(text);
- selectItem.setItemLabel(text);
- // add item
- input.getChildren().add(selectItem);
- }
-
+
}
Modified: empire-db/trunk/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/controls/InputControl.java
URL: http://svn.apache.org/viewvc/empire-db/trunk/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/controls/InputControl.java?rev=1380296&r1=1380295&r2=1380296&view=diff
==============================================================================
--- empire-db/trunk/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/controls/InputControl.java (original)
+++ empire-db/trunk/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/controls/InputControl.java Mon Sep 3 17:02:32 2012
@@ -37,6 +37,7 @@ import org.apache.empire.db.exceptions.F
import org.apache.empire.exceptions.InvalidArgumentException;
import org.apache.empire.exceptions.ObjectNotValidException;
import org.apache.empire.exceptions.UnexpectedReturnValueException;
+import org.apache.empire.jsf2.app.TextResolver;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -180,6 +181,7 @@ public abstract class InputControl
String getFormat(); // Custom Formatting options specific to each InputControl-type
Locale getLocale();
String getText(String key);
+ TextResolver getTextResolver();
/*
Object getNullValue();
String getOnclick();
Modified: empire-db/trunk/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/controls/SelectInputControl.java
URL: http://svn.apache.org/viewvc/empire-db/trunk/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/controls/SelectInputControl.java?rev=1380296&r1=1380295&r2=1380296&view=diff
==============================================================================
--- empire-db/trunk/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/controls/SelectInputControl.java (original)
+++ empire-db/trunk/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/controls/SelectInputControl.java Mon Sep 3 17:02:32 2012
@@ -32,6 +32,7 @@ import org.apache.empire.commons.Options
import org.apache.empire.data.Column;
import org.apache.empire.exceptions.InternalException;
import org.apache.empire.exceptions.UnexpectedReturnValueException;
+import org.apache.empire.jsf2.app.TextResolver;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -88,18 +89,9 @@ public class SelectInputControl extends
input.setDisabled(disabled);
// Options
Options options = ii.getOptions();
- if (!ii.isRequired() && !(disabled && ii.getColumn().isRequired()) && !options.contains(""))
- { // Empty entry
- options = new Options(options);
- addSelectItem(input, ii, new OptionEntry("", getNullText(ii)));
- }
- if (options!=null && options.size()>0)
- { // Add options
- for (OptionEntry e : options)
- { // Option entries
- addSelectItem(input, ii, e);
- }
- }
+ boolean hasEmpty =(!ii.isRequired() && !(disabled && ii.getColumn().isRequired()) && !options.contains(""));
+ String nullText = (hasEmpty) ? getNullText(ii) : "";
+ initOptions(input, ii.getTextResolver(), options, hasEmpty, nullText);
// add
compList.add(input);
}
@@ -110,19 +102,39 @@ public class SelectInputControl extends
throw new UnexpectedReturnValueException(comp.getClass().getName(), "compList.get");
// cast
input = (HtmlSelectOneMenu)comp;
- // Options
- syncOptions(input, ii);
+ // disabled
+ // boolean disabled = input.isDisabled();
+ Object dis = ii.getAttribute("disabled");
+ boolean disabled = (dis!=null) ? ObjectUtils.getBoolean(dis) : ii.isDisabled();
+ input.setDisabled(disabled);
+ // Options (sync)
+ Options options = ii.getOptions();
+ boolean hasEmpty =(!ii.isRequired() && !(disabled && ii.getColumn().isRequired()) && !options.contains(""));
+ String nullText = (hasEmpty) ? getNullText(ii) : "";
+ syncOptions(input, ii.getTextResolver(), options, hasEmpty, nullText);
}
// Set Value
setInputValue(input, ii);
}
+
+ public void initOptions(HtmlSelectOneMenu input, TextResolver textResolver, Options options, boolean addEmpty, String nullText)
+ {
+ if (addEmpty)
+ { // Empty entry
+ addSelectItem(input, textResolver, new OptionEntry("", nullText));
+ }
+ if (options!=null && options.size()>0)
+ { // Add options
+ for (OptionEntry e : options)
+ { // Option entries
+ addSelectItem(input, textResolver, e);
+ }
+ }
+ }
- private void syncOptions(HtmlSelectOneMenu input, InputInfo ii)
+ public void syncOptions(HtmlSelectOneMenu input, TextResolver textResolver, Options options, boolean hasEmpty, String nullText)
{
- Options options = ii.getOptions();
- boolean disabled = input.isDisabled();
- boolean hasEmpty =(!ii.isRequired() && !(disabled && ii.getColumn().isRequired()) && !options.contains(""));
// Compare child-items with options
Iterator<OptionEntry> ioe = options.iterator();
OptionEntry oe =(ioe.hasNext() ? ioe.next() : null);
@@ -155,10 +167,10 @@ public class SelectInputControl extends
// Not equal - do a full reload
input.getChildren().clear();
if (hasEmpty)
- addSelectItem(input, ii, new OptionEntry("", getNullText(ii)));
+ addSelectItem(input, textResolver, new OptionEntry("", nullText));
for (OptionEntry e : options)
{ // Option entries
- addSelectItem(input, ii, e);
+ addSelectItem(input, textResolver, e);
}
// done
return;
@@ -166,29 +178,29 @@ public class SelectInputControl extends
// Are there any items left?
while(oe!=null)
{ // add missing item
- addSelectItem(input, ii, oe);
+ addSelectItem(input, textResolver, oe);
oe =(ioe.hasNext() ? ioe.next() : null);
}
}
-
- private String getNullText(InputInfo ii)
- {
- String nullText = getFormatString(ii, FORMAT_NULL, FORMAT_NULL_ATTRIBUTE);
- return (nullText!=null) ? ii.getText(nullText) : "";
- }
- private void addSelectItem(UIComponent input, InputInfo ii, OptionEntry e)
+ public void addSelectItem(UIComponent input, TextResolver textResolver, OptionEntry e)
{
UISelectItem selectItem = new UISelectItem();
// set value
selectItem.setItemValue(e.getValueString());
// set text
String text = e.getText();
- text = ii.getText(text);
+ text = textResolver.resolveText(text);
selectItem.setItemLabel(text);
// add item
input.getChildren().add(selectItem);
}
+
+ private String getNullText(InputInfo ii)
+ {
+ String nullText = getFormatString(ii, FORMAT_NULL, FORMAT_NULL_ATTRIBUTE);
+ return (nullText!=null) ? ii.getText(nullText) : "";
+ }
@Override
protected String formatValue(Object value, ValueInfo vi)
Modified: empire-db/trunk/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/utils/TagEncodingHelper.java
URL: http://svn.apache.org/viewvc/empire-db/trunk/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/utils/TagEncodingHelper.java?rev=1380296&r1=1380295&r2=1380296&view=diff
==============================================================================
--- empire-db/trunk/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/utils/TagEncodingHelper.java (original)
+++ empire-db/trunk/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/utils/TagEncodingHelper.java Mon Sep 3 17:02:32 2012
@@ -247,6 +247,12 @@ public class TagEncodingHelper implement
{
return textResolver.resolveText(text);
}
+
+ @Override
+ public TextResolver getTextResolver()
+ {
+ return textResolver;
+ }
}
private class InputInfoImpl extends ValueInfoImpl implements InputControl.InputInfo