/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package jada.ngeditor.model.elements.effects;
import com.google.common.collect.Lists;
import de.lessvoid.nifty.effects.EffectEventId;
import de.lessvoid.nifty.elements.Element;
import de.lessvoid.nifty.loaderv2.types.EffectType;
import de.lessvoid.xml.xpp3.Attributes;
import java.util.HashMap;
import java.util.Map;
import javax.xml.XMLConstants;
import javax.xml.bind.annotation.XmlAnyAttribute;
import javax.xml.bind.annotation.XmlTransient;
import javax.xml.namespace.QName;
/**
*
* @author cris
*/
public abstract class GEffect {
protected final EffectType effectType;
@XmlTransient
private EffectEventId eventType;
public GEffect(){
effectType = new EffectType();
}
public void createEffectFor(Element ownerElement,EffectEventId eventID){
effectType.materialize(ownerElement.getNifty(), ownerElement, eventID, new Attributes(),Lists.newLinkedList());
}
public void setAttribute(String name, String value){
effectType.getAttributes().set(name, value);
}
public String getAttribute(String name){
return effectType.getAttributes().get(name);
}
public Map<String, String> enumerateAttributes() {
return this.searchListOfAttributesInFile("effectType");
}
protected final Map<String, String> searchListOfAttributesInFile(String name){
Map<String, String> res = new HashMap<String, String>();
for (String prop : jada.ngeditor.model.PropretiesResolver.inst.resolve(name)) {
String defvalue = getAttribute(prop);
res.put(prop, defvalue);
}
return res;
}
public void setXmlAttributes(Map<QName, String> attrib) {
for (QName n : attrib.keySet()) {
effectType.getAttributes().set(n.getLocalPart(), attrib.get(n));
}
}
@XmlAnyAttribute
public Map<QName, String> getXmlAttributes() {
Map<QName, String> res = new HashMap<QName, String>();
for (String s : this.effectType.getAttributes().getAttributes().keySet()) {
QName qname = QName.valueOf(XMLConstants.NULL_NS_URI + s);
res.put(qname, getAttribute(s));
}
return res;
}
/**
* @return the eventType
*/
@XmlTransient
public EffectEventId getEventType() {
return eventType;
}
/**
* @param eventType the eventType to set
*/
public void setEventType(EffectEventId eventType) {
this.eventType = eventType;
}
}