Newer
Older
AlgebraicDataflowArchitectureModel / AlgebraicDataflowArchitectureModel / src / simulator / interfaces / html / HtmlElement.java
Sakoda2269 on 22 Dec 2 KB テーブルに対応
package simulator.interfaces.html;

import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;

import models.algebra.Constant;
import models.dataConstraintModel.JsonTerm;
import models.dataConstraintModel.MapTerm;

public class HtmlElement {

	private final String type;
	private final String id;
	private String text;
	private Map<String, String> styles;
	private Set<String> classes;
	private JsonTerm data;
	private IRestEventListener restEventListener;
	
	HtmlElement(String type, String id, String text){
		this.type = type;
		this.id = id.replace("\"", "");
		this.text = text;
		styles = new HashMap<>();
		classes = new HashSet<>();
		data = new JsonTerm();
	}
	
	public void setStyle(String property, String value) {
		styles.put(property, value);
	}
	
	public void resetStyle(String property) {
		styles.remove(property);
	}
	
	public void addClass(String className) {
		classes.add(className);
	}
	
	public void removeClass(String className) {
		classes.remove(className);
	}
	
	public void setData(JsonTerm newJson) {
		data = newJson;
	}
	
	public MapTerm toMap() {
		MapTerm res = new MapTerm();
		res.insert("type", new Constant("\"" + type + "\""));
		res.insert("id", new Constant("\"" + id + "\""));
		res.insert("text", new Constant(text));
		MapTerm stylesMap = new MapTerm();
		for(String prop : styles.keySet()) {
			stylesMap.insert(prop, new Constant("\"" + styles.get(prop) + "\""));
		}
		res.insert("styles", stylesMap);
		String classTmp = "\"" + String.join(" ", classes) + "\"";
		res.insert("class", new Constant(classTmp));
		res.insert("data", data);
		return res;
	}
	
	
	public void onRestEvent(String method, JsonTerm message) {
		restEventListener.onEvent(method, message);
	}
	
	
	public String getType() {
		return type;
	}

	public String getId() {
		return id;
	}

	public String getText() {
		return text;
	}

	public void setText(String text) {
		this.text = text;
	}
	
	public void setRestEventListener(IRestEventListener event) {
		this.restEventListener = event;
	}

}