我看了幾個地方,但似乎無法理解爲什麼我的代碼無法正常工作。我遵循的每一個教程都是一樣的,對我來說,它看起來像我正在做我該做的事情...Eclipse添加新的嚮導:擴展點不起作用
我也沒有得到任何警告或錯誤,所以人們會猜測它的工作原理。
我在做什麼:在Eclipse中添加一個嚮導,當你點擊「新建」。據我所知(我很新),我需要創建一個新的插件項目,我需要在我的plugin.xml文件中定義一些擴展。我還需要添加所有的依賴關係。
這是在我的plugin.xml:
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>
<extension point="org.eclipse.ui.actionSets">
</extension>
<extension point="org.eclipse.ui.newWizards">
<category
id="test.myNewWizard"
name="Custom false new wizard">
</category>
<wizard
category="test.myNewWizard"
class="test.NewAppWizard"
icon="icons/logo_16px.png"
id="test.NewAppWizard"
name="New Testing Test">
</wizard>
</extension>
</plugin>
象曰:我沒有警告或錯誤(控制檯即使不打印任何東西),所以這意味着類和圖標都應該找到。他們也都存在於同一個項目中。
我MANIFEST.MF
:
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: NewAppwizard
Bundle-SymbolicName: test.myNewWizard;singleton:=true
Bundle-Version: 1.0.0.qualifier
Require-Bundle: org.eclipse.ui,
org.eclipse.core.resources,
org.eclipse.ui.ide,
org.eclipse.core.runtime,
org.eclipse.core.databinding,
org.eclipse.core.databinding.beans,
org.eclipse.core.databinding.observable,
org.eclipse.core.databinding.property,
org.eclipse.jface.databinding,
com.ibm.icu
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
任何人有任何線索,爲什麼
- 我會在所有
- 沒有警告或錯誤,運行在所有的時候我在我的控制檯沒有輸出
- 我也無法在該屏幕中的「文件>新建>其他...」下找到嚮導?
我也嘗試創建一個新的樣本項目「文件>新建>插件項目」,使用這些設置:
- 生成一個激活:沒有
- 這個插件將作出自己的貢獻用戶界面:是
- 你想創建一個豐富的客戶端應用程序:沒有
「下一步」,「在插件使用的模板之一創建一個:」使用日e模板「帶有多頁面編輯器的插件」。那個也使用了一個Sample New Wizard,但是即使這個在創建它之後立即運行它,它也不會顯示嚮導選項。
最後說明:我通過打開「plugin.xml」文件「Overview」,「啓動Eclipse應用程序」來運行應用程序。
謝謝!
編輯:的要求,在這裏我test.NewAppWizard
類的內容:
package test;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.wizard.Wizard;
import org.eclipse.ui.INewWizard;
import org.eclipse.ui.IWorkbench;
public class NewAppWizard extends Wizard implements INewWizard {
private CreateAppPage firstPage;
public NewAppWizard() {
super();
setNeedsProgressMonitor(true);
setWindowTitle("Test");
}
@Override
public void addPages() {
firstPage = new CreateAppPage();
addPage(firstPage);
}
@Override
public void init(IWorkbench workbench, IStructuredSelection selection) {}
@Override
public boolean performFinish() {
return false;
}
@Override
public boolean canFinish() {
return false;
}
}
是完整的,這裏也有我的CreateAppPage
類:
package test;
import org.eclipse.jface.wizard.WizardPage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.KeyEvent;
import org.eclipse.swt.events.KeyListener;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
public class CreateAppPage extends WizardPage {
private Text testName;
private Composite container;
private KeyListener pageComplete;
public CreateAppPage() {
super("Create a new application");
setTitle("Create a new application");
pageComplete = new PageCompleteKeyListener();
}
@Override
public void createControl(Composite parent) {
container = new Composite(parent, SWT.NONE);
GridLayout layout = new GridLayout();
container.setLayout(layout);
layout.numColumns = 2;
Label lblTestName = new Label(container, SWT.NONE);
lblTestName.setText("Application name:");
testName = new Text(container, SWT.BORDER | SWT.SINGLE | SWT.FILL);
testName.addKeyListener(pageComplete);
GridData gd = new GridData(GridData.FILL_HORIZONTAL);
testName.setLayoutData(gd);
setControl(container);
setPageComplete(false);
}
public String getName() {
return testName.getText();
}
private class PageCompleteKeyListener implements KeyListener {
public void keyPressed(KeyEvent e) {}
public void keyReleased(KeyEvent e) {
if (testName.getText().isEmpty()) {
setErrorMessage("Name cannot be empty");
setPageComplete(false);
} else {
setErrorMessage(null);
setPageComplete(true);
}
}
}
}
你的'test.newAppWizard'類包含什麼? –
我在問題中加入了它 – testuser
您是否在正確的位置上找對方。對於「多頁面編輯器」示例,我會在新建/選擇嚮導對話框中的「示例嚮導」下列出嚮導。你的原件將在'Custom false new wizard' –