日本免费精品_最新日韩一区_亚洲视频一区在线_a在线视频观看_天天射夜夜骑_粉嫩av一区二区三区_欧美中日韩免费视频_综合图区欧美_国内精品美女在线观看_午夜精品久久久久久久男人的天堂

首頁 > 編程 > Java > 正文

SWT(JFace)小制作 BugTracker

2020-01-31 16:51:23
字體:
來源:轉載
供稿:網友
代碼如下:
實現1:
BugTracker.java
復制代碼 代碼如下:

package swt_jface.demo6;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Arrays;
import java.util.Comparator;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.Separator;
import org.eclipse.jface.action.ToolBarManager;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.TableEditor;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.TableItem;
import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.widgets.ToolBar;
public class BugTracker {

Display display = new Display();
Shell shell = new Shell(display);
Table table;
Image bugIcon = new Image(shell.getDisplay(), "C:/icons/bug.gif");
public BugTracker() {
GridLayout gridLayout = new GridLayout();
shell.setLayout(gridLayout);
shell.setText("Bug Tracking System");
Action actionAddNew = new Action("New bug") {
public void run() {
TableItem item = new TableItem(table, SWT.NULL);
item.setImage(bugIcon);
table.select(table.getItemCount() - 1);
}
};
Action actionDelete = new Action("Delete selected") {
public void run() {
int index = table.getSelectionIndex();
if (index < 0) {
System.out.println("Please select an item first. ");
return;
}
MessageBox messageBox = new MessageBox(shell, SWT.YES | SWT.NO);
messageBox.setText("Confirmation");
messageBox.setMessage("Are you sure to remove the bug with id #" + table.getItem(index).getText(0));
if (messageBox.open() == SWT.YES) {
table.remove(index);
}
}
};
Action actionSave = new Action("Save") {
public void run() {
saveBugs();
}
};
ToolBar toolBar = new ToolBar(shell, SWT.RIGHT | SWT.FLAT);
ToolBarManager manager = new ToolBarManager(toolBar);
manager.add(actionAddNew);
manager.add(actionDelete);
manager.add(new Separator());
manager.add(actionSave);
manager.update(true);
table = new Table(shell, SWT.BORDER | SWT.FULL_SELECTION);
table.setLayoutData(new GridData(GridData.FILL_BOTH));
table.setLinesVisible(true);
table.setHeaderVisible(true);
TableColumn tcID = new TableColumn(table, SWT.LEFT);
tcID.setText("ID");
TableColumn tcSummary = new TableColumn(table, SWT.NULL);
tcSummary.setText("Summary");
TableColumn tcAssignedTo = new TableColumn(table, SWT.NULL);
tcAssignedTo.setText("Assigned to");
TableColumn tcSolved = new TableColumn(table, SWT.NULL);
tcSolved.setText("Solved");
tcID.setWidth(60);
tcSummary.setWidth(200);
tcAssignedTo.setWidth(80);
tcSolved.setWidth(50);
table.pack();
final TableEditor editor = new TableEditor(table);
table.addListener(SWT.MouseDown, new Listener() {
public void handleEvent(Event event) {
Point point = new Point(event.x, event.y);
final TableItem item = table.getItem(point);
if (item == null)
return;
int column = -1;
for (int i = 0; i < table.getColumnCount(); i++) {
Rectangle rect = item.getBounds(i);
if (rect.contains(point))
column = i;
}
if (column != 3)
return;
final Button button = new Button(table, SWT.CHECK);
button.setSelection(item.getText(column).equalsIgnoreCase("YES"));
editor.horizontalAlignment = SWT.LEFT;
editor.grabHorizontal = true;
editor.setEditor(button, item, column);
final int selectedColumn = column;
Listener buttonListener = new Listener() {
public void handleEvent(final Event e) {
switch (e.type) {
case SWT.FocusOut :
item.setText(
selectedColumn,
button.getSelection() ? "YES" : "NO");
button.dispose();
break;
case SWT.Traverse :
switch (e.detail) {
case SWT.TRAVERSE_RETURN :
item.setText(
selectedColumn,
button.getSelection()
? "YES"
: "NO");
case SWT.TRAVERSE_ESCAPE :
button.dispose();
e.doit = false;
}
break;
}
}
};
button.addListener(SWT.FocusOut, buttonListener);
button.addListener(SWT.Traverse, buttonListener);
button.setFocus();
}
});
table.addListener(SWT.MouseDown, new Listener() {
public void handleEvent(Event event) {
Point point = new Point(event.x, event.y);
final TableItem item = table.getItem(point);
if (item == null)
return;
int column = -1;
for (int i = 0; i < table.getColumnCount(); i++) {
Rectangle rect = item.getBounds(i);
if (rect.contains(point))
column = i;
}
if (column < 0 || column >= 3)
return;
final Text text = new Text(table, SWT.NONE);
text.setText(item.getText(column));
editor.horizontalAlignment = SWT.LEFT;
editor.grabHorizontal = true;
editor.setEditor(text, item, column);
final int selectedColumn = column;
Listener textListener = new Listener() {
public void handleEvent(final Event e) {
switch (e.type) {
case SWT.FocusOut :
item.setText(selectedColumn, text.getText());
text.dispose();
break;
case SWT.Traverse :
switch (e.detail) {
case SWT.TRAVERSE_RETURN :
item.setText(
selectedColumn,
text.getText());
//FALL THROUGH
case SWT.TRAVERSE_ESCAPE :
text.dispose();
e.doit = false;
}
break;
}
}
};
text.addListener(SWT.FocusOut, textListener);
text.addListener(SWT.Traverse, textListener);
text.setFocus();
}
});
loadBugs();
table.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event event) {
System.out.println("Selected: " + table.getSelection()[0]);
}
});
Listener sortListener = new Listener() {
public void handleEvent(Event event) {
if(! (event.widget instanceof TableColumn))
return;
TableColumn tc = (TableColumn)event.widget;
sortTable(table, table.indexOf(tc));
System.out.println("The table is sorted by column #" + table.indexOf(tc));
}
};
for(int i=0; i<table.getColumnCount(); i++)
((TableColumn)table.getColumn(i)).addListener(SWT.Selection, sortListener);
shell.pack();
shell.open();

while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
display.dispose();
}
public static void sortTable(Table table, int columnIndex) {
if(table == null || table.getColumnCount() <= 1)
return;
if(columnIndex < 0 || columnIndex >= table.getColumnCount())
throw new IllegalArgumentException("The specified column does not exist. ");
final int colIndex = columnIndex;
Comparator comparator = new Comparator() {
public int compare(Object o1, Object o2) {
return ((TableItem)o1).getText(colIndex).compareTo(((TableItem)o2).getText(colIndex));
}
public boolean equals(Object obj) {
return false;
}
};
TableItem[] tableItems = table.getItems();
Arrays.sort(tableItems, comparator);
for(int i=0; i<tableItems.length; i++) {
TableItem item = new TableItem(table, SWT.NULL);
for(int j=0; j<table.getColumnCount(); j++) {
item.setText(j, tableItems[i].getText(j));
item.setImage(j, tableItems[i].getImage(j));
}
tableItems[i].dispose();
}
}
private void saveBugs() {
DataOutputStream out = null;
try {
File file = new File("bugs.dat");
out = new DataOutputStream(new FileOutputStream(file));
for (int i = 0; i < table.getItemCount(); i++) {
TableItem item = table.getItem(i);
out.writeUTF(item.getText(0));
out.writeUTF(item.getText(1));
out.writeUTF(item.getText(2));
out.writeBoolean(item.getText(3).equalsIgnoreCase("YES"));
}
} catch (IOException ioe) {
} finally {
try {
if (out != null)
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
private void loadBugs() {
DataInputStream in = null;
try {
File file = new File("bugs.dat");
if (!file.exists())
return;
in = new DataInputStream(new FileInputStream(file));
while (true) {
String id = in.readUTF();
String summary = in.readUTF();
String assignedTo = in.readUTF();
boolean solved = in.readBoolean();
TableItem item = new TableItem(table, SWT.NULL);
item.setImage(bugIcon);
item.setText(
new String[] {
id,
summary,
assignedTo,
solved ? "Yes" : "No" });
}
} catch (IOException ioe) {
} finally {
try {
if (in != null)
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
new BugTracker();
}
}

實現2:
BugTrackerJFace.java
復制代碼 代碼如下:

package swt_jface.demo6;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Vector;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.Separator;
import org.eclipse.jface.action.ToolBarManager;
import org.eclipse.jface.viewers.CellEditor;
import org.eclipse.jface.viewers.CheckboxCellEditor;
import org.eclipse.jface.viewers.ICellModifier;
import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.TextCellEditor;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.viewers.ViewerFilter;
import org.eclipse.jface.viewers.ViewerSorter;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Item;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.TableItem;
import org.eclipse.swt.widgets.ToolBar;
public class BugTrackerJFace {
public static class Bug {

public String id;
public String summary;
public String assignedTo;
public boolean isSolved;

public Bug(String id, String summary, String assignedTo, boolean isSolved) {
this.id = id;
this.summary = summary;
this.assignedTo = assignedTo;
this.isSolved = isSolved;
}
public static Vector loadBugs(File file) {
Vector v = new Vector();
DataInputStream in = null;
try {
if (!file.exists()) return v;
in = new DataInputStream(new FileInputStream(file));
while (true) {
String id = in.readUTF();
String summary = in.readUTF();
String assignedTo = in.readUTF();
boolean solved = in.readBoolean();
v.add(new Bug(id, summary, assignedTo, solved));
}
} catch (IOException ioe) {
} finally {
try {
if (in != null)
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return v;
}
}

Display display = new Display();
Shell shell = new Shell(display);
Table table;
TableViewer tableViewer;
Vector bugs;
Image bugIcon = new Image(shell.getDisplay(), "C:/icons/bug.gif");
String[] colNames = new String[]{"ID", "Summary", "Assigned to", "Solved"};

class BugSorter extends ViewerSorter {

private String property;
private int propertyIndex;

public BugSorter(String sortByProperty) {
for(int i=0; i<colNames.length; i++) {
if(colNames[i].equals(sortByProperty)) {
this.property = sortByProperty;
this.propertyIndex = i;
return;
}
}
throw new IllegalArgumentException("Unrecognized property: " + sortByProperty);
}
public int compare(Viewer viewer, Object e1, Object e2) {

Bug bug1 = (Bug)e1;
Bug bug2 = (Bug)e2;

switch(propertyIndex) {
case 0:
return bug1.id.compareTo(bug2.id);
case 1:
return bug1.summary.compareTo(bug2.summary);
case 2:
return bug1.assignedTo.compareTo(bug2.assignedTo);
case 3:
if(bug1.isSolved == bug2.isSolved)
return 0;
if(bug1.isSolved)
return 1;
else
return -1;
default:
return 0;
}
}
}

public BugTrackerJFace() {
Action actionAddNew = new Action("New bug") {
public void run() {
// Append.
Bug bug = new Bug("", "", "", false);
bugs.add(bug);
tableViewer.refresh(false);
}
};
Action actionDelete = new Action("Delete selected") {
public void run() {
IStructuredSelection selection = (IStructuredSelection)tableViewer.getSelection();
Bug bug = (Bug)selection.getFirstElement();
if (bug == null) {
System.out.println("Please select an item first. ");
return;
}
MessageBox messageBox = new MessageBox(shell, SWT.YES | SWT.NO);
messageBox.setText("Confirmation");
messageBox.setMessage(
"Are you sure to remove the bug with id #"
+ bug.id);
if (messageBox.open() == SWT.YES) {
bugs.remove(bug);
tableViewer.refresh(false);
}
}
};
Action actionSave = new Action("Save") {
public void run() {
saveBugs(bugs);
}
};
final ViewerFilter filter = new ViewerFilter() {
public boolean select(
Viewer viewer,
Object parentElement,
Object element) {
if(! ((Bug)element).isSolved)
return true;
return false;
}
};
Action actionShowUnsolvedOnly = new Action("Show unsolved only") {
public void run() {
if(! isChecked())
tableViewer.removeFilter(filter);
else
tableViewer.addFilter(filter);
}
};
actionShowUnsolvedOnly.setChecked(false);
ToolBar toolBar = new ToolBar(shell, SWT.RIGHT | SWT.FLAT);
ToolBarManager manager = new ToolBarManager(toolBar);
manager.add(actionAddNew);
manager.add(actionDelete);
manager.add(new Separator());
manager.add(actionSave);
manager.add(new Separator());
manager.add(actionShowUnsolvedOnly);
manager.update(true);
shell.setLayout(new GridLayout());
table = new Table(shell, SWT.BORDER | SWT.FULL_SELECTION);
TableColumn tcID = new TableColumn(table, SWT.LEFT);
tcID.setText(colNames[0]);
TableColumn tcSummary = new TableColumn(table, SWT.NULL);
tcSummary.setText(colNames[1]);
TableColumn tcAssignedTo = new TableColumn(table, SWT.NULL);
tcAssignedTo.setText(colNames[2]);
TableColumn tcSolved = new TableColumn(table, SWT.NULL);
tcSolved.setText(colNames[3]);
tcID.setWidth(60);
tcSummary.setWidth(200);
tcAssignedTo.setWidth(80);
tcSolved.setWidth(50);

tableViewer = new TableViewer(table);
tableViewer.getTable().setLinesVisible(true);
tableViewer.getTable().setHeaderVisible(true);
tableViewer.getTable().setLayoutData(new GridData(GridData.FILL_BOTH));

tableViewer.setContentProvider(new IStructuredContentProvider() {
public Object[] getElements(Object inputElement) {
Vector v = (Vector)inputElement;
return v.toArray();
}
public void dispose() {
System.out.println("Disposing ...");
}
public void inputChanged(
Viewer viewer,
Object oldInput,
Object newInput) {
System.out.println("Input changed: old=" +
oldInput + ", new=" + newInput);
}
});
tableViewer.setLabelProvider(new ITableLabelProvider() {
public Image getColumnImage(Object element, int columnIndex) {
if(columnIndex == 0)
return bugIcon;
return null;
}
public String getColumnText(Object element, int columnIndex) {
Bug bug = (Bug)element;
switch(columnIndex) {
case 0:
return bug.id;
case 1:
return bug.summary;
case 2:
return bug.assignedTo;
case 3:
return bug.isSolved ? "YES" : "NO";
}
return null;
}
public void addListener(ILabelProviderListener listener) {
}
public void dispose() {
}
public boolean isLabelProperty(Object element, String property) {
return false;
}
public void removeListener(ILabelProviderListener listener) {
}
});

tableViewer.setColumnProperties(colNames);

CellEditor[] cellEditors = new CellEditor[4];
cellEditors[0] = new TextCellEditor(table);
cellEditors[1] = cellEditors[0];
cellEditors[2] = cellEditors[0];
cellEditors[3] = new CheckboxCellEditor(table);

tableViewer.setCellEditors(cellEditors);
tableViewer.setCellModifier(new ICellModifier() {
public boolean canModify(Object element, String property) {
return true;
}
public Object getValue(Object element, String property) {
int index = -1;
for(int i=0; i<colNames.length; i++) {
if(colNames[i].equals(property)) {
index = i;
break;
}
}
Bug bug = (Bug)element;
switch(index) {
case 0:
return bug.id;
case 1:
return bug.summary;
case 2:
return bug.assignedTo;
case 3:
return new Boolean(bug.isSolved);
}
return null;
}
public void modify(Object element, String property, Object value) {
System.out.println("Modify: " + element + ", " + property + ", " + value);
int index = -1;
for(int i=0; i<colNames.length; i++) {
if(colNames[i].equals(property)) {
index = i;
break;
}
}
Bug bug = null;
if(element instanceof Item) {
TableItem item = (TableItem)element;
bug = (Bug)item.getData();
}else{
bug = (Bug)element;
}
switch(index) {
case 0:
bug.id = (String)value;
break;
case 1:
bug.summary = (String)value;
break;
case 2:
bug.assignedTo = (String)value;
break;
case 3:
bug.isSolved = ((Boolean)value).booleanValue();
break;
}
tableViewer.update(bug, null);
}
});

tcID.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event event) {
tableViewer.setSorter(new BugSorter(colNames[0]));
}
});
tcSummary.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event event) {
tableViewer.setSorter(new BugSorter(colNames[1]));
}
});
tcAssignedTo.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event event) {
tableViewer.setSorter(new BugSorter(colNames[2]));
}
});
tcSolved.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event event) {
tableViewer.setSorter(new BugSorter(colNames[3]));
}
});
bugs = Bug.loadBugs(new File("bugs.dat"));
tableViewer.setInput(bugs);
shell.pack();
shell.open();

while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
display.dispose();
}
private void saveBugs(Vector v) {
// Save bugs to a file.
DataOutputStream out = null;
try {
File file = new File("bugs.dat");
out = new DataOutputStream(new FileOutputStream(file));
for (int i = 0; i < v.size(); i++) {
Bug bug = (Bug)v.elementAt(i);
out.writeUTF(bug.id);
out.writeUTF(bug.summary);
out.writeUTF(bug.assignedTo);
out.writeBoolean(bug.isSolved);
}
} catch (IOException ioe) {
} finally {
try {
if (out != null)
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
new BugTrackerJFace();
}
}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
欧美日韩亚洲一| 国产资源在线观看入口av| 欧美日韩精品在线播放| 国产wwww| 日韩在线视频精品| 欧美激情视频一区二区三区在线播放| 最近高清中文在线字幕在线观看| 国产一级久久久| 77777_亚洲午夜久久多人 | 欧美日韩精品综合在线 | 日韩精品视频在线播放| 最新中文字幕在线| 日韩欧美国产一二三区| 国产裸体歌舞团一区二区| 国产成人日日夜夜| 欧美日韩综合在线观看| 日韩.欧美.亚洲| 亚洲 欧美 中文字幕| 一区二区精品区| 日韩欧美专区在线| 91精品啪在线观看国产60岁| 国产视频aaa| 亚洲羞羞网站| 91精品在线免费| 天堂中文在线视频| 久久综合久久综合九色| 色综合天天综合网天天狠天天| 中文字幕亚洲一区二区av在线| 中文av字幕一区| 国产网站av| 日韩av一区二区在线观看| 国产精品一区二区三区免费观看| 国产婷婷色一区二区三区在线| 午夜少妇久久久久久久久| 91国内在线| 中文字幕日韩高清| 你懂的亚洲视频| 国产欧美日韩在线| 久久69成人| 日韩欧美在线不卡| 午夜亚洲一区| 91久久精品视频| 国产123在线| 午夜国产视频 | 中文字幕亚洲一区在线观看| 亚洲午夜久久| 一级片在线播放| 狠狠色综合色区| 亚洲区中文字幕| 中文字幕在线导航| 日韩欧美中文在线视频| 97最新国自产拍视频在线完整在线看| 五月综合激情日本mⅴ| 91精品国产亚洲| 国产欧美日韩第一页| 美国av一区二区| 久久久99免费| 欧美日韩中文字幕精品| 91精品高清| 亚洲午夜av| 国产在线视频一区二区| 欧美日韩亚洲综合| 91精品在线免费| 国产最新在线| 日韩中文字幕第一页| 国产乱码在线观看| 久久麻豆视频| 国产一区精品在线| 久久久久久久久99精品| 国产在线高潮| 亚洲最新免费视频| 国产一区不卡精品| 国产最新在线| 欧美日韩精品免费| 九一久久久久久| 在线一区二区不卡| 欧美三级日韩三级| 亚洲国产一区自拍| 最新中文字幕在线| 成人久久在线| 国产中文在线观看| 在线中文字幕视频观看| 午夜伊人狠狠久久| 国产成人精品三级| 日韩精品乱码av一区二区| 国产亚洲一区字幕| 久久精品久久精品亚洲人| 国产日韩综合| 日本中文字幕在线观看| 日韩国产成人| 久久久精品午夜少妇| 日韩高清不卡一区| 成人a在线视频免费观看| 精品久久久91| 日韩中文字幕观看| 一级片免费网站| 国产一级片在线播放| 91精品在线观看入口| 一区视频在线播放| 午夜一区二区三区视频| 日韩精品 欧美| 日韩精品视频在线看| 日韩不卡一二区| 亚洲一区三区在线观看| 伊人中文字幕在线观看| 日韩视频1区| 国产1卡2卡三卡四卡网站| 久久久精品免费免费| 日韩精品视频在线播放| 日韩视频精品| 国产日韩精品在线看| 日韩高清不卡一区| 欧美日韩高清不卡| 久久99蜜桃精品久久久久小说| 欧美自拍一区| av一区在线观看| 国产在线不卡一区| 亚洲v中文字幕| 精品免费久久久| 欧美 日韩 国产 在线| 午夜国产视频| 日韩免费视频| 国产偷久久久精品专区| 日韩欧美中文字幕在线播放| 欧美在线观看视频一区| 91久久精品国产91久久| 日本亚洲视频在线| 国产一级网站视频在线| 精品国产乱码久久久久久蜜臀| 国产免费一级| 中文字幕第一页在线播放| 欧美日韩乱国产| 精品国产乱码久久久久久蜜臀 | 国产中文在线| 免费高清视频日韩| 91av久久久| 日韩欧美亚洲日产国| 快she精品国产999| 午夜一区二区视频| 精品在线一区二区三区| 精品日韩av| 日韩欧美高清在线视频| 欧美日韩国产123区| 国产裸体歌舞团一区二区| 亚洲视频一二三四| 国产黄在线播放| 日韩欧美一级精品久久| 国产999在线观看| 日韩欧美中文在线视频| 国产高清精品二区| 欧美中文字幕视频在线观看| 亚亚洲欧洲精品| 91精品国产自产在线丝袜啪| 91午夜在线| 日韩欧美亚洲国产| 一区二区中文视频| 亚洲一级在线| 欧美日韩午夜精品| 中文字幕欧美国内| 日韩欧美999| 不卡视频一区二区| 欧美日韩精品在线播放| 午夜精品一区二区三区免费视频| 国产免费一级片| 欧美不卡视频一区发布| 日韩欧美在线综合网| 亚洲免费福利视频| 国产一级片在线| 欧美日韩一二三| 日韩免费精品视频| 在线免费播放av| 欧美日韩综合高清一区二区 | 亚洲免费专区| 国产对白在线| 国产欧美日韩视频| 国产欧美三级| 日本精品在线中文字幕| 日韩国产成人| 一本久久a久久精品亚洲| 日韩中文字幕| 中文字幕在线观看视频www| 91精品视频国产| 国产福利一区二区| 国产aa精品| 欧美亚洲免费高清在线观看| 日本a口亚洲| 日本а中文在线天堂| 亚州黄色一级| av一区在线观看| 一区在线播放视频| 亚洲欧美日本国产专区一区| 999精品在线| 中文字幕成人乱码在线电影| 国产高清不卡av| 视频一区二区精品的福利| 中文字幕在线精品| 欧美日韩亚洲天堂| 99视频在线看| 国产在线精品日韩| 亚洲大片精品永久免费| 亚洲福利一区二区三区| 欧美sm一区| 精品国产综合久久| 国产福利一区在线观看| 91精品国产色综合久久久蜜香臀| 国产欧美日韩在线播放| 男人的天堂网av| 日韩三区免费| 国产成人综合av| 欧美日韩国产高清| 国产在线高清精品| 久久视频一区| 国产欧美在线观看| 精品视频1区2区3区| 日韩欧美中文字幕在线播放| 狠狠色噜噜狠狠狠狠97| 欧美亚洲免费高清在线观看| 日本一级一片免费视频| 欧美日韩视频免费播放| 精品人妻二区中文字幕| 国产精久久久久| 日韩精品在线第一页| 国产99在线 | 亚洲| 日韩三级一区| 91精品久久久久久久久| 日韩欧美一级精品久久| 国产福利在线看| 在线视频你懂得一区| 国产欧美久久久久久久久| 欧美日韩国产一二| 欧美国产综合在线V| 亚洲欧洲三级| 久久精品国产视频| 91精品国产丝袜白色高跟鞋| 九一久久久久久| 国产成人精品三级| 中文字幕欧美在线| 精品无人国产偷自产在线| 国产欧美三级| 国产一区久久久| 亚洲大片精品永久免费| 亚洲精品欧美二区三区中文字幕| 欧美一级手机免费观看片| 国产xxx在线| 中文字幕日韩精品在线| 亚洲成av人片在线| 欧美日韩国产第一页| 在线中文字幕网站| 日韩精品第一区| 精品国产乱码久久久久久牛牛| 欧美日韩国产亚洲一区| 中文字幕最新精品| 日韩一级免费视频| 99国内精品| 91精品在线免费| 日本不卡视频一区| 中文字幕国产在线| 日韩精品在线网站| 国产伦精品免费视频| 国产在线不卡av| 91精品观看| 久久riav| 亚洲美女视频一区| 中文字幕在线观看播放| 中文字幕在线视频网| 精品成人久久av| 综合图区亚洲白拍在线| 亚洲一区激情| 欧美日韩在线不卡一区| 亚洲欧洲一区二区天堂久久| 中文字幕在线精品| 日韩视频第二页| 亚洲制服一区| 国产一卡2卡3卡4卡网站免费| 亚洲福利一区二区三区| 欧美日韩国产首页| 拍真实国产伦偷精品| 国产亚洲污的网站| 日韩美女中文字幕| 一区二区在线看| 欧美日韩乱国产| 黄色一级大片在线免费看国产一| 欧美久久久精品| 在线中文字幕视频| 精品成人久久av| 日韩字幕在线观看| 久久精品在线免费观看| 日韩精品视频在线看| 丰满少妇一区二区| 日韩国产一区久久| 91精品久久久久久久久久入口| 日韩精品视频在线播放| 樱花草www在线观看| 欧美wwww| 中文在线а√在线8| 国产专区中文字幕| a级在线免费观看| 欧美日韩国产中文| 亚洲专区一二三| 国产v日产∨综合v精品视频| 欧美黄页在线免费观看| 欧美日韩视频免费看| 拍真实国产伦偷精品| 欧美 日韩 国产 在线观看| 欧美区高清在线| 国产手机精品视频| 久久手机免费观看| 中文在线一区| 国产成人精品三级| 日韩视频在线观看视频| 欧美国产亚洲一区| 中文字幕在线视频精品| 日韩在线小视频| xxxcom在线观看| 精品国产1区二区| 欧美日韩高清一区二区不卡| 欧美日韩精品综合| 又黄又www的网站| 国产精品视频福利一区二区| 亚洲一区视频在线观看视频| 日韩视频在线一区| 日韩欧美综合在线视频| 日韩欧美国产一二三区| 国产丝袜欧美中文另类| 日韩.欧美.亚洲| 国产黄色在线看| 日韩精品视频免费在线观看| 欧美三级视频在线| 极品久久久久久| 日韩综合精品| 亚洲综合视频一区| 中文在线а√在线8| 欧美亚洲另类制服自拍| 日韩黄色在线播放| 日韩精品视频在线观看网址| 日韩中文字幕在线观看视频| 精品福利二区三区| 在线视频国产三级| 精品成人久久久| 亚洲福利精品在线| 免费视频国产一区| 91色在线看| 国产在线一区二区视频| 91精品国产综合久久香蕉最新版 | 日韩精品在线免费观看视频| 欧美在线观看视频一区| 91精品国产综合久久久久久漫画| 日韩免费视频| 中文字幕在线观看精品| 中文网丁香综合网| 欧美日韩亚洲天堂| 中文字幕在线亚洲| 九九九精品视频| 亚洲成av人片一区二区密柚| 久草中文在线观看| 国产裸体歌舞团一区二区| 精品播放一区二区| 日韩国产在线不卡视频| 91欧美在线视频| 久久人人精品| 色综合久久六月婷婷中文字幕| 日韩午夜一区| 亚洲黄色www| 久久久精品日韩欧美| 日本黄色一区二区| 欧美一级在线观看| 国产123在线| 一本大道一区二区三区| 精品国内自产拍在线视频| 国产黄在线看| 亚洲一级网站| 欧美日韩亚州综合| 欧美日韩精品在线观看| 91精品国产91久久久| 欧美中文字幕第一页| 搞黄在线观看| 日韩精品视频免费在线观看| 尤物av一区二区| 免费在线视频一区二区| 日韩 国产 一区| 中文亚洲欧美| 亚洲高清视频一区| 蜜桃视频一日韩欧美专区| 中文国产字幕在线观看| 亚洲高清中文字幕| 中文字幕在线欧美| 国产91欧美| 欧洲精品久久久| 日韩中文字幕| 91精品国产99| 国产激情久久| 欧美一级二级三级区| 日韩三级免费观看| 丰满少妇一区二区| 欧美不卡123| 国产一级免费| 91精品国产综合久久香蕉的特点 | 日韩精品一页| 亚洲免费婷婷| 欧美日韩视频不卡|