專利名稱:用于創(chuàng)建模塊化web應(yīng)用的框架的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及用于創(chuàng)建web應(yīng)用的系統(tǒng)和方法,尤其涉及用于使用模塊化和可定制框架來創(chuàng)建包括web頁的web應(yīng)用的系統(tǒng)和方法。
(2)背景技術(shù)局域網(wǎng)和廣域網(wǎng)的增加方便了數(shù)據(jù)的檢取和傳遞。通常,計算機(jī)用戶可以通過簡單的指向和點擊接口,如在web頁和web站點常見的接口,來檢取信息。web入口是一種常見的web站點或web頁類型,向用戶提供各種服務(wù)。web入口可以包括歡迎信息、搜索能力、天氣信息、新聞信息、股票數(shù)據(jù)、到其它站點或頁的鏈接等等。
經(jīng)驗表明,有組織且視覺上吸引人的web入口在滿足web入口的用戶的需求方面更有效。而且,因為web入口通常是因特網(wǎng)或內(nèi)聯(lián)網(wǎng)會話中使用的第一頁,web入口必須是可定制的,使得web呈現(xiàn)用戶關(guān)注的內(nèi)容,并使用戶可以以對用戶有邏輯意義或者視覺上令用戶滿意的方式來組織內(nèi)容。
許多web開發(fā)者試圖創(chuàng)建既吸引用戶又保留用戶的站點或web入口。一種常見的方法是令站點符合模塊化布局,使相關(guān)內(nèi)容放置在頁的特定區(qū)域。web入口不是唯一能夠受益于模塊化和可定制布局的頁。因特網(wǎng)或內(nèi)聯(lián)網(wǎng)上一般的web站點或頁、項目頁、會議頁、存貨跟蹤頁等等也可以受益于這一布局。
這類頁或站點的設(shè)計和開發(fā)較難,因為僅有很少的工具來快速且有效地創(chuàng)建這類頁。每一web頁開發(fā)者必須為這類頁創(chuàng)建他們自己的代碼或設(shè)計。因此,開發(fā)者因創(chuàng)建這類頁而泄氣,導(dǎo)致較不合用和可讀性差的頁的增加。而且,當(dāng)頁開發(fā)者創(chuàng)建這類頁時,無法將這些頁導(dǎo)出讓其它開發(fā)者使用。也很難使用當(dāng)前技術(shù)創(chuàng)建具有一致的外觀和感覺的可定制站點。
一種在創(chuàng)建web頁和web站點中幫助web開發(fā)者的技術(shù)是使用在web頁服務(wù)器上運(yùn)行的腳本。這些腳本可以嵌入其它HTML命令之中來創(chuàng)建動態(tài)且可定制的web頁。然而,web的可定制性當(dāng)前成本較高,因為這些類型的web頁需要較大的開發(fā)投資。換言之,很難建立具有豐富內(nèi)容、模塊化且一致設(shè)計以及可定制的成功的web站點,因為他們需要基本的開發(fā)時間,并且入口解決方案當(dāng)前沒有一致的模型。
(3)發(fā)明內(nèi)容涉及用于創(chuàng)建模塊化、可定制web應(yīng)用的系統(tǒng)和方法的本發(fā)明克服了這些和其它限制。特別地,本發(fā)明涉及用于創(chuàng)建web應(yīng)用,如web入口、web頁等等的可擴(kuò)充框架。該框架包括部件控制,如web部件、編輯器部件以及目錄部件。該框架也包括區(qū)域控制,如區(qū)域、編輯器區(qū)域以及目錄區(qū)域。每一區(qū)域控制通常包含一個或多個部件控制。
每一部件控制衍生自一個部件基類,每一區(qū)域控制衍生自一個區(qū)域基類。web部件、編輯器部件以及目錄部件提供了除部件基類提供的功能之外的額外的功能。區(qū)域、編輯器區(qū)域和目錄區(qū)域也提供了除區(qū)域基類提供的功能之外的額外的功能。
web應(yīng)用,如web頁可以分解為區(qū)域以及放置到每一區(qū)域的各種部件控制。每一區(qū)域負(fù)責(zé)展現(xiàn)特定區(qū)域中的每一部件周圍的色彩。這控制了標(biāo)題欄、邊框以及動詞(verb)的外觀和感覺。這促進(jìn)了一致外觀和感覺,因為可以通過添加、移除或改變部件控制來定制或個性化web頁。編輯器部件用來編輯web部件,而目錄部件用來從區(qū)域中添加/移除web部件。編輯部件由編輯區(qū)域包含,目錄部件由目錄區(qū)域包含。
部件控制和區(qū)域具有關(guān)聯(lián)的屬性和方法。一些屬性和方法準(zhǔn)許在每一用戶的基礎(chǔ)上個性化部件控制,而其它屬性和方法準(zhǔn)許由開發(fā)者對所有用戶定制部件控制。web部件的屬性可以被導(dǎo)出/導(dǎo)入。web部件也可以被隱藏或變?yōu)榭梢姟?br>
在創(chuàng)建web頁的過程中,在持久格式文件中聲明區(qū)域控制。在每一區(qū)域控制內(nèi)聲明部件控制。也聲明跟蹤不同所聲明的區(qū)域中的web部件的web部件管理器。每一區(qū)域通常向web部件管理器注冊。web部件管理器的一個優(yōu)點是它使一個web部件能夠與另一web部件通信。例如,這使一個web部件的內(nèi)容能夠被另一web部件所使用。
本發(fā)明的另外的特征和優(yōu)點將在下文描述,并且閱讀該描述能夠部分清楚這些特點和優(yōu)點,或者可以通過對本發(fā)明的實踐學(xué)到。本發(fā)明的特征和優(yōu)點可以通過所附權(quán)利要求書中特別指出的儀器和組合來實現(xiàn)。從以下描述和所附權(quán)利要求書,可以完全清楚本發(fā)明的這些和其它特征,或者可以通過如下所述的對本發(fā)明的實踐學(xué)到。
(4)
為以能夠獲得本發(fā)明的上述和其它優(yōu)點和特征的方式描述,參考附圖中說明的本發(fā)明的具體實施例來展現(xiàn)上文簡要描述的本發(fā)明的更具體描述??梢岳斫猓@些附圖僅描述本發(fā)明的典型實施例,因此并非對其范圍的限制,通過使用附圖來描述并解釋本發(fā)明的另外的特性和細(xì)節(jié),附圖中圖1說明了模塊化web入口的一個示例;圖2說明了圖1所示的web入口的區(qū)域布局;圖3說明了模塊化web入口的另一示例;圖4說明了用于個性化web頁上的web部件的用戶界面的一個示例;圖5A和5B說明了用于向web頁添加web部件的用戶界面的示例;圖6說明了web頁上兩個web部件之間的連接;圖7說明了web頁創(chuàng)建框架中使用的類和基類的層次;圖8A、8B和8C說明了web頁上用于控制外觀、布局和行為的部件;圖9說明了web頁創(chuàng)建框架中使用的區(qū)域控制的類和基類的層次;圖10說明了可以使用本發(fā)明的一個實施例實現(xiàn)的區(qū)域布局和web部件布局;圖11示出了可以使用本發(fā)明的一個實施例實現(xiàn)的區(qū)域的水平和垂直布局;圖12說明了動詞圖標(biāo)的圖形示例;圖13說明了用于確定將哪一web部件放入?yún)^(qū)域的流程圖;和圖14說明了用來將一個web部件與另一web部件連接的變換器。
(5)具體實施方式
本發(fā)明延伸到用于創(chuàng)建模塊化web應(yīng)用的方法和系統(tǒng)。特別地,本發(fā)明涉及用于創(chuàng)建支持最終用戶個性化或定制的模塊化web頁的系統(tǒng)和方法。本發(fā)明的一個實施例提供了可以用來創(chuàng)建模塊化、內(nèi)容豐富并且可定制的web應(yīng)用的基礎(chǔ)結(jié)構(gòu)或框架。
在一個實施例中,該框架包括對服務(wù)器端和客戶端行為的使用,并準(zhǔn)許控制與其它控制共享信息。例如,該框架包括可擴(kuò)充基類和控制。在一個實施例中,該框架包括部件控制、區(qū)域控制和部件管理器。
部件控制通常包含準(zhǔn)許部件控制即使在一個特定部件控制的功能明顯與另一部件控制的功能不同的情況下也能夠以一致的方式呈現(xiàn)給用戶的屬性。例如,該部件控制的屬性用來展現(xiàn)該控制周圍的一致窗口或用戶界面。在一個實施例中,用戶界面可包括標(biāo)題欄,最小化、最大化和關(guān)閉動詞,以及環(huán)繞邊框。使用若干不同的基類來創(chuàng)建部件控制。示例性的控制包括但不限于,web部件控制、編輯器部件控制以及目錄部件控制。
區(qū)域控制通常用來以模塊化或一致方式布置部件控制。區(qū)域負(fù)責(zé)展現(xiàn)每一部件的用戶界面。例如,如果一個部件控制的屬性包括色彩用戶界面,則包含該特定部件控制的區(qū)域控制負(fù)責(zé)展現(xiàn)該部件控制的色彩用戶界面。用于創(chuàng)建區(qū)域控制的類的示例包括但不限于,用于布置所有從部件繼承的控制的區(qū)域基類、編輯器區(qū)域類以及目錄區(qū)域類。本發(fā)明的一些實施例還包括導(dǎo)出一個用戶設(shè)置的個性化或定制特性來由其他用戶使用的能力。第三方生成的類也可以結(jié)合進(jìn)該框架中。
圖1說明了可定制、模塊化web頁的一個示例。示出web入口為web頁100,包括模塊化組織的信息或數(shù)據(jù)。例如,web頁100包括web部件102中的歡迎信息,web部件104中的天氣信息、web部件106中的股票信息、web部件108中的搜索窗以及web部件110中的鏈接選擇。web頁100還包括允許用戶依照用戶自己的口味和喜好來個性化web頁100的個性化鏈接112。這些web部件參考web部件框架中的web部件基類來創(chuàng)建,web部件基類有時候也稱為web控制。
在本發(fā)明的一個實施例中,web部件的外觀和感覺可以通過使用區(qū)域在某些方面進(jìn)行控制?,F(xiàn)在參考圖2,如圖所示,使用三個web區(qū)域來定義圖1所示的web部件的特征。web頁100包括三個區(qū)域,包括頂部區(qū)域200、左邊區(qū)域202和右邊區(qū)域204。注意,頂部區(qū)域包括歡迎web部件102和搜索web部件108。左邊區(qū)域202包括天氣web部件104和鏈接web部件110。右邊區(qū)域204包括單個web部件,即股票web部件106。通過對區(qū)域內(nèi)的web部件進(jìn)行分組,區(qū)域關(guān)聯(lián)可以幫助協(xié)調(diào)特定區(qū)域內(nèi)布置的個別web部件的外觀和感覺。區(qū)域通過控制如何展現(xiàn)用戶界面來實現(xiàn)這一協(xié)調(diào)。用戶界面包括(如圖1所示)諸如標(biāo)題112和框體114的物體。用戶界面也可包括諸如動詞116的物體。
以下是用于生成圖1和圖2所示的入口的持久格式文件(本實例中為.aspx)的一個示例。高亮顯示的是定義區(qū)域和web部件的范圍。
盡管圖1和圖2所示的模塊化web頁可以通過調(diào)用本發(fā)明的框架中各種類來創(chuàng)建,如在一個示例中通過ASP.net框架中的.aspx文件的調(diào)用,然而可以通過在控制格式文件,本情況中為.ascx文件中聲明控制,并在區(qū)域中引用該控制格式文件來創(chuàng)建其他定制頁和web部件。圖3示出了僅通過這一過程生成的web頁300。.ascx和.aspx代碼如下。
Events.ascx
Page.aspx
配置web部件包括設(shè)置控制屬性。配置設(shè)置可以由應(yīng)用開發(fā)者、管理員和/或最終用戶作出。由開發(fā)者或管理員作出的配置設(shè)置稱為自定義設(shè)置,而由最終用戶作出的設(shè)置稱為個人設(shè)置。因此,最終用戶使用個人設(shè)置來個性化或定制站點或頁,而開發(fā)者和管理員能夠使用自定義設(shè)置來定制站點或頁。在一個實施例中,自定義設(shè)置能夠被站點的所有用戶可見。個人設(shè)置通常僅能被作出個人設(shè)置的個別用戶可見。
使用個人設(shè)置來個性化的一個示例在圖4中示出,一般示出了web頁400。通過點擊web部件403中的編輯鏈接402,用戶獲得對編輯器區(qū)域406內(nèi)的編輯器部件404的接入。在本示例中,用戶能夠通過修改標(biāo)題文本框中的文本來改變web部件403的標(biāo)題405。用戶可以通過框體狀態(tài)下拉菜單410來修改框體狀態(tài),使web部件以最大化、最小化或普通狀態(tài)顯示。用戶也可以通過下拉框體類型菜單412修改web部件403的框體類型。
在圖4所示的本示例中,用戶也可以通過從Symbol文本框414添加或移除股票符號來添加或移除web部件403中所示的股票值。當(dāng)用戶對個性化選擇滿意時,用戶可以選擇應(yīng)用動詞按鈕416,將變化應(yīng)用到web部件403并關(guān)閉編輯器部件404。編輯器部件404還包括一些其他動詞按鈕,包括關(guān)閉動詞按鈕418、OK動詞按鈕420和取消動詞按鈕422。關(guān)閉動詞按鈕418和取消動詞按鈕422在調(diào)用時執(zhí)行相同的行動,將web頁400返回至不包括編輯器部件404或編輯器區(qū)域406的普通視圖模式,而不向web部件403作出任何用戶在編輯器區(qū)域406中作出的變化。OK動詞按鈕420在調(diào)用時向web部件403作出用戶在編輯區(qū)域404中指定的變化并將web頁返回至不包括編輯器部件404或編輯器區(qū)域406的普通視圖模式。在管理員定制情況或者甚至在web頁開發(fā)者建立情況中可以使用類似的界面。
使用該框架,用戶可以從可用部件的目錄中向web頁添加額外的web部件。圖5A所示的稱為目錄部件并一般命名為502的web部件用來向web頁500添加web部件。目錄部件502可以在目錄區(qū)域504中布置。目錄部件502可能具有若干個可由用戶選擇的目錄510。在本發(fā)明的一個實施例中,可以通過點擊目錄鏈接512來選擇目錄。點擊目錄鏈接512引發(fā)顯示若干個文本框506,用于選擇要添加到web頁502的web部件。通過復(fù)選文本框506然后點擊添加按鈕508(Add)來選擇可用的web部件,從而將web部件添加到web頁500。目錄區(qū)域504既可以被個別web頁用戶作為個性化他們web頁視圖的選擇,也可以在定制情況下被web頁開發(fā)者或管理員用來創(chuàng)建可被特定web頁的所有用戶使用的視圖。
現(xiàn)在參考圖5B,示出了目錄部件的另一示例。目錄520包括可添加到web頁的web部件522的選擇的表示。每一web部件的表示包括web部件標(biāo)題524。web部件標(biāo)題524較佳地為當(dāng)web部件顯示在web頁上時所顯示的標(biāo)題,如圖1所示的標(biāo)題112。web部件的表示還包括部件圖標(biāo)526。部件圖標(biāo)526在本示例中是表示web部件的圖形文件。
目錄部件520還可包括特定目錄部件520中可用庫528的列表。庫528列表中的每一個庫是可選擇的,如在一個實施例中通過點擊庫鏈接530來選擇。這引發(fā)顯示與所選擇的庫鏈接530相關(guān)聯(lián)的web部件522的選擇。
目錄部件520也能夠在若干個不同頁之中劃分web部件522的選擇的顯示。提供了頁鏈接532以在顯示web部件522的選擇的各種頁之間連接。每頁項目指示器534連同頁的數(shù)字表示示出了可添加到web頁的web部件的數(shù)量的表示,以及當(dāng)前顯示在目錄部件520上的web部件522的選擇的每頁項目的數(shù)量。
目錄部件520還包括用于選擇所添加的web部件將添加到web頁的哪一區(qū)域的下拉選擇框538。一旦用戶作出了添加到web頁的web部件的選擇,并選擇在何處放置該新的web部件,用戶選擇添加動詞536。這引發(fā)目錄區(qū)域調(diào)用添加函數(shù),引發(fā)新添加的web部件被添加到適當(dāng)?shù)膮^(qū)域。新添加的web部件也向用來協(xié)調(diào)web部件的交互和布局的web部件管理器注冊。
在說明性示例中,可以使用目錄部件,如目錄部件520來將web部件添加到web頁。目錄部件520所屬的目錄區(qū)域在調(diào)用添加動詞536時,將調(diào)用與所選擇的目錄部件520相關(guān)聯(lián)的添加方法。目錄部件520然后應(yīng)當(dāng)調(diào)用web部件管理器添加方法來將web部件(522之一)添加到頁。所添加的web部件(522之一)將由web部件管理器跟蹤。
web部件框架允許web部件通過預(yù)定義的接口或連接向其它web部件傳遞信息。這些連接可以在頁上定義,或可以通過個性化創(chuàng)建。任意兩個通過同一連接接口進(jìn)行對話的web部件可以被連接。而且,使用變換器,如后文所述,可以實現(xiàn)使用不同連接接口的web部件的通信。這允許任意web部件共享數(shù)據(jù),即使它們是被單獨地設(shè)計并實現(xiàn)的。
現(xiàn)在參考圖6,示出了兩個連接的web部件的示例。圖6示出了顯示可選股票符號的股票列表web部件600。股票列表web部件600實現(xiàn)接口(本示例中說明為IFieldData接口)來展現(xiàn)當(dāng)前所選擇的股票602。股票圖形web部件604能夠基于任一股票符號圖形化歷史數(shù)據(jù)。股票圖形web部件604能夠通過接口來通信。每一web部件向幫助協(xié)調(diào)出現(xiàn)在web頁的不同區(qū)域中的不同web部件的web部件管理器注冊連接端點,因此可以建立連接。一旦連接,兩個部件600和604提供最終用戶體驗,用戶可以快速地瀏覽他們最喜歡的股票并看到相關(guān)的圖形。
web部件框架也包括允許最終用戶的個性化設(shè)置或系統(tǒng)管理員的定制設(shè)置的導(dǎo)出和導(dǎo)入的功能。例如,當(dāng)用戶使用上述編輯器設(shè)置個性化視圖時,該設(shè)置可以是可導(dǎo)出的,使其它用戶能夠使用它們來設(shè)置他們的web入口的特定視圖的屬性。這一功能可以如下文在一個實施例中更詳細(xì)解釋的通過導(dǎo)出和導(dǎo)入xml文件來實現(xiàn)。
盡管上述討論在概括綜述的意義上闡明了本發(fā)明的各類實施例的特征和優(yōu)點屬性,現(xiàn)在重點將針對以下討論,闡明了可能包含在web部件框架中用于創(chuàng)建web頁上出現(xiàn)的web部件和區(qū)域的各種基類和類。使用各種基類和類,web頁開發(fā)者能夠創(chuàng)建模塊化、可定制以及可個性化的web頁。
這里描述的web部件框架的一個實施例包括三個基類的一般組,其它類和控制可以從這些基類衍生。這些基類的一般組包括部件控制、區(qū)域控制和web頁管理器。一般而言,部件控制包括每一個別web部件的功能。這類部件的示例包括之前描述的web部件、編輯器部件以及目錄部件。區(qū)域控制包括組織web部件并展現(xiàn)每一部件周圍的用戶界面所需要的功能。
web頁管理器是一個不可見類,它幫助協(xié)調(diào)哪一部件包含在哪一區(qū)域中,并方便各種web部件之間的連接,諸如此類。web頁管理器也可以以不同的模式展現(xiàn)web頁。例如,為能夠使用編輯器web部件,web頁管理器以編輯視圖模式展現(xiàn)web頁。為使用目錄web部件,web頁管理器能夠以目錄視圖模式展現(xiàn)web頁。為定制web頁,web頁管理器以類似于編輯視圖模式的定制視圖模式展現(xiàn)web頁。
部件控制現(xiàn)在參考圖7,闡明對部件控制的功能的更詳細(xì)描述。部件控制功能通常依賴于“Part”基類702(部件基類)。本領(lǐng)域的技術(shù)人員也可以在本說明書中將依賴描述為衍生或繼承。依賴部件基類702的是三個其它基類,即,目錄部件基類704(CatalogPart)、Web部件基類706(WebPart)和編輯器部件基類708(EditorPart)?;惖慕Y(jié)構(gòu)是分級的,基類或從另一基類依賴的(多個)基類包含其所依賴的基類的所有功能并加上一些另外設(shè)計的功能。例如,部件基類702可以用來為所有模塊化類創(chuàng)建部件控制,因為它在層級中最高。Web部件基類706可以用來使用部件基類702的所有功能加上用于具有先進(jìn)功能的類的控制來創(chuàng)建模塊化類。編輯器部件基類708可以使用部件基類702的所有功能加上設(shè)置相關(guān)控制屬性的模塊化控制來創(chuàng)建模塊化控制。換言之,編輯器部件基類708可以用來個性化其它Web部件基類706。目錄部件基類704是用于用作目錄的控制的基類。換言之,目錄部件基類704包括允許當(dāng)展現(xiàn)web頁時對其它web部件進(jìn)行添加或移除的目錄部件基類。這些類可以使用部件基類的功能以及其它為目錄部件基類設(shè)計的指定功能來創(chuàng)建。每一基類,即目錄部件基類704、web部件基類706和編輯器部件基類708,具有從它們衍生或繼承的其它類,如圖7所示。
在每一(多個)基類內(nèi)的是啟用(多個)基類的一些功能的屬性。部件基類702包括以下屬性Description、FrameState、FrameType、LargeIconImageURL、Roles、SmallIconImageURL、Title以及TitleStyle。
在部件基類702內(nèi),并因此在所有從部件基類702繼承的其它類中可用的屬性之一是Description屬性。Description屬性是可以被其它web部件使用的web部件描述。例如,如下文所述,Description屬性可以被目錄部件所使用,或作為標(biāo)題欄中的工具提示。Description屬性在被開發(fā)者在建立web頁時設(shè)置以后不可以由最終用戶個性化或者由系統(tǒng)管理員定制。Description屬性的一個示例可以在上述結(jié)合圖1的描述提供的示例代碼中看到。
部件基類702中的另一屬性是FrameState屬性。FrameState屬性定義了部件的框體狀態(tài)。例如,F(xiàn)rameState屬性能夠定義特定的web部件是否為最小化、最大化或普通。當(dāng)最小化web部件時,僅顯示標(biāo)題欄。當(dāng)web部件為普通時,顯示標(biāo)題欄和部件的內(nèi)容。FrameState屬性可由最終用戶個性化并可由系統(tǒng)管理員定制。
部件基類702中的再一屬性為FrameType屬性。FrameType屬性確定將構(gòu)架部件的色彩的類型。例如,可以設(shè)置FrameType屬性使得僅顯示標(biāo)題、顯示標(biāo)題和邊框或僅顯示邊框。
部件基類702的再一屬性是LargeIconImageURL屬性。這一屬性包括表示特定web部件的圖像的URL,該圖像有時也稱為部件圖標(biāo)。這些圖標(biāo)可用作部件的圖形化表示。如上文結(jié)合圖5B的描述所描述的,LargeIconImageURL屬性可以由頁目錄部件用來顯示可添加到web頁的web部件的圖形表示。這也可包括特定web部件的標(biāo)題范圍。該屬性不可以由最終用戶個性化或由系統(tǒng)管理員定制。與LargeIconImageURL屬性類似的是SmallIconImageURL屬性。這一屬性以與LargeIconImageURL類似的方式描述表示特定web部件的圖像的URL,但是該URL連接至尺寸上較小的圖像。
部件基類的再一屬性是Roles屬性。Roles屬性使web頁開發(fā)者能夠設(shè)置特定web部件可用的角色。例如,web部件能夠提供站點管理功能,如在對處于開放“Admin”角色中的所有用戶的定制情況下。
部件基類的再一可用屬性是Title屬性。Title屬性的值展現(xiàn)為出現(xiàn)在內(nèi)容上方的web部件的頂部的標(biāo)題。這通常是Title屬性串內(nèi)文本和說明的組合。在本發(fā)明的一個較佳實施例中,Title屬性應(yīng)當(dāng)用作在向用戶展現(xiàn)以上結(jié)合LargeIconImageURL和SmallIconImageURL描述的部件圖標(biāo)屬性時的替換文本。
Web部件基類圖7說明的Web部件基類706依賴于部件基類,并包括除這里將定義的其它屬性之外部件基類的所有屬性和功能。例如,Web部件基類706包括Connections屬性。Connections屬性描述了與該web部件相關(guān)的連接。Connections屬性的使用的一個示例在上文圖6的描述中有描述,并在這里對WebPartManager基類的描述中進(jìn)一步描述。
對Web部件基類706可用的其它屬性包括HelpURL和WebPartHelpMode屬性。能夠?qū)elpURL屬性設(shè)置為提供關(guān)于特定web部件的幫助的頁的URL。WebPartHelpMode屬性定義如何顯示該鏈接。例如,可以將該鏈接顯示為模態(tài)對話(或者如果不支持模態(tài)對話則為新瀏覽器窗口)??梢詫⒃撴溄语@示為非模態(tài)對話(或者如果不支持非模態(tài)對話則為新瀏覽器窗口)??梢燥@示該鏈接使當(dāng)前窗口用來定向幫助URL。
存在于Web部件基類706中的另一組屬性是部件屬性組,稱為“允許”屬性。這些屬性允許web頁開發(fā)者決定特定web部件中準(zhǔn)許何種功能。例如,AllowClose屬性允許web頁開發(fā)者確定特定的web部件是否允許被關(guān)閉(即,從區(qū)域中移除)。這一屬性一般可由所有用戶個性化。AllowHide屬性允許web頁開發(fā)者確定特定web部件是否允許被隱藏(即,無可視元素,但仍包含在區(qū)域中)。這一屬性一般可由所有用戶個性化或定制。AllowMinimize屬性確定特定web部件是否允許被最小化(僅在web頁上顯示標(biāo)題欄)。這一屬性可由所有用戶個性化或定制。AllowMove屬性確定web部件是否允許在區(qū)域內(nèi)或區(qū)域之間被移動。這一屬性是不可個性化或定制的。AllowExport屬性確定特定web部件屬性設(shè)置是否可以被導(dǎo)出。
web部件基類706也包括AllowPersonalization屬性。在這一方式下,如果頁開發(fā)者希望禁用對給定web部件的個性化,則將該屬性設(shè)置為假。例如,盡管在一般意義上一些屬性是可個性化的,然而如果web頁開發(fā)者選擇移除這些個性化屬性,僅需將EnablePersonalization屬性設(shè)為假來完成。由此,不允許最終用戶和系統(tǒng)管理員編輯對其設(shè)置了該屬性的特定web部件。
web部件基類706也包括Caption屬性。這一屬性定義了添加到web部件的色彩中的標(biāo)題的末端的串。這一屬性用于文檔名稱或其它內(nèi)容特定信息。這一屬性為動態(tài)的,不像Title屬性為靜態(tài)的。Web部件基類706中包括的另一屬性是Direction屬性。
Web部件基類706中可用的另一屬性是Hidden屬性。Hidden屬性確定特定web部件在web頁上是否可見。將Hidden屬性設(shè)置為假的部件被認(rèn)為是隱藏的。在一個實施例中,例示了這些部件并且這些部件通過了預(yù)展現(xiàn)和展現(xiàn)階段。然而,區(qū)域未在web頁上顯示它們的內(nèi)容。盡管如此,隱藏部件可以參與連接。隱藏部件在web部件管理器處于普通或設(shè)計模式時是隱藏的,在下文本說明書更詳細(xì)描述web部件管理器的部分有討論。當(dāng)web部件管理器處于編輯模式,如在定制或個性化的情況下,隱藏部件通常是可見的,允許個性化。
如果web部件基類706的Visible屬性設(shè)為假,則該web部件被認(rèn)為已關(guān)閉。Visible設(shè)為假的web部件在頁上例示,但不通過生命周期的展現(xiàn)階段(預(yù)展現(xiàn)和展現(xiàn))。如果web部件已關(guān)閉,則它無法參與連接或其它通信。
web部件基類706的Display屬性確定web部件在web頁瀏覽器中是否可見。即使對Display屬性進(jìn)行設(shè)置使得web部件在瀏覽器中不可見,特定的web部件仍通過展現(xiàn)階段。該屬性在每一用戶的基礎(chǔ)上是可個性化的。Web部件基類706的EditURL屬性包含可以用來編輯特定web部件的HTML文件的URL。這一屬性可由所有用戶定制和個性化。
web部件基類706的編輯器部件屬性闡明了與web部件相關(guān)聯(lián)的自定義編輯器部件的集合。自定義編輯器部件從其依賴的編輯器部件基類708依賴于部件基類702,并在下文詳細(xì)描述。這一屬性在本示例中是不可定制或個性化的。
web部件基類706的IsShared屬性指示特定部件是否在多個用戶之間共享,或者它是否僅對當(dāng)前用戶可用。這一屬性是不可定制或個性化的。web部件基類706的MissingAssembly屬性包含當(dāng)用戶試圖添加在未在web頁服務(wù)器上安裝的組件中存在的web部件時所顯示的文本。這一屬性是不可定制或個性化的。web部件基類706的TitleURL屬性包括到包含關(guān)于特定web部件的補(bǔ)充信息的HTML文檔的URL。如果被指定,這一鏈接顯示在框體的標(biāo)題欄中。這一屬性可由所有用戶定制并個性化。web部件基類706的Verbs屬性闡明了與特定web部件關(guān)聯(lián)的動詞(OK、應(yīng)用、關(guān)閉、最大化、最小化等等)的集合。這一屬性是不可定制或個性化的。
web部件一般,盡管不是始終,在區(qū)域內(nèi)展現(xiàn)。web部件基類706的區(qū)域?qū)傩躁U明了包含該web部件的web部件區(qū)域。這一屬性不可定制或個性化。web部件基類706的ZoneID屬性闡明了包含特定web部件的區(qū)域的ID。這一屬性是可定制和可個性化的。web部件基類706的ZoneIndex屬性闡明了區(qū)域中web部件相對區(qū)域中其它web部件的索引。
除屬性之外,特定的類也包括方法。方法是一種調(diào)用該類的功能的方式。方法也包括關(guān)于如何向其它外部組件或類提供特定類的功能的信息。例如,web部件基類706包括GetConnectionInterface方法。這一方法是一種助手方法,使得消費者,即從其它web部件接收信息的web部件,能夠向提供者,即向其它web部件如消費者提供信息的web部件查詢另外的連接接口。這一方法包含遍歷諸如變換器的連接對象的邏輯,變換器在下文詳細(xì)討論。
web部件基類706還包含OnEditModeChanged方法。當(dāng)特定部件進(jìn)入或退出編輯模式時調(diào)用這一方法。這一部件作為向想要掛鉤到web部件管理器的部件開發(fā)者的便利添加。
對特定類的功能的進(jìn)一步定義是枚舉。枚舉是設(shè)置屬性值的特殊數(shù)據(jù)類型。當(dāng)對一種屬性存在枚舉,可以構(gòu)造包括用于選擇屬性值的下拉菜單的用戶界面。例如,在web部件基類706上,一個枚舉是WebPartHelpMode。這一枚舉描述了應(yīng)該如何處理對該部件的幫助URL。對WebPartHelpMode枚舉有三個值可選。這些包括、模態(tài)、非模態(tài)以及定向。如果該特定枚舉設(shè)置為模態(tài),則應(yīng)當(dāng)以模態(tài)窗口來顯示幫助URL。如果該枚舉設(shè)置為非模態(tài),則應(yīng)當(dāng)以在用戶屏幕上保持活動直到明確地被解散的非模態(tài)窗口來顯示幫助URL。如果枚舉設(shè)置為定向,則整頁被定向到幫助URL。
web部件基類706的另一枚舉是部件FrameType。部件FrameType枚舉由web部件和區(qū)域控制用來描述應(yīng)用在每一web部件周圍作為其用戶界面的一部分的框體。在本示例中,該枚舉可以具有五個值的其中之一,五個值包括無、僅標(biāo)題、標(biāo)題和邊框、僅邊框和缺省。如果值設(shè)置為無,則在web部件周圍不顯示框體。如果值設(shè)置為僅標(biāo)題,則在web部件上僅顯示標(biāo)題。如果值設(shè)置為標(biāo)題和邊框,則展現(xiàn)標(biāo)題欄和邊框。如果值設(shè)置為僅邊框,則僅展現(xiàn)邊框,并且在web部件上不展現(xiàn)標(biāo)題欄。如果值留在缺省上,則必須從包圍的區(qū)域中獲取框體類型。部件FrameType枚舉的實現(xiàn)的一個示例作為FrameType下拉菜單412在圖4中示出。
web部件基類706中另一可用的枚舉是部件FrameState枚舉。這一枚舉由部件和區(qū)域控制用來描述web部件的狀態(tài)。在本示例中,對這一枚舉有三個值可用,即普通、最小化或缺省。如果值設(shè)為普通,則顯示普通窗口。如果值設(shè)為最小化,則僅顯示標(biāo)題欄。如果值設(shè)為缺省,則在web部件上應(yīng)該從包圍的區(qū)域中獲取框體風(fēng)格。在web部件上,如果使用了缺省值,則應(yīng)當(dāng)使用標(biāo)準(zhǔn)窗體風(fēng)格。部件FrameState枚舉的實現(xiàn)的一個示例作為FrameState下拉菜單410在圖4中示出。
編輯器部件基類依賴于部件基類702的另一個類是編輯器部件基類708,如圖7所示。編輯器部件基類708包括超出部件基類702的功能,包括對編輯器部件基類708特定的特定屬性和方法。編輯器部件可以與可用來編輯的任一單個web部件相關(guān)聯(lián)。編輯器部件的控制用來通過用戶界面“編輯”web部件。
編輯器部件基類708上一個可用的屬性是AllowMinimize屬性。這一屬性指定編輯器部件是否可以被最小化。編輯器部件基類中另一可用屬性是WebPartToEdit屬性。這一屬性是對編輯器部件所負(fù)責(zé)的控制的引用。編輯器部件基類中存在的另一屬性是Display屬性。這一屬性指示編輯器區(qū)域是否應(yīng)當(dāng)顯示這一部件。例如,如果編輯器部件沒有對當(dāng)前WebPartToEdit的用戶界面,則它將這一屬性設(shè)為假,以不顯示特定的編輯器部件。
編輯器部件基類包括至少兩個方法。一個方法是ApplyChanges方法。ApplyChanges方法在編輯器部件應(yīng)當(dāng)將值應(yīng)用到其相關(guān)web部件時由區(qū)域調(diào)用。值為真指示保存是成功的,返回的值為假指示出現(xiàn)了錯誤。編輯器部件類中另一可用的方法是SyncChanges方法。這一方法在編輯器部件由于其它編輯器部件可能改變了與該編輯器部件相關(guān)的web部件的控制屬性而需要同步其值時由區(qū)域調(diào)用。這通常在所有由其它編輯器部件應(yīng)用的變化成功返回之后被調(diào)用。
從編輯器部件基類衍生的若干個類包括PropertyGridEditor部件710(PropertyGridEditorPart)、BehaviorEditor部件712(BehaviorEditorPart)、AppearanceEditor部件714(AppearanceEditorPart)、LayoutEditor部件716(LayoutEditorPart)以及各種第三方編輯器部件718。
從編輯器部件基類衍生的是PropertyGridEditor部件類710。PropertyGridEditor部件710是顯示標(biāo)記為web可瀏覽的屬性的編輯器部件。PropertyGridEditor部件類710能夠基于屬性的類型對每一類型展現(xiàn)不同的用戶界面。缺省用戶界面為文本框,與類型變換器結(jié)合使用來設(shè)置控制屬性值。對不同屬性類型的用戶界面如下。對串屬性類型,所展現(xiàn)的用戶界面為文本框。對整數(shù)、浮點數(shù)字或單位,展現(xiàn)的用戶界面也為文本框。對布爾(Boolean)屬性類型,展現(xiàn)的用戶界面為復(fù)選框、單選按鈕或下拉。對枚舉,展現(xiàn)的用戶界面為枚舉值的下拉。對日期時間DateTime屬性類型,展現(xiàn)的用戶界面為文本框或日歷。對顏色,展現(xiàn)的用戶界面為文本框、下拉或顏色選擇器。
從編輯部件基類衍生的控制不需要指定PropertyGridEditor部件控制710提供哪一用戶界面。作為替代,它由編輯器部件自動確定。此外,PropertyGridEditor部件控制710包括若干種允許頁開發(fā)者指示對常見類型展現(xiàn)的較佳的用戶界面的屬性。例如,當(dāng)屬性類型對復(fù)選框或單選按鈕具有傳導(dǎo)性時,在PropertyGridEditor部件控制710內(nèi)的屬性允許頁開發(fā)者選擇使用哪一類型的用戶界面。
PropertyGridEditor部件控制710也包括若干種調(diào)整編輯器部件的外觀和感覺的風(fēng)格屬性。一組風(fēng)格屬性在文本格式編排上居中,包括屬性PropertyNameStyle、PropertySetterStyle以及ErrorStyle。此外,有一種風(fēng)格可用來控制用于組織屬性名稱及其相關(guān)設(shè)置器的用戶界面的表格的外觀。這一表格的風(fēng)格可以使用GridStyleProperty來控制。例如,用戶能夠配置編輯器部件來展現(xiàn)柵格周圍的線條。這一風(fēng)格將應(yīng)用到包裝屬性名稱和設(shè)置器用戶界面的外部表格中。
一些可以在PropertyGridEditor類中指定的屬性涉及為作出各種選擇而顯示的用戶界面。這些屬性包括缺省值,但也包括其它可接受的格式。PropertyGridEditor部件類的BoolEditorType屬性確定哪一類型的設(shè)置器用戶界面用于布爾屬性。缺省類型是復(fù)選框,但是也可以使用單選按鈕或下拉。ColorEditorType部件確定哪一類型的設(shè)置器用戶界面用于顏色屬性。缺省類型是下拉,但是如上所述,也可以使用顏色選擇器或文本框。PropertyGridEditor部件的DateEditorType確定哪一類型的設(shè)置器用戶界面用于日期屬性。這一類型的缺省為文本框,但是也可以指定日歷或其它合適的界面。PropertyGridEditor部件類710的UnitEditorType確定哪一類型的設(shè)置器用戶界面用于單位屬性。這一屬性的缺省是文本框。
PropertyGridEditor部件類710的WebPartToEdit屬性指編輯器部件負(fù)責(zé)的web部件。這一屬性可以由編輯器部件用來調(diào)整其相關(guān)控制上的屬性。
PropertyGridEditor部件類710的Display屬性指示編輯器區(qū)域是否應(yīng)當(dāng)顯示這一部件。例如,如果編輯器部件沒有用于當(dāng)前WebPartToEdit的用戶界面,則Display屬性將被設(shè)為假,使其不被顯示。PropertyGridEditor部件的GridStyleProperty確定應(yīng)用到可用屬性的柵格上的表格風(fēng)格。
PropertyGridEditor部件基類710也包括各種對其可用的方法。PropertyGridEditor部件基類710的ApplyChanges方法由編輯器區(qū)域在編輯器部件應(yīng)當(dāng)將值應(yīng)用到其關(guān)聯(lián)控制時調(diào)用。在編輯器區(qū)域中調(diào)用“OK”或“應(yīng)用”動詞來指示應(yīng)當(dāng)保存變化時,這一消息方法由主含編輯器部件的編輯器區(qū)域調(diào)用。如果產(chǎn)生錯誤,編輯器部件返回假,并且編輯器區(qū)域會適當(dāng)?shù)刈鞒鲂袆?。例如,如果點擊OK動詞,則編輯器區(qū)域通常在調(diào)用ApplyChanges之后將頁設(shè)置為普通狀態(tài)。但是如果出現(xiàn)錯誤,則編輯器部件將保持可見,以糾正錯誤。返回的真值指示保存是成功的。
PropertyGridEditor部件會遇到兩種不同的異常。第一種異常是由編輯器部件自身在試圖將串轉(zhuǎn)換為屬性數(shù)據(jù)類型時拋出的。為方便起見,這些異常稱為轉(zhuǎn)換異常。第二種異常是由web部件或一些下部層,如數(shù)據(jù)庫的屬性設(shè)置方法拋出的。
PropertyGridEditor部件在可設(shè)置屬性柵格的頂部顯示一般錯誤消息。錯誤文本可通過ErrorText屬性來設(shè)置??梢酝瓿纱鎿Q來代替引發(fā)錯誤的第一個屬性的名稱。PropertyGridEditor部件可以通過捕捉并修正調(diào)用轉(zhuǎn)換例程處的異常來顯示友好轉(zhuǎn)換錯誤消息。這類串替換包括“該屬性需要數(shù)值”或“該值超出范圍”或“該屬性需要大于或等于0的數(shù)值”或“該屬性需要整數(shù)值”或“該屬性需要web地址”或?qū)σO(shè)置的屬性的任一其它合適的消息。
對于web部件拋出的異常,框架會如異常消息其本身來顯示該消息。由此,web部件開發(fā)者可以將這些錯誤消息修正為一些友好格式,而不是標(biāo)準(zhǔn)異常消息。在本發(fā)明的一個實施例中,當(dāng)使用TypeConverter時傾向于引發(fā)錯誤的屬性不被標(biāo)記為WebBrowsable。作為替代,提供了自定義編輯器部件來設(shè)置該屬性。
在編輯器部件應(yīng)當(dāng)由于其它編輯器部件(即,web部件關(guān)聯(lián)的控制)可能改變了控制屬性而同步化其值時,編輯器區(qū)域調(diào)用PropertyGridEditor部件的SyncChanges方法。SyncChanges僅在ApplyChanges方法成功地從所有編輯器部件返回之后才被調(diào)用。由此,如果ApplyChanges方法的任一個返回假,指示出現(xiàn)了錯誤,則不會調(diào)用SyncChanges方法。
AppearanceEditor部件基類714依賴于編輯器部件708。AppearanceEditor部件基類714設(shè)置常見用戶界面web部件屬性,如標(biāo)題、尺寸和框體類型。AppearanceEditor部件基類14所展現(xiàn)的AppearanceEditor部件的一個示例在圖8A中示出,并一般在800指明。LayoutEditor部件基類716設(shè)置web部件布局屬性,如對于區(qū)域,ZoneIndex、Hidden等等。LayoutEditor部件基類716展現(xiàn)的LayoutEditor部件的一個示例在圖8B中示出,并一般在802指明。
BehaviorEditor部件基類712依賴于編輯器部件基類708。編輯器部件基類712設(shè)置行為屬性,包括AllowClose、AllowMinimize、AllowExport、EnablePersonalization、TitleURL、EditURL、HelpURL和Description。當(dāng)對所有用戶修改web頁或者當(dāng)編輯未在多用戶之間共享的部件時,BehaviorEditor部件可用。這是由于特定屬性,如AllowClose應(yīng)用到所有的用戶,并且不應(yīng)在每個用戶的基礎(chǔ)上設(shè)置。BehaviorEditor部件基類所展現(xiàn)的BehaviorEditor部件的一個示例在圖8C中示出,并一般在804指明。
其它編輯器部件,如可定制第三方編輯器部件可以與各種web部件相關(guān)聯(lián)。提供這些自定義編輯器部件的web部件通過它們的編輯器部件屬性來展現(xiàn)它們。希望提供自定義編輯器部件的部件開發(fā)者能夠覆蓋特定web部件的編輯器部件屬性。這一屬性將在給定部件進(jìn)入編輯模式時由EditorZone復(fù)選。
目錄部件基類目錄部件基類704(CatalogPart)依賴于部件基類702。目錄部件是展現(xiàn)允許用戶向web頁添加新web部件實例的用戶界面的部件。目錄部件直接與web部件管理器連接來指示能夠在每個用戶的基礎(chǔ)上向頁添加控制。目錄部件由目錄區(qū)域來展現(xiàn)。兩個依賴于目錄部件基類的目錄部件在圖7中示出為PageCatalog部件720(PageCatalogPart)和TemplateCatalog部件722(TemplateCatalogPart)。也可以使用第三方目錄部件。
PageCatalog部件720顯示已關(guān)閉的web部件。已關(guān)閉定義為其可視性設(shè)置為假的任一部件。當(dāng)將部件從目錄添加時,它在該目錄中不再可用。一般而言,目錄從空開始,并使用以持久格式聲明并已關(guān)閉的部件來逐漸填充。目錄通常不允許在目錄內(nèi)靜態(tài)地聲明任一web部件。
TemplateCatalog部件722用來聲明性地創(chuàng)建目錄。包含在<CatalogTemplate>中的web部件可以添加到頁。由TemplateCatalog部件聲明的同一目錄項目的多個復(fù)件能夠添加到頁。
依賴于目錄部件控制的類向目錄部件基類704提供了功能。這一功能的示例可以通過閱讀圖5A和5B來看到,圖5A和5B一般示出了CatalogWebParts500和520。目錄部件基類704包括用于包括web部件522的選擇的控制。目錄部件控制也可以用來選擇適當(dāng)?shù)牟考D標(biāo)526來顯示目錄部件500和520中的部件。目錄部件控制還包括用于顯示部件描述的控制。也包括用于顯示分頁540、每頁項目534、復(fù)選框風(fēng)格、部件描述風(fēng)格、部件圖像風(fēng)格、部件標(biāo)題等等的控制。
目錄部件基類中有兩個公有的屬性,AvailableParts和web部件管理器。AvailableParts屬性是部件基類的屬性,指示目錄中可用于由目錄部件800顯示的部件。AvailableParts屬性可以是動態(tài)的,如在具有變化的可用web部件組的web服務(wù)上。由于目錄部件依賴于包含在web部件管理器中的方法來向頁添加所選擇的項目,每一目錄部件包含到其web部件管理器的引用。這是類中的保護(hù)成員,并被包括來協(xié)助可擴(kuò)充性。
還存在若干私有屬性,如SelectedParts、ShowPartImage、ShowPartDescription、ShowPartTitle、PartTitleStyle、PartDescriptionStyle、PartImageStyle、CheckBoxStyle、Paginate、IttemsPerPage、PagerStyle。這些屬性通過幫助定義目錄部件的外觀和感覺來協(xié)助顯示目錄部件。
存在一種Add方法來指定在何處將特定的添加的web組件添加到頁。CatalogZone在調(diào)用添加動詞時在所選擇的目錄部件上調(diào)用Add方法。目錄部件然后調(diào)用web部件管理器的Add方法來向頁添加web部件。在這一點之后,web部件將由web部件管理器跟蹤。
另一從Object基類衍生的類是WebPartVerb類。WebPartVerbs用來定義由調(diào)用特定行動的區(qū)域展現(xiàn)的用戶界面元素。點擊事件可以在客戶或服務(wù)器上處理。設(shè)計動詞在菜單中展現(xiàn),然而它們也可以展現(xiàn)為圖像、按鈕或鏈接。WebPartVerb類中的屬性包括Checked、Description、Enabled、ImageURL、OnClick。
Checked屬性定義所調(diào)用的動詞是否應(yīng)當(dāng)顯示的復(fù)選器用戶界面。在菜單用戶界面環(huán)境中,復(fù)選出現(xiàn)在動詞文本旁邊。Description屬性包含為動詞的描述的串。該串可以在工具提示中顯示。Enabled屬性定義是否啟用特定動詞。如果未啟用動詞,菜單將其顯示為全灰或不顯示。ImageURL屬性定義與動詞關(guān)聯(lián)的圖像的位置。Onclick屬性是接受服務(wù)器端點擊事件的事件處理器。OnClientClick屬性是當(dāng)點擊特定的動詞時所調(diào)用的客戶端函數(shù)。Text屬性是動詞的文本名稱。這一文本顯示為菜單文本。Visible屬性定義特定動詞是否可見。
除上述定義的屬性之外,本示例中WebPartVerb類也包括Invoke方法。Invoke方法是激發(fā)對特定動詞所定義的點擊事件的方法。
從Object衍生的基類還有WebPartEventArgs類。WebPartEventArgs類與WebPartVerbs類使用來指示與所調(diào)用的WebPartVerb相關(guān)聯(lián)的web部件。該類包括定義與所調(diào)用的WebPartVerb相關(guān)聯(lián)的web部件的web部件屬性。
區(qū)域控制區(qū)域基類用來創(chuàng)建部件來以一致的方式布置部件控制。例如,區(qū)域負(fù)責(zé)展現(xiàn)圍繞與該特定區(qū)域相關(guān)聯(lián)的每一部件的色彩和用戶界面?,F(xiàn)在參考圖9,示出了區(qū)域控制的層次。區(qū)域基類900(Zone)具有三個從其衍生的基類。這三個基類是WebPartZoneBase基類902、CatalogZone基類904和EditorZone基類906。區(qū)域基類900用來控制從部件基類702繼承或衍生的所有控制的布局。WebPartZoneBase類902用于web部件控制。EditorZone基類906用來布局編輯器部件控制。CatalogZone基類904用來布局目錄部件控制。
圖10示出了可由區(qū)域展現(xiàn)的各種用戶界面。使用圖9和10,描述了與區(qū)域基類以及從區(qū)域基類衍生的類相關(guān)聯(lián)的各種屬性。一些屬于區(qū)域基類900的屬性可以用來定義如何在web頁上展現(xiàn)特定區(qū)域。這些區(qū)域基類屬性包括BackImageURL、FrameType、Title、TitleStyle以及TitleHorizontalAlign。這些屬性的其中一些能夠通過以這里先前所描述的方式的枚舉來設(shè)置。
區(qū)域基類900包括定義應(yīng)當(dāng)用作特定區(qū)域的背景的圖像的URL的BackImageURL屬性。
區(qū)域基類900的FrameType屬性用來指定區(qū)域如何在編輯、目錄和設(shè)計模式中展現(xiàn)標(biāo)題欄和圍繞特定區(qū)域的邊框。例如,參考圖10,將FrameType值指定為無,引發(fā)區(qū)域既不展現(xiàn)區(qū)域框體1002也不展現(xiàn)標(biāo)題欄1004。將Frametype值指定為TitleOnly,引發(fā)展現(xiàn)標(biāo)題欄1004而不展現(xiàn)區(qū)域框體1002。將FrameType值指定為TitleAndBorder,引發(fā)同時展現(xiàn)標(biāo)題欄1004和區(qū)域框體1002。將FrameType值指定為BorderOnly,引發(fā)僅展現(xiàn)區(qū)域框體1002。Frametype屬性也可以表示為上文詳細(xì)描述的枚舉。
區(qū)域標(biāo)題欄1004可以通過區(qū)域基類900的各種其它屬性來控制。例如,TitleStyle屬性可以用來對標(biāo)題欄1004指定風(fēng)格。由此,TitleStyle定義諸如前景色和背景色之類的事物。區(qū)域基類900的Title屬性包含表示區(qū)域的標(biāo)題的串。區(qū)域基類900的TitleHorizontalAlign屬性定義用于區(qū)域標(biāo)題的對齊。
此外,區(qū)域基類900還包含各類用于定義包含在特定區(qū)域內(nèi)的任一web部件的特征的屬性。例如,屬性PartStyle、PartFrameType、PartTitleHorizontalalign、PartTitleStyle、PartVerbStyle以及PartContentStyle用來以與用于控制區(qū)域組件的展現(xiàn)的屬性相類似的方式展現(xiàn)駐留在區(qū)域內(nèi)的web部件的組件。參考圖10,部件標(biāo)題范圍1006、部件動詞范圍1008、部件展現(xiàn)的內(nèi)容1010、部件框體1012以及各類其它組件可通過設(shè)置上述屬性的值來控制。
WebPartZoneBase類從區(qū)域基類900衍生的是WebPartZoneBase類902。設(shè)計WebPartZoneBase類902來主含web部件控制。WebPartZoneBase基類902包括若干屬性。
WebPartZoneBase基類中的屬性的一個集合定義了區(qū)域內(nèi)的特定項目是否可個性化。WebPartZoneBase基類的AllowWebPartPersonalization屬性指定特定區(qū)域是否在該區(qū)域內(nèi)顯示web部件的編輯鏈接。如果設(shè)為假,則如下所述,對該區(qū)域內(nèi)的部件不允許拖放。WebPartZoneBase基類的LockLayout屬性如果設(shè)置為真,則引發(fā)區(qū)域不允許移動或添加web部件。
WebPartZoneBase基類的若干個屬性控制在區(qū)域內(nèi)或不同區(qū)域之間拖拽所展現(xiàn)的web部件的能力。WebPartZoneBase基類的DragMode屬性指定用于在web頁周圍移動部件的拖拽模式。DragMode屬性具有三個值,包括Image、WebpartTitle和Normal。當(dāng)將DragMode屬性設(shè)置為Image時,使用由下文描述的DragImageURL屬性指定的圖像。當(dāng)DragMode屬性的值設(shè)置為WebPartTitle時,使用光標(biāo)來拖拽web部件的標(biāo)題欄。當(dāng)將DragMode屬性設(shè)置為Normal時,使用光標(biāo)來拖拽整個web部件。WebPartZoneBase基類的DragImageURL屬性,如上所述,指定了當(dāng)DragMode設(shè)置為Image時所使用的圖像。WebPartZoneBase基類的DragHighlightColor屬性指定了當(dāng)將區(qū)域作為目標(biāo)時所使用的加亮顏色。換言之,這一屬性指定了展現(xiàn)在客戶上的放置用戶界面的顏色。放置用戶界面包括包圍目標(biāo)區(qū)域的邊框以及用來指示在其它web部件之間的插入點的條。
WebPartZoneBase基類902還包括用于定義如何在特定區(qū)域內(nèi)顯示各類web部件的各種屬性。WebPartZoneBase基類的EditWebPartStyle屬性指定用于當(dāng)前正在編輯的web部件的風(fēng)格。該風(fēng)格僅應(yīng)用到處于編輯模式的web部件。WebPartZoneBase類902覆蓋區(qū)域基類的PartStyle屬性中設(shè)置的任一風(fēng)格。
WebPartZoneBase基類的Orientation屬性指定了區(qū)域是否水平或垂直布置web部件。圖11A和圖11B說明了水平布置的區(qū)域1102和垂直布置的區(qū)域1104。WebPartZoneBase基類的PartTitleFormatString屬性指定了如何組合web部件的Title和Caption屬性來組成以色彩顯示的標(biāo)題。WebPartZoneBase基類的ShowIconInPartTitle屬性指定了部件圖標(biāo),即特定web部件的圖形表示是否在標(biāo)題欄中顯示。
WebPartZoneBase基類的一些屬性指定了關(guān)于web部件中的動詞的外觀的特定特征。WebPartZoneBase基類的Verbs屬性定義了一組應(yīng)用到區(qū)域內(nèi)所有部件的動詞。這些在web部件動詞與區(qū)域內(nèi)建立的動詞如WebPartCloseVerb之間應(yīng)用??赡芏x的Verbs的示例包括關(guān)閉web部件的WebPartCloseVerb、最小化web部件(僅顯示web部件標(biāo)題)的WebPartMinimizeVerb、恢復(fù)最小化的web部件的WebPartRestoreVerb以及將用戶引導(dǎo)到幫助URL的WebPartHelpVerb。動詞展現(xiàn)的各種示例在圖12中示出,圖12示出了關(guān)閉動詞1202、最小化動詞1204、恢復(fù)動詞1206和幫助動詞1208。WebPartZoneBase基類的VerbButtonType屬性指定了如何顯示動詞。如果WebPartVerb屬性指定按鈕類型是圖像但未定義圖像URL,則將WebPartVerb展現(xiàn)為鏈接按鈕。WebPartZoneBase基類的VerbStyle屬性定義了應(yīng)用到動詞的風(fēng)格。
WebPartZoneBase基類的WebPartPadding屬性定義了在區(qū)域內(nèi)的web部件之間應(yīng)用的填充。WebPartZoneBase基類的WebParts屬性列出了區(qū)域內(nèi)web部件的集合。
從WebPartZoneBase基類衍生的類是圖9所示的WebPartZone類,并一般在908指明。WebPartZone類添加區(qū)域Template屬性使得web部件能夠以持久格式添加。
編輯器區(qū)域基類設(shè)計EditorZone基類來展現(xiàn)編輯器部件及其關(guān)聯(lián)的用戶界面。示例性編輯器部件404在圖4中示出。在本發(fā)明的一個實施例中,EditorZones展現(xiàn)每一編輯器部件周圍的最小用戶界面。EditorZone基類906包括若干屬性,包括ApplyVerb、CancelVerb、CloseImageURL、EditorParts、ZoneTemplate、FooterStyle、OKVerb、ShowCloseImage、VerbButtonType、VerbStyle以及WebPartToEdit。EditZone基類也包括方法的選集,包括ApplyHandler、CancelHandler和OKHandler。
EditorZone基類的ApplyVerb屬性定義執(zhí)行應(yīng)用操作的動詞,如圖4所示的應(yīng)用動詞按鈕416。調(diào)用由ApplyVerb屬性定義的動詞導(dǎo)致調(diào)用每一編輯器部件的ApplyChanges屬性,并隨后在每一編輯器部件上調(diào)用SyncChanges。
EditorZone基類的CancelVerb屬性定義執(zhí)行取消操作的動詞,如圖4所示的取消動詞按鈕422。調(diào)用CancelVerb通過web部件管理器將web頁返回至普通視圖,如下文詳細(xì)描述。CancelVerb不調(diào)用任一編輯器部件的ApplyChanges方法。
EditorZone基類的OKVerb屬性指定執(zhí)行OK操作的動詞,如圖4所示的OK動詞按鈕420。對這一動詞的調(diào)用導(dǎo)致在每一編輯器部件上調(diào)用ApplyChanges屬性,并隨后將頁返回至普通視圖。EditorZone基類的ShowCloseImage屬性確定是否在區(qū)域的右上角顯示關(guān)閉圖形。EditorZone基類的CloseImageURL屬性指定了在區(qū)域的右上角顯示的圖標(biāo)的圖像URL。
EditorZone基類的VerbButtonType屬性確定用來顯示每一動詞的按鈕類型。如果WebPartVerb不指定圖像URL,而按鈕類型設(shè)置為圖像,則將動詞文本與對圖4所示的OK、Apply和Close動詞按鈕類似地展現(xiàn)鏈接按鈕。EditorZone基類的VerbStyle屬性定義應(yīng)用到每一區(qū)域動詞的風(fēng)格。
EditorZone基類的WebPartToEdit屬性指定了正在編輯的web部件。該屬性被委托給基類中的web部件管理器。EditorZone基類的編輯器部件屬性指定了該區(qū)域中編輯器部件的只讀集合。EditorZone基類的ZoneTemplate屬性列出了特定編輯器區(qū)域中的編輯器部件。EditorZone基類的FooterStyle屬性指定了應(yīng)用到特定區(qū)域的頁腳424的風(fēng)格。
在一個示例性實施例中,EditorZone類接收web部件進(jìn)入編輯模式的通知。這引發(fā)EditorZone建立一組新的編輯器部件。EditorZone調(diào)用當(dāng)前正在編輯的web部件的BuildEditor部件方法來獲得任一自定義編輯器部件。EditorZone然后以其ZoneTemplate例示該編輯器部件。然后可以由用戶向正在編輯的web部件作出變化。如果用戶對作出的變化滿意,則用戶可以選擇OK或應(yīng)用動詞按鈕,將如上所述地例示ApplyVerb屬性或OKVerb屬性。
CatalogZone基類CatalogZone用來顯示目錄部件。通常在任一給定的時刻僅一個目錄可見。CatalogZone基類904包括以下屬性AddVerb、AvailableCatalogText、CancelVerb、目錄部件ZoneTemplate、CloseImageURL、FooterStyle、TargetZone、TargetZoneIndex、SelectedCatalogPart、ShowCloseImage、ShowTargetZoneUserInterface、VerbButtonType以及VerbStyle。CatalogZone還包括以下方法AddHandler和CloseHandler。
CatalogZone基類904的若干屬性定義了目錄區(qū)域的布局和內(nèi)容的外觀。CatalogZone基類的AvailableCatalogText屬性包括位于可用目錄列表之前的文本。CatalogZone基類的ZoneTemplate屬性是包含包含在特定目錄區(qū)域內(nèi)的目錄部件的模板。CatalogZone基類的SelectedCatalogPart屬性指定了當(dāng)前選擇的目錄。這一屬性可以具有空值,如當(dāng)該區(qū)域中沒有目錄時。CatalogZone基類的ShoeTargetZoneUserInterface屬性指定是否在該區(qū)域的底部顯示目標(biāo)區(qū)域用戶界面。CatalogZone基類的FooterSytle屬性定義了應(yīng)用到特定區(qū)域的頁腳的風(fēng)格。
CatalogZone基類904的若干屬性定義了在目錄區(qū)域中如何展現(xiàn)動詞和動詞按鈕。CatalogZone基類的AddVerb屬性一般位于目錄區(qū)域的頁腳。當(dāng)調(diào)用時,調(diào)用當(dāng)前選擇的目錄的Add方法。CatalogZone基類的CancelVerb屬性定義執(zhí)行取消操作的動詞。這將頁返回至普通視圖。CancelVerb不在任一目錄部件上調(diào)用Add方法。CatalogZone基類的CloseImageURL屬性闡明了在區(qū)域的右上角顯示的圖標(biāo)的圖像URL。CatalogZone基類的TargetZone屬性指定當(dāng)前對該目錄區(qū)域選擇的目標(biāo)區(qū)域。當(dāng)在所選擇的web部件上調(diào)用Add方法時,這將作為一個參數(shù)傳遞。CatalogZone基類的ShowCloseImage屬性指定是否在目錄區(qū)域的右上角顯示關(guān)閉圖形。CatalogZone基類的VerbButtonType屬性指定用來顯示每一動詞的按鈕類型。如果web部件的動詞沒有圖像URL,但是按鈕類型設(shè)置為圖像,則將文本顯示為鏈接按鈕。CatalogZone基類的VerbStyle屬性定義應(yīng)用到每一區(qū)域的動作的風(fēng)格。
CatalogZone基類的其它屬性幫助管理特定目錄區(qū)域的目錄部件。CatalogZone基類的目錄部件屬性列出了特定目錄區(qū)域中的目錄部件的集合。CatalogZone基類的TargetZoneIndex屬性定義了在目標(biāo)區(qū)域中應(yīng)當(dāng)部件之處的索引。
web部件管理器第三個基類的一般組是web部件管理器基類。web部件管理器基類跟蹤web頁上的web部件、跟蹤web頁上的區(qū)域并跟蹤每一區(qū)域中有哪些web部件。web部件管理器也通過跟蹤web頁的編輯狀態(tài)來處理web頁的個性化。為方便如圖6所示并描述的連接,web部件管理器跟蹤web部件之間的連接并啟動web部件之間的連接通信。web部件管理器可能連接到并依賴數(shù)據(jù)庫,用于web部件的定義和個性化。web部件管理器也負(fù)責(zé)展現(xiàn)任一需要用來處理客戶操作,如在編輯模式中拖拽web部件的腳本。web部件管理器可以如其它任一控制一樣,通過一個示例中的持久格式添加到web頁。通常在一個web頁上僅顯示web部件管理器的一個實例。
web頁在其生命周期之內(nèi)具有各種階段。這些階段包括初始化、加載、預(yù)展現(xiàn)、保存狀態(tài)、展現(xiàn)、布置以及卸載。web部件管理器可能貫穿一些階段具有與web頁上其它部件的交互。在初始化階段,例示web部件管理器、例示區(qū)域、區(qū)域?qū)⑵渥陨硐騱eb部件管理器注冊并且使用來自模板的web部件構(gòu)造控制樹。在加載階段中,信號連接到關(guān)于連接的web部件并且web部件管理器在每一web部件上設(shè)置Connection屬性。在預(yù)展現(xiàn)階段,注冊web部件管理器客戶腳本塊。在展現(xiàn)階段,web部件管理器跟蹤并控制區(qū)域和web部件如何展現(xiàn)內(nèi)容。
web部件管理器包括若干屬性來實現(xiàn)上述功能,包括DisplayMode、WebPartToEdit、ClosedWebParts以及web部件區(qū)域。web部件管理器也包括若干方法,包括AddWebPart、BeginWebPartEditing、CreateConnection、DeleteWebPart、EndWebPartEditing、XmlDocument、Export、Import、MoveWebPart、RegisterConnectionEndPoint、RegisterZone以及SetDisplayMode。
web部件管理器基類的DisplayMode屬性定義頁的當(dāng)前顯示模式。操作包括普通、編輯、設(shè)計、目錄等等。普通顯示模式的一個示例在圖1到圖3中示出并描述。當(dāng)web頁為普通顯示模式時,web部件以普通模式顯示,并且編輯器區(qū)域、目錄區(qū)域以及區(qū)域邊框不可見。編輯顯示模式的一個示例在圖4中示出并描述。當(dāng)web頁在編輯顯示模式時,web部件以編輯模式展現(xiàn),并且編輯器區(qū)域以及區(qū)域邊框可見,而目錄區(qū)域不可見。目錄顯示模式的一個示例在圖5中示出。當(dāng)web頁在目錄顯示模式時,web部件以普通模式展現(xiàn),并且目錄區(qū)域和區(qū)域邊框可見,而編輯器區(qū)域不可見。當(dāng)web頁在設(shè)計顯示模式時,web部件以普通模式展現(xiàn),并且區(qū)域邊框可見,而編輯器區(qū)域和目錄區(qū)域不可見。個別web部件可能在編輯模式。這使web部件能夠以一直線顯示用戶界面,或者在編輯器區(qū)域中顯示任一相關(guān)的編輯器部件。通過下列事件通知web部件當(dāng)前的模式DisplayModeChanging、WebPartAdded、WebPartEditModeChanged、WebPartEditModeChaning以及WebPartDeleted。
web部件管理器基類的WebPartToEdit屬性在當(dāng)web頁處于編輯模式時用來標(biāo)識當(dāng)前正在編輯的web部件。這一屬性由編輯器區(qū)域和編輯器部件使用。web部件管理器基類的ClosedWebParts屬性標(biāo)識可視屬性設(shè)置為假的web部件組。web部件管理器基類的WebParts屬性標(biāo)識web部件管理器負(fù)責(zé)的所有web部件,包括在頁上為靜態(tài)的部件和已動態(tài)添加的部件。
web部件管理器基類的Zones屬性標(biāo)識web部件管理器當(dāng)前正在管理的web部件組。每一web部件區(qū)域在OnInit中將其自身向web部件管理器注冊,OnInit然后將該區(qū)域添加到該組。在web頁的生命周期的后段,每一區(qū)域調(diào)用web部件管理器的GetWebPartsForZone來發(fā)現(xiàn)該區(qū)域當(dāng)前包含哪些web部件。WebPartZone的在web部件管理器上對RegisterZone的調(diào)用可選地傳遞web部件的初始組。WebPartZone然后可以調(diào)用GetWebPartsForZone來發(fā)現(xiàn)哪些web部件分配到特定區(qū)域。GetWebPartsForZone方法,如下所述,允許區(qū)域確定它們負(fù)責(zé)展現(xiàn)的web部件。這一方法估計web部件管理器的web部件集合來看哪一web部件屬于合適的區(qū)域。web部件管理器根據(jù)WebPart.Zone、WebPart.Visible和WebPart.Roles過濾web部件。區(qū)域然后負(fù)責(zé)檢查特定web部件是否隱藏。
web部件管理器基類中有各種可用方法。調(diào)用web部件管理器基類的BeginWebPartEditing方法來開始編輯web部件。調(diào)用該方法時激發(fā)WebPartEditModeChanging和WebPartEditModeChanged事件。如果web部件已處于編輯模式,則調(diào)用EndWebPartEditing。如果成功,則將WebPartToEdit屬性設(shè)置為web部件參數(shù)值。
調(diào)用web部件管理器基類的EndWebPartEditing方法來結(jié)束BeginEditingWebpart方法。調(diào)用該方法時激發(fā)WebPartEditModeChanging和WebPartEditModeChanged事件。如果成功,則清除WebPartToEdit屬性。
調(diào)用web部件管理器基類的MoveWebPart方法以在區(qū)域之間移動web部件。為調(diào)用該方法,使用三個參數(shù)WebPart參數(shù)指定要移動的web部件、Zone參數(shù)指定目標(biāo)區(qū)域以及ZoneIndex參數(shù)指定目錄區(qū)域中添加web部件之處的索引。
每一區(qū)域在需要展現(xiàn)其包含的web部件時調(diào)用web部件管理器基類的GetWebPartsForZone方法。GetWebPartsForZone方法允許區(qū)域確定其負(fù)責(zé)展現(xiàn)的部件。該方法估計web部件管理器的web部件集合來看哪一web部件屬于適當(dāng)?shù)膮^(qū)域。web部件管理器根據(jù)WebPart.Zone、WebPart.Visible以及WebPart.Roles來過濾web部件。該區(qū)域然后負(fù)責(zé)檢查特定的部件是否隱藏。該方法返回web部件的集合。
圖13示出并描述了用于確定要返回的web部件集合的方法的詳細(xì)流程圖。當(dāng)區(qū)域調(diào)用GetWebPartsForZone方法(1302)時開始該方法。web固件管理器察看每一部件(1304)。web部件管理器檢查web部件中指定的區(qū)域是否為目標(biāo)區(qū)域(1306)。如果該區(qū)域不是目標(biāo)區(qū)域,則進(jìn)程返回,來檢查其它web部件。如果該區(qū)域是目標(biāo)區(qū)域,則web部件管理器檢查該web部件的Visible屬性是否設(shè)置為真(1308)。如果Visible屬性未設(shè)置為真,則進(jìn)程返回,來檢查其它web部件。如果web部件的Visible屬性設(shè)置為真,則web部件管理器檢查該web部件是否可用于當(dāng)前角色(如在個性化、自定義和開發(fā)情況下)(1310)。如果該web部件不可用于web部件的Role屬性定義的當(dāng)前角色,則進(jìn)程返回,來檢查其它web部件。如果該web部件可用于當(dāng)前角色,則將該web部件添加到特定區(qū)域的WebpartCollection屬性(1312)。然后將WebPartCollection返回(1314)至web部件管理器,循環(huán)該進(jìn)程來繼續(xù)檢查每一web部件。
調(diào)用web部件管理器的AddWebPart方法來向web頁添加web部件。任一通過該方法添加的web部件被認(rèn)為是動態(tài)的,并且之后可以被刪除。AddWebPart方法采用或者web部件的實例,或者XML DWP文件。在任一情況下,web部件管理器通常創(chuàng)建一個動態(tài)控制。在該方法的這一示例中指定了三個參數(shù)WebPart參數(shù)標(biāo)識要添加到web頁的web部件、Zone參數(shù)指定應(yīng)當(dāng)向其添加web部件的區(qū)域、以及ZoneIndex參數(shù)指定區(qū)域中應(yīng)當(dāng)添加web部件之處的索引。
web部件管理器基類的RegisterConnectionEndPoint方法由希望注冊連接端點的web部件調(diào)用,使得web部件可以通過如上所述的連接來交互。該方法中傳遞的參數(shù)是ConnectionEndPoint,指定了要注冊的連接端點。
當(dāng)要從頁中移除web部件時,調(diào)用web部件的基類的RemoveWebPart方法。這一方法清除該部件上任意個性化設(shè)置。對于在頁上聲明的部件(并且因此無法被移除),該方法將Visible屬性設(shè)為假。對于動態(tài)地添加到頁的部件,移除對動態(tài)web部件的引用。該方法中傳遞的參數(shù)是web部件參數(shù),指定了要移除的web部件。
web部件管理器基類的SetDisplayMode方法設(shè)置web頁的顯示模式。這一模式激發(fā)下述WebPartDisplayModeChanging和WebPartDisplayModeChanged事件。此外,當(dāng)有部件當(dāng)前正在被編輯時如果web頁移出編輯模式,該方法終止web部件的編輯。在該方法中傳遞的參數(shù)是DisplayMode參數(shù),設(shè)置目標(biāo)web部件的顯示模式。
web部件管理器包括若干事件,包括ClosedWebPartsChanged、DisplayModeChanged、DisplayModeChanging、WebPartAdded、WebPartEditModeChanged、WebPartEditModeChanging以及WebPartDeleted。當(dāng)關(guān)閉部件或者從CloseWebParts集合中移除部件時,激發(fā)web部件管理器基類的的ClosedWebPartsChanged事件。在顯示模式改變之后,激發(fā)web部件管理器基類的DisplayModeChanged事件。在改變顯示模式之前激發(fā)web部件管理器基類的DisplayModeChanging事件。該事件的處理器能夠調(diào)整事件自變量來避免顯示模式的改變。在web部件放入編輯模式或從其中移除之后,激發(fā)web部件管理器基類的WebPartEditModeChanged事件。在web部件放入編輯模式或從其中移除之前,激發(fā)web部件管理器基類的WebPartEditModeChanging事件。
在web部件在數(shù)據(jù)庫中聲明而不是以web部件區(qū)域的持久格式聲明的情況下,開發(fā)者可以擴(kuò)充web部件管理器。應(yīng)當(dāng)覆蓋CreateChildControls方法來從一個替換源獲取web部件。web部件管理器上的WebpartCollection屬性依賴其子控制,因此這些屬性不需要覆蓋。Delete、Add和Move方法也可能被覆蓋來與替換數(shù)據(jù)存儲交互。
理解上述基類的基本功能之后,可以在基類及其衍生的控制的配合動作的語境下解釋部件基類、區(qū)域基類和web部件管理器基類的其它特點。一些這類可擴(kuò)充功能包括導(dǎo)入和導(dǎo)出功能、web部件之間的連接以及web部件配置。
應(yīng)用能夠允許web部件屬性的導(dǎo)出和導(dǎo)入功能。這使用戶能夠共享他們的web部件設(shè)置。當(dāng)執(zhí)行導(dǎo)出時,創(chuàng)建web部件屬性的完整XML表示。該文檔的格式是XML文件,并由web部件對XML串行化元數(shù)據(jù)屬性的使用來控制。該XML文檔然后可以被導(dǎo)入。通常,僅標(biāo)記為可個性化的屬性包括在部件的最終XML表示中。在本發(fā)明的一個實施例中,能夠在web部件上創(chuàng)建導(dǎo)出按鈕來啟用導(dǎo)出功能。
XML格式用來描述web部件個性化的屬性設(shè)置。文件包括類型名稱、裝配名稱以及用于web部件的各種屬性的值。一旦加載了文件,web部件管理器例示指定的對象,分析文件中的XML并將屬性應(yīng)用到對象。這一web部件然后被添加到頁的web部件集合并能夠作為任一其它動態(tài)部件來處理。
可以連接web部件來共享信息與功能。結(jié)合圖6的描述所描述的連接通過成對的消費者和提供者模型來工作。支持連接功能的部件必須將其自身向web部件管理器注冊。web部件管理器然后負(fù)責(zé)掛鉤部件之間的連接。
對于要連接的web部件,進(jìn)行以下步驟消費者和提供者web部件向web部件管理器注冊連接端點;web部件管理器通過委托向提供者要求連接對象;web部件管理器通知web部件他們已通過委托連接;以及web部件通過理解的連接接口通信。連接可以通過Connections屬性以web部件管理器的持久格式定義。
連接模型在連接的每一端點上基于提供者和消費者。每一連接通過主連接接口工作。這一接口被提供者和消費者所理解。僅提供者需要實現(xiàn)該接口,因為消費者僅通過接口方法、屬性和事件來調(diào)用。連接通常不是雙向的,除非特定提供者和消費者的語義允許他們執(zhí)行雙向通信。
框架包含對服務(wù)器端連接的主支持。在頁執(zhí)行的過程中出現(xiàn)服務(wù)器端連接,并且服務(wù)器端連接僅在web頁生命周期中為活動的??蛻舳诉B接是不需要回標(biāo)帖(post-back)而出現(xiàn)在客戶端的連接。如果提供者和消費者都實現(xiàn)了對客戶端通信的支持,則連接框架允許連接的部件在客戶上通信。這允許第三方裝入對客戶端連接的支持。
web部件管理器負(fù)責(zé)跟蹤并初始化所有web部件的通信。當(dāng)每一部件向web部件管理器注冊連接端點時連接進(jìn)程開始。在生命周期的適當(dāng)階段,web部件管理器調(diào)用對提供者的委托,在該點上,提供者返回或者其自身,或者另一連接對象的實例。在web部件接收連接對象之后,它調(diào)用對ConnectConsumerCallBack的委托。在該點上,消費者能夠自由地通過適當(dāng)?shù)倪B接接口通信。
希望參與連接的web部件定義一個或多個連接端點ConnectionEndPoint,由web部件管理器用來將web部件共同掛鉤。每一連接端點ConnectionEndPoint包括若干屬性,標(biāo)識該部件上的連接點ConnectionEndPoint。Name定義了連接點ConnectionEndPoint的名稱,例如“SelectedRow”。ConnectionInterface為該連接定義主接口,如IFieldData。CallBackDelegate由提供者用來指向返回實現(xiàn)連接接口ConnectionInterface的對象的方法,并由消費者用來指向接收實現(xiàn)連接接口ConnectionInterface的對象的方法。Description包括描述向最終用戶的連接端點ConnectionEndPoint,如“提供選擇的行來……”。
RegisterProvider由提供者web部件在OnInit中調(diào)用。GetConnectionCallback自變量是向負(fù)責(zé)創(chuàng)建連接Connection對象的方法的委托。提供者Provider調(diào)用RegisterProvider方法的一個示例如下
RegisterConsumer由消費者web部件在OnInit中調(diào)用。ConnectionConsumerCallback參數(shù)是向負(fù)責(zé)接受連接的方法的委托。消費者web部件調(diào)用RegisterConsumer方法的示例如下 變換器是具有將一個連接接口ConnectionInterface變換為另一個的邏輯的對象。例如,變換器使理解IFieldData的部件能夠與實現(xiàn)IRowData的部件對話。為完成這一目的,變換器從提供者發(fā)送的行數(shù)據(jù)中選擇適當(dāng)?shù)膯卧⑵湔宫F(xiàn)給消費者。IConnection接口由所有連接中涉及的變換器實現(xiàn)。它用來查詢哪一連接接口可用。
變換器的一個實施例的功能如圖14所示。說明提供者web部件1402為股票列表web部件。提供者web部件1402包括SelectedStockList連接端點ConnectionEndPoint。提供者web部件1402通過第一通信接口1406,本示例中為IRowData接口,耦合至變換器1404。這些接口在下文詳細(xì)闡明。變換器1404將沿第一通信接口1406發(fā)送的數(shù)據(jù)變換為消費者web部件1408可讀的格式,如本示例中所示的股票圖形部件。然后沿第二通信接口1410向消費者web部件1408發(fā)送合適的數(shù)據(jù)。
GetConnectionInterface方法在基本web部件類中存在。它使web部件能夠檢查它們所使用的連接對象是否實現(xiàn)額外的連接接口。這一方法應(yīng)當(dāng)在變換器在主連接接口中存在的情況下使用。
消費者web部件通過Provider接口與提供者通信。該接口定義消費者如何期望與提供者交互??蚣軐崿F(xiàn)若干種提供者接口。例如,IFieldData提供了到數(shù)據(jù)的單個單元的接口。IRowData提供了到列表的行的接口。IRowData接口適合選擇驅(qū)動行動。IListData提供了到整個列表的接口。該IListData接口適合提供整個數(shù)據(jù)組的替換景象的web部件。IModifyRow接口能夠用來在列表中插入、更新以及刪除行。
當(dāng)web部件注冊其自身時,它標(biāo)識了它所理解的提供者接口。web部件可以作出若干個對RegisterConsumer/RegisterProvider方法的調(diào)用來指示他們理解多接口。例如,列表部件能夠支持IRow和IModifyRow。消費者部件也能夠理解這兩個接口。web部件也可以決定以不同的語義實現(xiàn)同一接口兩次。例如,列表web部件可以對當(dāng)前選擇的行和鼠標(biāo)當(dāng)前所覆蓋的行支持IRow。這可以通過實現(xiàn)兩個單獨的實現(xiàn)IRow的連接類來實現(xiàn)。
與這些連接類的每一個相關(guān)聯(lián)的可以是對第二連接接口的不同支持。例如,對選擇的行支持IRowModify,但對覆蓋的行不支持。一旦連接了兩個web部件,消費者能夠向提供者查詢其支持的接口。這可以通過web部件基類中定義的GetConnectionInterface方法來實現(xiàn)。希望跨連接共享更多高級功能的開發(fā)者可以實現(xiàn)其消費者web部件能夠理解的自定義提供者接口。
GetConnectionCallback用作向負(fù)責(zé)實際創(chuàng)建并返回連接對象的功能的委托。它在RegisterConneetion方法中被引用。接受實際調(diào)用的方法必須匹配GetConnectionCallback方法的簽名。
ConnectConsumerCallback由消費者部件用來標(biāo)識當(dāng)建立特定連接時所要調(diào)用的方法。這一委托在RegisterConsumer方法中使用。
本發(fā)明的實施例包括專用或通用計算機(jī),包括各類計算機(jī)硬件,如下文所詳細(xì)描述的。
處于本發(fā)明的范圍之內(nèi)的實施例也包括用于攜帶或在其上儲存計算機(jī)可執(zhí)行指令或數(shù)據(jù)的計算機(jī)可讀媒質(zhì)。這類計算機(jī)可讀媒質(zhì)可以是通用或?qū)S糜嬎銠C(jī)可訪問的任一可用媒質(zhì)。作為示例而非局限,這類計算機(jī)可讀媒質(zhì)可包括RAM、ROM、EEPROM、CD-ROM或其它光盤存儲、磁盤存儲或其它磁存儲設(shè)備、或可以用來以計算機(jī)可讀指令或數(shù)據(jù)結(jié)構(gòu)的形式攜帶或儲存所期望的程序代碼方法并可由通用或?qū)S糜嬎銠C(jī)訪問的其它任何媒質(zhì)。當(dāng)通過網(wǎng)絡(luò)或另一通信連接(任一硬布線、無線或硬布線和無線的組合)向計算機(jī)傳輸或提供信息時,計算機(jī)適當(dāng)?shù)貙⒃撨B接視為計算機(jī)可讀媒質(zhì)。因此,任一這類連接適當(dāng)?shù)乇环Q為計算機(jī)可讀媒質(zhì)。上述的組合也應(yīng)當(dāng)包括在計算機(jī)可讀媒質(zhì)的范圍內(nèi)。計算機(jī)可執(zhí)行指令包括,例如,引發(fā)通用計算機(jī)、專用計算機(jī)或?qū)S锰幚碓O(shè)備執(zhí)行特定的功能或功能組的指令和數(shù)據(jù)。
以下討論提供了可在其中實現(xiàn)本發(fā)明的合適計算環(huán)境的簡要一般描述。盡管并非所需要,本發(fā)明在計算機(jī)可執(zhí)行指令的一般語境下描述,計算機(jī)可執(zhí)行指令如程序模塊,由網(wǎng)絡(luò)環(huán)境中的計算機(jī)執(zhí)行。一般而言,程序模塊包括例程、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)等等,執(zhí)行特定的任務(wù)或?qū)崿F(xiàn)特定的抽象數(shù)據(jù)類型。計算機(jī)可執(zhí)行指令、相關(guān)數(shù)據(jù)結(jié)構(gòu)以及程序模塊代表了用于執(zhí)行這里披露的方法的步驟的程序代碼方法。這類可執(zhí)行指令或相關(guān)數(shù)據(jù)結(jié)構(gòu)的特定順序代表用于實現(xiàn)這類步驟中描述的功能的相應(yīng)動作的示例。
本領(lǐng)域的技術(shù)人員可以理解,本發(fā)明可以在具有多種類型的計算機(jī)系統(tǒng)配置的網(wǎng)絡(luò)計算環(huán)境中實踐,計算機(jī)系統(tǒng)配置包括個人計算機(jī)、手持式設(shè)備、多處理器系統(tǒng)、微處理器系統(tǒng)或可編程消費者電子產(chǎn)品、網(wǎng)絡(luò)PC、小型機(jī)、大型機(jī)等等。本發(fā)明也可以在分布式計算環(huán)境中實踐,其中,任務(wù)由通過通信網(wǎng)絡(luò)連接(或者通過硬布線鏈路、或者通過無線鏈路、或者通過硬布線和無線鏈路的組合)的本地和遠(yuǎn)程處理設(shè)備執(zhí)行。在分布式計算環(huán)境中,程序模塊可以位于本地和遠(yuǎn)程存儲器存儲設(shè)備中。
本發(fā)明可以在不脫離其精神或本質(zhì)特征的情況下以其它特定形式來實施。所描述的實施例在所有方面都被認(rèn)為僅為說明性而非限制性的。因此,本發(fā)明的范圍由所附權(quán)利要求而非之前的描述來指示。所有處于權(quán)利要求的等效權(quán)利要求的意思和范圍之內(nèi)的變化都包含在其范圍之內(nèi)。
權(quán)利要求
1.一種用于創(chuàng)建模塊化web應(yīng)用的框架,其特征在于,所述框架包括一個或多個部件控制,其中,每一所述部件控制具有準(zhǔn)許每一部件如同其它部件控制一樣來展現(xiàn)的一個或多個屬性;一個或多個區(qū)域控制,其中,每一所述區(qū)域控制在每一區(qū)域內(nèi)布置所述一個或多個部件控制中的至少一個;以及web部件管理器,跟蹤所述一個或多個部件控制中的哪些是在每一區(qū)域控制之內(nèi)。
2.如權(quán)利要求1所述的框架,其特征在于,所述每一部件控制的所述一個或多個屬性啟用特定區(qū)域控制以在所述特定區(qū)域控制內(nèi)以及每一所述部件控制的功能不同之處展現(xiàn)每一所述部件控制的一致用戶接口。
3.如權(quán)利要求1所述的框架,其特征在于,所述部件控制從一個或多個部件基類創(chuàng)建。
4.如權(quán)利要求3所述的框架,其特征在于,所述一個或多個部件基類包括部件基類、從所述部件基類衍生的web部件基類、從所述部件基類衍生的目錄部件基類以及從所述部件基類衍生的編輯器部件基類。
5.如權(quán)利要求4所述的框架,其特征在于,所述編輯器部件基類用于設(shè)置控制屬性的模塊化控制,所述控制屬性包括個人設(shè)置、用于所述一個或多個部件控制的布局屬性以及用于所述一個或多個部件控制的行為屬性中的一個或多個。
6.如權(quán)利要求4所述的框架,其特征在于,所述目錄部件基類被用于提供能夠被添加到至少一個所述區(qū)域控制的web部件的目錄的模塊化控制。
7.如權(quán)利要求5所述的框架,其特征在于,所述一個或多個區(qū)域控制從一個或多個區(qū)域基類創(chuàng)建。
8.如權(quán)利要求7所述的框架,其特征在于,所述一個或多個區(qū)域基類包括用于布置從部件基類繼承的控制的區(qū)域基類;從所述區(qū)域基類衍生并用于web部件控制的web部件區(qū)域基類;從所述區(qū)域基類衍生并用于布置編輯器部件控制的編輯器區(qū)域基類,所述編輯器部件控制用于布置所述編輯器控制;以及用于目錄控制的目錄部件基類。
9.如權(quán)利要求1所述的框架,其特征在于,所述web部件管理器是部件控制,并且每一所述區(qū)域控制向所述web部件管理器注冊。
10.如權(quán)利要求9所述的框架,其特征在于,所述web部件管理器跟蹤所述一個或多個部件控制之間的連接,并且其中,所述web部件管理器從所述web頁添加、移除以及移動部件控制。
11.如權(quán)利要求1所述的框架,其特征在于,所述一個或多個部件控制的至少一些包括用于與其它部件控制通信的接口。
12.如權(quán)利要求11所述的框架,其特征在于,所述一個或多個部件控制的至少一些向所述web部件管理器注冊所述接口。
13.如權(quán)利要求1所述的框架,其特征在于,所述一個或多個部件控制的至少一些包括用于與其它部件控制通信的多個接口,并且其中,所述一個或多個部件控制的至少一些向所述web部件管理器注冊所述多個接口。
14.如權(quán)利要求13所述的框架,其特征在于,所述多個接口的至少一部分是有不同語義的相同接口。
15.一種用于創(chuàng)建可由開發(fā)者和用戶定制的web頁的框架,其特征在于,所述框架包括從其中衍生部件控制的部件基類,其中,所述部件控制包括web部件、目錄部件和編輯器部件的一個或多個;從其中衍生區(qū)域控制的區(qū)域基類,所述區(qū)域控制包括以下的一個或多個web部件區(qū)域,用于布置包含在所述web部件區(qū)域中的web部件;目錄區(qū)域,用于布置包含在所述目錄區(qū)域中的目錄部件;以及編輯器區(qū)域,用于布置包含在所述編輯器區(qū)域中的編輯器部件。
16.如權(quán)利要求15所述的框架,其特征在于,部件控制的每一實例在區(qū)域控制的實例中定義。
17.如權(quán)利要求15所述的框架,其特征在于,特定區(qū)域控制內(nèi)的部件控制的每一實例具有類似的用戶界面。
18.如權(quán)利要求15所述的框架,其特征在于,所述部件控制的至少一些包括用于與在同一區(qū)域控制內(nèi)或另一區(qū)域控制內(nèi)的另一部件控制連接的連接端點。
19.如權(quán)利要求15所述的框架,其特征在于,所述編輯區(qū)域適合于用來提供在所述部件基類中定義的屬性的用戶輸入。
20.如權(quán)利要求19所述的框架,其特征在于,所述屬性是可導(dǎo)出的。
21.如權(quán)利要求20所述的框架,其特征在于,所述屬性的用戶輸入使用XML文檔導(dǎo)出。
22.如權(quán)利要求15所述的框架,其特征在于,它還包括web部件管理器類,其中,所述web部件管理器類跟蹤包含在所述區(qū)域控制內(nèi)的所述部件控制的任何實例。
23.如權(quán)利要求22所述的框架,其特征在于,特定部件控制能夠在同一區(qū)域控制內(nèi)或者向另一區(qū)域控制拖放。
24.如權(quán)利要求15所述的框架,其特征在于,特定目錄部件適用于提供可由用戶選擇來添加到特定區(qū)域控制的web部件的列表,其中,所述特定目錄部件包括用于允許用戶從被添加到web頁的所述特定區(qū)域控制的所述web部件列表中選擇的裝置。
25.如權(quán)利要求15所述的框架,其特征在于,每一部件控制都在持久格式文件中聲明。
26.如權(quán)利要求15所述的框架,其特征在于,所述部件基類包括以下的一個或多個確保每一所述部件控制使用類似的用戶界面來展現(xiàn)的屬性;定義特定區(qū)域控制如何展現(xiàn)在所述特定區(qū)域中每一部件控制周圍的用戶界面的框體類型屬性;定義特定部件控制對哪些用戶可用的角色屬性;以及每一部件控制的一個或多個部件圖標(biāo)。
27.如權(quán)利要求15所述的框架,其特征在于,所述每一web部件包括以下的一個或多個用于與其它web部件通信的連接接口;用于啟用所述web部件的個性化的啟用個性化屬性;幫助屬性;確定向最終用戶展現(xiàn)哪一用戶界面的一個或多個允許屬性;定義web部件是最小化、最大化還是普通的框體狀態(tài);當(dāng)設(shè)置為真時不顯示web部件的隱藏屬性;標(biāo)識包含所述web部件的區(qū)域控制的區(qū)域?qū)傩?;包含所述區(qū)域控制的ID的區(qū)域ID;包括與所述區(qū)域控制中其它web部件相關(guān)的所述區(qū)域控制的索引的區(qū)域索引。
28.如權(quán)利要求27所述的框架,其特征在于,所述編輯器部件是以下的一個或多個設(shè)置web部件的用戶界面屬性的外觀編輯器部件,其中,所述用戶界面屬性包括標(biāo)題、高度、寬度、框體狀態(tài)以及框體類型的一個或多個;設(shè)置web部件的布局屬性的布局編輯器,其中,所述布局屬性包括隱藏屬性、區(qū)域?qū)傩砸约皡^(qū)域索引屬性的一個或多個;設(shè)置行為屬性的行為編輯器部件;顯示被標(biāo)記為web可瀏覽的屬性的屬性柵格瀏覽器編輯器部件;以及自定義編輯器部件。
29.如權(quán)利要求15所述的框架,其特征在于,所述目錄部件展現(xiàn)了準(zhǔn)許最終用戶向web頁添加新web部件的用戶界面。
30.如權(quán)利要求15所述的框架,其特征在于,它還包括管理特定web頁上的所有部件控制的web部件管理器,其中,所述web部件管理器負(fù)責(zé)以下的一個或多個跟蹤所述特定web頁上的web部件控制;跟蹤所述特定web頁上的web部件區(qū)域控制;跟蹤所述特定web頁上的部件控制之間的連接;啟動所述部件控制之間的通信;以及跟蹤所述特定web頁的編輯狀態(tài)。
31.如權(quán)利要求30所述的框架,其特征在于,所述web部件管理器展現(xiàn)了用于添加、移除以及移動部件控制的一個或多個方法。
32.如權(quán)利要求31所述的框架,其特征在于,所述一個或多個方法由目錄部件、編輯器部件以及區(qū)域控制調(diào)用。
33.如權(quán)利要求29所述的框架,其特征在于,所述用戶界面可由管理員用來為所有用戶向web頁添加新web部件。
34.如權(quán)利要求19所述的框架,其特征在于,所述屬性的用戶輸入設(shè)置了所有用戶的屬性,并且所述屬性的用戶輸入由管理員執(zhí)行。
35.如權(quán)利要求15所述的框架,其特征在于,屬性在所述部件基類中定義,所述屬性可由web頁開發(fā)者以持久格式定義。
36.一種用于創(chuàng)建模塊化并且可由開發(fā)者或最終用戶定制的web頁的方法,其特征在于,所述方法包括在持久格式文件中聲明至少一個區(qū)域控制,其中,每一區(qū)域控制都從區(qū)域基類中衍生;在每一區(qū)域控制中聲明至少一個web部件控制,其中,所述web部件控制從部件類衍生;以及由每一區(qū)域控制展現(xiàn)每一所述區(qū)域控制的用戶界面元素以及所述至少一個web部件控制的一些用戶界面元素,使得至少一個web部件控制的每一個在每一區(qū)域內(nèi)具有類似的外觀。
37.如權(quán)利要求36所述的方法,其特征在于,在所述區(qū)域控制中聲明至少一個web部件控制還包括在控制格式文件中聲明所述至少一個web部件控制。
38.如權(quán)利要求37所述的方法,其特征在于,它還包括聲明web管理器部件,其中,所述web管理器部件跟蹤每一至少一個區(qū)域控制中的所述至少一個web部件控制。
39.如權(quán)利要求38所述的方法,其特征在于,它還包括所述web管理器部件啟動第一web部件控制和第二web部件控制之間的連接,使得所述第一web部件控制與所述第二web部件控制通信。
40.如權(quán)利要求36所述的方法,其特征在于,它還包括導(dǎo)出特定web部件或所述特定web部件的屬性。
41.如權(quán)利要求36所述的方法,其特征在于,它還包括導(dǎo)入特定web部件或所述特定web部件的屬性。
42.如權(quán)利要求41所述的方法,其特征在于,它還包括使用所導(dǎo)入的屬性設(shè)置當(dāng)前web部件控制的所述屬性的至少一部分。
43.如權(quán)利要求36所述的方法,其特征在于,它還包括為每一web部件控制定義一角色屬性來指定能夠訪問每一web部件控制的用戶。
44.如權(quán)利要求36所述的方法,其特征在于,它還包括以下的一個或多個使用從所述部件類衍生的編輯器部件來編輯特定web部件控制,其中,所述編輯器部件包含在編輯器區(qū)域內(nèi);使用從所述部件類衍生的目錄部件向特定區(qū)域添加額外的web部件控制,其中,所述目錄部件包含在目錄區(qū)域內(nèi);從區(qū)域移除所選擇的web部件控制;準(zhǔn)許每一web部件控制的一個或多個屬性可由最終用戶定制;以及允許最終用戶共享對web部件控制的個性化。
45.如權(quán)利要求36所述的方法,其特征在于,它還包括使用所述部件控制的屬性以使最終用戶能夠個性化所述部件控制。
46.如權(quán)利要求36所述的方法,其特征在于,它還包括使用所述部件控制的屬性來防止最終用戶個性化所述部件控制。
47.如權(quán)利要求36所述的方法,其特征在于,它還包括以所述持久格式聲明屬性來控制向所有最終用戶的用戶界面元素展現(xiàn)。
48.如權(quán)利要求36所述的方法,其特征在于,它還包括與每一區(qū)域控制的所述用戶界面元素以及所述至少一個web部件控制的所述一些用戶界面元素交互來控制對所有用戶類似的外觀。
49.具有用于執(zhí)行權(quán)利要求36所述的方法的計算機(jī)可執(zhí)行指令的計算機(jī)程序產(chǎn)品。
全文摘要
用于創(chuàng)建模塊化web頁的框架。該框架啟用包括web入口和web頁的模塊化、定制并個性化的web應(yīng)用的開發(fā)。該框架包括可擴(kuò)充部件基類和可擴(kuò)充區(qū)域基類。從部件基類衍生的部件控制包括web部件控制、編輯器部件控制以及目錄部件控制。區(qū)域控制、編輯器區(qū)域控制以及目錄區(qū)域控制從區(qū)域基類衍生。每一區(qū)域控制包括一個或多個部件控制,并且每一區(qū)域負(fù)責(zé)顯示每一相應(yīng)區(qū)域中的部件控制。web部件控制能夠與其它web部件控制通信。web部件控制能夠被編輯、移除或添加到區(qū)域控制。部件控制的功能可以在特定區(qū)域內(nèi)和跨不同區(qū)域的部件控制之中廣泛地變化。
文檔編號G06F15/00GK1627257SQ20041005989
公開日2005年6月15日 申請日期2004年6月18日 優(yōu)先權(quán)日2003年6月19日
發(fā)明者J·K·克羅尼, N·科沙里, M·哈德, G·S·林德霍斯特, A·薩納布里亞 申請人:微軟公司