簡體   English   中英

為什么添加項目會弄亂Eclipse 3.2插件中的工具欄?

[英]Why does adding an item messes up toolbar in an Eclipse 3.2 Plugin?

我正在為將按鈕添加到Eclipse插件的工具欄進行一項增強。 該技術是相當古老的。 我正在使用IBM Rational Application Developer 7.0.10。 這是我所看到的版本

JDK 1.5
Eclipse Platform 3.2.2
Eclipse Plugin Development 3.2.1
Eclipse RCP 3.2.2

當我的代碼向工具欄添加新按鈕時,它使工具欄變得混亂。 它僅顯示一些按鈕,而隱藏其余按鈕。 但是當我調整視圖的大小時,即使只有一點點,所有按鈕都會顯示。 屏幕面積似乎不大,因為放大視圖無濟於事。 我是Eclipse插件開發的新手,所以我不確定是什么原因造成的。 我似乎在做添加按鈕所需的操作。 我嘗試了不同的操作,例如insertBefore而不是add等。 但是似乎沒有什么幫助。

我編寫了一些測試代碼(使用Eclipse附帶的示例插件)來隔離問題,但是我沒有成功。 我給了2類的代碼。

// This class is generated from Elipse, to which I have added code
public class MenuBarTestView extends ViewPart {

    // Instance variables ...

   public void createPartControl(Composite parent) {
       viewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
       drillDownAdapter = new DrillDownAdapter(viewer);
       viewer.setContentProvider(new ViewContentProvider());
       viewer.setLabelProvider(new ViewLabelProvider());
       viewer.setSorter(new NameSorter());
       viewer.setInput(getViewSite());

       // Selection change listener, which adds a button to tool bar
       // I added the following line
       viewer.addSelectionChangedListener(new TreeSelectionChangedListener(this));

       makeActions();
       hookContextMenu();
       hookDoubleClickAction();
       contributeToActionBars();
   }

   .
   .  // Other Eclipse generated code for the sample plugin goes here
   .
   .

   // I added this method to add a button
   public void addButton () {

       IActionBars bars = getViewSite().getActionBars();
       IToolBarManager tbm = bars.getToolBarManager();

       Action action = new Action() {
          public void run() {
              showMessage("Action 1 executed");
          }
      };
      action.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages().
            getImageDescriptor(ISharedImages.IMG_OBJ_FOLDER));
      tbm.add(action);
      tbm.update(false);

   }
}

我為選擇更改事件編寫了以下課程

package menubartest.views;

import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.SelectionChangedEvent;

public class TreeSelectionChangedListener implements ISelectionChangedListener {

    private MenuBarTestView view;

    public TreeSelectionChangedListener(MenuBarTestView view) {
        super();
        this.view = view;
    }

    public void selectionChanged(SelectionChangedEvent event) {
        // TODO Auto-generated method stub
        view.addButton();
    }
}

當應用程序啟動時

這是應用程序首次出現的時間

這是在樹上的選擇

在此處輸入圖片說明

在經過如此微小的調整之后

在此處輸入圖片說明

有人可以幫忙嗎?

看起來您需要在添加到工具欄后調用IActionBars.updateActionBars()方法。

看來這是Eclipse 3.2(或至少與RAD 7.0捆綁在一起的版本)的一個錯誤。 我在Eclipse 3.7上嘗試了此操作,但未發現問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM