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