亚洲人成网站在线播放2019 _日韩国产欧美精品_久久夜色精品国产欧美乱_在线视频福利一区

當(dāng)前位置:首頁(yè) > 網(wǎng)站舊欄目 > 學(xué)習(xí)園地 > 設(shè)計(jì)軟件教程 > Eclipse WTP Projects Facets實(shí)戰(zhàn)指南(2)

Eclipse WTP Projects Facets實(shí)戰(zhàn)指南(2)
2010-01-14 23:06:05  作者:  來(lái)源:

Eclipse WTP Projects Facets實(shí)戰(zhàn)指南(2)

原創(chuàng)作者: macrochen   閱讀:388次   評(píng)論:0條   更新時(shí)間:2007-11-21    

修飾工作
給facet在選擇列表中添加圖標(biāo)
格式如下:

xml 代碼
 
  1. <extension point="org.eclipse.wst.common.project.facet.ui.images">  
  2.   <image facet="{string}" path="{string}"/> (0 or more)   
  3.   <image category="{string}" path="{string}"/> (0 or more)   
  4. extension>  


設(shè)置如下:
 

xml 代碼
 
  1. <extension point="org.eclipse.wst.common.project.facet.ui.images">  
  2.   <image facet="formgen.core" path="icons/formgen-core.gif"/>  
  3.   <image facet="formgen.ext" path="icons/formgen-ext.gif"/>  
  4.   <image category="formgen.category" path="icons/formgen-cat.gif"/>  
  5. extension>  

效果如圖

 

添加向?qū)ы?yè)
有時(shí)候我們可能需要根據(jù)用戶的輸入來(lái)執(zhí)行facet, 通過(guò)添加wizard page來(lái)接收用戶的輸入, 用戶在facet選擇列表頁(yè)做出選擇之后,將出現(xiàn)我們添加的wizard Page
下面通過(guò)給我們的servlet指定url pattern的例子來(lái)進(jìn)行說(shuō)明
plugin.xml設(shè)置格式如下:

xml 代碼
 
  1. <extension point="org.eclipse.wst.common.project.facet.core.facets">  
  2.   <action>  
  3.     <config-factory class="class:org.eclipse.wst.common.project.facet.core.IActionConfigFactory"/>  
  4.   action>  
  5. extension>  
  6.   
  7. <extension point="org.eclipse.wst.common.project.facet.ui.wizardPages">  
  8.   <wizard-pages action="{string}"> (0 or more)   
  9.     <page class="{class:org.eclipse.wst.common.project.facet.ui.IFacetWizardPage}"/> (1 or more)   
  10.   wizard-pages>  
  11. extension>    

 
這里需要說(shuō)明的是為了讓我們定制的wizard page和action delegate之間進(jìn)行通信, 需要使用一個(gè)javabean或者是map來(lái)封裝wizard page中輸入的數(shù)據(jù), 而且必須在action配置中提供一個(gè)action factory,該對(duì)象將由factory創(chuàng)建, wizard page填充數(shù)據(jù), action delegate負(fù)責(zé)從該對(duì)象讀取數(shù)據(jù)

除外,wizard page將通過(guò)指定的action id來(lái)引用action, 這也是我們前面推薦指定action id而不是系統(tǒng)生成的原因

配置如下:

xml 代碼
 
  1. <extension point="org.eclipse.wst.common.project.facet.core.facets">  
  2.   <project-facet-version facet="formgen.core" version="1.0">  
  3.     <action type="INSTALL" id="formgen.core.install">  
  4.       <config-factory class="com.formgen.eclipse.FormGenCoreFacetInstallConfig$Factory"/>  
  5.     action>  
  6.   project-facet-version>  
  7. extension>  
  8.   
  9. <extension point="org.eclipse.wst.common.project.facet.ui.wizardPages">  
  10.   <wizard-pages action="formgen.core.install">  
  11.     <page class="com.formgen.eclipse.FormGenCoreFacetInstallPage"/>  
  12.   wizard-pages>  
  13. extension>  

 

代碼如下:

java 代碼
 
  1. package com.formgen.eclipse;   
  2.   
  3. import org.eclipse.wst.common.project.facet.core.IActionConfigFactory;   
  4.   
  5. public final class FormGenCoreFacetInstallConfig   
  6. {   
  7.     private String urlPattern = "*.form";   
  8.   
  9.     public String getUrlPattern()   
  10.     {   
  11.         return this.urlPattern;   
  12.     }   
  13.   
  14.     public void setUrlPattern( final String urlPattern )   
  15.     {   
  16.         this.urlPattern = urlPattern;   
  17.     }   
  18.   
  19.     public static final class Factory implements IActionConfigFactory   
  20.     {   
  21.         public Object create()   
  22.         {   
  23.             return new FormGenCoreFacetInstallConfig();   
  24.         }   
  25.     }   
  26. }   
  27.   


 

java 代碼
 
  1. package com.formgen.eclipse;   
  2.   
  3. import org.eclipse.swt.SWT;   
  4. import org.eclipse.swt.layout.GridData;   
  5. import org.eclipse.swt.layout.GridLayout;   
  6. import org.eclipse.swt.widgets.Composite;   
  7. import org.eclipse.swt.widgets.Label;   
  8. import org.eclipse.swt.widgets.Text;   
  9. import org.eclipse.wst.common.project.facet.ui.AbstractFacetWizardPage;   
  10.   
  11. public final class FormGenCoreFacetInstallPage extends AbstractFacetWizardPage   
  12. {   
  13.     private FormGenCoreFacetInstallConfig config;   
  14.     private Text urlPatternTextField;   
  15.   
  16.     public FormGenCoreFacetInstallPage()   
  17.     {   
  18.         super"formgen.core.facet.install.page" );   
  19.   
  20.         setTitle( "FormGen Core" );   
  21.         setDescription( "Configure the FormGen servlet." );   
  22.     }   
  23.   
  24.     public void createControl( final Composite parent )   
  25.     {   
  26.         final Composite composite = new Composite( parent, SWT.NONE );   
  27.         composite.setLayout( new GridLayout( 1false ) );   
  28.   
  29.         final Label label = new Label( composite, SWT.NONE );   
  30.         label.setLayoutData( gdhfill() );   
  31.         label.setText( "URL Pattern:" );   
  32.   
  33.         this.urlPatternTextField = new Text( composite, SWT.BORDER );   
  34.         this.urlPatternTextField.setLayoutData( gdhfill() );   
  35.         this.urlPatternTextField.setText( this.config.getUrlPattern() );   
  36.   
  37.         setControl( composite );   
  38.     }   
  39.   
  40.     public void setConfig( final Object config )   
  41.     {   
  42.         this.config = (FormGenCoreFacetInstallConfig) config;   
  43.     }   
  44.   
  45.     public void transferStateToConfig()   
  46.     {   
  47.         this.config.setUrlPattern( this.urlPatternTextField.getText() );   
  48.     }   
  49.   
  50.     private static GridData gdhfill()   
  51.     {   
  52.         return new GridData( GridData.FILL_HORIZONTAL );   
  53.     }   
  54. }   
  55.   


 

java 代碼
 
  1. package com.formgen.eclipse;   
  2.   
  3. import org.eclipse.core.resources.IFolder;   
  4. import org.eclipse.core.resources.IProject;   
  5. import org.eclipse.core.runtime.CoreException;   
  6. import org.eclipse.core.runtime.IProgressMonitor;   
  7. import org.eclipse.core.runtime.Path;   
  8. import org.eclipse.wst.common.project.facet.core.IDelegate;   
  9. import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;   
  10.   
  11. public final class FormGenCoreFacetInstallDelegate implements IDelegate   
  12. {   
  13.     public void execute( final IProject pj,   
  14.                          final IProjectFacetVersion fv,   
  15.                          final Object config,   
  16.                          final IProgressMonitor monitor )   
  17.   
  18.         throws CoreException   
  19.   
  20.     {   
  21.         monitor.beginTask( ""2 );   
  22.   
  23.         try  
  24.         {   
  25.             final FormGenCoreFacetInstallConfig cfg   
  26.                 = (FormGenCoreFacetInstallConfig) config;   
  27.   
  28.             final IFolder webInfLib = Utils.getWebInfLibDir( pj );   
  29.   
  30.             Utils.copyFromPlugin( new Path( "libs/formgen-core.jar" ),   
  31.                                   webInfLib.getFile( "formgen-core.jar" ) );   
  32.   
  33.             monitor.worked( 1 );   
  34.   
  35.             Utils.registerFormGenServlet( pj, cfg.getUrlPattern() );   
  36.   
  37.             monitor.worked( 1 );   
  38.         }   
  39.         finally  
  40.         {   
  41.             monitor.done();   
  42.         }   
  43.     }   
  44. }   
  45.   

效果如圖

定義Preset
為了將創(chuàng)建某個(gè)工程所需要的facet集中在一個(gè)用一個(gè)名字代替,這就需要使用preset(或稱configuration),其擴(kuò)展點(diǎn)格式如下:
 

xml 代碼
 
  1. <extension point="org.eclipse.wst.common.project.facet.core.facets">  
  2.   <preset id="{string}">  
  3.     <label>{string}</label>  
  4.     <description>{string}</description> (optional)   
  5.     <facet id="{string}" version="{string}"/> (1 or more)   
  6.   </preset>  
  7. </extension>  

為了讓preset能應(yīng)用于指定的facet project, preset必須包含所有的fixed facet, 所謂的fixed facet指的是那些要?jiǎng)?chuàng)建的工程所必須的而不能刪除的facet.
設(shè)置如下:
 

xml 代碼
 
  1. <extension point="org.eclipse.wst.common.project.facet.core.facets">  
  2.   <preset id="formgen.preset">  
  3.     <label>FormGen Web Project</label>  
  4.     <description>Creates a web project with FormGen functionality.</description>  
  5.     <facet id="jst.java" version="5.0"/>  
  6.     <facet id="jst.web" version="2.2"/>  
  7.     <facet id="formgen.core" version="1.0"/>  
  8.     <facet id="formgen.ext" version="1.0"/>  
  9.   </preset>  
  10. </extension>  

效果如圖

指定runtime映射
在創(chuàng)建project的時(shí)候,有時(shí)候需要指定項(xiàng)目依賴的runtime,我們也可以通過(guò)擴(kuò)展點(diǎn)來(lái)檢查當(dāng)前的facet所需要的runtime是否指定.
配置格式如下:
 

xml 代碼
 
  1. <extension point="org.eclipse.wst.common.project.facet.core.runtimes">  
  2.   <supported> (0 or more)   
  3.     <runtime-component any="{boolean}"/> (optional)   
  4.     <runtime-component id="{string}"version="{version.expr}"/> (0 or more)   
  5.     <facet id="{string}"version="{version.expr}"/> (1 or more)   
  6.   </supported>  
  7. </extension>  


下面是不依賴其他組件的配置:
 

xml 代碼
 
  1. <extension point="org.eclipse.wst.common.project.facet.core.runtimes">  
  2.   <supported>  
  3.     <runtime-component any="true"/>  
  4.     <facet id="formgen.core"/>  
  5.     <facet id="formgen.ext"/>  
  6.   </supported>  
  7. </extension>  


下面是依賴tomcat的配置
 

xml 代碼
 
  1. <extension point="org.eclipse.wst.common.project.facet.core.runtimes">  
  2.   <supported>  
  3.     <runtime-component id="org.eclipse.jst.server.tomcat" version="[5.0"/>  
  4.     <facet id="formgen.core"/>  
  5.     <facet id="formgen.ext"/>  
  6.   </supported>  
  7. </extension>  

總結(jié)

通過(guò)上面的步驟, 我們創(chuàng)建了一個(gè)完整的project facet, 這里面包括指定約束, 實(shí)現(xiàn)action, 對(duì)facet分組, 創(chuàng)建wizard page. 更多的信息可看下面的參考附錄
附錄A 定制Version Comparetor
就是對(duì)版本進(jìn)行比較的策略進(jìn)行定制, 如果要使用自己的版本比較方式, 那么可以通過(guò)擴(kuò)展點(diǎn)來(lái)處理,格式如下:
 

xml 代碼
 
  1. <extension point="org.eclipse.wst.common.project.facet.core.facets">  
  2.   <project-facet>  
  3.     <version-comparator class="{class:java.util.Comparator<String>}"/>  
  4.   </project-facet>  
  5. </extension>  


可以直接從接口從頭實(shí)現(xiàn),也可以繼承org.eclipse.wst.common.project.facet.core.DefaultVersionComparator來(lái)進(jìn)行定制
代碼如下:
 

java 代碼
 
  1. /**  
  2.  * Returns the string containing the separator characters that should be  
  3.  * used when breaking the version string into segments. The default  
  4.  * implementation returns ".". Subclasses can override this method.  
  5.  *   
  6.  * @return the separator characters  
  7.  */  
  8.        
  9. protected String getSeparators();   
  10.        
  11. /**  
  12.  * Parses a segment of the version string. The default implementation parses  
  13.  * the first segment as an integer (leading zeroes are ignored) and the  
  14.  * rest of the segments as decimals (leading zeroes are kept). Subclasses   
  15.  * can override this method to provide custom parsing for any number of   
  16.  * segments.  
  17.  *   
  18.  * @param version the full version string  
  19.  * @param segment the version segment  
  20.  * @param position the position of the segment in the version string  
  21.  * @return the parsed representation of the segment as a {@see Comparable}  
  22.  * @throws VersionFormatException if encountered an error while parsing  
  23.  */  
  24.        
  25. protected Comparable parse( final String version,   
  26.                             final String segment,   
  27.                             final int position )   
  28.        
  29.     throws VersionFormatException;   

附錄B Version Expression
為了一次指定多個(gè)版本,就需要使用版本表達(dá)式(version expression), 在很多地方我都用到了版本表達(dá)式, 版本表達(dá)式如果有多個(gè),則使用逗號(hào)分隔,這里的逗號(hào)表示或的意思, 范圍通過(guò)括號(hào)加破折號(hào)來(lái)制定,如[x-z), 中括號(hào)表示包含, 小括號(hào)表示不包含
下面是一些例子:
1.2
1.2,1.5,3.2
[1.2-3.2]
[3.7-5.0)
[3.7
5.0)
1.2,[3.0-4.5),[7.3
附錄C Event Handler
project fact可以為某些事件注冊(cè)listener, 這些時(shí)間包括:
PRE_INSTALL
POST_INSTALL
PRE_UNINSTALL
POST_UNINSTALL
PRE_VERSION_CHANGE
POST_VERSION_CHANGE
RUNTIME_CHANGED
事件處理器的聲明和action的聲明非常類似,但是他們也有一些區(qū)別,主要體現(xiàn)在:
與action不同, 事件處理器無(wú)法由用戶直接觸發(fā),因此無(wú)法將事件處理器與wizard page關(guān)聯(lián),也無(wú)法為其提供封裝數(shù)據(jù)的配置對(duì)象
可以給一個(gè)事件設(shè)置多個(gè)事件處理器,但是他們的調(diào)用順序是不確定的
事件處理器的配置格式如下:
 

xml 代碼
 
  1. <extension point="org.eclipse.wst.common.project.facet.core.facets">  
  2.   <event-handler facet="{string}" version="{version.expr}" type="{event.type}">  
  3.     <delegate class="{class:org.eclipse.wst.common.project.facet.core.IDelegate}"/>  
  4.   </action>  
  5. </extension>  


與action的配置很類似,也實(shí)現(xiàn)了IDelegate接口, 而且event-handler也可以嵌入到project-facet-version元素內(nèi)部,此時(shí)的facet和version屬性將被忽略.

PRE_* and POST_* 事件處理器用來(lái)取得配置對(duì)象,然后傳遞給IDelegate的execute方法使用, RUNTIME_CHANGED 事件處理器是用來(lái)取得IRuntimeChangedEvent實(shí)例
 

java 代碼
 
  1. package org.eclipse.wst.common.project.facet.core;   
  2.   
  3. import org.eclipse.wst.common.project.facet.core.runtime.IRuntime;   
  4.   
  5. /**  
  6.  * Describes the runtime changed event to the RUNTIME_CHANGED event handlers.  
  7.  */  
  8.   
  9. public interface IRuntimeChangedEvent   
  10. {   
  11.     /**  
  12.      * Returns the runtime previously associated with the project.  
  13.      *   
  14.      * @return the runtime previously associated with the project, or null  
  15.      */  
  16.        
  17.     IRuntime getOldRuntime();   
  18.        
  19.     /**  
  20.      * Returns the runtime that's now associated with the project.  
  21.      *   
  22.      * @return the runtime that's now associated with the project, or null  
  23.      */  
  24.        
  25.     IRuntime getNewRuntime();   
  26. }   
  27.   

附錄D Property Tester
Property Tester是用來(lái)被org.eclipse.core.expressions 包中的擴(kuò)展點(diǎn)測(cè)試使用的,它常用來(lái)決定某些菜單或者屬性頁(yè)選項(xiàng)是否可用.屬性名為org.eclipse.wst.common.project.facet.core.projectFacet,值為facet id或者facet id 加冒號(hào)再加版本表達(dá)式的組合
下面的這個(gè)例子用來(lái)控制project的屬性頁(yè)是否可用
 

xml 代碼
 
  1. <extension point="org.eclipse.ui.propertyPages">  
  2.   <page    
  3.     adaptable="true"  
  4.     objectClass="org.eclipse.core.resources.IProject"  
  5.     name="FormGen Properties"  
  6.     class="com.formgen.eclipse.FormGenPropertiesPage"  
  7.     id="org.eclipse.jst.j2ee.internal.J2EEDependenciesPage">  
  8.     <enabledWhen>  
  9.       <test    
  10.         forcePluginActivation="true"  
  11.         property="org.eclipse.wst.common.project.facet.core.projectFacet"  
  12.         value="formgen.core"/>  
  13.     </enabledWhen>             
  14.   </page>  
  15. </extension>  


附錄E Wizard Content
有時(shí)候我們可能根據(jù)其他facet所對(duì)應(yīng)的wizard page的用戶輸入來(lái)調(diào)整action的行為, 而IWizardContet接口就是為該目的而設(shè)計(jì)的, wizard page的setWizardContext方法被調(diào)用的時(shí)候會(huì)取得該接口的handler, 如果你的代碼對(duì)IWziardContenxt造成依賴,可能需要注意以下事項(xiàng):
1.fact需要的內(nèi)容可能在執(zhí)行前已經(jīng)被install了, 此時(shí)在wizard context中將無(wú)法找到要install的配置,所以在需要做一些判斷
2.如果某些情況下wizard page不被調(diào)用的話,要給配置對(duì)象設(shè)置默認(rèn)值
下面是IWizardContext接口的代碼:
 

java 代碼
 
  1. package org.eclipse.wst.common.project.facet.ui;   
  2.   
  3. import java.util.Set;   
  4. &nb
    安徽新華電腦學(xué)校專業(yè)職業(yè)規(guī)劃師為你提供更多幫助【在線咨詢
亚洲人成网站在线播放2019 _日韩国产欧美精品_久久夜色精品国产欧美乱_在线视频福利一区
欧美日韩一区二区三区免费| 国产精品18久久久久久麻辣 | 久久久久久久久久久免费精品| 中文字幕免费高| 精品一区久久久| 国产精品视频精品视频| 热久久精品免费视频| 久久久噜久噜久久综合| 日韩av电影免费在线| 91精品久久久久久久久| 亚洲国产精品久久久久久女王| 成人a免费视频| 亚洲一区二区中文| 99免费在线视频观看| 伊人久久婷婷色综合98网| 国产日韩欧美自拍| 精品国产一区二区三| 免费看污污视频| 欧美极品视频一区二区三区| 日韩在线观看免费av| 欧美亚洲一区在线| 国产精品视频福利| 精品视频在线观看| 精品国偷自产一区二区三区| 国产女人精品视频| 亚洲午夜精品国产| 91精品国产91久久久久久久久| 亚洲欧美日韩在线综合| 久久久婷婷一区二区三区不卡| 亚洲丰满在线| 久久久久久伊人| 免费在线观看的毛片| 国产精品美女久久久久久免费| 精品无码久久久久久久动漫 | 亚洲高清在线观看一区| 国产精品18毛片一区二区| 欧美一级片中文字幕| 久久久久久久久久久国产| 欧美韩国日本在线| 欧美日韩xxx| 久久久无码中文字幕久...| 秋霞在线一区二区| 久久综合久中文字幕青草| 国产伦精品一区二区三| 亚州精品天堂中文字幕| 日韩在线观看你懂的| 欧美精品久久久久久久自慰| 国产精品久久久久久久久久三级| 国产欧美日韩免费看aⅴ视频| 亚洲图色在线| 九色综合日本| 麻豆av一区二区| 亚洲精品久久区二区三区蜜桃臀 | 免费99精品国产自在在线| 99伊人久久| 欧洲成人在线视频| 欧美久久精品午夜青青大伊人| 91美女片黄在线观| 欧美精品在线一区| 亚洲一区亚洲二区亚洲三区| 久久久久久国产精品一区| 国产性生交xxxxx免费| 日韩av大全| 欧美乱人伦中文字幕在线| 99视频在线免费| 青青青青在线视频| 又大又硬又爽免费视频| 日韩在线视频免费观看高清中文| 国产视频观看一区| 日本免费高清不卡| 久久国产精品久久久| 久久久久久久中文| 国产乱人伦精品一区二区三区 | 99视频日韩| 国内精品一区二区| 日本十八禁视频无遮挡| 欧美激情精品在线| 国产va免费精品高清在线| 国产美女精品久久久| 欧美一级二级三级九九九| 亚洲av综合色区| 精品国产一区二区三区麻豆免费观看完整版 | 综合操久久久| 国产精品无码一本二本三本色| 69国产精品成人在线播放| 国产一区红桃视频| 热re99久久精品国产66热| 亚洲欧洲国产精品久久| 国产精品第8页| 精品国产美女在线| 国产成人中文字幕| 99在线观看视频网站| 国产一区二区自拍| 日韩中文字在线| 国产精品亚洲片夜色在线| 美女主播视频一区| 欧美日韩第二页| 手机在线观看国产精品| 九九热精品在线| 国产精品久久久久久亚洲影视 | 综合操久久久| 毛片精品免费在线观看| 国产精品视频免费观看www| 久久精品国产精品国产精品污| 91久久久久久| 97精品一区二区视频在线观看| 国产欧美日韩综合精品二区 | www.久久撸.com| 久久精品国产精品国产精品污| 国产精品99免视看9| 99在线视频首页| 成年丰满熟妇午夜免费视频| 国产欧美日韩网站| 国产青青在线视频| 国产免费黄色av| 国产精品自拍小视频| 国产伦精品一区二区三区免费视频| 麻豆精品蜜桃一区二区三区| 狠狠综合久久av| 国内精品400部情侣激情| 国模视频一区二区| 免费国产黄色网址| 好吊色欧美一区二区三区视频| 欧美中文字幕在线观看视频| 欧美重口乱码一区二区| 欧美另类一区| 国内精品久久久久久| 日韩中文字幕网| 国产精品av在线| 久久综合狠狠综合久久综青草| 久久青草福利网站| 国产v综合v亚洲欧美久久| 日韩在线精品视频| 国产精品久久久影院| 久久av在线播放| 精品自拍视频在线观看| 亚洲一区二区自拍| 午夜精品一区二区三区四区| 欧美一区二区三区免费视| 日韩av在线第一页| 欧美夜福利tv在线| 国产欧美一区二区在线播放| 97精品视频在线| 国产第一页视频| 国产成人精品最新| 九九热r在线视频精品| 欧美一区二区三区在线免费观看| 日韩亚洲欧美视频| 国模吧一区二区三区| 99久久久精品视频| 久久久久久午夜| 欧美大码xxxx| 尤物国产精品| 日本一道本久久| 精品亚洲欧美日韩| 成人久久久久爱| 久久久久久中文字幕| 国产精品久久久久久久久久尿 | 成人免费aaa| 久久久久久亚洲精品不卡4k岛国 | 欧美专区日韩视频| 精品一卡二卡三卡四卡日本乱码| caoporn国产精品免费公开| 久久99精品久久久久久久久久| 国产精品久久久久久久久婷婷 | 日韩精品免费一区| 国产一区二区视频在线观看 | 国产日韩亚洲欧美在线| 91九色视频在线| 日韩在线播放视频| 久久国产精彩视频| 日韩av电影免费在线| 国产一区二区三区黄| 成人精品视频在线| 国产成人精品综合久久久| 最新不卡av| 欧美伊久线香蕉线新在线| 国产奶头好大揉着好爽视频| 国产成人精品视| 久久久久久国产精品| 人妻久久久一区二区三区| 国产日产欧美视频| 久久福利电影| 精品乱子伦一区二区三区| 日本午夜精品电影| 国产嫩草一区二区三区在线观看| 久久99精品久久久水蜜桃| 一区二区精品免费视频| 欧美精品一区二区三区久久| 成人精品视频在线播放| 国产精品免费久久久| 日本香蕉视频在线观看| 不卡影院一区二区| 国产精品成av人在线视午夜片| 日本高清视频一区| 97色在线观看免费视频| 超碰日本道色综合久久综合| 欧美在线一区二区三区四区| www国产黄色| 欧美精品性视频|