2013-10-09 72 views
1

我看了幾個地方,但似乎無法理解爲什麼我的代碼無法正常工作。我遵循的每一個教程都是一樣的,對我來說,它看起來像我正在做我該做的事情...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); 
      } 
     } 
    } 
} 
+0

你的'test.newAppWizard'類包含什麼? –

+0

我在問題中加入了它 – testuser

+0

您是否在正確的位置上找對方。對於「多頁面編輯器」示例,我會在新建/選擇嚮導對話框中的「示例嚮導」下列出嚮導。你的原件將在'Custom false new wizard' –

回答

1

的問題

看來你的插件在Eclipse運行時沒有被激活。 因此,你的嚮導沒有顯示在列表中。

解決方案

  1. 打開插件清單(MANIFEST.MF)。
  2. 檢查當其中一個類被加載在概述頁面上的常規信息部分中時,激活該插件。
+0

你,先生/女士,是一個英雄,爲我的一天而努力。感謝堆。 – testuser