package com.idega.presentation;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Map;
import com.idega.core.file.data.ICFile;
public class GenericPlugin extends PresentationObject
{
private Map params;
private String classId;
private String codeBase;
private String pluginspace;
private ICFile file = null;
public GenericPlugin()
{
super();
}
public GenericPlugin(String url)
{
this(url, "untitled");
}
public GenericPlugin(String url, String name)
{
this();
setName(name);
setURL(url);
}
public GenericPlugin(String url, int width, int height)
{
this();
setURL(url);
setWidth(width);
setHeight(height);
}
public GenericPlugin(String url, String name, int width, int height)
{
this(url, width, height);
setName(name);
}
public void setURL(String url)
{
setParamAndAttribute("src", url);
}
public void setSrc(String src)
{
setParamAndAttribute("src", src);
}
public void setParamAndAttribute(String name, String value)
{
setMarkupAttribute(name, value);
setParam(name, value);
}
public void setParamAndAttribute(String name, boolean value)
{
setParamAndAttribute(name, String.valueOf(value));
}
public void setParam(String name, String value)
{
if (this.params == null) {
this.params = new Hashtable();
}
this.params.put(name, value);
}
public void setParam(String name, boolean value)
{
setParam(name, String.valueOf(value));
}
public String getParams()
{
StringBuffer paramString = new StringBuffer();
if (this.params != null)
{
Iterator iter = this.params.keySet().iterator();
String key;
while (iter.hasNext())
{
key = (String) iter.next();
paramString.append("<param name=\"");
paramString.append(key);
paramString.append("\" value=\"");
paramString.append(this.params.get(key));
paramString.append("\" >\n");
}
}
return paramString.toString();
}
public void setWidth(int width)
{
setWidth(Integer.toString(width));
}
public void setWidth(String width)
{
setParamAndAttribute("width", width);
}
public String getWidth()
{
return getMarkupAttribute("width");
}
public void setHeight(int height)
{
setHeight(Integer.toString(height));
}
public void setHeight(String height)
{
setParamAndAttribute("height", height);
}
public String getHeight()
{
return getMarkupAttribute("height");
}
public String getURL()
{
return this.getMarkupAttribute("src");
}
public String getHeightString()
{
return " height=\"" + getHeight() + "\" ";
}
public String getWidthString()
{
return " width=\"" + getWidth() + "\" ";
}
public void setBackgroundColor(String bgColor)
{
setParamAndAttribute("BGCOLOR", bgColor);
}
public void setClassId(String classId)
{
this.classId = classId;
}
public void setCodeBase(String codeBase)
{
this.codeBase = codeBase;
}
public void setPluginSpace(String pluginspace)
{
this.pluginspace = pluginspace;
}
public String getClassId(String classId)
{
return classId;
}
public String getCodeBase(String codeBase)
{
return codeBase;
}
public String getPluginSpace(String pluginspace)
{
return pluginspace;
}
public void print(IWContext iwc) throws Exception
{
if (doPrint(iwc))
{
if (this.file != null)
{
String url = getICFileSystem(iwc).getFileURI(this.file);
setURL(url);
}
if (getMarkupLanguage().equals("HTML"))
{
StringBuffer buffer = new StringBuffer();
buffer.append("<object classid=\"clsid:");
buffer.append(this.classId);
buffer.append("\" codebase=\"");
buffer.append(this.codeBase);
buffer.append("\" ");
if (getHeight() != null) {
buffer.append(getHeightString());
}
if (getWidth() != null) {
buffer.append(getWidthString());
}
buffer.append(">\n");
buffer.append(getParams());
buffer.append("<embed pluginspage=\"");
buffer.append(this.pluginspace);
buffer.append("\"");
buffer.append(getMarkupAttributesString());
buffer.append(">\n</embed>\n</object>");
print(buffer.toString());
}
}
}
public void setFile(ICFile file)
{
this.file = file;
}
public synchronized Object clone()
{
GenericPlugin obj = null;
try
{
obj = (GenericPlugin) super.clone();
obj.params = this.params;
obj.classId = this.classId;
obj.codeBase = this.codeBase;
obj.pluginspace = this.pluginspace;
obj.file = this.file;
}
catch (Exception ex)
{
ex.printStackTrace(System.err);
}
return obj;
}
}