/*******************************************************************************
* Copyright 2012 University of Southern California
*
* 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.
*
* This code was developed by the Information Integration Group as part
* of the Karma project at the Information Sciences Institute of the
* University of Southern California. For more information, publications,
* and related projects, please see: http://www.isi.edu/integration
******************************************************************************/
/**
*
*/
package edu.isi.karma.view;
import java.util.HashMap;
import java.util.Map;
import edu.isi.karma.rep.HNode;
import edu.isi.karma.rep.HNodePath;
/**
* @author szekely
*
*/
public class VTableCssTags {
private static String cssTags[] = { "table01cell", "table02cell",
"table03cell", "table04cell", "table05cell", "table06cell",
"table07cell", "table08cell", "table09cell" };
static final String CSS_TOP_LEVEL_TABLE_CELL = "topLevelTableCell";
public static boolean useDepthBasedCSSTags = true;
private static final HashMap<Integer, String> depthCssMap = new HashMap<Integer, String>();
static {
depthCssMap.put(0, "topLevelTableCell");
depthCssMap.put(1, "table01cell");
depthCssMap.put(2, "table02cell");
depthCssMap.put(3, "table03cell");
depthCssMap.put(4, "table04cell");
}
/**
* Map HTable Ids to CSS tags.
*/
private Map<String, String> tagMap = new HashMap<String, String>();
public void registerHTable(String hTableId, int depth) {
if (!tagMap.containsKey(hTableId)) {
int tagIndex = tagMap.size() % cssTags.length;
tagMap.put(hTableId, cssTags[tagIndex]);
}
}
public String getCssTag(String hTableId, int depth) {
if(useDepthBasedCSSTags)
return depthCssMap.get(depth%5);
String result = tagMap.get(hTableId);
if (result == null){
result = CSS_TOP_LEVEL_TABLE_CELL;
//result = "BOGUS-"+hTableId;
}
return result;
}
public void registerTablesInPath(HNodePath path) {
HNodePath p = path;
int i = 0;
while (!p.isEmpty()) {
HNode hn = p.getFirst();
if (hn.hasNestedTable()) {
registerHTable(hn.getNestedTable().getId(), i);
}
p = p.getRest();
i++;
}
}
}