1

RCP アプリケーションを開発しています。ステータス ラインを設定したいと考えていました。ActionBarAdvisor クラスを拡張し、fillStatusLine() メソッドをオーバーライドすることでステータスを設定できることがわかりました。

private StatusLineContributionItem statusItem;

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

さて、それに合わせて画像を設定したいと思います。ステータスラインに画像を追加することはできますか?

4

2 に答える 2

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);
  ...
}
于 2013-03-09T19:28:54.990 に答える
0

次のクラスを使用する必要があります: org.eclipse.ui.texteditor.StatusLineContributionItem.class これにはメソッド setImage(Image image) が含まれます。

Eclipse インストールの plugins/org.eclipse.ui.workbench.texteditor_(version).jar にあります。

これはクラス拡張です: org.eclipse.jface.action.StatusLineContributionItem.class.

StatusLineContributionItem.class という名前の 2 つのクラスがあることに注意してください。

ただし、これには setImage(Image image) メソッドが含まれていません。

その後、次のように呼び出すことができます。

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;

完全なカスタマイズが必要な場合は、上記のソリューションを使用して、fill(Composite composite) メソッドをオーバーライドできます。

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

于 2015-03-03T06:16:14.917 に答える