專利名稱:一種機(jī)頂盒人機(jī)界面自動(dòng)生成方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種機(jī)頂盒人機(jī)界面自動(dòng)生成方法。
背景技術(shù):
構(gòu)建用戶界面是費(fèi)時(shí)和昂貴的,據(jù)統(tǒng)計(jì),在圖形用戶界面系統(tǒng)中,差不多源代碼和開(kāi)發(fā)時(shí)間的50%都被用來(lái)創(chuàng)建用戶界面。用戶界面,特別是圖形用戶界面,承擔(dān)著向用戶顯示問(wèn)題模型和與用戶進(jìn)行操作和交互的作用,用戶不僅希望交互操作的界面保持相對(duì)穩(wěn)定,更希望根據(jù)需要調(diào)整和改變顯示的內(nèi)容和形式,如何在不改變軟件的功能和模型的前提下,方便地完成對(duì)用戶界面構(gòu)造的調(diào)整,正是軟件界面自動(dòng)化的研究任務(wù)。近年來(lái),出現(xiàn)了很多基于模型的界面開(kāi)發(fā)環(huán)境,通過(guò)幾種模型整合針對(duì)應(yīng)用系統(tǒng)的不同側(cè)面進(jìn)行建模,從而獲得足夠的信息支持用戶界面的自動(dòng)生成,這些模型一般使用對(duì)話模型或任務(wù)模型來(lái)描述人機(jī)交互,但這類模型對(duì)交互行為的描述過(guò)于復(fù)雜,并且這類模型和系統(tǒng)中其他模型之間的映射問(wèn)題也難于處理,不適用于IP機(jī)頂盒人機(jī)界面的自動(dòng)生成。
發(fā)明內(nèi)容
本發(fā)明的目的在于克服現(xiàn)有技術(shù)的不足,提供一種支持多種圖片格式、中英文字和視頻內(nèi)容的混排版,便于用戶快速對(duì)界面進(jìn)行編輯,開(kāi)發(fā)成本低,使用和維護(hù)方便,便于新界面開(kāi)發(fā)及用戶感知好的一種機(jī)頂盒人機(jī)界面自動(dòng)生成方法。本發(fā)明的目的是通過(guò)以下技術(shù)方案來(lái)實(shí)現(xiàn)的:一種機(jī)頂盒人機(jī)界面自動(dòng)生成方法,它包括以下步驟:
S1:標(biāo)簽文檔格式定義,即將多種業(yè)務(wù)邏輯的數(shù)據(jù)組成一個(gè)HTML能夠識(shí)別的文檔,所述的標(biāo)簽文檔包括標(biāo)簽庫(kù)描述符,以及Java類標(biāo)簽處理程序或JSP代碼;
S2:用戶界面組件標(biāo)簽事件處理方法定義,即定義標(biāo)簽處理程序、機(jī)頂盒遙控器按鍵響應(yīng)事件和JSP頁(yè)面生成的Servlet之間的映射,以及所有標(biāo)簽處理程序的基本方法或函數(shù),實(shí)現(xiàn)界面標(biāo)簽業(yè)務(wù)邏輯的轉(zhuǎn)換;
S3:自動(dòng)化界面生成,即解析所述的標(biāo)簽文檔中的自定義標(biāo)簽,運(yùn)用所述的界面組件標(biāo)簽事件處理方法綁定數(shù)據(jù),然后通過(guò)HTML方式回顯給機(jī)頂盒。所述的標(biāo)簽包括如綴、標(biāo)簽名稱、屬性名稱、屬性值、標(biāo)簽體和結(jié)束標(biāo)識(shí),
進(jìn)一步的,所述的一種機(jī)頂盒人機(jī)界面自動(dòng)生成方法,它還包括一個(gè)標(biāo)簽?zāi)0宥x步驟。進(jìn)一步的,所述的一種機(jī)頂盒人機(jī)界面自動(dòng)生成方法,它還包括一個(gè)通過(guò)Tag接口擴(kuò)展實(shí)現(xiàn)的控制重復(fù)處理標(biāo)簽體內(nèi)容的方法或函數(shù)。進(jìn)一步的,所述的一種機(jī)頂盒人機(jī)界面自動(dòng)生成方法,它還包括一個(gè)通過(guò)IterationTag接口擴(kuò)展實(shí)現(xiàn)對(duì)標(biāo)簽體內(nèi)容進(jìn)行訪問(wèn)和操作的方法或函數(shù)。本發(fā)明的有益效果是:本發(fā)明通過(guò)標(biāo)簽文檔格式定義、用戶界面組件標(biāo)簽事件處理方法定義和自動(dòng)化界面生成三個(gè)步驟實(shí)現(xiàn)了機(jī)頂盒人機(jī)交互界面的自動(dòng)生成,并且支持多種圖片格式、中英文字和視頻內(nèi)容的混排版,便于用戶快速的對(duì)界面進(jìn)行編輯,具有開(kāi)發(fā)成本低,使用和維護(hù)方便,便于新界面開(kāi)發(fā)及用戶感知好等優(yōu)點(diǎn)。
圖1為本發(fā)明用戶界面自動(dòng)生成框架 圖2為本發(fā)明運(yùn)用生成器生成界面流程圖。
具體實(shí)施例方式下面結(jié)合附圖進(jìn)一步詳細(xì)描述本發(fā)明的技術(shù)方案:如圖1所示,一種機(jī)頂盒人機(jī)界面自動(dòng)生成方法,它包括以下步驟:
S1:標(biāo)簽文檔格式定義,即將多種業(yè)務(wù)邏輯的數(shù)據(jù)組成一個(gè)HTML能夠識(shí)別的文檔,所述的標(biāo)簽文檔包括標(biāo)簽庫(kù)描述符,以及Java類標(biāo)簽處理程序或JSP代碼;
S2:用戶界面組件標(biāo)簽 事件處理方法定義,即定義標(biāo)簽處理程序、機(jī)頂盒遙控器按鍵響應(yīng)事件和JSP頁(yè)面生成的Servlet之間的映射,以及所有標(biāo)簽處理程序的基本方法或函數(shù),實(shí)現(xiàn)界面標(biāo)簽業(yè)務(wù)邏輯的轉(zhuǎn)換;
S3:自動(dòng)化界面生成,即解析所述的標(biāo)簽文檔中的自定義標(biāo)簽,運(yùn)用所述的界面組件標(biāo)簽事件處理方法綁定數(shù)據(jù),然后通過(guò)HTML方式回顯給機(jī)頂盒。所述的標(biāo)簽包括如綴、標(biāo)簽名稱、屬性名稱、屬性值、標(biāo)簽體和結(jié)束標(biāo)識(shí),
進(jìn)一步的,所述的一種機(jī)頂盒人機(jī)界面自動(dòng)生成方法,它還包括一個(gè)標(biāo)簽?zāi)0宥x步驟。進(jìn)一步的,所述的一種機(jī)頂盒人機(jī)界面自動(dòng)生成方法,它還包括一個(gè)通過(guò)Tag接口擴(kuò)展實(shí)現(xiàn)的控制重復(fù)處理標(biāo)簽體內(nèi)容的方法或函數(shù)。進(jìn)一步的,所述的一種機(jī)頂盒人機(jī)界面自動(dòng)生成方法,它還包括一個(gè)通過(guò)IterationTag接口擴(kuò)展實(shí)現(xiàn)對(duì)標(biāo)簽體內(nèi)容進(jìn)行訪問(wèn)和操作的方法或函數(shù)。用戶界面模板頁(yè)面在需要使用組件對(duì)像時(shí),首先在頁(yè)面程序頭部引用自定義的Javaweb標(biāo)簽庫(kù),在需要顯示標(biāo)簽庫(kù)的內(nèi)容時(shí),在程序中簽入標(biāo)簽庫(kù)的組件。下列代碼說(shuō)明了標(biāo)簽在頁(yè)面中的調(diào)用方式:
<%@page language=丨丨 java 丨丨 import=丨丨 java.util.^ 丨丨 pageEncoding=丨丨UFT-8 丨丨 %>
<%@taglib uri=丨丨 http://com.soft/javaweb/tags 丨丨 prefix=丨丨 javaweb 丨丨 %><html>
〈body〉
<h2>
機(jī)頂盒賬號(hào):〈javaweb:inputTag inputld= " txtRegUid " > inputStyle=丨丨 composition 丨丨 /><hr/>
密石馬:<javaweb:inputTag inputld=丨丨 txtPassWord 丨丨 /><hr/>
</h2>
〈/body〉</html>
以上代碼中的界面上提供了機(jī)頂盒賬號(hào)和登錄密碼兩個(gè)屬性相關(guān)的組件以及操作按鈕,其中,機(jī)頂盒賬號(hào)和登錄密碼為文本框,供用戶輸入賬號(hào)名稱,所屬的其它元素是組合框,供用戶選擇,操作按鈕包括“確定”和“取消”,每個(gè)組件都有一個(gè)唯一標(biāo)識(shí)該組件name屬性,該屬性在組件初始化、設(shè)定當(dāng)前值和組件事件監(jiān)聽(tīng)類中獲取組件信息時(shí)用到。如圖2所示,闡述了從組件標(biāo)簽事件創(chuàng)建Java組件對(duì)象的過(guò)程,自動(dòng)化界面生成的步驟采用Java自主開(kāi)發(fā)的解析器解析界面描述TLD標(biāo)簽庫(kù)和模板頁(yè)面,Java解析器基于組件標(biāo)簽事件,為了能夠直接訪問(wèn)每個(gè)組件元素的屬性,需要按層級(jí)關(guān)系逐級(jí)進(jìn)行調(diào)用。界面自動(dòng)生成器用一個(gè)Java類GuiGenerator來(lái)實(shí)現(xiàn),該類繼承來(lái)自SAX API的DefaultHandler類,它實(shí)現(xiàn)錯(cuò)誤處理和文檔處理的接口,提供一種更簡(jiǎn)單的方式處理SAX事件。GuiGenerator類構(gòu)造方法代碼如下:
public GuiGenerator(String htmlFile, HashMap initData, HashMap curData)
{
super O ;
this.htmlFile= htmlFile;this.1nitData = initData;this.curData = curData;
}
參數(shù)htmlFile是待解析的界面模板HTML頁(yè)面的文件名;initData是組件的初始化數(shù)據(jù),比如組合框的選項(xiàng),用與初始化界面組件;curData是組件的當(dāng)前值,比如修改名稱對(duì)話框中原來(lái)的名稱、元數(shù)據(jù)類型等,用于設(shè)定文本框的文本值和組合框的當(dāng)前選項(xiàng)等,initData和curData均為HashMap類型,可以存放多組數(shù)據(jù)。GuiGenerator類中buiId方法負(fù)責(zé)初始化HTML文檔的解析,初始化過(guò)程又將引發(fā)一系列的事件發(fā)生,這些時(shí)間將引導(dǎo)界面組件的構(gòu)造過(guò)程,在build方法中,首先將Java解析器的內(nèi)容處理接口設(shè)置為GuiGenerator類,由此指示解析器向這個(gè)類發(fā)送所有事件,然后通過(guò)調(diào)用該解析器的parse O方法初始化HTML模板文件的解析過(guò)程,在parse O方法中用指定名稱的HTML文件輸入流創(chuàng)建一個(gè)InputSource對(duì)象,用它來(lái)讀入界面描述HTML文檔。當(dāng)文檔的解析過(guò)程開(kāi)始時(shí),事件將被逐個(gè)激活,當(dāng)遇到每一個(gè)元素時(shí),就調(diào)用已經(jīng)重寫的StartElement方法,將訪問(wèn)元素的名稱以及附加在元素上的屬性列表。下列代碼說(shuō)明了如何處理表示元素開(kāi)始的事件:
public void startElement(String namespaceURI, String name, String
qName,
Attributes atts) {
if (name, equals (〃button〃)){
JButton button = new JButton(atts.getValue (〃text〃));
Class actionClass = null;try {actionClass = Class.forName(atts.getValue(〃action〃)); Constructor constructor = actionClass.getConstructor ( JPane1.class);
button.addActionLi stener((ActionListener)
constructor.newlnstance (primaryContainer));
} catch (Exception ex) {ex.printStackTrace ();
}
primaryContainer.add (button);
}
該方法釆用了一種簡(jiǎn)單的方法檢索name參數(shù)的值來(lái)確定希望添加的組件的類型,使用new操作符,并將te xt屬性的值傳遞給構(gòu)造函數(shù)以便創(chuàng)建一個(gè)按鈕,按鈕創(chuàng)建以后,通過(guò)Java類的動(dòng)態(tài)加載機(jī)制把按鈕與其事件監(jiān)聽(tīng)類相關(guān)聯(lián),最后將這個(gè)按鈕添加到之前聲明的JPanel 上。
startElement方法依次處理系統(tǒng)中用到的各種組件,并根據(jù)用戶界面HTML中的屬性值設(shè)置組件屬性,用initData初始化,用curData設(shè)置當(dāng)前值,最后添加到JPanel上。該過(guò)程一直繼續(xù)下去,直到解析完整個(gè)HTML文件,然后界面生成器將返回一個(gè)HTML頁(yè)面,完成人機(jī)界面的自動(dòng)生成。
權(quán)利要求
1.一種機(jī)頂盒人機(jī)界面自動(dòng)生成方法,其特征在于:它包括以下步驟: S1:標(biāo)簽文檔格式定義,即將多種業(yè)務(wù)邏輯的數(shù)據(jù)組成一個(gè)HTML能夠識(shí)別的文檔,所述的標(biāo)簽文檔包括標(biāo)簽庫(kù)描述符,以及Java類標(biāo)簽處理程序或JSP代碼; S2:用戶界面組件標(biāo)簽事件處理方法定義,即定義標(biāo)簽處理程序、機(jī)頂盒遙控器按鍵響應(yīng)事件和JSP頁(yè)面生成的Servlet之間的映射,以及所有標(biāo)簽處理程序的基本方法或函數(shù),實(shí)現(xiàn)界面標(biāo)簽業(yè)務(wù)邏輯的轉(zhuǎn)換; S3:自動(dòng)化界面生成,即解析所述的標(biāo)簽文檔中的自定義標(biāo)簽,運(yùn)用所述的界面組件標(biāo)簽事件處理方法綁定數(shù)據(jù),然后通過(guò)HTML方式回顯給機(jī)頂盒。
2.根據(jù)權(quán)利要求1所述的一種機(jī)頂盒人機(jī)界面自動(dòng)生成方法,其特征在于:所述的標(biāo)簽包括前綴、標(biāo)簽名稱、屬性名稱、屬性值、標(biāo)簽體和結(jié)束標(biāo)識(shí)。
3.根據(jù)權(quán)利要求1所述的一種機(jī)頂盒人機(jī)界面自動(dòng)生成方法,其特征在于:它還包括一個(gè)標(biāo)簽?zāi)0宥x步驟。
4.根據(jù)權(quán)利要求1所述的一種機(jī)頂盒人機(jī)界面自動(dòng)生成方法,其特征在于:它還包括一個(gè)通過(guò)Tag接口擴(kuò)展實(shí)現(xiàn)的控制重復(fù)處理標(biāo)簽體內(nèi)容的方法或函數(shù)。
5.根據(jù)權(quán)利要求1所述的一種機(jī)頂盒人機(jī)界面自動(dòng)生成方法,其特征在于:它還包括一個(gè)通過(guò)IterationTag接口擴(kuò)展實(shí)現(xiàn)對(duì)標(biāo)簽體內(nèi)容進(jìn)行訪問(wèn)和操作的方法或函數(shù)。
全文摘要
本發(fā)明公開(kāi)了一種機(jī)頂盒人機(jī)界面自動(dòng)生成方法,它包括以下步驟標(biāo)簽文檔格式定義,用戶界面組件標(biāo)簽事件處理方法定義和自動(dòng)化界面生成,所述的標(biāo)簽文檔格式定義為將多種業(yè)務(wù)邏輯的數(shù)據(jù)組成一個(gè)HTML能夠識(shí)別的文檔;用戶界面組件標(biāo)簽事件處理方法定義完成標(biāo)簽處理程序、機(jī)頂盒遙控器按鍵響應(yīng)事件和JSP頁(yè)面生成的Servlet之間的映射,實(shí)現(xiàn)界面標(biāo)簽業(yè)務(wù)邏輯的轉(zhuǎn)換;所述的自動(dòng)化界面生成解析所述的標(biāo)簽文檔中的自定義標(biāo)簽然后通過(guò)HTML方式回顯給機(jī)頂盒。本發(fā)明支持多種圖片格式、中英文字和視頻內(nèi)容的混排版,便于用戶快速的對(duì)界面進(jìn)行編輯,具有開(kāi)發(fā)成本低,使用和維護(hù)方便,便于新界面開(kāi)發(fā)及用戶感知好等優(yōu)點(diǎn)。
文檔編號(hào)H04N21/472GK103164226SQ20131008333
公開(kāi)日2013年6月19日 申請(qǐng)日期2013年3月15日 優(yōu)先權(quán)日2013年3月15日
發(fā)明者董弋粲, 李金海, 張黛西 申請(qǐng)人:成都三零凱天通信實(shí)業(yè)有限公司