use of web.Select in project common by zenlunatics.
the class SelectRenderer method writeInput.
// --------------------------------------------------------------------------
@Override
public boolean writeInput(View view, Form form, ColumnBase<?> column, View.Mode mode, String default_value, Request request) throws IOException {
String name = column.getName();
Select select;
if (m_options != null) {
select = new Select(name, m_options).setType(m_type);
if (mode == View.Mode.ADD_FORM)
select.setSelectedOption(null, default_value);
else if (mode != View.Mode.FILTER_FORM) {
Iterator<? extends SelectOption> i = m_options.iterator();
if (i.hasNext())
if (i.next().getValue() == null)
select.setSelectedOption(view.data().getString(name), null);
else
select.setSelectedOption(null, view.data().getString(name));
}
} else if (m_query != null) {
select = new RowsSelect(name, m_query.toString(), m_option_column, m_value_col, request).setType(m_type);
if (m_filter != null)
((RowsSelect) select).setFilter(m_filter);
if (m_option_renderer != null)
((RowsSelect) select).setOptionRenderer(m_option_renderer);
if (mode == View.Mode.ADD_FORM)
select.setSelectedOption(null, default_value);
else if (mode != View.Mode.FILTER_FORM)
select.setSelectedOption(null, view.data().getString(name));
} else {
select = new Select(name, m_options_texts, m_option_values).setType(m_type);
if (mode == View.Mode.ADD_FORM)
select.setSelectedOption(default_value, null);
else if (mode == View.Mode.EDIT_FORM)
if (m_option_values == null)
select.setSelectedOption(view.data().getString(name), null);
else
select.setSelectedOption(null, view.data().getString(name));
}
HTMLWriter writer = request.writer;
if (m_is_required) {
select.setIsRequired(true);
writer.setAttribute("required", "yes");
writer.setAttribute("title", column.getDisplayName(false));
}
if (m_first_option_text != null)
select.addFirstOption(m_first_option_text, m_first_option_value);
if (m_allow_no_selection || mode == View.Mode.FILTER_FORM)
select.setAllowNoSelection(true);
if (m_on_change != null)
select.setOnChange(m_on_change);
select.write(request);
if (m_edit_view_def != null && mode != View.Mode.FILTER_FORM) {
AccessPolicy access_policy = request.site.getViewDef(m_edit_view_def, request.db).getAccessPolicy();
if (access_policy == null || access_policy.showEditButtons(view, request)) {
writer.space();
StringBuilder options = new StringBuilder("column:'");
options.append(column.getName());
options.append("',db_view_def:'");
options.append(view.getViewDef().getName());
options.append('\'');
if (mode == View.Mode.EDIT_FORM) {
options.append(",db_key_value:");
options.append(view.data().getString("id"));
}
String title = "Edit " + request.site.getViewDef(m_query.getFirstTable(), request.db).getRecordNamePlural();
writer.setAttribute("style", "vertical-align:baseline;");
writer.setAttribute("title", title);
writer.buttonIconOnClick("pencil", "new Dialog({title:'" + HTMLWriter.escapeJSString(title) + "',width:'auto',url:context+'/Views/" + m_edit_view_def + "/component'," + options.toString() + "})");
}
}
return true;
}
Aggregations