org.eclipse.ui.trim.status显示不完整的问题
程序员文章站
2022-05-18 10:49:57
...
解决这个问题翻找了很多英文文档,但是发布以后文章被到处复制没有来源,表示十分气愤。
如需转载,请标明来源http://equalxx.iteye.com/
在右下角添加状态时配置的control继承的类是WorkbenchWindowControlContribution,按正常步骤在createControl后发现只能调整横向大小,不能调整竖向,每次都是显示一部分,很奇怪。查了很多资料,包括eclipse登记的bug网址:
https://bugs.eclipse.org/bugs/show_bug.cgi?id=466609#c21
https://bugs.eclipse.org/bugs/show_bug.cgi?id=186800
https://bugs.eclipse.org/bugs/show_bug.cgi?id=471313
里面都有详细的对话描述问题,总之就是这个toolItem被固定了大小,且用户不可改变。
最后其实解决办法很简单,在createControl中添加parent.getParent().setRedraw(true);以及isDynamic
plugin.xml配置如下
<menuContribution locationURI=" toolbar:org.eclipse.ui.trim.status"> <toolbar id="test.trim.status.toolbar"> <control class="xxxxxxxx.ExampleControlContribution" id="xxxxxxxxx.ExampleControlContribution"> </control> </toolbar> </menuContribution>
类中代码如下
import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Image; 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.Control; import org.eclipse.ui.menus.WorkbenchWindowControlContribution; public class ExampleControlContribution extends WorkbenchWindowControlContribution { // Image imgOnLine = SignInConstants.online.createImage(); // Image imgOffLine = SignInConstants.offline.createImage(); // Image imgMessage = SignInConstants.message.createImage(); WorkbenchWindowControlContribution contribution; public ExampleControlContribution() { super(); contribution = this; } protected Control createControl(Composite parent) { parent.getParent().setRedraw(true); GridLayout gridLayout = new GridLayout(1, false); gridLayout.horizontalSpacing = 0; gridLayout.verticalSpacing = 0; gridLayout.marginLeft = 0; gridLayout.marginHeight = 0; gridLayout.marginTop = 0; gridLayout.numColumns = 1; parent.setLayout(gridLayout); GridData data = new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1); data.heightHint = 20; Button ccCtrl = new Button(parent, SWT.CENTER); // ccCtrl.setImage(imgOnLine); ccCtrl.setText("已登录"); ccCtrl.setToolTipText("已登录"); ccCtrl.setLayoutData(data); return parent; } @Override public boolean isDynamic() { return true; } }
下一篇: cache-fusion笔记
推荐阅读
-
关于php查询数据库记录显示的有关问题
-
jsp页面调用服务器端接口分页显示数据的问题
-
一个超难的问题,关于验证码不显示
-
,帮忙看看上面代码哪里异常了 JS显示Stack overflow at line:0 复选框全选和单选的时候也有点有关问题
-
access-PHP将十六进制流转换成图片显示在页面中的问题
-
关于在HTML表格中插入背景图片图片重复显示的问题_html/css_WEB-ITnose
-
解决ExtJS在chrome或火狐中正常显示在ie中不显示的浏览器兼容问题_extjs
-
Android ShapeDrawable 虚线 的显示问题
-
java - PHP curl模拟POST问题,为什么明明是模拟的是POST,firebug仍显示GET?
-
Android解决ScrollView下嵌套ListView和GridView中内容显示不全的问题