- 浏览: 958480 次
文章分类
最新评论
重构代码--Extract Method
重构太经典了!
重构里面比较简单的又算是Extract Method,这是我的代码里的一个类,经过我Extract Method后,我自己是越看越喜欢:P
本来createControl方法看起来很晕得,重构够变得非常简单了,几乎不需要注释,每个方法名就是注释.
当然有时候Extract Method是很麻烦的,比如碰到很多其它外部变量时.
对于这个简单的例子,我的心得就是取个好的方法名!
/***//**
*@authorRey
*/
publicclassAutoSqlDataSetPageextendsWizardPage...{
publicstaticfinalStringID="AutoSqlDataSetPage";
privatestaticfinalintOK=0;
privatestaticfinalintCANCEL=-1;
privateListtableList=null;
privateDataTableinitDataTable=null,resultDataTable=null;
privateTableViewerinitTableViewer=null,resultTableViewer=null;
privateString[]names=newString[]...{""};
publicAutoSqlDataSetPage()...{
super(ID);
}
privateintindex=1;//input
privateintclick=-1;
privateImageimage=null;
privateintWIDTH=40,HEIGHT=40;
privateCanvascanvas=null;
privateColumnMoveCommandcolumnMoveCommand=null;
publicvoidcreateControl(finalCompositeparent)...{
setTitle("AutoSqlDataSetWizard");
setMessage("XXXXXXXXXXXXXXXX",IMessageProvider.INFORMATION);
Compositecomposite=newComposite(parent,SWT.NULL);
GridLayoutglayout=newGridLayout(9,true);
composite.setLayout(glayout);
CompositemainBtnsComposite=createMainBtnsComposite(composite);
ButtonmainBtnAdd=createMainBtn(mainBtnsComposite,"Add");
ButtonmainBtnRemove=createMainBtn(mainBtnsComposite,"Remove");
ButtonmainBtnProperties=createMainBtn(mainBtnsComposite,"Properties");
ButtonmainBtnPreview=createMainBtn(mainBtnsComposite,"Preview");
createSeparator(composite);
createImage(composite);
createCanvas(composite);
addListener2Canvas(parent);
TableinitTable=createTable(composite);
initTableViewer=newTableViewer(initTable);
initTableViewer.setContentProvider(newColumnContentProvider());
initTableViewer.setLabelProvider(newColumnLabelProvider());
CompositetableBtnsComposite=createTableBtnsComposite(composite);
finalButtonadd=createTableBtn(tableBtnsComposite,">>");
finalButtonremove=createTableBtn(tableBtnsComposite,"<<");
finalButtonaddAll=createTableBtn(tableBtnsComposite,">>>");
finalButtonremoveAll=createTableBtn(tableBtnsComposite,"<<<");
finalButtonundo=createUndoAndRedoBtn(tableBtnsComposite,"undo");
finalButtonredo=createUndoAndRedoBtn(tableBtnsComposite,"redo");
TableresultTable=createTable(composite);
resultTableViewer=newTableViewer(resultTable);
resultTableViewer.setContentProvider(newColumnContentProvider());
resultTableViewer.setLabelProvider(newColumnLabelProvider());
/***//***********************************************************************
*MainBtns'SelectionListener
**********************************************************************/
addListener2MainBtnAdd(parent,mainBtnAdd);
/***//***********************************************************************
*TableandColumnBtns'SelectionListener
**********************************************************************/
addListener2AddBtn(add,undo,redo);
addListener2RemoveBtn(remove,undo,redo);
addListener2UndoBtn(undo);
addListener2RedoBtn(redo);
addListener2AddAllBtn(addAll,undo,redo);
addListener2RemoveAllBtn(removeAll,undo,redo);
setControl(composite);
setPageComplete(true);
}
privateCompositecreateMainBtnsComposite(Compositecomposite)...{
GridLayoutglayout;
CompositemainBtnsComposite=newComposite(composite,SWT.NULL);
GridDatagd=newGridData(GridData.FILL_HORIZONTAL);
gd.horizontalSpan=9;
mainBtnsComposite.setLayoutData(gd);
glayout=newGridLayout(9,true);
mainBtnsComposite.setLayout(glayout);
returnmainBtnsComposite;
}
privateButtoncreateMainBtn(CompositemainBtnsComposite,Stringtext)...{
GridDatagd;
ButtonmainBtnAdd=newButton(mainBtnsComposite,SWT.PUSH);
mainBtnAdd.setText(text);
gd=newGridData(GridData.FILL_HORIZONTAL);
mainBtnAdd.setLayoutData(gd);
returnmainBtnAdd;
}
privatevoidcreateSeparator(Compositecomposite)...{
GridDatagd;
Labellabel=newLabel(composite,SWT.SEPARATOR|SWT.HORIZONTAL);
gd=newGridData(GridData.HORIZONTAL_ALIGN_FILL);
gd.horizontalSpan=9;
label.setLayoutData(gd);
}
privatevoidcreateCanvas(Compositecomposite)...{
GridDatagd;
canvas=newCanvas(composite,SWT.NO_REDRAW_RESIZE|SWT.V_SCROLL
|SWT.H_SCROLL);
gd=newGridData(GridData.FILL_BOTH);
gd.horizontalSpan=9;
canvas.setLayoutData(gd);
}
privatevoidaddListener2Canvas(finalCompositeparent)...{
finalPointorigin=newPoint(0,0);
finalScrollBarhBar=canvas.getHorizontalBar();
hBar.addListener(SWT.Selection,newListener()...{
publicvoidhandleEvent(Evente)...{
inthSelection=hBar.getSelection();
intdestX=-hSelection-origin.x;
Rectanglerect=image.getBounds();
canvas.scroll(destX,0,0,0,rect.width,rect.height,false);
origin.x=-hSelection;
}
});
finalScrollBarvBar=canvas.getVerticalBar();
vBar.addListener(SWT.Selection,newListener()...{
publicvoidhandleEvent(Evente)...{
intvSelection=vBar.getSelection();
intdestY=-vSelection-origin.y;
Rectanglerect=image.getBounds();
canvas.scroll(0,destY,0,0,rect.width,rect.height,false);
origin.y=-vSelection;
}
});
canvas.addListener(SWT.Resize,newListener()...{
publicvoidhandleEvent(Evente)...{
Rectanglerect=image.getBounds();
Rectangleclient=canvas.getClientArea();
hBar.setMaximum(rect.width);
vBar.setMaximum(rect.height);
hBar.setThumb(Math.min(rect.width,client.width));
vBar.setThumb(Math.min(rect.height,client.height));
inthPage=rect.width-client.width;
intvPage=rect.height-client.height;
inthSelection=hBar.getSelection();
intvSelection=vBar.getSelection();
if(hSelection>=hPage)...{
if(hPage<=0)
hSelection=0;
origin.x=-hSelection;
}
if(vSelection>=vPage)...{
if(vPage<=0)
vSelection=0;
origin.y=-vSelection;
}
canvas.redraw();
}
});
canvas.addListener(SWT.Paint,newListener()...{
publicvoidhandleEvent(Evente)...{
GCgc=e.gc;
gc.drawImage(image,origin.x,origin.y);
Rectanglerect=image.getBounds();
Rectangleclient=canvas.getClientArea();
intmarginWidth=client.width-rect.width;
if(marginWidth>0)...{
gc.fillRectangle(rect.width,0,marginWidth,client.height);
}
intmarginHeight=client.height-rect.height;
if(marginHeight>0)...{
gc
.fillRectangle(0,rect.height,client.width,
marginHeight);
}
}
});
canvas.addMouseListener(newMouseListener()...{
publicvoidmouseDown(MouseEvente)...{
intx=e.x,y=e.y;
intmin=HEIGHT,max=HEIGHT+HEIGHT;
if(WIDTH<x&&x<WIDTH+WIDTH)...{
for(inti=0;i<index;i++)...{
if(min<y&&y<max)...{
click=i;
createImage(parent);
canvas.redraw();
break;
}
min=max+HEIGHT;
max=min+HEIGHT;
}
}
}
publicvoidmouseDoubleClick(MouseEvente)...{
}
publicvoidmouseUp(MouseEvente)...{
}
});
}
privatevoidcreateImage(finalCompositeparent)...{
intCANVAS_WIDTH=3*WIDTH,CANVAS_HEIGHT=(2*index+1)*HEIGHT;
image=newImage(parent.getDisplay(),CANVAS_WIDTH,CANVAS_HEIGHT);
GCgc=newGC(image);
drawTable(parent,gc,names);
drawLine(gc);
gc.dispose();
}
privatevoiddrawLine(GCgc)...{
for(inti=0,x=(int)(WIDTH+0.5*WIDTH),y=2*HEIGHT;i<index-1;i++)...{
gc.drawLine(x,y,x,y+HEIGHT);
y=y+HEIGHT;
y+=HEIGHT;
}
}
privatevoiddrawTable(finalCompositeparent,GCgc,String[]name)...{
for(inti=0,x=WIDTH,y=HEIGHT;i<index;i++)...{
if(i>0)
y+=2*HEIGHT;
if(i==click)...{
gc.drawRectangle(x,y,WIDTH,HEIGHT);
gc.setBackground(parent.getShell().getDisplay().getSystemColor(
SWT.COLOR_CYAN));
gc.fillRectangle(x+1,y+1,WIDTH-1,HEIGHT-1);
gc.drawText(name[i],x+5,y+5);
}else...{
gc.setBackground(parent.getShell().getDisplay().getSystemColor(
SWT.COLOR_WHITE));
gc.drawRectangle(x,y,WIDTH,HEIGHT);
gc.drawText(name[i],x+5,y+5);
}
}
}
privateTablecreateTable(Compositecomposite)...{
Tabletable=newTable(composite,SWT.MULTI|SWT.FULL_SELECTION
|SWT.BORDER);
GridDatagd;
TableColumntc=newTableColumn(table,SWT.LEFT);
tc.setWidth(100);
tc.setText("name");
tc=newTableColumn(table,SWT.LEFT);
tc.setWidth(100);
tc.setText("type");
table.setHeaderVisible(true);
table.setLinesVisible(true);
gd=newGridData();
gd.horizontalAlignment=GridData.FILL;
gd.verticalAlignment=GridData.FILL;
gd.grabExcessHorizontalSpace=true;
gd.horizontalSpan=4;
table.setLayoutData(gd);
returntable;
}
privateCompositecreateTableBtnsComposite(Compositecomposite)...{
GridLayoutglayout;
GridDatagd;
CompositetableBtnsComposite=newComposite(composite,SWT.NULL);
gd=newGridData(GridData.FILL_VERTICAL);
gd.horizontalAlignment=GridData.FILL;
gd.horizontalSpan=1;
tableBtnsComposite.setLayoutData(gd);
glayout=newGridLayout(1,true);
tableBtnsComposite.setLayout(glayout);
returntableBtnsComposite;
}
privateButtoncreateTableBtn(CompositetableBtnsComposite,Stringtext)...{
GridDatagd;
Buttonbtn=newButton(tableBtnsComposite,SWT.PUSH);
btn.setText(text);
gd=newGridData(GridData.FILL_HORIZONTAL);
btn.setLayoutData(gd);
returnbtn;
}
privateButtoncreateUndoAndRedoBtn(CompositetableBtnsComposite,
Stringtext)...{
GridDatagd;
finalButtonbtn=newButton(tableBtnsComposite,SWT.PUSH);
btn.setText(text);
btn.setEnabled(false);
gd=newGridData(GridData.FILL_HORIZONTAL);
btn.setLayoutData(gd);
returnbtn;
}
privatevoidaddListener2MainBtnAdd(finalCompositeparent,
ButtonmainBtnAdd)...{
mainBtnAdd.addSelectionListener(newSelectionAdapter()...{
@Override
publicvoidwidgetSelected(SelectionEvente)...{
//TODO
SelectJoinTableDialogsjtd=newSelectJoinTableDialog(parent
.getShell());
sjtd.setInput(tableList);
sjtd.open();
intreturnCode=sjtd.getReturnCode();
if(returnCode==OK)...{
Object[]result=sjtd.getResult();
DataTabledt=(DataTable)result[0];
index++;
createImage(parent);
canvas.redraw();
}
}
});
}
privatevoidaddListener2AddBtn(Buttonadd,finalButtonundo,
finalButtonredo)...{
add.addSelectionListener(newSelectionAdapter()...{
@Override
publicvoidwidgetSelected(SelectionEvente)...{
StructuredSelectionselection=(StructuredSelection)initTableViewer
.getSelection();
columnMoveCommand=newColumnMoveCommand(initDataTable,
resultDataTable,selection);
columnMoveCommand.execute();
undo.setEnabled(true);
redo.setEnabled(true);
}
});
}
privatevoidaddListener2RemoveBtn(Buttonremove,finalButtonundo,
finalButtonredo)...{
remove.addSelectionListener(newSelectionAdapter()...{
@Override
publicvoidwidgetSelected(SelectionEvente)...{
StructuredSelectionselection=(StructuredSelection)resultTableViewer
.getSelection();
columnMoveCommand=newColumnMoveCommand(resultDataTable,
initDataTable,selection);
columnMoveCommand.execute();
undo.setEnabled(true);
redo.setEnabled(true);
}
});
}
privatevoidaddListener2UndoBtn(finalButtonundo)...{
undo.addSelectionListener(newSelectionAdapter()...{
@Override
publicvoidwidgetSelected(SelectionEvente)...{
columnMoveCommand.undo();
}
});
}
privatevoidaddListener2RedoBtn(finalButtonredo)...{
redo.addSelectionListener(newSelectionAdapter()...{
@Override
publicvoidwidgetSelected(SelectionEvente)...{
columnMoveCommand.redo();
}
});
}
privatevoidaddListener2AddAllBtn(ButtonaddAll,finalButtonundo,
finalButtonredo)...{
addAll.addSelectionListener(newSelectionAdapter()...{
@Override
publicvoidwidgetSelected(SelectionEvente)...{
columnMoveCommand=newColumnMoveCommand(initDataTable,
resultDataTable);
columnMoveCommand.execute();
undo.setEnabled(true);
redo.setEnabled(true);
}
});
}
privatevoidaddListener2RemoveAllBtn(ButtonremoveAll,finalButtonundo,
finalButtonredo)...{
removeAll.addSelectionListener(newSelectionAdapter()...{
@Override
publicvoidwidgetSelected(SelectionEvente)...{
columnMoveCommand=newColumnMoveCommand(resultDataTable,
initDataTable);
columnMoveCommand.execute();
undo.setEnabled(true);
redo.setEnabled(true);
}
});
}
publicvoidonEnterPage()...{
AutoDataSetWizardControllercontroller=((AutoDataSetWizard)getWizard())
.getController();
tableList=controller.getTableList();
initDataTable=controller.getSelectedTable();
initTableViewer.setInput(initDataTable);
resultDataTable=DoradoFactory.eINSTANCE.createDataTable();
resultTableViewer.setInput(resultDataTable);
setNames();
redrawImage();
}
privatevoidsetNames()...{
names=newString[tableList.size()];
inti=0;
for(Iteratorit=tableList.iterator();it.hasNext();i++)...{
DataTabletable=(DataTable)it.next();
names[i]=table.getName();
}
}
privatevoidredrawImage()...{
Compositeparent=canvas.getParent();
createImage(parent);
canvas.redraw();
}
privateclassColumnContentProviderimplementsIStructuredContentProvider...{
publicObject[]getElements(ObjectinputElement)...{
DataTabletable=(DataTable)inputElement;
returntable.getColumns().toArray();
}
publicvoiddispose()...{
}
publicvoidinputChanged(Viewerviewer,ObjectoldInput,ObjectnewInput)...{
}
}
privateclassColumnLabelProviderimplementsITableLabelProvider...{
publicImagegetColumnImage(Objectelement,intcolumnIndex)...{
returnnull;
}
publicStringgetColumnText(Objectelement,intcolumnIndex)...{
Columncolumn=(Column)element;
Stringtext="";
switch(columnIndex)...{
case0:
text=column.getName();
break;
case1:
text=column.getType();
break;
}
returntext;
}
publicvoidaddListener(ILabelProviderListenerlistener)...{
}
publicvoiddispose()...{
}
publicbooleanisLabelProperty(Objectelement,Stringproperty)...{
returnfalse;
}
publicvoidremoveListener(ILabelProviderListenerlistener)...{
}
}
privateclassColumnMoveCommand...{
DataTablesrc,dest;
Listcolumns;
StructuredSelectionselection;
publicColumnMoveCommand(DataTablesrc,DataTabledest)...{
this.src=src;
this.dest=dest;
columns=newArrayList();
for(Iteratorit=src.getColumns().iterator();it.hasNext();)...{
Columncolumn=(Column)it.next();
columns.add(column);
}
}
publicColumnMoveCommand(DataTablesrc,DataTabledest,
StructuredSelectionselection)...{
this.src=src;
this.dest=dest;
this.selection=selection;
columns=newArrayList();
for(Iteratorit=selection.iterator();it.hasNext();)...{
Columncolumn=(Column)it.next();
columns.add(column);
}
}
publicvoidexecute()...{
for(Iteratorit=columns.iterator();it.hasNext();)...{
Columnc=(Column)it.next();
src.getColumns().remove(c);
dest.getColumns().add(c);
}
refreshTable();
}
publicvoidundo()...{
for(Iteratorit=columns.iterator();it.hasNext();)...{
Columnc=(Column)it.next();
src.getColumns().add(c);
dest.getColumns().remove(c);
}
refreshTable();
}
publicvoidredo()...{
execute();
}
privatevoidrefreshTable()...{
initTableViewer.refresh();
resultTableViewer.refresh();
}
}
}
*@authorRey
*/
publicclassAutoSqlDataSetPageextendsWizardPage...{
publicstaticfinalStringID="AutoSqlDataSetPage";
privatestaticfinalintOK=0;
privatestaticfinalintCANCEL=-1;
privateListtableList=null;
privateDataTableinitDataTable=null,resultDataTable=null;
privateTableViewerinitTableViewer=null,resultTableViewer=null;
privateString[]names=newString[]...{""};
publicAutoSqlDataSetPage()...{
super(ID);
}
privateintindex=1;//input
privateintclick=-1;
privateImageimage=null;
privateintWIDTH=40,HEIGHT=40;
privateCanvascanvas=null;
privateColumnMoveCommandcolumnMoveCommand=null;
publicvoidcreateControl(finalCompositeparent)...{
setTitle("AutoSqlDataSetWizard");
setMessage("XXXXXXXXXXXXXXXX",IMessageProvider.INFORMATION);
Compositecomposite=newComposite(parent,SWT.NULL);
GridLayoutglayout=newGridLayout(9,true);
composite.setLayout(glayout);
CompositemainBtnsComposite=createMainBtnsComposite(composite);
ButtonmainBtnAdd=createMainBtn(mainBtnsComposite,"Add");
ButtonmainBtnRemove=createMainBtn(mainBtnsComposite,"Remove");
ButtonmainBtnProperties=createMainBtn(mainBtnsComposite,"Properties");
ButtonmainBtnPreview=createMainBtn(mainBtnsComposite,"Preview");
createSeparator(composite);
createImage(composite);
createCanvas(composite);
addListener2Canvas(parent);
TableinitTable=createTable(composite);
initTableViewer=newTableViewer(initTable);
initTableViewer.setContentProvider(newColumnContentProvider());
initTableViewer.setLabelProvider(newColumnLabelProvider());
CompositetableBtnsComposite=createTableBtnsComposite(composite);
finalButtonadd=createTableBtn(tableBtnsComposite,">>");
finalButtonremove=createTableBtn(tableBtnsComposite,"<<");
finalButtonaddAll=createTableBtn(tableBtnsComposite,">>>");
finalButtonremoveAll=createTableBtn(tableBtnsComposite,"<<<");
finalButtonundo=createUndoAndRedoBtn(tableBtnsComposite,"undo");
finalButtonredo=createUndoAndRedoBtn(tableBtnsComposite,"redo");
TableresultTable=createTable(composite);
resultTableViewer=newTableViewer(resultTable);
resultTableViewer.setContentProvider(newColumnContentProvider());
resultTableViewer.setLabelProvider(newColumnLabelProvider());
/***//***********************************************************************
*MainBtns'SelectionListener
**********************************************************************/
addListener2MainBtnAdd(parent,mainBtnAdd);
/***//***********************************************************************
*TableandColumnBtns'SelectionListener
**********************************************************************/
addListener2AddBtn(add,undo,redo);
addListener2RemoveBtn(remove,undo,redo);
addListener2UndoBtn(undo);
addListener2RedoBtn(redo);
addListener2AddAllBtn(addAll,undo,redo);
addListener2RemoveAllBtn(removeAll,undo,redo);
setControl(composite);
setPageComplete(true);
}
privateCompositecreateMainBtnsComposite(Compositecomposite)...{
GridLayoutglayout;
CompositemainBtnsComposite=newComposite(composite,SWT.NULL);
GridDatagd=newGridData(GridData.FILL_HORIZONTAL);
gd.horizontalSpan=9;
mainBtnsComposite.setLayoutData(gd);
glayout=newGridLayout(9,true);
mainBtnsComposite.setLayout(glayout);
returnmainBtnsComposite;
}
privateButtoncreateMainBtn(CompositemainBtnsComposite,Stringtext)...{
GridDatagd;
ButtonmainBtnAdd=newButton(mainBtnsComposite,SWT.PUSH);
mainBtnAdd.setText(text);
gd=newGridData(GridData.FILL_HORIZONTAL);
mainBtnAdd.setLayoutData(gd);
returnmainBtnAdd;
}
privatevoidcreateSeparator(Compositecomposite)...{
GridDatagd;
Labellabel=newLabel(composite,SWT.SEPARATOR|SWT.HORIZONTAL);
gd=newGridData(GridData.HORIZONTAL_ALIGN_FILL);
gd.horizontalSpan=9;
label.setLayoutData(gd);
}
privatevoidcreateCanvas(Compositecomposite)...{
GridDatagd;
canvas=newCanvas(composite,SWT.NO_REDRAW_RESIZE|SWT.V_SCROLL
|SWT.H_SCROLL);
gd=newGridData(GridData.FILL_BOTH);
gd.horizontalSpan=9;
canvas.setLayoutData(gd);
}
privatevoidaddListener2Canvas(finalCompositeparent)...{
finalPointorigin=newPoint(0,0);
finalScrollBarhBar=canvas.getHorizontalBar();
hBar.addListener(SWT.Selection,newListener()...{
publicvoidhandleEvent(Evente)...{
inthSelection=hBar.getSelection();
intdestX=-hSelection-origin.x;
Rectanglerect=image.getBounds();
canvas.scroll(destX,0,0,0,rect.width,rect.height,false);
origin.x=-hSelection;
}
});
finalScrollBarvBar=canvas.getVerticalBar();
vBar.addListener(SWT.Selection,newListener()...{
publicvoidhandleEvent(Evente)...{
intvSelection=vBar.getSelection();
intdestY=-vSelection-origin.y;
Rectanglerect=image.getBounds();
canvas.scroll(0,destY,0,0,rect.width,rect.height,false);
origin.y=-vSelection;
}
});
canvas.addListener(SWT.Resize,newListener()...{
publicvoidhandleEvent(Evente)...{
Rectanglerect=image.getBounds();
Rectangleclient=canvas.getClientArea();
hBar.setMaximum(rect.width);
vBar.setMaximum(rect.height);
hBar.setThumb(Math.min(rect.width,client.width));
vBar.setThumb(Math.min(rect.height,client.height));
inthPage=rect.width-client.width;
intvPage=rect.height-client.height;
inthSelection=hBar.getSelection();
intvSelection=vBar.getSelection();
if(hSelection>=hPage)...{
if(hPage<=0)
hSelection=0;
origin.x=-hSelection;
}
if(vSelection>=vPage)...{
if(vPage<=0)
vSelection=0;
origin.y=-vSelection;
}
canvas.redraw();
}
});
canvas.addListener(SWT.Paint,newListener()...{
publicvoidhandleEvent(Evente)...{
GCgc=e.gc;
gc.drawImage(image,origin.x,origin.y);
Rectanglerect=image.getBounds();
Rectangleclient=canvas.getClientArea();
intmarginWidth=client.width-rect.width;
if(marginWidth>0)...{
gc.fillRectangle(rect.width,0,marginWidth,client.height);
}
intmarginHeight=client.height-rect.height;
if(marginHeight>0)...{
gc
.fillRectangle(0,rect.height,client.width,
marginHeight);
}
}
});
canvas.addMouseListener(newMouseListener()...{
publicvoidmouseDown(MouseEvente)...{
intx=e.x,y=e.y;
intmin=HEIGHT,max=HEIGHT+HEIGHT;
if(WIDTH<x&&x<WIDTH+WIDTH)...{
for(inti=0;i<index;i++)...{
if(min<y&&y<max)...{
click=i;
createImage(parent);
canvas.redraw();
break;
}
min=max+HEIGHT;
max=min+HEIGHT;
}
}
}
publicvoidmouseDoubleClick(MouseEvente)...{
}
publicvoidmouseUp(MouseEvente)...{
}
});
}
privatevoidcreateImage(finalCompositeparent)...{
intCANVAS_WIDTH=3*WIDTH,CANVAS_HEIGHT=(2*index+1)*HEIGHT;
image=newImage(parent.getDisplay(),CANVAS_WIDTH,CANVAS_HEIGHT);
GCgc=newGC(image);
drawTable(parent,gc,names);
drawLine(gc);
gc.dispose();
}
privatevoiddrawLine(GCgc)...{
for(inti=0,x=(int)(WIDTH+0.5*WIDTH),y=2*HEIGHT;i<index-1;i++)...{
gc.drawLine(x,y,x,y+HEIGHT);
y=y+HEIGHT;
y+=HEIGHT;
}
}
privatevoiddrawTable(finalCompositeparent,GCgc,String[]name)...{
for(inti=0,x=WIDTH,y=HEIGHT;i<index;i++)...{
if(i>0)
y+=2*HEIGHT;
if(i==click)...{
gc.drawRectangle(x,y,WIDTH,HEIGHT);
gc.setBackground(parent.getShell().getDisplay().getSystemColor(
SWT.COLOR_CYAN));
gc.fillRectangle(x+1,y+1,WIDTH-1,HEIGHT-1);
gc.drawText(name[i],x+5,y+5);
}else...{
gc.setBackground(parent.getShell().getDisplay().getSystemColor(
SWT.COLOR_WHITE));
gc.drawRectangle(x,y,WIDTH,HEIGHT);
gc.drawText(name[i],x+5,y+5);
}
}
}
privateTablecreateTable(Compositecomposite)...{
Tabletable=newTable(composite,SWT.MULTI|SWT.FULL_SELECTION
|SWT.BORDER);
GridDatagd;
TableColumntc=newTableColumn(table,SWT.LEFT);
tc.setWidth(100);
tc.setText("name");
tc=newTableColumn(table,SWT.LEFT);
tc.setWidth(100);
tc.setText("type");
table.setHeaderVisible(true);
table.setLinesVisible(true);
gd=newGridData();
gd.horizontalAlignment=GridData.FILL;
gd.verticalAlignment=GridData.FILL;
gd.grabExcessHorizontalSpace=true;
gd.horizontalSpan=4;
table.setLayoutData(gd);
returntable;
}
privateCompositecreateTableBtnsComposite(Compositecomposite)...{
GridLayoutglayout;
GridDatagd;
CompositetableBtnsComposite=newComposite(composite,SWT.NULL);
gd=newGridData(GridData.FILL_VERTICAL);
gd.horizontalAlignment=GridData.FILL;
gd.horizontalSpan=1;
tableBtnsComposite.setLayoutData(gd);
glayout=newGridLayout(1,true);
tableBtnsComposite.setLayout(glayout);
returntableBtnsComposite;
}
privateButtoncreateTableBtn(CompositetableBtnsComposite,Stringtext)...{
GridDatagd;
Buttonbtn=newButton(tableBtnsComposite,SWT.PUSH);
btn.setText(text);
gd=newGridData(GridData.FILL_HORIZONTAL);
btn.setLayoutData(gd);
returnbtn;
}
privateButtoncreateUndoAndRedoBtn(CompositetableBtnsComposite,
Stringtext)...{
GridDatagd;
finalButtonbtn=newButton(tableBtnsComposite,SWT.PUSH);
btn.setText(text);
btn.setEnabled(false);
gd=newGridData(GridData.FILL_HORIZONTAL);
btn.setLayoutData(gd);
returnbtn;
}
privatevoidaddListener2MainBtnAdd(finalCompositeparent,
ButtonmainBtnAdd)...{
mainBtnAdd.addSelectionListener(newSelectionAdapter()...{
@Override
publicvoidwidgetSelected(SelectionEvente)...{
//TODO
SelectJoinTableDialogsjtd=newSelectJoinTableDialog(parent
.getShell());
sjtd.setInput(tableList);
sjtd.open();
intreturnCode=sjtd.getReturnCode();
if(returnCode==OK)...{
Object[]result=sjtd.getResult();
DataTabledt=(DataTable)result[0];
index++;
createImage(parent);
canvas.redraw();
}
}
});
}
privatevoidaddListener2AddBtn(Buttonadd,finalButtonundo,
finalButtonredo)...{
add.addSelectionListener(newSelectionAdapter()...{
@Override
publicvoidwidgetSelected(SelectionEvente)...{
StructuredSelectionselection=(StructuredSelection)initTableViewer
.getSelection();
columnMoveCommand=newColumnMoveCommand(initDataTable,
resultDataTable,selection);
columnMoveCommand.execute();
undo.setEnabled(true);
redo.setEnabled(true);
}
});
}
privatevoidaddListener2RemoveBtn(Buttonremove,finalButtonundo,
finalButtonredo)...{
remove.addSelectionListener(newSelectionAdapter()...{
@Override
publicvoidwidgetSelected(SelectionEvente)...{
StructuredSelectionselection=(StructuredSelection)resultTableViewer
.getSelection();
columnMoveCommand=newColumnMoveCommand(resultDataTable,
initDataTable,selection);
columnMoveCommand.execute();
undo.setEnabled(true);
redo.setEnabled(true);
}
});
}
privatevoidaddListener2UndoBtn(finalButtonundo)...{
undo.addSelectionListener(newSelectionAdapter()...{
@Override
publicvoidwidgetSelected(SelectionEvente)...{
columnMoveCommand.undo();
}
});
}
privatevoidaddListener2RedoBtn(finalButtonredo)...{
redo.addSelectionListener(newSelectionAdapter()...{
@Override
publicvoidwidgetSelected(SelectionEvente)...{
columnMoveCommand.redo();
}
});
}
privatevoidaddListener2AddAllBtn(ButtonaddAll,finalButtonundo,
finalButtonredo)...{
addAll.addSelectionListener(newSelectionAdapter()...{
@Override
publicvoidwidgetSelected(SelectionEvente)...{
columnMoveCommand=newColumnMoveCommand(initDataTable,
resultDataTable);
columnMoveCommand.execute();
undo.setEnabled(true);
redo.setEnabled(true);
}
});
}
privatevoidaddListener2RemoveAllBtn(ButtonremoveAll,finalButtonundo,
finalButtonredo)...{
removeAll.addSelectionListener(newSelectionAdapter()...{
@Override
publicvoidwidgetSelected(SelectionEvente)...{
columnMoveCommand=newColumnMoveCommand(resultDataTable,
initDataTable);
columnMoveCommand.execute();
undo.setEnabled(true);
redo.setEnabled(true);
}
});
}
publicvoidonEnterPage()...{
AutoDataSetWizardControllercontroller=((AutoDataSetWizard)getWizard())
.getController();
tableList=controller.getTableList();
initDataTable=controller.getSelectedTable();
initTableViewer.setInput(initDataTable);
resultDataTable=DoradoFactory.eINSTANCE.createDataTable();
resultTableViewer.setInput(resultDataTable);
setNames();
redrawImage();
}
privatevoidsetNames()...{
names=newString[tableList.size()];
inti=0;
for(Iteratorit=tableList.iterator();it.hasNext();i++)...{
DataTabletable=(DataTable)it.next();
names[i]=table.getName();
}
}
privatevoidredrawImage()...{
Compositeparent=canvas.getParent();
createImage(parent);
canvas.redraw();
}
privateclassColumnContentProviderimplementsIStructuredContentProvider...{
publicObject[]getElements(ObjectinputElement)...{
DataTabletable=(DataTable)inputElement;
returntable.getColumns().toArray();
}
publicvoiddispose()...{
}
publicvoidinputChanged(Viewerviewer,ObjectoldInput,ObjectnewInput)...{
}
}
privateclassColumnLabelProviderimplementsITableLabelProvider...{
publicImagegetColumnImage(Objectelement,intcolumnIndex)...{
returnnull;
}
publicStringgetColumnText(Objectelement,intcolumnIndex)...{
Columncolumn=(Column)element;
Stringtext="";
switch(columnIndex)...{
case0:
text=column.getName();
break;
case1:
text=column.getType();
break;
}
returntext;
}
publicvoidaddListener(ILabelProviderListenerlistener)...{
}
publicvoiddispose()...{
}
publicbooleanisLabelProperty(Objectelement,Stringproperty)...{
returnfalse;
}
publicvoidremoveListener(ILabelProviderListenerlistener)...{
}
}
privateclassColumnMoveCommand...{
DataTablesrc,dest;
Listcolumns;
StructuredSelectionselection;
publicColumnMoveCommand(DataTablesrc,DataTabledest)...{
this.src=src;
this.dest=dest;
columns=newArrayList();
for(Iteratorit=src.getColumns().iterator();it.hasNext();)...{
Columncolumn=(Column)it.next();
columns.add(column);
}
}
publicColumnMoveCommand(DataTablesrc,DataTabledest,
StructuredSelectionselection)...{
this.src=src;
this.dest=dest;
this.selection=selection;
columns=newArrayList();
for(Iteratorit=selection.iterator();it.hasNext();)...{
Columncolumn=(Column)it.next();
columns.add(column);
}
}
publicvoidexecute()...{
for(Iteratorit=columns.iterator();it.hasNext();)...{
Columnc=(Column)it.next();
src.getColumns().remove(c);
dest.getColumns().add(c);
}
refreshTable();
}
publicvoidundo()...{
for(Iteratorit=columns.iterator();it.hasNext();)...{
Columnc=(Column)it.next();
src.getColumns().add(c);
dest.getColumns().remove(c);
}
refreshTable();
}
publicvoidredo()...{
execute();
}
privatevoidrefreshTable()...{
initTableViewer.refresh();
resultTableViewer.refresh();
}
}
}
相关推荐
某些项目如Extract Method和Move Field看起来可能很浅显,但不要掉以轻心,因为理解这类技术正是有条不紊地进行重构的关键。本书所提的这些重构准则将帮助你壹次壹小步地修改你的代码,这就减少了过程中的风险。很快...
某些项目如Extract Method和Move Field看起来可能很浅显,但不要掉以轻心,因为理解这类技术正是有条不紊地进行重构的关键。本书所提的这些重构准则将帮助你一次一小步地修改你的代码,这就减少了过程中的风险。很快...
6.1 Extract Method(提炼函数) 110 6.2 Inline Method(内联函数) 117 6.3 Inline Temp(内联临时变量) 119 6.4 Replace Temp with Query(以查询取代临时变量) 120 6.5 Introduce Explaining ...
6.1 Extract Method(提炼函数) 6.2 Inline Method(将函数内联化) 6.3 Inline Temp(将临时变量内联化) 6.4 Replace Temp With Query(以查询取代临时变量) 6.5 Introduce Explaining Variable(引入解释性变量...
某些项目如Extract Method和Move Field看起来可能很浅显,但不要掉以轻心,因为理解这类技术正是有条不紊地进行重构的关键。本书所提的这些重构准则将帮助你一次一小步地修改你的代码,这就减少了过程中的风险。很快...
某些项目如Extract Method和Move Field看起来可能很浅显,但不要掉以轻心,因为理解这类技术正是有条不紊地进行重构的关键。本书所提的这些重构准则将帮助你壹次壹小步地修改你的代码,这就减少了过程中的风险。很快...
Extract Method 提取方法 Inline Method 内联方法 Inline Temp 内联临时变量 *Replace Temp with Query 用查询方法代替临时变量 Introduce Explaining Variable 引入解释性变量 Split ...
某些项目如Extract Method和Move Field看起来可能很浅显,但不要掉以轻心,因为理解这类技术正是有条不紊地进行重构的关键。本书所提的这些重构准则将帮助你壹次壹小步地修改你的代码,这就减少了过程中的风险。很快...
某些项目如Extract Method和Move Field看起来可能很浅显,但不要掉以轻心,因为理解这类技术正是有条不紊地进行重构的关键。本书所提的这些重构准则将帮助你壹次壹小步地修改你的代码,这就减少了过程中的风险。很快...
6.1 Extract Method(提炼函数) 6.2 Inline Method(将函数内联化) 6.3 Inline Temp(将临时变量内联化) 6.4 Replace Temp With Query(以查询取代临时变量) 6.5 Introduce Explaining Variable(引入解释性变量...
某些项目如Extract Method和Move Field看起来可能很浅显,但不要掉以轻心,因为理解这类技术正是有条不紊地进行重构的关键。本书所提的这些重构准则将帮助你壹次壹小步地修改你的代码,这就减少了过程中的风险。很快...
Martin Fowler和《重构:改善既有代码的设计》(中文版)另几位作者清楚揭示了重构过程,他们...某些项目如Extract Method和Move Field看起来可能很浅显,但不要掉以轻心,因为理解这类技术正是有条不紊地进行重构的关键。
本工具用于代码重构和代码自动生成。现阶段主要用于C#代码重构。 所谓重构也就是“保持软件的外在功能不变,重新调整其内部结构”。 关于每种重构模式的含义,请参见http://www.refactoring.com/ 具体功能...
Martin Fowler和《重构:改善既有代码的设计》(中文版)另几位...某些项目如Extract Method和Move Field看起来可能很浅显,但不要掉以轻心,因为理解这类技术正是有条不紊地进行重构的关键。点击进入该书更多详细信息。