<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Feeling

        三人行,必有我?guī)熝?/p>

       ::  :: 新隨筆 :: 聯(lián)系 ::  :: 管理 ::
      185 隨筆 :: 0 文章 :: 392 評(píng)論 :: 0 Trackbacks

    #

    網(wǎng)上關(guān)于Eclipse Fragment的資料比較少,引用Eclipse Wiki的一段話:

    An Eclipse Fragment is a way of putting your own classes into the "class loader" of another package (basically, it's as though your class was actually in the other package). If you combine this ability of a Fragment with the notion of a plugin's classpath ordering, then you can force your class to load before a like-named class in the original package.

    簡(jiǎn)而言之,F(xiàn)ragment可以利用Eclipse平臺(tái)的ClassLoader機(jī)制替換原有Plugin的某些文件,以便實(shí)現(xiàn)自己的功能。如果僅僅是因?yàn)镻lugin擴(kuò)展,而需要替換自己項(xiàng)目的某些Plugin,可以參考文章:

    http://wiki.eclipse.org/Steps_to_use_Fragments_to_patch_a_plug-in  (來(lái)之不易,感興趣的可以收藏下)

    讀完這篇文章,你大概就應(yīng)該能夠了解到Fragment的實(shí)現(xiàn)分為兩部分:Host 和 Patch。這兩部分對(duì)應(yīng)的plugin的manifest.mf文件都需要做特殊處理,對(duì)于Patch的build方式也要特殊處理,那就是build出來(lái)的plugin jar里放置的不是松散的class文件,而是一個(gè)特殊的jar文件,這個(gè) jar 文件定義在Host plugin的manifest.mf 的classpath里面。

    通常情況下,按照這篇文章的做法是沒(méi)有問(wèn)題的。但是在開(kāi)發(fā)階段,有一種情況可能無(wú)法實(shí)現(xiàn)class的替換。

    我公司的項(xiàng)目是使用perforce進(jìn)行項(xiàng)目版本控制的,但是perforce比較傻,有些重要的功能沒(méi)有實(shí)現(xiàn),而又很關(guān)鍵,因此我想自己針對(duì)perforce的eclipse plugin做一個(gè)fragment,添加自己想要的功能。但是這個(gè)plugin沒(méi)有source code,而我自己的hack也是反編譯class文件進(jìn)行的。所以在我的work space里,并沒(méi)有Host plugin的 project。結(jié)果按照這篇文章的做法,始終不能在workbench debug的狀態(tài)下,正確load我hack過(guò)的class。因?yàn)樵诖a模式下面是可以正確load的,而現(xiàn)在沒(méi)有代碼,在數(shù)次檢驗(yàn)無(wú)果之后,只能針對(duì)ClassLoader去思考了。Host文件里要求一個(gè)jar文件,我就用PDE 將 fragment export出來(lái),把Fragment plugin jar 包里包含的那個(gè) jar 文件解壓出來(lái),放到 patch project 里,然后重新Debug, OK,這次果然沒(méi)問(wèn)題了。一個(gè)小小的Class Loader問(wèn)題,真的能夠要人命呀……這應(yīng)當(dāng)算是Eclipse的一個(gè)bug吧,除非是對(duì)一個(gè)Plugin進(jìn)行hack,否則一般也不會(huì)碰到這種情況。普通的項(xiàng)目開(kāi)發(fā),肯定會(huì)包含Host Plugin的Project。

    我的經(jīng)歷權(quán)且當(dāng)做飯后談資,不足為慮。我這兒想說(shuō)的是Fragment機(jī)制非常好用,也易于Plugin擴(kuò)展。比如你的項(xiàng)目分為Open Source 和 Commercial 2種的話, Commercial 部分也可以通過(guò)Fragment來(lái)實(shí)現(xiàn),不一定需要走Extension Point路線。由于網(wǎng)上相關(guān)文章不多,還需要自己多多研究,了解其機(jī)制。

    posted @ 2009-09-10 16:42 三人行,必有我?guī)熝?閱讀(1742) | 評(píng)論 (0)編輯 收藏

    自定義控件通常是從一個(gè)Composite或者Canvas繼承而來(lái),但是缺省狀態(tài)下,這兩個(gè)控件都無(wú)法通過(guò)鍵盤(pán)的Tab鍵得到焦點(diǎn)。通過(guò)對(duì)SWT的debug,我發(fā)現(xiàn)要實(shí)現(xiàn)該事件,必須滿足一個(gè)必要條件:為自定義控件安裝一個(gè)KeyEvent的監(jiān)聽(tīng)器

    實(shí)際上我個(gè)人認(rèn)為這出自于SWT的實(shí)現(xiàn)者自己的考慮,可能認(rèn)為如果沒(méi)有KeyListener,也就意味著沒(méi)有Key的操作,那么也無(wú)需通知Travserse事件,Travserse事件的前提就是Key操作。但是在某些特定情況下我們不需要KeyListener,也可以模擬出KeyEvent的效果,比如通過(guò)TraverseListener的keyTraversed方法。總而言之,想通過(guò)鍵盤(pán)為某一個(gè)自定義控件獲取焦點(diǎn),就老老實(shí)實(shí)的給控件加一個(gè)KeyListener吧。

    此處附加一些和Traverse相關(guān)的小知識(shí):

    1、如何通過(guò)鍵盤(pán)的Tab鍵跳出 Multiple Style 的Text?
            請(qǐng)使用 Ctrl+Tab 組合鍵。

    2、如何通過(guò)鍵盤(pán)操作讓上一個(gè)控件獲取焦點(diǎn)?
            請(qǐng)使用 Shift+Tab 或者 Ctrl+Shift+Tab 組合鍵。

    3、Button 可以通過(guò)回車(chē)鍵和空格鍵激活。所以如果有些地方無(wú)法使用回車(chē)鍵(比如按鈕在Dialog中),可以考慮使用空格鍵。

    4、一些特殊的KeyCode:
            回車(chē)鍵:SWT.KEYPAD_CR
            小鍵盤(pán)的回車(chē)鍵:SWT.TRAVERSE_RETURN
            方向鍵:SWT.ARROW_UP,SWT.ARROW_DOWN,SWT.ARROW_LEFT,SWT.ARROW_RIGHT
    posted @ 2009-04-07 11:22 三人行,必有我?guī)熝?閱讀(2246) | 評(píng)論 (2)編輯 收藏

    項(xiàng)目地址:http://findbugs.sourceforge.net/

    用于分析項(xiàng)目代碼,自動(dòng)發(fā)現(xiàn)項(xiàng)目潛在Bug,萬(wàn)中無(wú)一的好東西,絕對(duì)值得下載一試,有興趣的自己研究。
    TeamLeader和PM 強(qiáng)烈推薦,用于Code Review。
    posted @ 2009-02-16 00:02 三人行,必有我?guī)熝?閱讀(2875) | 評(píng)論 (5)編輯 收藏

    做不下去了,Vista快把我逼瘋了,啥都不支持,隨意取消n多API,開(kāi)發(fā)人員能做的事情太有限了,Vista你到底想干什么?

    看一看MSDN,全是抱怨Vista的。管理員給出的答案就是按照兼容XP的方式運(yùn)行,這算哪門(mén)子解決方案呀。

    Have you tried running your application elevated? (Right Click->Run As Administrator) If this doesn't work try applying an XP SP2 Compatibility shim from the Compatibility Tab in the properties dialog. (Right Click->Properties | Compatibility).

    Let me know if this works.

    Thanks!


    怒呀!!!!!!!

    從Win3.1 到 Vista,沒(méi)有哪個(gè)版本比Vista更失敗的,無(wú)論是從用戶角度,還是從開(kāi)發(fā)角度。微軟是不是想倒閉不做了?
    posted @ 2008-12-05 18:16 三人行,必有我?guī)熝?閱讀(2302) | 評(píng)論 (5)編輯 收藏

    沉寂了一段時(shí)間,現(xiàn)在繼續(xù)SWT Win32 Extension的開(kāi)發(fā),說(shuō)實(shí)話,最近的進(jìn)展挺失敗的。Black Glossy效果我發(fā)現(xiàn)在某些機(jī)器上的顯示效果非常的卡,我自己的機(jī)器卻沒(méi)有任何問(wèn)題。另外就是我最近在XP下實(shí)現(xiàn)了Window Mixer API,用來(lái)管理系統(tǒng)聲音。Win98,2000,XP都沒(méi)有問(wèn)題,結(jié)果Vista讓我郁悶了,Vista居然取消了Mixer,我哭呀。以下是微軟員工給出的答案:

    That's because the mixer APIs are virtualized on Windows Vista - you don't get to see the real audio hardware by default, only a virtualized version.  We did this because the vast majority of applications that used the mixer APIs were using them to control their own volume, which is quite rude (it says "I own the box, no other sounds on the system matter").

     You have two choices.  The first is to run your application in XP compatibility mode, in which case you'll be able to access the real audio hardware (please note: you'll see exactly what the hardware provides, which may lead to surprising results).

     The other choice is to use the new Vista audio engine APIs.  either the IAudioEndpointVolume API which allows you access to the master volume for each of the audio endpoints on the machine.  If you really need to access the actual audio controls the IDeviceTopology interface will allow you direct access to the various controls on the audio hardware.

    沒(méi)脾氣了,只能專(zhuān)門(mén)為Vista實(shí)現(xiàn)一套簡(jiǎn)單的API了。
    posted @ 2008-10-23 18:25 三人行,必有我?guī)熝?閱讀(2387) | 評(píng)論 (5)編輯 收藏

    最近做了一個(gè)可視化編輯器相關(guān)的項(xiàng)目,采用了GMF。現(xiàn)在項(xiàng)目即將進(jìn)入尾聲,以后可能不再接觸這個(gè)東西,so在還沒(méi)有忘掉之前,將經(jīng)驗(yàn)記錄下來(lái)以供大家參考。 當(dāng)然做這個(gè)項(xiàng)目之前,我對(duì)GMF,EMF一無(wú)所知,只是對(duì)GEF有所了解,所以可能會(huì)有些囫圇吞棗的感覺(jué),但是相信我的理解還是會(huì)對(duì)各位有所幫助。

    GMF其實(shí)是一個(gè)整合了GEF,EMF的自動(dòng)化生成代碼的項(xiàng)目。使用GMF,可以快速的生成一個(gè)包含可視化編輯器的項(xiàng)目,這一點(diǎn)網(wǎng)上有文章介紹:15分鐘學(xué)會(huì)GMF。15分鐘是夸張了一點(diǎn),不過(guò)15天完成一個(gè)可視化項(xiàng)目,對(duì)一個(gè)熟練的GMF程序員來(lái)說(shuō),卻絕對(duì)不是什么難事。但是既然使用了GMF框架,你就不得不面對(duì)以下幾個(gè)問(wèn)題:

    一、既然是框架,自然要遵守框架的規(guī)則,GMF是模式驅(qū)動(dòng)設(shè)計(jì)的,也就是說(shuō)必須建好模型,才能進(jìn)行下一步的開(kāi)發(fā)工作。但是國(guó)內(nèi)很多項(xiàng)目,需求總是不斷更新,這種情況下,不要輕易使用GMF。
    二、使用GMF框架,自然不具備GEF的靈活性,很多地方都被限制住了,不適合做靈活性非常大的圖形設(shè)計(jì)。
    三、不得不忍受GMF里大量的bug。

    我比較過(guò)GMF1.0,2.0,2.1三個(gè)版本,其中1.0完全不能容忍,2.0比較傻,2.1還過(guò)得去,所以GMF還是值得大家期待的,畢竟是越做越好。


    一個(gè)比較簡(jiǎn)單的GMF流程編輯器

    個(gè)人感覺(jué)GMF非常適合做流程編輯器,主要是圖形要求簡(jiǎn)單,并且適合GMF自動(dòng)布局,兼之對(duì)模型要求不高。

    在學(xué)習(xí)GMF之前,有必要研究一下GEF和EMF,其中GEF是必須要有所了解的,而對(duì)EMF要求不算太高,能建一個(gè)ecore模型,了解emf的commandstack就夠了(其實(shí)我本人不太喜歡EMF,我更喜歡用自己的模型框架)。

    GMF的學(xué)習(xí)周期大概2周左右,上手到熟練大概需要1個(gè)月的時(shí)間(我自己的學(xué)習(xí)周期),當(dāng)然這期間會(huì)碰到各種各樣的技術(shù)問(wèn)題,針對(duì)不同的case,碰到的問(wèn)題也會(huì)不一樣,而我這個(gè)系列的文章,主要就是把我所遇到的問(wèn)題陳列出來(lái),并提供一個(gè)解決之道。

    附GMF相關(guān)資料:
    八進(jìn)制:GMF常見(jiàn)問(wèn)題
    GMF Newsgroup Q and A
    posted @ 2008-09-04 14:52 三人行,必有我?guī)熝?閱讀(2547) | 評(píng)論 (4)編輯 收藏

    在Birt Designer中,Binding 是無(wú)處不在的,如何正確的是用Birt的Binding呢?首先我們需要知道Birt的Binding Type。

    Birt的Binding type隨著B(niǎo)irt的版本的升級(jí)而越來(lái)越豐富,早期的Birt版本只有2種類(lèi)型:為自己創(chuàng)建一個(gè)Data Column Binding,和使用Container的Data Binding,隨著CrossTab的出現(xiàn),進(jìn)而出現(xiàn)了Cube,ReportItem Reference Binding的概念。

    普通的Binding,一般是通過(guò)屬性編輯器的BindingPage來(lái)創(chuàng)建,可以set一個(gè)Data set,然后自動(dòng)創(chuàng)建一個(gè)Binding列表。Crosstab和Chart兩種類(lèi)型的Report Item 可以不依賴(lài)于Data set,而采用Cube來(lái)作為Bingding源。而ReportItem Reference 的概念更是簡(jiǎn)便了Binding的生成,我們可以讓一個(gè)ReportItem 直接引用另外一個(gè)ReportItem的Binding,而非僅僅是Container的Binding,當(dāng)然既然是引用,那么你是無(wú)法編輯這些Binding的,而且被引用的ReportItem必須包含一個(gè)名字,有些ReportItem比如Table本身是可以不設(shè)名字的,但在這個(gè)地方你就要加上了。

    再來(lái)說(shuō)說(shuō)Binding的設(shè)置,我們可以通過(guò)Binding Dialog和Binding Page來(lái)設(shè)置,這兩種設(shè)置是不同的,如果在Binding Dialog上添加一個(gè)Binding,那么這個(gè)Binding是添加到這個(gè)Report Item的BindingHolder身上,如果在 Binding Page上設(shè)置,則Bindnig會(huì)添加到自身,讓自己成為BindingHolder。
    posted @ 2008-07-04 11:47 三人行,必有我?guī)熝?閱讀(2614) | 評(píng)論 (1)編輯 收藏

    通過(guò)打開(kāi)Birt透視圖,然后Reset至缺省的Layout,我們能夠看到基本的一些View和一個(gè)主要的報(bào)表可視化編輯器。

    先來(lái)說(shuō)一下View,Birt主要的View包含7塊:

    左上角包含3個(gè)視圖,Palette,Data Explorer和Resource Explorer,Palette里放置了報(bào)表常用的可視化組件,直接將這些組件拖到報(bào)表設(shè)計(jì)器的時(shí)候,這些組件并沒(méi)有作特殊的初始化處理,而從Data Explorer里向設(shè)計(jì)器拖入一個(gè)Dataset會(huì)自動(dòng)生成一個(gè)Table,拖入一個(gè)Cube會(huì)生成一個(gè)Crosstab,拖入一個(gè)Dataset Column會(huì)生成一個(gè)DataItem。Data Explorer主要是用來(lái)管理和顯示數(shù)據(jù)源。Resource Explorer 老版本里是Library Explorer,新版本則變更為了Resource Explorer,用來(lái)特別顯示Library,CSS文件,其他文件則不進(jìn)行特殊處理。

    左下角有2個(gè)視圖,包含Navigator視圖和Online視圖,Navigator視圖是用來(lái)建立Birt項(xiàng)目用的,如果是Birt Rcp版本,我們則看不到這個(gè)視圖,這是IDE版本專(zhuān)有的一個(gè)視圖,在Rcp版本里沒(méi)有Project這個(gè)概念,直接以文件的形式進(jìn)行管理。Outline是Birt里較為重要的視圖,所有的報(bào)表部件都會(huì)在這個(gè)View里顯示并會(huì)隨著報(bào)表的變化實(shí)時(shí)刷新。

    右下角包含了Property Editor 和 Problems兩個(gè)視圖, Property Editor 用來(lái)編輯每個(gè)可視化報(bào)表元素的屬性,一般比較常用的屬性都會(huì)在前幾個(gè)Tab頁(yè)里,但是有些屬性前幾個(gè)Tab頁(yè)里都沒(méi)有,這時(shí)候需要選擇Advanced這個(gè)Tab頁(yè),它里面包含了這個(gè)元素所有可用的屬性,如果連這兒也沒(méi)有,那么說(shuō)明該元素不存在你想要的屬性。Problems視圖則用來(lái)顯示報(bào)表收集到的一些問(wèn)題,如果報(bào)表校驗(yàn)的時(shí)候發(fā)生錯(cuò)誤,會(huì)在此處顯示出來(lái)。

    以上的那些視圖屬于缺省視圖,但還有幾個(gè)視圖也比較有用,一個(gè)是Error log視圖,一個(gè)是Example視圖。Error log視圖主要是開(kāi)發(fā)用的,當(dāng)你使用Birt進(jìn)行二次開(kāi)發(fā)的時(shí)候,難免會(huì)碰到一些bug,當(dāng)你感覺(jué)有問(wèn)題的時(shí)候,不妨打開(kāi)error log視圖,只要Birt捕捉到了異常,一般都會(huì)顯示在這個(gè)視圖里。而Example視圖里提供了各種各樣的視圖,可以O(shè)pen 和 Save, Open的時(shí)候會(huì)自動(dòng)幫你在workspace里建立一個(gè)項(xiàng)目,以便你瀏覽該項(xiàng)目文件。Save則是把這個(gè)Example保存到本地某個(gè)目錄。

    說(shuō)完視圖,再來(lái)看看Birt可視化的報(bào)表設(shè)計(jì)器,這個(gè)設(shè)計(jì)器包含了五個(gè)部分:Layout,Master Page,Script,XML Source,Preview。

    Layout為設(shè)計(jì)器的主要部分,只要通過(guò)可視化的拖拽,一個(gè)報(bào)表就會(huì)被自動(dòng)生成出來(lái),當(dāng)然要想靈活運(yùn)用報(bào)表設(shè)計(jì)器,就必須對(duì)各個(gè)組件的屬性了如指掌,Birt提供了豐富靈活的屬性供用戶選擇。MasterPage主要用來(lái)設(shè)置頁(yè)眉頁(yè)腳,以及打印顯示之類(lèi)的功能。Script頁(yè)面,當(dāng)你在Layout頁(yè)面里選中一個(gè)元素之后,切換到Script頁(yè)面,就可以對(duì)這個(gè)元素進(jìn)行腳本編碼,主要用來(lái)監(jiān)聽(tīng)各種事件,使用Javascript,在采用Web顯示里,這些腳本會(huì)生效。XML Source則是將這張報(bào)表背后的XML source顯示出來(lái),用戶如果覺(jué)得自己對(duì)Birt很熟,可以直接在這兒手工修改代碼。Preview則是預(yù)覽Birt報(bào)表,Birt會(huì)啟動(dòng)Tomcat顯示W(wǎng)eb運(yùn)行效果。

    基本上Birt還是比較強(qiáng)大的,基本的功能一應(yīng)俱全。可能你會(huì)發(fā)現(xiàn)缺少一些更高級(jí)花哨的功能,比如flash之類(lèi)的,其實(shí)怎么說(shuō)呢,不是Birt沒(méi)有,而是開(kāi)源版的沒(méi)有,這個(gè)功能在Birt商業(yè)版里,可以在 http://www.actuatechina.com/download.php 下載專(zhuān)業(yè)版試用。如同IBM,這是這類(lèi)公司特有的策略,免費(fèi)上面做收費(fèi)。喜歡的話,可以試一下專(zhuān)業(yè)版,呵呵,可惜網(wǎng)上找不到破解版。

    posted @ 2008-06-20 11:48 三人行,必有我?guī)熝?閱讀(3827) | 評(píng)論 (1)編輯 收藏

    Eclipse3.4馬上就要Release了,相信Eclipse的fans都已經(jīng)開(kāi)始翹首以待,望穿秋水了。不過(guò)現(xiàn)在的RC版本用得很不爽呀,性能非常差,Eclipse的慣例就是最后一個(gè)月的工作基本上就是對(duì)性能做優(yōu)化,以達(dá)到最佳使用效果。

    隨著Plugin的增多,Eclipse采用了特殊的策略,增加了一個(gè)子目錄dropins,用來(lái)放用戶新增加的plugin,而原有的plugins目錄,則基本用于系統(tǒng)基本功能,2者的區(qū)別就是,前者可以任意添加刪除,后者則基本上是一個(gè)ReadOnly的狀態(tài),添加了就不能再作修改了,Eclipse會(huì)將每一個(gè)添加的plugin記錄下來(lái),以后啟動(dòng)就不再檢查這些plugin了。

    不過(guò)對(duì)于我來(lái)說(shuō),我一直都習(xí)慣于使用plugins目錄,下了一個(gè)插件直接解壓,就直接覆蓋安裝到plugins目錄了,而且有一些plugin不支持dropins目錄,必須在plugins目錄下才能正常工作。不過(guò)一旦插件安裝失敗,想再reset就比較麻煩了。Eclipse不會(huì)自動(dòng)恢復(fù)到初始安裝狀態(tài),經(jīng)過(guò)測(cè)試,找到了一個(gè)解決方案,用原始的eclipse的文件替代2個(gè)目錄:configuration和p2目錄。plugins文件位置記錄在configuration\org.eclipse.equinox.simpleconfigurator\bundles.info里,p2目錄里則記錄了更多的初始化信息。要想Reset Eclipse3.4,這兩個(gè)目錄必須被恢復(fù)到初始化狀態(tài),然后就可以正常使用了。

    posted @ 2008-06-17 22:30 三人行,必有我?guī)熝?閱讀(7819) | 評(píng)論 (5)編輯 收藏

    最近的項(xiàng)目需要使用報(bào)表,因?yàn)槭荝CP應(yīng)用,所以選擇了Birt,用了一下,感覺(jué)還可以,就是網(wǎng)上資料少了點(diǎn),不過(guò)以前也研究過(guò)一些Eclipse相關(guān)技術(shù),這些都不重要了,找了SDK版本Debug,啥研究不出來(lái)?

    BIRT是一個(gè)Eclipse-based開(kāi)放源代碼報(bào)表系統(tǒng)。它主要是用在基于Java與J2EE的Web應(yīng)用程序上。BIRT主要由兩部分組成:一個(gè)是基于Eclipse的報(bào)表設(shè)計(jì)和一個(gè)可以加到你應(yīng)用服務(wù)的運(yùn)行期組件。BIRT同時(shí)也提供一個(gè)圖形報(bào)表制作引擎。

    官方主頁(yè):http://www.eclipse.org/birt
    官方BBS支持:http://www.actuatechina.com/forum2.html

    基本上來(lái)說(shuō)Birt功能還是很強(qiáng)大的,支持時(shí)下比較流行的WebService,Ajax技術(shù),既可用于Web,也可以用于桌面,更新也算穩(wěn)定,基本上遵循Eclipse的開(kāi)發(fā)步驟,一個(gè)一個(gè)大版本,同時(shí)支持腳本調(diào)用,debug開(kāi)發(fā)等等。唯一不足的就是中國(guó)的國(guó)情支持得還不夠完善,畢竟中國(guó)比較特殊,我以前給公司做黨務(wù)報(bào)表,要按照紙質(zhì)報(bào)表畫(huà),一分一毫都不能變差,那個(gè)變態(tài)呀,在電腦上畫(huà)報(bào)表還是拿尺子量。

    剛剛開(kāi)始用,慢慢研究,看了下Birt自帶的Example,的確是很強(qiáng)大,做得也很漂亮,自己試著創(chuàng)建一個(gè)報(bào)表也很簡(jiǎn)單,希望能夠比較快的上手吧。

    在網(wǎng)上找了一些資源:
    http://blogger.org.cn/blog/more.asp?name=sixsun&id=13933 BIRT 中文指南
    http://www.springside.org.cn/docs/reference/Birt.htm BIRT報(bào)表
    http://www-128.ibm.com/developerworks/cn/opensource/os-ecl-birt/ Birt的IBM DW的中文教程
    http://download.eclipse.org/birt/downloads/demos/FirstReport/MyFirstReport.html Birt Flash Demo.
    posted @ 2008-06-12 12:02 三人行,必有我?guī)熝?閱讀(6203) | 評(píng)論 (8)編輯 收藏

    僅列出標(biāo)題
    共9頁(yè): 上一頁(yè) 1 2 3 4 5 6 7 8 9 下一頁(yè) 
    GitHub |  開(kāi)源中國(guó)社區(qū) |  maven倉(cāng)庫(kù) |  文件格式轉(zhuǎn)換 
    主站蜘蛛池模板: 国产a不卡片精品免费观看 | 无码欧精品亚洲日韩一区夜夜嗨 | 十八禁无码免费网站| 亚洲乱码在线视频| 亚洲精品无码永久在线观看| 2020因为爱你带字幕免费观看全集 | 亚洲国产成人久久精品99| 午夜视频在线免费观看| 久久综合亚洲色hezyo| 亚洲精品高清国产一久久| 永久免费观看的毛片的网站| 中文字幕在线免费看线人| 在线aⅴ亚洲中文字幕| 亚洲中文字幕在线第六区| 国产桃色在线成免费视频| 国产精品成人69XXX免费视频| 亚洲中文无码线在线观看| 亚洲综合最新无码专区| 免费99精品国产自在现线| 你好老叔电影观看免费| 亚洲国产aⅴ成人精品无吗| 久久久久亚洲精品美女| 亚洲 小说区 图片区 都市| 91手机看片国产永久免费| A级毛片成人网站免费看| 亚洲国产无线乱码在线观看 | 亚洲JIZZJIZZ中国少妇中文| 91免费国产自产地址入| 国产免费一区二区三区不卡 | 成人免费午夜无码视频| 免费一级毛片无毒不卡| 国产成人亚洲午夜电影| 亚洲区精品久久一区二区三区| 国产成人毛片亚洲精品| 免费又黄又爽又猛的毛片| 免费三级毛片电影片| 99久久精品免费视频| 99在线免费视频| 一区二区免费电影| 免费播放美女一级毛片| 亚洲最大福利视频|