/*
* Copyright 2004 original author or authors.
*
* Licensed 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.extremecomponents.table.view.html;
import org.apache.commons.lang.StringUtils;
import org.extremecomponents.table.bean.Column;
import org.extremecomponents.table.core.TableConstants;
import org.extremecomponents.table.core.TableModel;
import org.extremecomponents.table.limit.Sort;
/**
* @author Jeff Johnston
*/
public class TableActions {
private TableModel model;
public TableActions(TableModel model) {
this.model = model;
}
protected TableModel getTableModel() {
return model;
}
public String getOnInvokeAction() {
String onInvokeAction = model.getTableHandler().getTable().getOnInvokeAction();
if (StringUtils.isNotBlank(onInvokeAction)) {
return onInvokeAction;
}
return getSubmitAction();
}
public String getSubmitAction() {
StringBuffer result = new StringBuffer();
String form = BuilderUtils.getForm(model);
String action = model.getTableHandler().getTable().getAction();
result.append("document.forms.").append(form).append(".setAttribute('action','").append(action).append("');");
String method = model.getTableHandler().getTable().getMethod();
result.append("document.forms.").append(form).append(".setAttribute('method','").append(method).append("');");
result.append("document.forms.").append(form).append(".submit()");
return result.toString();
}
public String getFormParameter(String name, String value) {
StringBuffer result = new StringBuffer();
String form = BuilderUtils.getForm(model);
result.append("document.forms.").append(form).append(".");
result.append(model.getTableHandler().prefixWithTableId()).append(name);
result.append(".value='").append(value).append("';");
return result.toString();
}
public String getExportTableIdParameter(String value) {
StringBuffer result = new StringBuffer();
String form = BuilderUtils.getForm(model);
result.append("document.forms.").append(form).append(".");
result.append(TableConstants.EXPORT_TABLE_ID);
result.append(".value='").append(value).append("';");
return result.toString();
}
public String getExportAction(String exportView, String exportFileName) {
StringBuffer action = new StringBuffer("javascript:");
action.append(getExportTableIdParameter(model.getTableHandler().getTable().getTableId()));
action.append(getFormParameter(TableConstants.EXPORT_VIEW, exportView));
action.append(getFormParameter(TableConstants.EXPORT_FILE_NAME, exportFileName));
action.append(getSubmitAction());
return action.toString();
}
public String getPageAction(int page) {
StringBuffer action = new StringBuffer("javascript:");
action.append(getClearedExportTableIdParameters());
action.append(getFormParameter(TableConstants.PAGE, "" + page));
action.append(getOnInvokeAction());
return action.toString();
}
public String getFilterAction() {
StringBuffer action = new StringBuffer("javascript:");
action.append(getClearedExportTableIdParameters());
action.append(getFormParameter(TableConstants.FILTER + TableConstants.ACTION, TableConstants.FILTER_ACTION));
action.append(getFormParameter(TableConstants.PAGE, "1"));
action.append(getOnInvokeAction());
return action.toString();
}
public String getClearAction() {
StringBuffer action = new StringBuffer("javascript:");
action.append(getClearedExportTableIdParameters());
action.append(getFormParameter(TableConstants.FILTER + TableConstants.ACTION, TableConstants.CLEAR_ACTION));
action.append(getFormParameter(TableConstants.PAGE, "1"));
action.append(getOnInvokeAction());
return action.toString();
}
public String getSortAction(Column column, String sortOrder) {
StringBuffer action = new StringBuffer("javascript:");
Sort sort = model.getLimit().getSort();
if (sort.isSorted()) {
// set the old sort back
action.append(getFormParameter(TableConstants.SORT + sort.getAlias(), ""));
}
action.append(getClearedExportTableIdParameters());
// set sort on current column
action.append(getFormParameter(TableConstants.SORT + column.getAlias(), sortOrder));
action.append(getFormParameter(TableConstants.PAGE, "1"));
action.append(getOnInvokeAction());
return action.toString();
}
public String getRowsDisplayedAction() {
StringBuffer action = new StringBuffer("javascript:");
action.append(getClearedExportTableIdParameters());
action.append(getRowsDisplayedFormParameter(TableConstants.CURRENT_ROWS_DISPLAYED));
action.append(getFormParameter(TableConstants.PAGE, "1"));
action.append(getOnInvokeAction());
return action.toString();
}
/**
* Need to clear the export table id parameter.
*
* @return The javascript to clear the table id
*/
public String getClearedExportTableIdParameters() {
if (BuilderUtils.showExports(model)) {
return getExportTableIdParameter("");
}
return "";
}
protected String getRowsDisplayedFormParameter(String name) {
StringBuffer result = new StringBuffer();
String form = BuilderUtils.getForm(model);
String selectedOption = "this.options[this.selectedIndex].value";
result.append("document.forms.").append(form).append(".");
result.append(model.getTableHandler().prefixWithTableId()).append(name);
result.append(".value=").append(selectedOption).append(";");
return result.toString();
}
}