專(zhuān)利名稱(chēng):可繼承工具欄體系及其實(shí)現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種工具欄開(kāi)發(fā)技術(shù)領(lǐng)域,尤其涉及一種可繼承工具欄體系及其實(shí)現(xiàn)方法。
背景技術(shù):
在計(jì)算機(jī)顯示器的圖形用戶(hù)界面上,工具欄放置了界面按鈕、圖標(biāo)、菜單或其它輸入/輸出元素。工具欄是顯示位圖式按鈕行的控制條,位圖式按鈕用來(lái)執(zhí)行命令。按工具欄按鈕相當(dāng)于選擇菜單項(xiàng);如果某個(gè)菜單項(xiàng)具有和工具欄按鈕相同的ID,那么使用工具欄按鈕將會(huì)調(diào)用映射到該菜單項(xiàng)的同一個(gè)處理程序??梢耘渲冒粹o,使其在外觀和行為上表現(xiàn)為普通按鈕、單選按鈕或復(fù)選框。工具欄通常與框架窗口的頂部對(duì)齊,但MFC工具欄可“??俊痹谄涓复翱诘娜魏我贿吇蛟谒约旱男湔淇蚣艽翱谥懈?dòng)。工具欄也可“浮動(dòng)”,用戶(hù)可更改其大小并用鼠標(biāo)拖動(dòng)它。當(dāng)用戶(hù)將鼠標(biāo)移動(dòng)到工具欄按鈕上時(shí),工具欄還可顯示工具提示。工具提示是個(gè)彈出的小窗口,簡(jiǎn)要描述按鈕的作用。B/S架構(gòu)管理軟件的toolbar (工具欄)實(shí)現(xiàn),從技術(shù)上分為全手工代碼開(kāi)發(fā)實(shí)現(xiàn)和基于框架配置實(shí)現(xiàn),從內(nèi)容上分為外觀的實(shí)現(xiàn)和行為的實(shí)現(xiàn),如果是手工代碼開(kāi)發(fā),toolbar的樣式和代碼完全由程序員自己控制,需要控制的點(diǎn)可以概括為t00lbar上元素的外觀及擺放,一般通過(guò)html來(lái)控制;界面操作后toolbar 按鈕狀態(tài)的改變,如選中列表一條數(shù)據(jù)激活刪除按鈕;點(diǎn)擊按鈕后獲取頁(yè)面其他元素的參數(shù),有可能需要進(jìn)一步判斷操作的可執(zhí)行性;將客戶(hù)端數(shù)據(jù)傳輸?shù)椒?wù)器端,由服務(wù)器端進(jìn)行業(yè)務(wù)邏輯處理,并返回結(jié)果;客戶(hù)端頁(yè)面接到服務(wù)器端的處理結(jié)果給操作者必要的響應(yīng), 如彈出提示信息,打開(kāi)或跳轉(zhuǎn)到其他頁(yè)面等。如果是框架配置實(shí)現(xiàn),一般只需在必要的地方填上的信息和業(yè)務(wù)邏輯,不需要考慮數(shù)據(jù)傳遞和頁(yè)面間的跳轉(zhuǎn);手工編程代碼雖然靈活性高但耗時(shí)耗力,且需要所有涉及到這塊的開(kāi)發(fā)人員都對(duì)客戶(hù)端和服務(wù)器端交互的編程模型非常熟悉,同時(shí)對(duì)于項(xiàng)目管理角度來(lái)講代碼個(gè)性化太強(qiáng),不好管理和維護(hù)。而基于框架的開(kāi)發(fā),靈活度終會(huì)有欠缺,且組件之間一般很難做到復(fù)用。說(shuō)到底,框架有其預(yù)先設(shè)置好的模式,按照既有模式開(kāi)發(fā)很簡(jiǎn)單,一旦超出使用就很不方便。本發(fā)明因此而來(lái)。
發(fā)明內(nèi)容
本發(fā)明主要針對(duì)B/S架構(gòu)系統(tǒng)的軟件toolbar設(shè)計(jì)提出一種全新的方案,旨在解決工具欄開(kāi)發(fā)的快速靈活及可繼承復(fù)用的問(wèn)題。為了解決現(xiàn)有技術(shù)中這些問(wèn)題,本發(fā)明提供的技術(shù)方案如下一種可繼承工具欄系統(tǒng),其特征在于所述系統(tǒng)包括設(shè)置在客戶(hù)端的工具欄定義器和設(shè)置在服務(wù)器端的工具欄解釋引擎;所述工具欄解釋引擎根據(jù)工具欄定義器的定義通過(guò) Java虛擬機(jī)進(jìn)行解釋后調(diào)用和處理服務(wù)器端數(shù)據(jù)傳回給客戶(hù)端的工具欄定義器;所述工具欄定義器包括工具欄本體定義模塊和工具欄元素定義模塊;所述工具欄定義器確定工具欄元素對(duì)象繼承于工具欄本體對(duì)象。優(yōu)選的,所述工具欄本體通過(guò)xml格式進(jìn)行定義,所述工具欄本體的參數(shù)通過(guò) JSON進(jìn)行傳遞給工具欄解釋引擎進(jìn)行解釋。優(yōu)選的,所述工具欄元素通過(guò)xml格式進(jìn)行定義,所述工具欄元素的參數(shù)通過(guò) JSON進(jìn)行傳遞給工具欄解釋引擎進(jìn)行解釋。優(yōu)選的,所述工具欄本體定義工具欄的寬度、高度和按鈕分布和初始化方法。優(yōu)選的,所述工具欄元素定義工具欄中按鈕、文本、選項(xiàng)、文本框,以及這些控件的參數(shù)、觸發(fā)事件和行為和初始化方法。優(yōu)選的,所述工具欄解釋引擎通過(guò)Java代碼加載xml定義,將工具欄本體和工具欄元素轉(zhuǎn)換成java的對(duì)象;流程處理完成后將輸出參數(shù)內(nèi)容通過(guò)json對(duì)象輸出到工具欄中。本發(fā)明的另一目的在于提供了一種可繼承工具欄系統(tǒng)的實(shí)現(xiàn)方法,其特征在于所述方法包括以下步驟(1)獲取工具欄定義(緩存),以json的格式輸出到頁(yè)面;(2) js腳本根據(jù)繼承關(guān)系加載初始化,使子對(duì)象擁有父對(duì)象的屬性和方法;(3)執(zhí)行每個(gè)按鈕的init()方法和IoadO,此時(shí)頁(yè)面上實(shí)際的html控件已經(jīng)用了定義里的屬性和方法;(4)等待用戶(hù)輸入,執(zhí)行相應(yīng)方法。與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果為T(mén)oolbar是快速可擴(kuò)展的可以將80 %的操作歸納為固定的幾類(lèi),系統(tǒng)開(kāi)發(fā)前將這些都封裝成一個(gè)個(gè)的toolbar元素,程序員在開(kāi)發(fā)時(shí)只需要在toolbar里面配置好這幾個(gè)元素就可以快速開(kāi)發(fā),并且有些有特殊需求的頁(yè)面還是可以立刻在這個(gè)xml定義中進(jìn)行擴(kuò)展。既可以有客戶(hù)端的行為展現(xiàn),也可以有服務(wù)器端的邏輯處理。Toolbar是可以積累的=Toolbar的所有樣式和行為都封裝在一個(gè)xml里面,在同一個(gè)解釋引擎下,xml是可以被各個(gè)系統(tǒng)中使用的。對(duì)一個(gè)團(tuán)隊(duì)和公司來(lái)講,長(zhǎng)期積累下來(lái), 可用的toolbar及toolbar元素會(huì)越來(lái)越多。
下面結(jié)合附圖及實(shí)施例對(duì)本發(fā)明作進(jìn)一步描述圖1為本發(fā)明實(shí)施例的可繼承工具欄系統(tǒng)的定義示意圖;圖2是本發(fā)明實(shí)施例的可繼承工具欄系統(tǒng)實(shí)施方法流程圖。
具體實(shí)施例方式以下結(jié)合具體實(shí)施例對(duì)上述方案做進(jìn)一步說(shuō)明。應(yīng)理解,這些實(shí)施例是用于說(shuō)明本發(fā)明而不限于限制本發(fā)明的范圍。實(shí)施例中采用的實(shí)施條件可以根據(jù)具體廠(chǎng)家的條件做進(jìn)一步調(diào)整,未注明的實(shí)施條件通常為常規(guī)使用的條件。實(shí)施例本發(fā)明能做到toolbar的展現(xiàn)與業(yè)務(wù)處理與表單頁(yè)面代碼脫離??蛻?hù)端j s操作和服務(wù)器端業(yè)務(wù)邏輯調(diào)用代碼全部由組件自身完成,不依賴(lài)其他代碼,做到解耦。這樣,toolbar就可以作為組件在多系統(tǒng)間復(fù)用。同時(shí)toolbar對(duì)象和其中包含的tbElement對(duì)象是可繼承復(fù)用的。本發(fā)明是一套完整的體系,包括toolbar定義信息(xml)和解釋引擎(java),具體如圖1定義。定義分為T(mén)oolbar和TbElement,即工具欄本體和工具欄元素,他們是一一對(duì)多的關(guān)系,同時(shí)iTbElement之間可以存在繼承關(guān)系下面是定義的示例Toolbar
< xml version=”1.0" encoding="UTF-8" > <Toolbar id="toolbarl" name=”客戶(hù)表的工具條”>
<Config > {
renderTo: 'toolbarl', width: '100%', height: 30
}
</Config> <Items>
〈Element id="buttonl_l" owner id="buttonl" > <Property>
<def name="dataobj" value="custom" isnullable="false" /> </Property> <js>
<Event>
<def name="click" > <![CDATA[ toClickl();
]]>
</def> </Event> <Code> <![CDATA[
function toClick2()
{
alert(’這里觸發(fā)了 click2事件’);}
]]>
</Code>
</js>
<java></java>
</Element>
<Element id="button2_l" ownerid="button2" > </Element> </Items> </Toolbar>
TbElement
<Element id="buttonl" name="添加"type="Add"> <!--顯示樣式-->
<Config >
{
width: 30, height: 20, text:,添ft]’,
menu: new Ext.menu.Menu({
id: 'MSQStatusMenu',
style: {
overflow: 'visible*
},
items: IJ
})
}
</Config>
<!--參數(shù)列表--><Property>
<def name=’’dataobj’,value=’",is null able= "false" /> </Property> <js>
<Event>
<def Iiame=nIoad,, /> <def name="click" /> </Event> <Code> <![CDATA[
function toClick() {
alert(’這里觸發(fā)了 clickl事件’);
}
]]>
</Code> </js> <java>
<Event>
<def name="load" /> <def name="click" /> </Event> <Code>
<Class name="ReadDBInfo"> <![CDATA[
public class ReadDBInfo
{
public ReadDBInfo()
{
//}
}
]]>
</Class> </Code> </java> </Element>如圖2所示,本發(fā)明實(shí)施例的可繼承工具欄系統(tǒng)實(shí)施方法包括(1)用戶(hù)請(qǐng)求帶有toolbar的頁(yè)面。(2) Java代碼加載xml定義,轉(zhuǎn)換成java的對(duì)象,該對(duì)象包含的有Toolbar 的展現(xiàn)代碼(Config),具備的 toolbar 元素(button, text, select, mscombobox 等),以及 toolbar元素對(duì)應(yīng)的基礎(chǔ)元素對(duì)象。元素中編寫(xiě)的JAVA代碼和類(lèi)需要進(jìn)行動(dòng)態(tài)編譯,根據(jù)當(dāng)前toolbar的id在特定包結(jié)構(gòu)下生成java的class。需要客戶(hù)端解釋的部分通過(guò)頁(yè)面的http流輸出到客戶(hù)端,形成json對(duì)象。(3)客戶(hù)端展現(xiàn),由引擎的js部分代碼執(zhí)行,來(lái)完成json對(duì)象各個(gè)屬性的初始化, 優(yōu)先初始化父對(duì)象,利用js代碼實(shí)現(xiàn)“繼承”的特性,使得子對(duì)象擁有父對(duì)象(ownerid)的屬性和方法,同時(shí)也可以用自己的特性覆蓋父對(duì)象的屬性和方法。(4)服務(wù)器端事件,比如在toolbar本體及toolbar元素的加載事件,toolbar元素的點(diǎn)擊事件等等。通過(guò)ajax技術(shù)按約定的規(guī)則找到服務(wù)器端的class及方法,并調(diào)用執(zhí)行,也可以將執(zhí)行的結(jié)果返回到客戶(hù)端再通過(guò)j s做更多的處理。該設(shè)計(jì)的核心思想是toolbar的展現(xiàn)與業(yè)務(wù)處理與表單頁(yè)面代碼脫離??蛻?hù)端代碼和服務(wù)器端代碼全部由自身完成。不依賴(lài)其他代碼。做到解耦。這樣,toolbar就可以作為組件在多系統(tǒng)間復(fù)用??衫^承的工具條設(shè)計(jì)模式。具體包括工具欄和元素的xml定義結(jié)構(gòu)(config,js, Java, owner);引擎和定義分開(kāi),toolbar的展現(xiàn)與業(yè)務(wù)處理與表單頁(yè)面代碼脫離。toolbar定義里可以包含業(yè)務(wù)邏輯代碼,客戶(hù)端和服務(wù)器端操作可以全部在一個(gè) xml里面定義完成。toolbar元素可繼承的特性,即可享用父對(duì)象所有功能,也能進(jìn)行覆蓋和修改;同一個(gè)解釋引擎下,toolbar的復(fù)用只需復(fù)制定義的xml文件即可,不依賴(lài)其他代碼。顯然,本領(lǐng)域的技術(shù)人員應(yīng)該明白,上述的本發(fā)明的各模塊或各步驟可以用通用的計(jì)算裝置來(lái)實(shí)現(xiàn),它們可以集中在單個(gè)的計(jì)算裝置上,或者分布在多個(gè)計(jì)算裝置所組成的網(wǎng)絡(luò)上,可選地,它們可以用計(jì)算裝置可執(zhí)行的程序代碼來(lái)實(shí)現(xiàn),從而,可以將它們存儲(chǔ)在存儲(chǔ)裝置中由計(jì)算裝置來(lái)執(zhí)行,或者將它們分別制作成各個(gè)集成電路模塊,或者將它們中的多個(gè)模塊或步驟制作成單個(gè)集成電路模塊來(lái)實(shí)現(xiàn)。這樣,本發(fā)明不限制于任何特定的硬件和軟件結(jié)合。上述實(shí)例只為說(shuō)明本發(fā)明的技術(shù)構(gòu)思及特點(diǎn),其目的在于讓熟悉此項(xiàng)技術(shù)的人是能夠了解本發(fā)明的內(nèi)容并據(jù)以實(shí)施,并不能以此限制本發(fā)明的保護(hù)范圍。凡根據(jù)本發(fā)明精神實(shí)質(zhì)所做的等效變換或修飾,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種可繼承工具欄系統(tǒng),其特征在于所述系統(tǒng)包括設(shè)置在客戶(hù)端的工具欄定義器和設(shè)置在服務(wù)器端的工具欄解釋引擎;所述工具欄解釋引擎根據(jù)工具欄定義器的定義通過(guò) Java虛擬機(jī)進(jìn)行解釋后調(diào)用和處理服務(wù)器端數(shù)據(jù)傳回給客戶(hù)端的工具欄定義器;所述工具欄定義器包括工具欄本體定義模塊和工具欄元素定義模塊;所述工具欄定義器確定工具欄元素對(duì)象繼承于工具欄本體對(duì)象。
2.根據(jù)權(quán)利要求1所述的可繼承工具欄系統(tǒng),其特征在于所述工具欄本體通過(guò)xml格式進(jìn)行定義,所述工具欄本體的參數(shù)通過(guò)JSON進(jìn)行傳遞給工具欄解釋引擎進(jìn)行解釋。
3.根據(jù)權(quán)利要求1所述的可繼承工具欄系統(tǒng),其特征在于所述工具欄元素通過(guò)xml格式進(jìn)行定義,所述工具欄元素的參數(shù)通過(guò)JSON進(jìn)行傳遞給工具欄解釋引擎進(jìn)行解釋。
4.根據(jù)權(quán)利要求3所述的可繼承工具欄系統(tǒng),其特征在于所述工具欄本體定義工具欄的寬度、高度和按鈕分布和初始化方法。
5.根據(jù)權(quán)利要求4所述的可繼承工具欄系統(tǒng),其特征在于所述工具欄元素定義工具欄中按鈕、文本、選項(xiàng)、文本框,以及這些控件的參數(shù)、觸發(fā)事件和行為和初始化方法。
6.根據(jù)權(quán)利要求1所述的可繼承工具欄系統(tǒng),其特征在于所述工具欄解釋引擎通過(guò) Java代碼加載xml定義,將工具欄本體和工具欄元素轉(zhuǎn)換成java的對(duì)象;流程處理完成后將輸出參數(shù)內(nèi)容通過(guò)json對(duì)象輸出到工具欄中。
7.—種可繼承工具欄系統(tǒng)的實(shí)現(xiàn)方法,其特征在于所述方法包括以下步驟(1)獲取工具欄定義(緩存),以json的格式輸出到頁(yè)面;(2)js腳本根據(jù)繼承關(guān)系加載初始化,使子對(duì)象擁有父對(duì)象的屬性和方法;(3)執(zhí)行每個(gè)按鈕的init()方法和load (),此時(shí)頁(yè)面上實(shí)際的html控件已經(jīng)用了定義里的屬性和方法;(4)等待用戶(hù)輸入,執(zhí)行相應(yīng)方法。
全文摘要
本發(fā)明公開(kāi)了一種可繼承工具欄系統(tǒng),其特征在于所述系統(tǒng)包括設(shè)置在客戶(hù)端的工具欄定義器和設(shè)置在服務(wù)器端的工具欄解釋引擎;所述工具欄解釋引擎根據(jù)工具欄定義器的定義通過(guò)java虛擬機(jī)進(jìn)行解釋后調(diào)用和處理服務(wù)器端數(shù)據(jù)傳回給客戶(hù)端的工具欄定義器;所述工具欄定義器包括工具欄本體定義模塊和工具欄元素定義模塊;所述工具欄定義器確定工具欄元素對(duì)象繼承于工具欄本體對(duì)象。該可繼承工具欄系統(tǒng)中工具欄是快速可擴(kuò)展的,而且可以積累的。
文檔編號(hào)G06F9/44GK102495734SQ20111041106
公開(kāi)日2012年6月13日 申請(qǐng)日期2011年12月12日 優(yōu)先權(quán)日2011年12月12日
發(fā)明者夏幫國(guó) 申請(qǐng)人:方正國(guó)際軟件有限公司