⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 simplesmilcontrol.java

📁 MM7彩信对接网关示例
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/*
 * Created on 2005-6-29
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
package com.rainbow.mms.common;



import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;




/**
 * 控制SMIL文件的生成。
 * @author Rainbow MMS Group Leader —— TrWorks
 */
public class SimpleSmilControl {

	Document doc = null;
	Element body = null;
	List listSlid = null;
	
	/**
	 * 构造SMIL的XML文本控制对象
	 *
	 */
	public SimpleSmilControl(){
		doc = DocumentHelper.createDocument();
		//doc.setXMLEncoding("iso5589-1");
		Element smil = doc.addElement("smil");
		body = smil.addElement("body");
	}
	
	/**
	 * 构造SMIL的XML文本控制对象
	 * @param smilContent SMIL文件的文本全内容
	 */
	public SimpleSmilControl(String smilContent){
		SAXReader builder = new SAXReader();

		try {
			doc = DocumentHelper.parseText(smilContent);;
			List list = doc.content();
			Element tmp = (Element) list.get(0);

			Iterator i = tmp.elementIterator();
			body = (Element) i.next();
			listSlid = body.elements();

		} catch (Exception e) {

			e.printStackTrace();
		}
		
	}
	
	/**
	 * 添加SMIL的一桢
	 * 
	 * @param timeInterval
	 *            要添加桢显示的时间,毫秒单位,例如形成效果: <par dur="10000ms"/>
	 * @return 该桢的编号
	 */
	public int addSlid(int timeInterval){
		Element pur = body.addElement("par");
		pur.setAttributeValue("dur", (String.valueOf(timeInterval) + "s"));		
		return body.elements().size() - 1;
	}
	
	/**
	 * 添加桢
	 * @param timeInterval 显示时间
	 * @param afterNo 在哪桢后添加
	 * @return 新的桢的编号
	 */
	public int addSlid(int timeInterval, int afterNo){
		if (timeInterval < 1 || afterNo < 0){
			return 0;
		}
		
		Element pur = body.addElement("par");
		Element tmp = (Element)pur.clone();
		body.remove(pur);
		tmp.setAttributeValue("dur", (String.valueOf(timeInterval) + "s"));
		List list = body.elements();
		list.add(afterNo, tmp);		
		return afterNo;
	}
	
	/**
	 * 向指定桢内添加文本文件的名称,例如形成效果:<text src = "1.txt" />
	 * @param slidNo 指定桢编号
	 * @param textFileName 文件名称
	 */
	public void addText(int slidNo, String textFileName){
		addObject(slidNo, "text", textFileName);
	}
	
	/**
	 * 向指定桢内添加图像文件的名称,例如形成效果:<img src = "1.jpg" />
	 * @param slidNo 指定桢编号
	 * @param imageFileName 文件名称
	 */
	public void addImage(int slidNo, String imageFileName){
		addObject(slidNo, "img", imageFileName);
	}
	
	/**
	 * 向指定桢内添加声音文件的名称,例如形成效果:<img src = "1.midi" />
	 * @param slidNo 指定桢编号
	 * @param imageFileName 文件名称
	 */
	public void addAudio(int slidNo, String imageFileName){
		addObject(slidNo, "audio", imageFileName);
	}
	
	/**
	 * 向指定桢内添加文件的名称,例如形成效果:<ref src = "1.jpg" />
	 * @param slidNo 指定桢编号
	 * @param refFileName 文件名称
	 */
	public void addRef(int slidNo, String refFileName){
		addObject(slidNo, "ref", refFileName);
	}
	
	/**
	 * 向指定桢内添加文件的名称
	 * @param slidNo 指定桢编号
	 * @param refFileName 文件名称
	 * @param pos 位置
	 */
	public void addRef(int slidNo, String refFileName, int pos){
		List parList = body.elements();
		Element parElement = (Element)parList.get(slidNo);
		List refList = parElement.elements();
		if (refList.size() < pos){
			System.out.println("SimpleSmilControl addRef Failed -- pos Param error!");
			return;
		}
		
		Element tmpRefElement = parElement.addElement("ref");
		Element newRefElement = (Element)tmpRefElement.clone();
		newRefElement.setAttributeValue("src", refFileName);
		parElement.remove(tmpRefElement);
		refList.add(pos, newRefElement);
		
		Element slidElement = (Element)listSlid.get(slidNo);
	}
	
	/**
	 * 向指定桢内添加文本文件的名称
	 * @param slidNo 指定桢编号
	 * @param refFileName 文件名称
	 * @param pos 位置
	 */
	public void addText(int slidNo, String refFileName, int pos){
		List parList = body.elements();
		Element parElement = (Element)parList.get(slidNo);
		List refList = parElement.elements();
		if (refList.size() < pos){
			System.out.println("SimpleSmilControl addText Failed -- pos Param error!");
			return;
		}
		
		Element tmpRefElement = parElement.addElement("text");
		Element newRefElement = (Element)tmpRefElement.clone();
		newRefElement.setAttributeValue("src", refFileName);
		parElement.remove(tmpRefElement);
		refList.add(pos, newRefElement);
		
		Element slidElement = (Element)listSlid.get(slidNo);
	}
	
	/**
	 * 向指定桢内添加图像文件的名称
	 * @param slidNo 指定桢编号
	 * @param refFileName 文件名称
	 * @param pos 位置
	 */
	public void addImage(int slidNo, String refFileName, int pos){
		List parList = body.elements();
		Element parElement = (Element)parList.get(slidNo);
		List refList = parElement.elements();
		if (refList.size() < pos){
			System.out.println("SimpleSmilControl addText Failed -- pos Param error!");
			return;
		}
		
		Element tmpRefElement = parElement.addElement("img");
		Element newRefElement = (Element)tmpRefElement.clone();
		newRefElement.setAttributeValue("src", refFileName);
		parElement.remove(tmpRefElement);
		refList.add(pos, newRefElement);
		
		Element slidElement = (Element)listSlid.get(slidNo);
	}
	
	/**
	 * 向指定桢内添加声音文件的名称
	 * @param slidNo 指定桢编号
	 * @param refFileName 文件名称
	 * @param pos 位置
	 */
	public void addAudio(int slidNo, String refFileName, int pos){
		List parList = body.elements();
		Element parElement = (Element)parList.get(slidNo);
		List refList = parElement.elements();
		if (refList.size() < pos){
			System.out.println("SimpleSmilControl addText Failed -- pos Param error!");
			return;
		}
		
		Element tmpRefElement = parElement.addElement("audio");
		Element newRefElement = (Element)tmpRefElement.clone();
		newRefElement.setAttributeValue("src", refFileName);
		parElement.remove(tmpRefElement);
		refList.add(pos, newRefElement);
		
		Element slidElement = (Element)listSlid.get(slidNo);
	}
	
	
	/**
	 * 向指定桢内添加文件的名称
	 * @param slidNo 指定桢编号
	 * @param type 类型
	 * @param pos 文件名称
	 */
	protected void addObject(int slidNo, String type, String fileName){
		List parList = body.elements();
		Element parElement = (Element)parList.get(slidNo);
		List refList = parElement.elements();
		
		Element tmpRefElement = parElement.addElement(type);
		Element newRefElement = (Element)tmpRefElement.clone();
		newRefElement.setAttributeValue("src", fileName);
		parElement.remove(tmpRefElement);
		refList.add(newRefElement);
	}
	
	/**
	 * 删除桢
	 * @param slidNo 指定桢编号
	 */
	public void removeSlid(int slidNo){
		List list = body.elements();
		if (slidNo <= list.size()){
			list.remove(slidNo);
		}
	}
	
	/**
	 * 删除内容
	 * @param slidNO 指定桢编号
	 * @param fileName 文件名
	 * @param delSlidIfNoContent 如果该桢中删除内容后,没有其他内容了,则是否连同该桢一起删掉
	 */
	public void removeObject(int slidNO, String fileName, boolean delSlidIfNoContent){
		List list = body.elements();
		Element parContent = (Element)list.get(slidNO);
		List refList = parContent.elements();
		
		if (refList != null){
			for (int i = 0; i < refList.size(); i++){
				Element refElement = (Element)refList.get(i);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -