允許嵌套對(duì)象拖放的方法及系統(tǒng)的制作方法【
技術(shù)領(lǐng)域:
】[0001]本發(fā)明涉及剪切-復(fù)制-粘貼,并且更具體地涉及嵌套拖放管理?!?br>背景技術(shù):
】[0002]數(shù)十年前,主要是由于個(gè)人計(jì)算設(shè)備允許的文檔創(chuàng)建和管理所帶來(lái)的方便,個(gè)人計(jì)算在生產(chǎn)性方面取得了巨大進(jìn)展。文字處理器這種最早的殺手級(jí)(killerapplicat1n)應(yīng)用不僅允許終端用戶構(gòu)思(craft)文檔的文本,還允許通過(guò)從文檔的一部分到另一部分的“剪切”和“粘貼”來(lái)處理文本的替換。在提供了僅僅基于字符的單任務(wù)處理用戶界面的早期計(jì)算環(huán)境下,盡管在基于字符的用戶界面時(shí)代的衰落時(shí)期(twilight)期間,終端和常駐應(yīng)用不僅允許在單個(gè)應(yīng)用中跨不同文檔進(jìn)行剪切和粘貼,還允許分別在不同的應(yīng)用中跨不同文檔地進(jìn)行剪切和粘貼,但是剪切和粘貼的動(dòng)作極大地限制于單個(gè)文檔。[0003]圖形用戶界面(GUI)計(jì)算環(huán)境的出現(xiàn)加速了個(gè)人計(jì)算的發(fā)展,并且支持了文字處理器的普及的全球化。剪切板變成新的環(huán)境的焦點(diǎn),其不僅允許文本數(shù)據(jù)的計(jì)算機(jī)內(nèi)部移動(dòng),還允許包含圖形對(duì)象的其他類型的數(shù)據(jù)的計(jì)算機(jī)內(nèi)部移動(dòng)。在圖形用戶界面中的剪切和粘貼的一般范型(即,將對(duì)象從源位置拖放至目標(biāo)位置)在基于個(gè)人計(jì)算機(jī)的第一個(gè)圖形用戶界面的廣泛分布之后到如今持續(xù)了超過(guò)二十年。[0004]使對(duì)象能夠進(jìn)行拖放是定義對(duì)所檢測(cè)到的拖拽以及釋放事件的編碼反應(yīng)的問(wèn)題。關(guān)于簡(jiǎn)單化的對(duì)象是相對(duì)非常直接地。然而,對(duì)于作為其他對(duì)象的組合(composit1n)的對(duì)象,使組合對(duì)象能夠如此會(huì)是非常有挑戰(zhàn)性的。更進(jìn)一步地,對(duì)于作為其他對(duì)象的嵌套組合的對(duì)象,問(wèn)題可能變得更加復(fù)雜。具體地,用于拖放的程序代碼必須初始確定被選擇進(jìn)行拖拽的對(duì)象是否是嵌套在組合內(nèi)的對(duì)象,整個(gè)嵌套的組合是否已經(jīng)被選擇進(jìn)行拖放,或者僅僅嵌套組合的子集已經(jīng)被選擇進(jìn)行拖放。另外,確定要在拖放操作期間呈現(xiàn)的化身(avatar)可能極大地取決于選擇了對(duì)象的嵌套組合的哪個(gè)部分進(jìn)行拖放的確定。【
發(fā)明內(nèi)容】[0005]本發(fā)明的實(shí)施例關(guān)于拖放對(duì)象的嵌套組合解決現(xiàn)有技術(shù)的不足,并且提供一種利用對(duì)象克隆允許嵌套對(duì)象拖放的新穎且非顯而易見(jiàn)的方法、系統(tǒng)以及計(jì)算機(jī)程序產(chǎn)品。在本發(fā)明的實(shí)施例中,利用對(duì)象克隆允許嵌套對(duì)象拖放的方法包括檢測(cè)在應(yīng)用的GUI中的拖拽事件以及識(shí)別與該拖拽事件相關(guān)聯(lián)的GUI中的對(duì)象。該方法還包括在存儲(chǔ)器中取得嵌套在所識(shí)別的對(duì)象中的GUI中的其他對(duì)象的一個(gè)或多個(gè)克隆,以及為所識(shí)別的對(duì)象以及一個(gè)或多個(gè)克隆產(chǎn)生化身。最后,該方法包括在顯示器中將化身從拖拽事件的源位置移動(dòng)至在應(yīng)用的GUI中檢測(cè)到的釋放事件的目標(biāo)位置。[0006]在實(shí)施例的一個(gè)方面中,在創(chuàng)建所識(shí)別的對(duì)象用于在GUI中使用時(shí)創(chuàng)建所述克隆并且與所識(shí)別的對(duì)象一起存儲(chǔ)。在實(shí)施例的另一方面中,在應(yīng)用的GUI中檢測(cè)釋放事件,并且根據(jù)該釋放事件確定目標(biāo)位置。最后,將所識(shí)別的對(duì)象和在所識(shí)別的對(duì)象中嵌套的GUI中的其他對(duì)象移動(dòng)到GUI中的目標(biāo)位置。[0007]在本發(fā)明的另一個(gè)實(shí)施例中,GUI數(shù)據(jù)處理系統(tǒng)配備有:具有存儲(chǔ)器和至少一個(gè)處理器的主機(jī)計(jì)算機(jī)、在該主機(jī)計(jì)算機(jī)的存儲(chǔ)器中執(zhí)行的操作系統(tǒng)、由操作系統(tǒng)控制并且提供在其上顯示不同的對(duì)象的GUI的應(yīng)用、以及耦合到GUI的嵌套對(duì)象拖放模塊。該模塊包括程序代碼,該程序代碼當(dāng)在主機(jī)計(jì)算機(jī)的存儲(chǔ)器中執(zhí)行時(shí)被使能以通過(guò)以下處理來(lái)響應(yīng)GUI中的拖拽事件:識(shí)別GUI中的對(duì)象中與拖拽事件相關(guān)聯(lián)的對(duì)象,將在所識(shí)別的對(duì)象中嵌套的GUI中的其他對(duì)象的一個(gè)或多個(gè)克隆取得到存儲(chǔ)器,對(duì)所識(shí)別的對(duì)象和所述一個(gè)或多個(gè)克隆產(chǎn)生化身,并且將所述化身的顯示從拖拽事件的源位置移動(dòng)到在應(yīng)用的GUI中檢測(cè)到的釋放事件的目標(biāo)位置。[0008]本發(fā)明的另外的方面部分將在下面的說(shuō)明中闡述,部分將從該說(shuō)明而顯而易見(jiàn),或者可以通過(guò)對(duì)本發(fā)明的實(shí)踐而學(xué)習(xí)到。本發(fā)明的方面將通過(guò)在所附的權(quán)利要求書(shū)中具體指出的要素和組合來(lái)實(shí)現(xiàn)并獲得。要理解的是,前面的一般性的描述和下面的詳細(xì)說(shuō)明都是示例性的,并且僅僅是示例性的,而不是對(duì)如所要求保護(hù)的發(fā)明的限制。【附圖說(shuō)明】[0009]結(jié)合到本說(shuō)明書(shū)中并構(gòu)成本說(shuō)明書(shū)的一部分的附圖例示了本發(fā)明的實(shí)施例,并且與說(shuō)明書(shū)一起用于解釋本發(fā)明的原理。此處例示的實(shí)施例是目前優(yōu)選的,然而,要理解的是,本發(fā)明并不限于所示的明確布置和手段,附圖中:[0010]圖1是利用對(duì)象克隆允許嵌套對(duì)象拖放(draganddrop)的過(guò)程的圖示;[0011]圖2是被配置用于利用對(duì)象克隆允許嵌套對(duì)象拖放的GUI數(shù)據(jù)處理系統(tǒng)的示意性例示;以及[0012]圖3是例示利用對(duì)象克隆允許嵌套對(duì)象拖放的過(guò)程的流程圖。【具體實(shí)施方式】[0013]本發(fā)明的實(shí)施例提供用于利用對(duì)象克隆允許嵌套對(duì)象拖放。根據(jù)本發(fā)明的實(shí)施例,對(duì)于對(duì)象的嵌套組合中的所選擇的對(duì)象,可以在GUI中的源位置處檢測(cè)拖拽事件,嵌套組合中的每個(gè)對(duì)象單獨(dú)地存儲(chǔ)在計(jì)算機(jī)的存儲(chǔ)器中。此后,響應(yīng)于拖拽事件,可以將嵌套在所選擇的對(duì)象之下的對(duì)象中的各個(gè)對(duì)象的克隆取得到存儲(chǔ)器中,并且可以為所選擇的對(duì)象及其克隆產(chǎn)生化身。隨后,在拖放期間并且在釋放之前,該化身可以在⑶I中可視地顯示,并且可以從源位置移動(dòng)到GUI中的目標(biāo)位置。響應(yīng)于在目標(biāo)位置處的釋放,可以將所選擇的對(duì)象以及對(duì)應(yīng)于克隆的嵌套組合中的那些對(duì)象放置在目標(biāo)位置處。[0014]在另外的例示中,圖1圖示了利用對(duì)象克隆允許嵌套對(duì)象拖放的過(guò)程。如圖1所示,可以對(duì)應(yīng)用提供應(yīng)用⑶I100,并且可以包括不同的對(duì)象110、120。對(duì)象110、120可以包括與其他所包含的對(duì)象140的關(guān)聯(lián),以便提供對(duì)象140的嵌套。進(jìn)一步地,包含嵌套的對(duì)象140的對(duì)象110可以嵌套在⑶1100的對(duì)象110內(nèi)。雖然為了簡(jiǎn)單說(shuō)明的目的,此處僅僅示出了三個(gè)對(duì)象110、120、130包含嵌套對(duì)象140,但是在⑶I100中支持另外的嵌套程度以及嵌套對(duì)象的數(shù)量。[0015]可以對(duì)⑶I100提供嵌套拖放邏輯170??梢詫⒃撉短淄戏胚壿?70與對(duì)象110、120、由此包含的嵌套對(duì)象140的克隆190(或者確切的數(shù)據(jù)復(fù)本)中的每一個(gè)相關(guān)地存儲(chǔ)在存儲(chǔ)器180中。因此,克隆190可以包括與對(duì)象110相關(guān)的對(duì)象130的克隆(或者確切地,數(shù)據(jù)復(fù)本)以及對(duì)象130的嵌套對(duì)象140的克隆。利用克隆190,嵌套拖放邏輯170可以通過(guò)識(shí)別已經(jīng)與指針160相關(guān)地選擇的對(duì)象130并且通過(guò)基于所選擇的對(duì)象130和嵌套在其中的對(duì)象140的克隆產(chǎn)生化身150來(lái)響應(yīng)拖拽事件。類似地,利用克隆190,嵌套拖放邏輯170可以通過(guò)將所選擇的對(duì)象130以及嵌套在其中的對(duì)象140放置在⑶I100中、在釋放事件內(nèi)記錄的指針160的位置附近的位置處來(lái)響應(yīng)釋放事件。[0016]結(jié)合圖1所述的過(guò)程可以在⑶I數(shù)據(jù)處理系統(tǒng)中實(shí)現(xiàn)。在又一個(gè)例示中,圖2示意性地示出了被配置用于利用對(duì)象克隆允許嵌套對(duì)象拖放的GUI數(shù)據(jù)處理系統(tǒng)。該系統(tǒng)可以包括具有存儲(chǔ)器和至少一個(gè)支持操作系統(tǒng)220的執(zhí)行的處理器的主機(jī)計(jì)算機(jī)210。操作系統(tǒng)220轉(zhuǎn)而可以控制(host)提供⑶I240的應(yīng)用230的操作,通過(guò)該⑶I240,終端用戶與應(yīng)用230的程序邏輯進(jìn)行交互。⑶I240可以程序地鏈接到嵌套拖放模塊300。[0017]嵌套拖放模塊300可以包括當(dāng)在計(jì)算機(jī)210的存儲(chǔ)器中被執(zhí)行時(shí)可以被使能以在存儲(chǔ)器中創(chuàng)建用于GUI270中的每個(gè)對(duì)象的克隆250或?qū)ο?70中的對(duì)應(yīng)一個(gè)的確切數(shù)據(jù)復(fù)本的程序代碼。例如,每個(gè)克隆250都可以在創(chuàng)建對(duì)象270的嵌套的一個(gè)以用于在GUI240中使用時(shí)被創(chuàng)建,并且與對(duì)象270的對(duì)應(yīng)的嵌套的一個(gè)一起存儲(chǔ)。嵌套拖放模塊300的程序代碼還可以被使能以通過(guò)識(shí)別對(duì)象270中所選擇的一個(gè)以及在對(duì)象270中所選擇的一個(gè)中嵌套的對(duì)象270中的其他對(duì)象來(lái)拖拽事件。[0018]嵌套拖放模塊的程序代碼還可以被使能以通過(guò)以下處理來(lái)響應(yīng)拖拽事件:首先利用對(duì)象270中的被選擇的一個(gè)和對(duì)應(yīng)于在對(duì)象270中的被選擇的一個(gè)中嵌套的對(duì)象270中的其他對(duì)象的那些克隆250來(lái)產(chǎn)生化身260,然后通過(guò)利用化身260對(duì)⑶I240中的拖放操作進(jìn)行可視化。嵌套拖放模塊的程序代碼還可以被使能以通過(guò)以下處理來(lái)響應(yīng)在GUI240中的一位置處的釋放事件:將對(duì)象270中的被選擇的一個(gè)以及在對(duì)象270中的被選擇的一個(gè)之中嵌套的對(duì)象270中的其他對(duì)象移動(dòng)到GUI240中的該位置處。[0019]值得注意的是,在該實(shí)施例的一個(gè)方面中,嵌套對(duì)象拖放模塊300的程序代碼可以利用“Dojo”模塊化Javascript庫(kù)。因此,此處例示了示例性的基于Dojo的實(shí)現(xiàn)方式:[0020]varsourcel=newdoj0.dnd.Source(divl,{copyOnly:^true^,creator:[0021]this.documentSetCreator});[0022]sourcel.checkAcceptance=funct1n(){returnfalse;}[0023]sourcel.1nsertNodes(false,[{data:{name:docSetName,docSetDocs:[0024]docSetDocs},type:["documentSet"]},]);[0025]varsource2=newdoj0.dnd.Source(tr,{copyOnly:"true",creator:[0026]this.documentCreator,});[0027]source2.checkAcceptance=funct1n(){returnfalse;}[0028]source2.1nsertNodes(false,[[0029]{data:docSetDocs[0],type:["sendDocument"]},[0030]{data:docSetDocs[I],type:["receiveDocument"]},[0031]{data:docSetDocs[2],type:["sendDocument"]},[0032]{data:docSetDocs[3],type:["receiveDocument"]},[0033]]);[0034]documentSetCreator:funct1n(item,hint){[0035]vardiv=doj0.create(〃div〃,{innerHTML:1tem.data,name});[0036]if(hint=="avatar"){[0037]vartable=doj0.create("table",{},div,"last");[0038]vartr=doj0.create("tr",{},table,〃last");[0039]for(vari=0;i<item.data.docSetDocs.length;i++){[0040]vartd=doj0.create("tcT,{style:"text-align:center;padding:1Opx;",innerHTML:[0041]item.data.docSetDocs[i].number},tr,"last");[0042]varimg=doj0.create(^img^,{style:^display當(dāng)前第1頁(yè)1 2