2013-03-08 69 views
0

我正在開發一個RCP應用程序,我想設置狀態行。我發現我可以擴展ActionBarAdvisor類,並通過重寫方法fillStatusLine()來設置狀態。Eclipse RCP:在狀態行中設置圖像

private StatusLineContributionItem statusItem; 

@Override 
protected void fillStatusLine(IStatusLineManager statusLine) { 
    statusItem = new StatusLineContributionItem("LoggedInStatus"); 
    statusItem.setText("Logged in"); 
    statusLine.add(statusItem); 
} 

現在,我希望設置圖像一起。是可以添加圖像狀態行?

回答

2

您需要重寫StatusLineContributionItem中的fill(Composite parent)方法。在那裏你可以添加自定義組件(圖像,按鈕等到狀態行)。例如:http://book.javanb.com/eclipse-rich-client-platform-designing-coding-and-packaging-java-applications-oct-2005/ch17lev1sec7.html

org.eclipsercp.hyperbola/StatusLineContribution 
public void fill(Composite parent) { 
    Label separator = new Label(parent, SWT.SEPARATOR); 
    label = new CLabel(parent, SWT.SHADOW_NONE); 

    GC gc = new GC(parent); 
    gc.setFont(parent.getFont()); 
    FontMetrics fm = gc.getFontMetrics(); 
    Point extent = gc.textExtent(text); 
    if (widthHint > 0) 
    widthHint = fm.getAverageCharWidth() * widthHint; 
    else 
    widthHint = extent.x; 
    heightHint = fm.getHeight(); 
    gc.dispose(); 

    StatusLineLayoutData statusLineLayoutData = new StatusLineLayoutData(); 
    statusLineLayoutData.widthHint = widthHint; 
    statusLineLayoutData.heightHint = heightHint; 
    label.setLayoutData(statusLineLayoutData); 
    label.setText(text); 
    label.setImage(image); 
    ... 
} 
0

您chould使用下面的類:org.eclipse.ui.texteditor.StatusLineContributionItem.class此包含方法setImage(圖像的圖像)。

它位於您的eclipse安裝的plugins/org.eclipse.ui.workbench.texteditor_(version).jar中。

這是類的擴展:org.eclipse.jface.action.StatusLineContributionItem.class。

請注意有兩個類命名爲:StatusLineContributionItem.class另一個駐留在:plugins/org.eclipse.jface_(version).jar中,命名爲:org.eclipse.jface.action.StatusLineContributionItem.class。

但是,這一個不包含setImage(圖像圖像)方法。

然後,您可以撥打:

StatusLineManager statusLine = new StatusLineManager(); 

StatusLineContributionItem i = new StatusLineContributionItem("myid"); 
i.setText("myText"); 
i.setImage(SWTResourceManager.getImage(MyClass.class, "config.gif"); 
... 
statusLine.add(i); 
... 
return statusLine; 

如果你想完全自定義,你可以使用上面覆蓋填充(複合複合)方法的解決方案。

參考: http://help.eclipse.org/luna/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Freference%2Fapi%2Forg%2Feclipse%2Fui%2Ftexteditor%2FStatusLineContributionItem.html