這幾天在做一個(gè)代碼生成器,順便開發(fā)個(gè)Eclipse插件。把自己的一些開發(fā)過程記錄下來以供參考。由于自己初步接觸Eclipse插件開發(fā),所以記錄的東西沒有什么深度。下面我們就來開發(fā)一個(gè)Wizard向?qū)А?BR>1. new一個(gè)plugin project,由于我們想通過代碼生成項(xiàng)目向?qū)硇陆ㄒ粋€(gè)項(xiàng)目,所以我們要用到Eclipse中的Wizard類。
2. 編輯plugin.xml,使之?dāng)U展org.eclipse.ui.newWizards,具體代碼:
<extension
point="org.eclipse.ui.newWizards">
<category
name="代碼生成"
id="com.hymake.hyplat.hycodegen">
</category>
<wizard
name="生成一個(gè)空項(xiàng)目"
icon="icons/1.gif"
category="com.hymake.hyplat.hycodegen"
class="com.hymake.hyplat.hycodegen.wizard.NewCodeGenWizard"
id="com.hymake.hyplat.hycodegen.wizard.new.project"
project="true" >
<description>
通過向?qū)梢粋€(gè)代碼生成項(xiàng)目框架
</description>
<selection
class="org.eclipse.core.resources.IResource">
</selection>
</wizard>
</extension>
這里我只是簡單用Eclipse UI中的WizardNewProjectCreationPage ,如果自己想自定義下一個(gè)頁面的風(fēng)格和內(nèi)容的話,也可以再新建一個(gè)類繼承WizardPage即可。代碼如下:
其中的createControl是必須實(shí)現(xiàn)的方法。
至此,我們一個(gè)簡單的向?qū)Ь椭谱魍瓿闪恕?BR>友情小貼士:
1.在制作向?qū)У臅r(shí)候,一定要實(shí)現(xiàn)addPages方法,否則你點(diǎn)下一步的時(shí)候,因?yàn)闆]有指定的Page而無法顯示出來。
2. 編輯plugin.xml,使之?dāng)U展org.eclipse.ui.newWizards,具體代碼:





















這里面的category就是在Eclipse的New->Project中的一個(gè)類別,例如Java或Plugin-Development類別。如圖:
通過點(diǎn)擊Next,將調(diào)用NewCodeGenWizard類,進(jìn)入新建項(xiàng)目窗體。如下圖:
至此,我們的向?qū)瓿桑唧w的代碼是這樣的:
NewCodeGenWizard:
1
public void init(IWorkbench workbench, IStructuredSelection selection)
{
2
this._workbench = workbench;
3
setNeedsProgressMonitor(true);
4
setWindowTitle("新建一個(gè)空項(xiàng)目");
5
}
6
7
/** *//**
8
* @see org.eclipse.jface.wizard.Wizard#performFinish()
9
*/
10
public boolean performFinish()
{
11
return false;
12
}
13
14
/** *//**
15
* @see org.eclipse.jface.wizard.Wizard#addPages()
16
*/
17
public void addPages()
{
18
super.addPages();
19
WizardNewProjectCreationPage page = new WizardNewProjectCreationPage("平臺開發(fā)-代碼生成");
20
page.setTitle("創(chuàng)建一個(gè)代碼生成項(xiàng)目框架");
21
page.setDescription("創(chuàng)建一個(gè)代碼生成項(xiàng)目框架");
22
addPage(page);
23
}



2

3

4

5

6

7


8

9

10



11

12

13

14


15

16

17



18

19

20

21

22

23

這里我只是簡單用Eclipse UI中的WizardNewProjectCreationPage ,如果自己想自定義下一個(gè)頁面的風(fēng)格和內(nèi)容的話,也可以再新建一個(gè)類繼承WizardPage即可。代碼如下:
1
public NewCodeGenWizardPage()
{
2
super("代碼生成-新建一個(gè)空項(xiàng)目");
3
setTitle("代碼生成-新建一個(gè)空項(xiàng)目");
4
setDescription("代碼生成-新建一個(gè)空項(xiàng)目");
5
setPageComplete(false);
6
workspaceRoot = ResourcesPlugin.getWorkspace().getRoot();
7
}
8
9
/** *//**
10
* @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
11
*/
12
public void createControl(Composite parent)
{
13
initializeDialogUnits(parent);
14
15
final Composite composite = createClientArea(parent);
16
17
createLabel(composite);
18
19
setControl(composite);
20
Dialog.applyDialogFont(composite);
21
}
22
23
/** *//**
24
* 創(chuàng)建一個(gè)用戶區(qū)域
25
* @param composite
26
* @return
27
*/
28
private Composite createClientArea(Composite composite)
{
29
Composite composite1 = new Composite(composite, SWT.NONE);
30
GridLayout gridlayout = new GridLayout();
31
gridlayout.marginWidth = 0;
32
gridlayout.marginHeight = 0;
33
gridlayout.numColumns = 3;
34
composite1.setLayout(gridlayout);
35
return composite1;
36
}
37
38
/** *//**
39
* 創(chuàng)建一個(gè)Label
40
* @param composite
41
*/
42
private void createLabel(Composite composite)
{
43
Label label = new Label(composite, 64);
44
label.setText("Label測試");
45
GridData griddata = new GridData();
46
griddata.widthHint = convertWidthInCharsToPixels(80);
47
griddata.horizontalSpan = 3;
48
label.setLayoutData(griddata);
49
}



2

3

4

5

6

7

8

9


10

11

12



13

14

15

16

17

18

19

20

21

22

23


24

25

26

27

28



29

30

31

32

33

34

35

36

37

38


39

40

41

42



43

44

45

46

47

48

49

其中的createControl是必須實(shí)現(xiàn)的方法。
至此,我們一個(gè)簡單的向?qū)Ь椭谱魍瓿闪恕?BR>友情小貼士:
1.在制作向?qū)У臅r(shí)候,一定要實(shí)現(xiàn)addPages方法,否則你點(diǎn)下一步的時(shí)候,因?yàn)闆]有指定的Page而無法顯示出來。