blob: 8d7639e2f342fc08951d1b2d0fd4ce8b4c9e6c6e [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.myfaces.trinidaddemo;
import javax.faces.application.ViewHandler;
import javax.faces.component.UIComponent;
import javax.faces.component.UIViewRoot;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.faces.event.ValueChangeEvent;
import org.apache.myfaces.trinidad.component.UIXOutput;
import org.apache.myfaces.trinidad.context.RequestContext;
import org.apache.myfaces.trinidad.model.UploadedFile;
public class PartialDemoUtilBean
{
public void action(ActionEvent action)
{
// Just update the string which says when the last update was.
_status.setLinkUpdate();
}
// This is called for the resetButton
public void reset(ActionEvent action)
{
_status.reset();
_resetList();
}
public void prevalidateField()
{
_status.incrementPrevalidateEventCount();
}
public void valueChanged(ValueChangeEvent vce)
{
Object newValue = vce.getNewValue();
UIComponent component = vce.getComponent();
String rendererType = component.getRendererType();
// For these first components the listeners have registered themselves
// by setting the partialTriggers attribute. So we just update the model.
if (rendererType.equals("org.apache.myfaces.trinidad.Checkbox"))
{
_status.setChecked((Boolean) newValue);
_status.incrementCheckBoxUpdateCount();
}
else if (rendererType.equals("org.apache.myfaces.trinidad.Radio"))
{
if (Boolean.TRUE.equals(newValue))
{
String text = (String) component.getAttributes().get("text");
_status.setSelectBooleanState(text);
}
else if (newValue instanceof String)
_status.setSelectOneState((String) newValue);
}
else if (rendererType.equals("org.apache.myfaces.trinidad.Text"))
{
if (newValue instanceof String)
_status.setTextValue((String) newValue);
}
else if (rendererType.equals("org.apache.myfaces.trinidad.Choice"))
{
if (newValue instanceof String)
_status.setChoiceInt((String) newValue);
}
// This component illustrates a method of dynamically adding a
// partialTarget (i.e. without setting the partialTriggers attribute). It
// updates a component binding and adds the updated component directly to
// the list of partial targets.
else if (rendererType.equals("org.apache.myfaces.trinidad.Listbox"))
{
_listUpdate.setValue(component.getAttributes().get("value"));
_addTarget(_listUpdate);
}
}
public UIXOutput getListUpdate()
{
return _listUpdate;
}
public void setListUpdate(UIXOutput listUpdate)
{
_listUpdate = listUpdate;
}
public PartialDemoStatusBean getStatus()
{
return _status;
}
public void setStatus(PartialDemoStatusBean status)
{
_status = status;
}
public void navigate(ValueChangeEvent vce)
{
Object newValue = vce.getNewValue();
if ((newValue != null) && !"".equals(newValue))
{
FacesContext fContext = FacesContext.getCurrentInstance();
ViewHandler vh = fContext.getApplication().getViewHandler();
UIViewRoot root = vh.createView(fContext, newValue.toString());
fContext.setViewRoot(root);
}
}
public void setRenderInputFile(boolean renderInputFile)
{
this._renderInputFileTemp = renderInputFile;
}
public boolean isRenderInputFile()
{
Boolean value = (Boolean)
FacesContext.getCurrentInstance().getViewRoot().getViewMap().get(
_RENDER_INPUT_FILE_KEY);
return value != null && value;
}
public void fileUploaded(ValueChangeEvent event)
{
_status.setUploadFile((UploadedFile) event.getNewValue());
}
public void updateRenderInputFileState(ActionEvent event)
{
FacesContext.getCurrentInstance().getViewRoot().getViewMap().put(
_RENDER_INPUT_FILE_KEY, _renderInputFileTemp);
_renderInputFileTemp = null;
}
private void _resetList()
{
_listUpdate.setValue("nothing yet.");
_addTarget(_listUpdate);
}
private void _addTarget(UIComponent target)
{
RequestContext adfContext = RequestContext.getCurrentInstance();
adfContext.addPartialTarget(target);
}
private PartialDemoStatusBean _status;
private UIXOutput _listUpdate;
private Boolean _renderInputFileTemp;
private final static String _RENDER_INPUT_FILE_KEY = PartialDemoUtilBean.class.getName() +
".renderInputFile";
}