Hi Greg,
These are the fragments involved:
bxml
...
<Form.Section>
<TextInput Form.label="%lblDescricao"
textSize="40" bxml:id="descricao"/>
<BoxPane styles="{verticalAlignment:'center'}"
Form.label="%lblValor">
<TextInput textSize="10" bxml:id="valor" />
<Checkbox buttonData="%lblConciliado"
bxml:id="conciliado"
ButtonPressListener.buttonPressed="conciliadoImg.setVisible(conciliado.isSelected());"/>
<ImageView bxml:id="conciliadoImg"
image="@conciliado.png" visible="false"/>
</BoxPane>
<CalendarButton bxml:id="data"
Form.label="%lblData"/>
<BoxPane Form.label="%lblTipo"
orientation="horizontal" styles="{padding:4}">
<bxml:define>
<ButtonGroup bxml:id="tipos"/>
</bxml:define>
<RadioButton bxml:id="despesaButton"
buttonGroup="$tipos" selected="true">
<content:ButtonData icon="@despesa.png"
text="%lblDespesa"/>
</RadioButton>
<RadioButton bxml:id="receitaButton"
buttonGroup="$tipos">
<content:ButtonData icon="@receita.png"
text="%lblReceita"/>
</RadioButton>
</BoxPane>
<ListButton bxml:id="categoria"
Form.label="%lblCategoria" />
<BoxPane Form.label="%lblObservacoes">
<Border styles="{color:10}">
<ScrollPane
horizontalScrollBarPolicy="fill"
verticalScrollBarPolicy="fill_to_capacity"
preferredHeight="200"
preferredWidth="500">
<TextArea bxml:id="observacoes"/>
</ScrollPane>
</Border>
</BoxPane>
</Form.Section>
...
Binding class:
...
Action.getNamedActions().put("salvarAction", new Action() {
@Override
public void perform(Component source) {
if (lancamento == null) {
salvarNovo();
}
else {
salvarEdicao();
}
atualizarGrid();
}
});
...
private void salvarNovo() {
try {
Form.Flag flagDesc = null;
Form.Flag flagVal = null;
Form.Flag flagCat = null;
String desc = descricao.getText().trim();
String val = valor.getText().trim();
if(desc == null || "".equals(desc.trim())){
flagDesc = new Form.Flag(MessageType.ERROR,
resources.get("campoRequerido").toString());
}
Form.setFlag(descricao, flagDesc);
if(val == null || "".equals(val.trim())){
flagVal = new Form.Flag(MessageType.ERROR,
resources.get("campoRequerido").toString());
}
Form.setFlag(valor, flagVal);
if(categoria == null){
flagCat = new Form.Flag(MessageType.ERROR,
resources.get("campoRequerido").toString());
}
Form.setFlag(categoria, flagCat);
if(flagDesc != null || flagVal != null || flagCat != null){
return;
}
lancamento = new Lancamento();
lancamento.setDescricao(desc);
lancamento.setConciliado(conciliado.isSelected());
lancamento.setData(data.getSelectedDate().toCalendar().getTime());
lancamento.setObservacao(observacoes.getText());
lancamento.setValor(new BigDecimal(numberFormat.parse(val)
.toString()));
lancamento.setTipoLancamento((CategoriaLancamento) categoria
.getSelectedItem());
daoLancamento.cadastrar(lancamento);
cancelar();
Prompt.prompt(MessageType.INFO, resources.get("sucessoCadastro")
.toString(), this);
}
catch (Exception e) {
Prompt.prompt(MessageType.ERROR, resources.get("falhaCadastro")
.toString(), this);
}
}
private void salvarEdicao() {
try {
Form.Flag flagDesc = null;
Form.Flag flagVal = null;
Form.Flag flagCat = null;
String desc = descricao.getText();
String val = valor.getText();
if(desc == null || "".equals(desc.trim())){
flagDesc = new Form.Flag(MessageType.ERROR,
resources.get("campoRequerido").toString());
}
Form.setFlag(descricao, flagDesc);
if(val == null || "".equals(val.trim())){
flagVal = new Form.Flag(MessageType.ERROR,
resources.get("campoRequerido").toString());
}
Form.setFlag(valor, flagVal);
if(categoria == null){
flagCat = new Form.Flag(MessageType.ERROR,
resources.get("campoRequerido").toString());
}
Form.setFlag(categoria, flagCat);
if(flagDesc != null || flagVal != null || flagCat != null){
return;
}
lancamento.setDescricao(desc);
lancamento.setConciliado(conciliado.isSelected());
lancamento.setData(data.getSelectedDate().toCalendar().getTime());
lancamento.setObservacao(observacoes.getText());
lancamento.setValor(new BigDecimal(numberFormat.parse(val)
.toString()));
lancamento.setTipoLancamento((CategoriaLancamento) categoria
.getSelectedItem());
daoLancamento.alterar(lancamento);
cancelar();
Prompt.prompt(MessageType.INFO,
resources.get("sucessoEdicao").toString(), this);
}
catch (Exception e) {
Prompt.prompt(MessageType.ERROR,
resources.get("falhaEdicao").toString(),
this);
}
}
I can't see a reason for flags no work in this scenario. I have another
frame that has just one field validated, and everything's right. Can you see
something wrong?
Thank's
Luiz Gustavo S. de Souza
http://luizgustavoss.wordpress.com
http://luizgustavoss.blogspot.com
http://twitter.com/lugustso
2010/12/22 Greg Brown <[email protected]>
> No, flags definitely don't appear one at a time - you should be able to
> flag all the fields in your form if you want to. The message won't appear
> until you hover over the field, but it should be outlined, and you should
> see the error icon.
>
> There must be some other issue - not sure what it might be.
>
>
> On Dec 21, 2010, at 10:14 PM, Luiz Gustavo wrote:
>
> When the user enter some text in the field, it desapears, because flag is
> set to null in the begining of the salvarEdicao method:
>
> *Form.Flag flagDesc = null;*
>
> ...
>
> if(desc == null || "".equals(desc.trim())){
> flagDesc = new Form.Flag(MessageType.ERROR,
> resources.get("campoRequerido").toString());
> }
> *Form.setFlag(descricao, flagDesc);*
>
>
> So in the case of desc != null, I clean the flag. The problem is that the
> flag for the second field (Valor) never apears. Initially i thought that
> flags apeared one per time (not all at the same time), but even when the
> first field is ok, the flag of the second doesn't apear.
>
> Any idea?
>
>
>
> 2010/12/22 Greg Brown <[email protected]>
>
>> If you want the flag to disappear when the user enters some text, you
>> could add a listener to the text input that clears the flag when the text
>> changes.
>>
>> On Dec 21, 2010, at 10:02 PM, Luiz Gustavo wrote:
>>
>> Hi Greg,
>>
>> I'm calling salvarEdicao when the user submit de form. I whant to validate
>> the requeired fields befor inserting.
>> I'll se the classes you told me, but in my scenario is there anything I
>> can do?
>>
>>
>>
>> 2010/12/22 Greg Brown <[email protected]>
>>
>>> When are you calling the salvarEdicao() method? If you want to validate
>>> as the user types, you'll need to call this method whenever the field value
>>> changes. For text, you may want to consider using a validator for this. See
>>> the classes in org.apache.pivot.wtk.validation and TextInput#setValidator().
>>>
>>>
>>> On Dec 21, 2010, at 9:37 PM, Luiz Gustavo wrote:
>>>
>>> Hi,
>>>
>>> I'm having problems using Form.flag.
>>>
>>>
>>> I have a method for inserting data from a form, and a validation on the
>>> begining:
>>>
>>>
>>> private void salvarEdicao() {
>>>
>>> try {
>>>
>>> Form.Flag flagDesc = null;
>>> Form.Flag flagVal = null;
>>> Form.Flag flagCat = null;
>>>
>>> String desc = descricao.getText();
>>> String val = valor.getText();
>>>
>>> if(desc == null || "".equals(desc.trim())){
>>> flagDesc = new Form.Flag(MessageType.ERROR,
>>> resources.get("campoRequerido").toString());
>>> }
>>> Form.setFlag(descricao, flagDesc);
>>>
>>> if(val == null || "".equals(val.trim())){
>>> flagVal = new Form.Flag(MessageType.ERROR,
>>> resources.get("campoRequerido").toString());
>>> }
>>> Form.setFlag(valor, flagVal);
>>>
>>> if(categoria == null){
>>> flagCat = new Form.Flag(MessageType.ERROR,
>>> resources.get("campoRequerido").toString());
>>> }
>>> Form.setFlag(categoria, flagCat);
>>>
>>> if(flagDesc != null || flagVal != null || flagCat != null){
>>> return;
>>> }
>>>
>>> ...
>>> }
>>>
>>>
>>> When I try to submit a form with desc and val (description and value)
>>> empty, just one flag is presented. Even when I insert data in the
>>> "Descrição" field, the flag in the field "Descrição" continues to apear. The
>>> flag of field "Valor" doesn't apear in neigther cases.
>>>
>>>
>>> Any idea?
>>>
>>> Cheers,
>>> Luiz Gustavo S. de Souza
>>>
>>> http://luizgustavoss.wordpress.com
>>> http://luizgustavoss.blogspot.com
>>> http://twitter.com/lugustso
>>> <frame1.png><frame2.png>
>>>
>>>
>>>
>>
>>
>> --
>> Luiz Gustavo S. de Souza
>>
>> http://luizgustavoss.wordpress.com
>> http://luizgustavoss.blogspot.com
>> http://twitter.com/lugustso
>>
>>
>>
>
>
> --
> Luiz Gustavo S. de Souza
>
> http://luizgustavoss.wordpress.com
> http://luizgustavoss.blogspot.com
> http://twitter.com/lugustso
>
>
>