Author: pgolawski
Date: 2008-11-18 03:42:20 -0500 (Tue, 18 Nov 2008)
New Revision: 11197
Modified:
trunk/ui/extendedDataTable/src/main/java/org/richfaces/component/ExtendedDataTableState.java
Log:
column visibility state changes + toggleGroup method bugfix
Modified:
trunk/ui/extendedDataTable/src/main/java/org/richfaces/component/ExtendedDataTableState.java
===================================================================
---
trunk/ui/extendedDataTable/src/main/java/org/richfaces/component/ExtendedDataTableState.java 2008-11-18
08:35:29 UTC (rev 11196)
+++
trunk/ui/extendedDataTable/src/main/java/org/richfaces/component/ExtendedDataTableState.java 2008-11-18
08:42:20 UTC (rev 11197)
@@ -7,17 +7,13 @@
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
-import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
-import java.util.Set;
import javax.el.ValueExpression;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.richfaces.json.JSONArray;
import org.richfaces.json.JSONCollection;
import org.richfaces.json.JSONException;
@@ -34,8 +30,6 @@
public class ExtendedDataTableState implements Serializable {
private static final long serialVersionUID = -3103664821855261335L;
-
- private static final Log log = LogFactory.getLog(ExtendedDataTableState.class);
public static final String TABLE_STATE_ATTR_NAME = "tableState";
@@ -65,16 +59,13 @@
try {
stateMap = new JSONMap(value);
} catch (JSONException e) {
- log.error("Could not initialize table state");
- if(log.isDebugEnabled()) {
- log.debug(e);
- }
+ e.printStackTrace();
}
}
//initialize columns order part
columnsOrder = ColumnsOrder.getColumnsOrder(extendedDataTable, (stateMap == null ? null
: (JSONCollection)stateMap.get("columnsOrder")));
//initialize columns visibility part
- columnsVisibility = ColumnsVisibility.getColumnsVisibility(extendedDataTable, (stateMap
== null ? null : (JSONCollection)stateMap.get("columnsVisibility")));
+ columnsVisibility = ColumnsVisibility.getColumnsVisibility(extendedDataTable, (stateMap
== null ? null : (JSONMap)stateMap.get("columnsVisibility")));
//initialize columns size part
columnsSizeState = ColumnsSizeState.getColumnsSize(extendedDataTable, (stateMap == null
? null : (JSONMap)stateMap.get("columnsSizeState")));
//initialize column grouping part
@@ -106,10 +97,7 @@
result.put("columnsSizeState", columnsSizeState.toJSON());
result.put("columnGroupingState", columnGroupingState.toJSON());
} catch (JSONException e) {
- log.error("Could not convert to JSON");
- if(log.isDebugEnabled()) {
- log.debug(e);
- }
+ e.printStackTrace();
}
return result;
}
@@ -231,8 +219,6 @@
class ColumnsSizeState implements Serializable{
private static final long serialVersionUID = 8724163192351491340L;
-
- private static final Log log = LogFactory.getLog(ExtendedDataTableState.class);
private static final String DEFAULT_WIDTH = "100";
@@ -298,12 +284,7 @@
}
value = new JSONMap(writer.endObject().toString());
} catch (JSONException e) {
- if(log.isWarnEnabled()) {
- log.warn("Default column size state not created");
- }
- if(log.isDebugEnabled()) {
- log.debug(e);
- }
+ e.printStackTrace();
}
}
@@ -493,8 +474,11 @@
private static final long serialVersionUID = -3923409650272094713L;
//private static final String SEP = ";";
+
+ private static final String TRUE = "1";
+ private static final String FALSE = "0";
- private JSONArray value;
+ private JSONMap value;
private ColumnsVisibility() {
super();
@@ -502,29 +486,23 @@
static ColumnsVisibility getColumnsVisibility(UIExtendedDataTable extendedDataTable,
String val) throws JSONException{
ColumnsVisibility columnsVisibility = new ColumnsVisibility();
- columnsVisibility.init(extendedDataTable, new JSONCollection(val));
+ columnsVisibility.init(extendedDataTable, new JSONMap(val));
return columnsVisibility;
}
- static ColumnsVisibility getColumnsVisibility(UIExtendedDataTable extendedDataTable,
JSONCollection collection){
+ static ColumnsVisibility getColumnsVisibility(UIExtendedDataTable extendedDataTable,
JSONMap map){
ColumnsVisibility columnsVisibility = new ColumnsVisibility();
- columnsVisibility.init(extendedDataTable, collection);
+ columnsVisibility.init(extendedDataTable, map);
return columnsVisibility;
}
/**
* Converts its state from String representation or create default state if it is not
set.
*/
- private void init(UIExtendedDataTable extendedDataTable, JSONCollection collection){
+ private void init(UIExtendedDataTable extendedDataTable, JSONMap map){
value = null;
- if ((collection != null) && (collection.size()>0)){
- //try to restore state from string
- value = new JSONArray(collection);
-// try {
-// value = new JSONArray(val);
-// } catch (JSONException e) {
-// e.printStackTrace();
-// }
+ if ((map != null) && (map.size()>0)){
+ value = map;
}
if (value == null){
@@ -554,7 +532,7 @@
* Get state in JSON format.
* @return JSON object contains state
*/
- public JSONArray toJSON(){
+ public JSONMap toJSON(){
return value;
}
@@ -562,31 +540,19 @@
* Create default column visibility based on component children.
*/
private void createDefaultColumnsVisibility(UIExtendedDataTable extendedDataTable){
- value = new JSONArray();
- for (Iterator<UIColumn> iter = extendedDataTable.getChildColumns();
iter.hasNext();) {
- UIColumn col = iter.next();
- value.put(col.getId());
+ try {
+ JSONWriter writer = new JSONStringer().object();
+ for (Iterator<UIColumn> iter = extendedDataTable.getChildColumns();
iter.hasNext();) {
+ UIColumn col = iter.next();
+ writer.key(col.getId()).value(TRUE);
+ }
+ value = new JSONMap(writer.endObject().toString());
+ } catch (JSONException e) {
+ e.printStackTrace();
}
}//createDefaultColumnsVisibility
/**
- * Get column position.
- * @param columnId column id to be found
- * @return column position or -1 if not found
- */
- private int getColumnPosition(String columnId){
- if (value == null)
- return -1;
- for (int i=0;i<value.length(); i++){
- Object val = value.opt(i);
- if (columnId.equals(val)){
- return i;
- }
- }
- return -1;
- }//getColumnIndex
-
- /**
* Get column visibility.
* @param columnId column id to be found
* @return true if column is visible, otherwise false
@@ -594,7 +560,7 @@
boolean isVisible(String columnId){
if (value == null)
return true;
- return (value.opt(getColumnPosition(columnId)) != null);
+ return TRUE.equals(value.get(columnId));
}//isVisible
/**
@@ -607,36 +573,23 @@
return;
UIColumn column = null;
//find column by id
-// for (Iterator<UIColumn> iter = extendedDataTable.getChildColumns();
iter.hasNext();) {
-// UIColumn col = iter.next();
-// if (col.getId().equalsIgnoreCase(columnId)){
-// if (col instanceof UIColumn){
-// column = (UIColumn) col;
-// }
-// break;
-// }//if
-// }//for
-// if (column == null)
-// return;
+ for (Iterator<UIColumn> iter = extendedDataTable.getChildColumns();
iter.hasNext();) {
+ UIColumn col = iter.next();
+ if (col.getId().equalsIgnoreCase(columnId)){
+ if (col instanceof UIColumn){
+ column = (UIColumn) col;
+ }
+ break;
+ }//if
+ }//for
+ if (column == null)
+ return;
boolean visible = column.isVisible();
//toggle visibility
visible = !visible;
//set visibility flag for column
column.setVisible(visible);
- Set<String> visibleIds = new HashSet<String>(value.length());
- for (int i=0;i<value.length(); i++){
- visibleIds.add(value.optString(i));
- }
- if (visible){
- //add id to set
- visibleIds.add(columnId);
- }
- else{
- //remove id from list
- visibleIds.remove(columnId);
- }
- //convert from set to JSON
- value = new JSONArray(visibleIds);
+ value.put(columnId, (visible ? TRUE : FALSE));
}//changeVisibility
}//ColumnsVisibility
Show replies by date