我正在开发一个增强功能,可以将按钮添加到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();
}
}
申请出现时
这是在树上的选择
这是在经历了如此轻微的调整后
有人可以帮忙吗?
答案 0 :(得分:0)
在添加到工具栏后,您似乎需要调用IActionBars.updateActionBars()
方法。
答案 1 :(得分:0)
这似乎是Eclipse 3.2(或至少与RAD 7.0捆绑在一起的版本)的错误。我用Eclipse 3.7尝试过这个并没有看到问题。