專利名稱:動態(tài)菜單的重排序的制作方法
技術領域:
本發(fā)明通常涉及計算機系統(tǒng),并且特別涉及可以包括在,例如圖形用戶界面中的菜單的設計和操作。
背景技術:
圖形用戶界面(GUI)是很多現(xiàn)代計算機操作系統(tǒng),例如基于Windows的操作系統(tǒng)(Windows OS)的一種常見和有用的屬性。Windows OS在很多硬件平臺上運行,例如包括手提式個人計算機(PC)、臺式PC、工作站和網(wǎng)絡服務器。
當運行Windows OS中的一個應用程序時,用戶將經(jīng)??吹揭幌盗械钠聊划嬅?,這些畫面中可能依次包括一個或多個窗口。一個屏幕或一個窗口經(jīng)常向用戶提供多個菜單,這些菜單通過文本標號或圖標來進行識別。通常,菜單位于一個菜單欄中,該菜單欄包括多個相關菜單。用戶可以利用例如鼠標或鍵盤來選擇菜單。當選中一個菜單時,該Windows OS通過顯示構成該用戶選擇的菜單的一組菜單選項來進行響應。該菜單選項的表現(xiàn)形式可以是下拉菜單的形式,該下拉菜單源于被選擇的菜單。該下拉菜單依次包括多個菜單選項,通常以垂直堆棧的形式排列。只要用戶保持菜單打開,菜單選項就將保持有效。
作為一個菜單驅動的GUI的使用例子,假設一個PC用戶正在運行一個文字處理應用程序。該應用程序的菜單欄可能除了其它菜單外,還包括一個文件菜單。當用戶選擇文件菜單時,將出現(xiàn)一個下拉菜單,它包括例如剪切、復制、粘貼和替換等菜單選項(命令)。當用戶選擇前述的一個菜單選項時,PC將執(zhí)行對應的文字處理操作。
除了菜單驅動的GUIs對應用程序的使用具有顯著的貢獻外,GUIs還在應用程序開發(fā)系統(tǒng)的設計中具有廣泛的相關性。GUIs使應用程序開發(fā)過程變得明顯地更加易于處理,因此至少因為這個原因,它已經(jīng)成為很多可視編程語言的基本特征。
但是,除了前文所述外,至今所用的菜單欄和菜單選項的使用具有一定程度的不變性。就是說,一旦一個軟件應用程序被編好,下拉菜單中的菜單結構將不能由用戶進行定制。每個菜單選項都在該下拉菜單中占據(jù)一個固定的、或靜態(tài)的位置。這不只表現(xiàn)出它不能滿足特定用戶的特定喜好,這種靜態(tài)菜單操作位置的強加也導致很明顯的操作缺點。作為一個并非完全假定的相關情況,考慮在Visual C++集成開發(fā)環(huán)境(IDE)中工作的軟件開發(fā)人員的情況。當該開發(fā)人員選擇Visual C++IDE的“編譯”菜單時,他可以看到多個菜單選項的靜態(tài)排列結構,這些菜單選項包括處于靜態(tài)菜單選項位置的“編譯”和“全部重新編譯”選項。選擇該“全部重新編譯”選項可以將整個應用程序中的所有源代碼轉換為目標文件。另外,這些目標文件之間的必要連接也被建立以便徹底的執(zhí)行。相反,該“編譯”選項僅將處于開發(fā)或修改中的特定編碼編譯(或重新編譯)為目標編碼。菜單選項的靜態(tài)序列有時會使開發(fā)人員偏向于選擇“全部重新編譯”選項,雖然他本來是想選擇“編譯”選項。雖然開發(fā)人員僅僅希望使開發(fā)中的代碼變?yōu)榭蓤?zhí)行,但由于該非故意的菜單選擇,將執(zhí)行全部重新編譯,從而浪費很多處理時間(某種情況下,將達到半小時)。
因此,需要提供一種技術從而防止菜單選項用戶無意或非故意地選擇的可能。
對于本領域技術人員,參照下面將要簡要說明的附圖將可以更好的理解本發(fā)明的動態(tài)菜單重排序技術并且它的很多特點、優(yōu)點和性能將變得明顯,圖中相同的附圖標記將表示相同或相似的元件,其中圖1是在WindowsOS中運行應用程序時可以遇到的屏幕或窗口的圖形描述。
圖2A是當菜單選擇導致顯示出包括多個菜單選項的靜態(tài)下拉菜單時的屏幕的圖形描述。
圖2B是根據(jù)本發(fā)明的一個實施例的菜單選項的位置已經(jīng)被重新排序的屏幕的圖形描述。
圖3是根據(jù)本發(fā)明的一個實施例的計算機系統(tǒng)的系統(tǒng)方框圖。
圖4是根據(jù)本發(fā)明的用于實現(xiàn)動態(tài)菜單重排序技術的流程圖。
本領域技術人員應當可以理解圖中的元件僅僅被簡單和清楚的示出,而并沒有必要按比例畫出(除非在說明書中說明),例如,圖中某些元件的尺寸可能相對于其他元件被相對夸大,以便于加強對本發(fā)明實施例的理解。
具體實施例方式
在一個實施例中,提供一種技術來對各個菜單選項所占據(jù)的位置進行動態(tài)重排序,這些菜單選項包括在一個下拉菜單格式中。例如,一個計算機系統(tǒng)包括一個菜單驅動的GUI,該GUI從用戶處接收菜單選項重排序信息。PC系統(tǒng)響應于該菜單選項重排序信息,將至少一個菜單選項從其靜態(tài)位置重新排序到一個動態(tài)的用戶定義的位置。用戶定義的動態(tài)位置信息可以保存在一個配置文件中,從而使后來的菜單選擇所產(chǎn)生的下拉菜單具有符合用戶希望的菜單選項位置。
在一個實施例中,該菜單驅動的GUI可以是在Windows OS上運行的軟件應用程序的屬性。當運行這樣一個應用程序時,用戶經(jīng)常可以看到類似于圖1中所示的屏幕顯示10的一系列屏幕顯示。在標準形式下,作為當打開或操作一個軟件程序時出現(xiàn)的典型的屏幕顯示,屏幕顯示10包括例如工作區(qū)11、標題欄12、菜單欄13、狀態(tài)欄14和任務欄15。眾所周知,標題欄12占據(jù)窗口頂部的水平空間,并包含該窗口的名字(標題)。標題欄12還可包含用于關閉和調整窗口大小的框符或按鈕(未示出)。狀態(tài)欄14占據(jù)窗口底部的水平空間,包含與執(zhí)行的程序的當時條件相關的文本信息。與本發(fā)明目的更相關的,菜單欄13可以采用位于窗口上標題欄12緊下方的矩形框符的形式。
菜單欄13可包括多個菜單131、132、…、13n等,它們可由用戶通過例如鼠標或鍵盤進行選擇。通常,當一個菜單被選擇時,WindowsOS通過顯示組成用戶選擇的菜單的一組靜態(tài)圖項選項來進行響應。菜單選項可以如圖2A中所示的下拉菜單20的形式出現(xiàn),該下拉菜單源自于被選擇的菜單。下拉菜單20包括多個菜單選項201、202、…20n,只要用戶打開該菜單,這些菜單選項就保持有效。在圖2A中,菜單選項以如選項1、選項2、和選項3的垂直序列的形式出現(xiàn)。當然,下拉菜單20可包括大于或小于三個的菜單選項,顯示這三個菜單選項是試圖說明并且提高簡潔和清楚度。圖2A中的菜單選項的位置是“靜態(tài)的”,這些位置反映出GUI的先驗的設計和編制,并不需要與用戶對這些菜單選項中的一個或多個所希望的最佳位置相一致。
相反,圖2B示出一動態(tài)(即,用戶重排序)菜單21,其中菜單選項位置已經(jīng)由用戶、或根據(jù)用戶提供的信息重新排序為符合用戶的喜好或傾向的形式。注意在圖2B的菜單中,在靜態(tài)菜單中占據(jù)底部位置的選項3被重排序,從而占據(jù)圖2B中動態(tài)菜單21中的頂部位置;即,選項3占據(jù)了菜單21中的位置211,選項2和選項3分別向下移動到重排序位置212和21n。
對菜單選項位置的動態(tài)重排序的能力被認為是代表了對包括但不局限于圖3所示的計算機系統(tǒng)的多種計算機系統(tǒng)的有價值的改進。
現(xiàn)在參照圖3,在一個實施例中,計算機系統(tǒng)300包括一個處理器310,該處理器包括一個通用或專用處理器。處理器310可采用微處理器、微控制器、ASIC、可編程門陣列(PGA)等。在這里,術語“計算機系統(tǒng)”可以指任何類型的基于處理器的系統(tǒng),例如大型計算機、臺式計算機、服務器計算機、手提計算機、設備、機頂盒等。
在一個實施例中,處理器310可以通過主機總線315與存儲器集線器320連接,該存儲器集線器320又通過存儲器總線325與系統(tǒng)存儲器330連接。存儲器集線器320還可通過加速圖形接口(AGP)總線333與視頻控制器335連接,該視頻控制器335與顯示器337連接。該AGP總線333符合Intel Corporation,Santa Ckara,California于1998.5.4出版的加速圖形接口說明,修訂版2.0。
存儲器集線器320還可以(通過一集線器鏈路338)與一輸入/輸出(I/O)集線器340連接,該集線器340與一輸入/輸出(I/O)擴展總線342和一周邊元件擴展接口(PCI)總線344連接,該PCI總線344符合1995.6出版的PCI局部總線說明,版本為修訂版2.1。該I/O擴展總線342可以與一個控制對一個或多個I/O裝置訪問的I/O控制器346連接。如圖3所示,這些裝置在一個實施例中可包括存儲裝置,例如軟盤驅動器350和輸入裝置,例如鍵盤352和鼠標354。如圖3所示,I/O集線器340還可與例如硬盤驅動器356和光盤(CD)驅動器358連接。應當理解在計算集系統(tǒng)300中還可以包括其它存儲介質。
在一個可選實施例中,該I/O控制器346還可集成在I/O集線器340中,實現(xiàn)其它控制功能。PCI總線344還可與不同部件連接,例如與一網(wǎng)絡端口連接的網(wǎng)絡控制器360(未示出)連接。
其它裝置也可與該I/O擴展總線342和PCI總線344連接。這些裝置包括一輸入/輸出控制電路,該電路與并行端口、串行端口、非易失存儲器等連接。雖然上述的描述是參照系統(tǒng)300中的特定元件進行的,但應該考慮到對所描述和說明的實施例的多種修改和變化也是可能的。例如,主機橋路控制器和系統(tǒng)橋路控制器可以實現(xiàn)相當于存儲器集線器320和I/O集線器340所提供的功能。另外,可以使用多種總線協(xié)議中的任意一個。
在上文所述的計算機系統(tǒng)300中,可通過圖4實現(xiàn)對本發(fā)明的一個實施例的全面理解,圖4為一個流程圖,它示出根據(jù)本發(fā)明實施例實現(xiàn)菜單選項動態(tài)重排序的方式的一個例子。在基于GUI的應用程序的用戶操作(對應于例如程序的打開)中的點401處,用戶啟動操作,在點402,顯示出包括多個菜單的菜單欄。在點403,等待用戶選擇一個菜單。當用戶選擇一個菜單以后,這在某些時候可由鼠標點擊實現(xiàn),在點404判斷用戶是否選擇了一個先前菜單選項重排序的目標菜單。如果是,則在406,從存儲器中檢索該特定的重排序。用戶制定的菜單位置重排序信息可以通常存儲在例如一個配置文件中。然后,在屏幕上以重排序的位置向用戶顯示菜單選項,這些菜單選項組成用戶選擇的菜單。如果目標菜單不是先前用戶指定的重排序的目標,則在405項用戶顯示靜態(tài)菜單選項次序。
在另一情況中,當顯示菜單選項后,在點408,操作保持注意用戶接下來的進行(初始或其他)菜單選項重排序的要求。用戶可通過傳輸菜單重排序信息的形式傳達這種菜單選項重排序。在一個實施例中,用戶通過將所述的菜單選項從它此時在菜單選項位置層次中出現(xiàn)的位置(該位置可以是靜態(tài)位置或前一個重排序后的位置)拖拽到用戶希望的位置來傳達該菜單重排序信息。例如,利用上述假設的暗示,應用程序開發(fā)人員可將“編譯”選項移動到下拉菜單中的第一或其他顯著的位置。
由于大多數(shù)操作系統(tǒng)都可使菜單選項與拖放相關,并且相應的包括軟件邏輯來實現(xiàn)拖放用戶輸入,因此對菜單選項重排序的拖放協(xié)議被認為是很有用的。但是應當注意本發(fā)明的范圍并不限制在用戶通過拖放輸入來提供菜單位置重排序信息。用戶還可以已知或正在開發(fā)的其他任何方式來提供菜單重排序信息。
在一個實施例中,應當向用戶提供反饋,說明計算機系統(tǒng)正在處理菜單重排序請求。特別地,在用戶選擇(例如通過鼠標點擊)希望被重排序的菜單選項的實施例中,可將該菜單選項高亮度表示。當在屏幕上拖拽菜單直到該選項到達希望的重排序位置的期間內,使被選擇的菜單表現(xiàn)出虛像。當被選擇的菜單選項正好處于位置時,對應的文本標記或圖標表示出處于重排序后的位置。當鼠標點擊釋放時,將被重排序的菜單選項處于新的位置,其他菜單選項的位置重新定位。例如,在下拉菜單中,菜單選項簡單的在菜單選項的垂直堆棧中下移。
如果沒有檢測到重排序請求,則在411執(zhí)行被選擇的菜單選項。相反,如果檢測到菜單重排序請求,則在410根據(jù)用戶提供的重排序信息執(zhí)行菜單選項的重排序。在410,保持被選擇的菜單選項的重排序狀態(tài)。在一個實施例中,如上所述和如圖4中所示,可以通過將用戶希望的次序保存在一個配置文件中來保存菜單選項重排序信息。或者,可以通過自修改軟件操作來說明用戶的需要。但是,本發(fā)明并不限定一種特定的用于保留用戶菜單選項次序偏好的技術。然后,在409,執(zhí)行被選擇的菜單操作。
下面示出簡單的偽代碼,它們用于在基于Microsoft FoundationClass的面向目標的編程語言來實現(xiàn)菜單選項重排序<pre listing-type="program-listing"><![CDATA[ Class MyMenu inherit from CmainFram { bool DragHappening(); bool loadLastStateFile(); } bool MyMeny∷DragHapping() { //用戶已經(jīng)開始拖動菜單,這就是為什么我們在這里 DetectWhereDropped(…)//當拖動結束時,確定項目處于哪里 UpdateMenuFile(…)//寫入該選項所處的狀態(tài),在下一次加栽中使用 } bool MyMenu∷LoadLastStateFile() { if(DoesFileExist) {Loadlaststateinfo();//由于我們有一個文件,載入它的值 DrawNesMentu();//一旦先前載入,,提取菜單替換靜態(tài)菜單 } } …]]></pre>在至少一些實施例中,這里所述的動態(tài)重排序菜單選項的能力可以對基于GUI的軟件程序在進行作業(yè)處理、電子數(shù)據(jù)表、數(shù)據(jù)庫、圖形和其它類似用途方面的使用具有不可否認的好處。但是,如上所述,動態(tài)菜單重排序至少同樣對可能地更高級的計算機用戶,例如應用程序軟件開發(fā)人員具有好處。歷史上,應用程序開發(fā)人員通過使用高級的基于文本的編程語言例如BASIC、C、FORTRAN、PASCAL、COBOL等的應用來工作。但是,近來,在應用程序開發(fā)中,可視化編程語言已經(jīng)替代基于文本的語言,這極大的是因為可視化編程語言消除了手邊的編程任務和可應用的軟件解決方案之間的抽象水平。由于目前的技術發(fā)展水平,可視化編程語言固有的為菜單驅動,因此用戶指定菜單選項重排序的能力在這種環(huán)境下是需要的。
在上面的描述中,本發(fā)明以試圖說明并且傳達對本發(fā)明的徹底理解的方式參照特定實施例進行了闡述。但是,軟件和計算機系統(tǒng)的設計和操作領域的技術人員能夠意識到可以在不脫離本發(fā)明范圍的情況下,對專門描述的實施例進行修改和變化。
例如,本發(fā)明為了方便在上下文中大量描述了Windows OS。但是,這里所述的動態(tài)菜單重排序技術還可用于其它操作系統(tǒng)中,包括現(xiàn)有的和以后開發(fā)的。另外,本發(fā)明還可使用除了下拉菜單格式外的其它格式。而且,菜單重排序信息也可由用戶以除了鼠標點擊和鍵盤輸入以外的其他方式來實現(xiàn);并且也不用在用戶操作所述軟件的同時提供重排序信息。
雖然本發(fā)明已經(jīng)參照有限幾個實施例進行了描述,本領域技術人員將意識到其各種修改和變化。意圖在于附加權利要求覆蓋所有這些修改和變化,使之落入本發(fā)明的精神和范圍之內。
權利要求
1.一種方法,包括向用戶顯示多個菜單;從用戶處接收一個菜單選擇;根據(jù)該菜單選擇,向用戶顯示多個對應于被選擇菜單的菜單選項,每個菜單選項分別占據(jù)一個靜態(tài)菜單位置;從用戶處接收菜單選項重排序信息;和根據(jù)該菜單選項重排序信息,對各菜單選項占據(jù)的菜單位置進行重排序。
2.如權利要求1所述的方法,其中菜單選項重排序信息限定了至少一個菜單選項從一個靜態(tài)位置到用戶指定位置的重排序。
3.如權利要求2所述的方法,其中該菜單選項重排序信息是用戶以拖拉輸入的形式提供的。
4.如權利要求1所述的方法,還包括根據(jù)用戶提供的重排序信息,保持菜單選項位置信息。
5.如權利要求4所述的方法,其中該菜單選項重排序信息限定了至少一個菜單選項從一個靜態(tài)位置到用戶指定位置的重排序。
6.如權利要求5所述的方法,其中菜單選項重排序信息是用戶以拖拉輸入的形式提供的。
7.如權利要求5所述的方法,還包括向用戶顯示多個菜單;從用戶處接收一個隨后的菜單選擇;和根據(jù)該隨后的菜單選擇,向用戶顯示多個菜單選項,其中至少一個菜單選項占據(jù)一個用戶指定的位置。
8.如權利要求7所述的方法,其中菜單選項重排序信息是用戶以拖拉輸入的形式提供的。
9.如權利要求8所述的方法,其中菜單是以菜單欄的形式顯示的。
10.如權利要求8所述的方法,其中菜單選項是以下拉菜單的形式顯示的。
11.一種系統(tǒng),包括一處理器;一存儲裝置,與該處理器連接,該存儲裝置用于存儲指令,如果該指令被處理器執(zhí)行,就可以接收菜單選項重排序信息;和根據(jù)該菜單選項重排序信息,對至少一個菜單選項占據(jù)的菜單選項位置重排序。
12.如權利要求11所述的系統(tǒng),還包括指令,如果該指令被處理器執(zhí)行,就可以顯示多個菜單;接收一個菜單選擇;和根據(jù)該菜單選擇,顯示多個菜單選項,其中至少一個菜單選項占據(jù)一個由菜單選項重排序信息指定的菜單位置。
13.如權利要求11所述的系統(tǒng),還包括指令,如果該指令被處理器執(zhí)行,就可以根據(jù)菜單選項重排序信息,保持菜單選項位置信息。
全文摘要
在一個實施例中,一個菜單的動態(tài)菜單重排序是這樣實現(xiàn)的,顯示多個菜單(402);接收一個菜單選擇(403);根據(jù)該菜單選擇,顯示多個菜單選項(405),每個菜單選項分別占據(jù)一個菜單位置;接收重排序信息(408);和根據(jù)重排序信息,對至少一個菜單位置進行重排序,該菜單位置由各菜單選項占據(jù)(409)。在另一實施例中,根據(jù)重排序信息保持菜單選項位置信息;當菜單選擇后,顯示菜單選項,從而至少一個菜單選項占據(jù)一個用戶指定的位置。
文檔編號G06F9/44GK1573687SQ03160280
公開日2005年2月2日 申請日期2003年8月29日 優(yōu)先權日2003年5月23日
發(fā)明者T·A·克勞森 申請人:英特爾公司