eclipse中,gef组件怎么在editpart中实现鼠标悬浮提示信息,selectionHandlesEditPolicy是什么作用,可以用于鼠标悬浮提示吗?如果可以怎么用
时间: 2024-03-17 16:42:13 浏览: 31
要在GEF EditPart中实现鼠标悬浮提示信息,可以使用EditPartViewer的ToolTipHelper对象。具体来说,可以在EditPart中重写getAdapter()方法,返回IEditPartViewer的适配器,然后在适配器中实现ToolTipHelper对象的创建与配置。例如:
```java
@Override
public Object getAdapter(Class adapter) {
if (adapter == IEditPartViewer.class) {
return new IEditPartViewer() {
private ToolTipHelper toolTipHelper;
@Override
public Control getControl() {
return getViewer().getControl();
}
@Override
public void setEditDomain(EditDomain domain) {
// do nothing
}
@Override
public void setKeyHandler(KeyHandler handler) {
// do nothing
}
@Override
public void setSelectionManager(SelectionManager manager) {
// do nothing
}
@Override
public void setToolTipHelper(ToolTipHelper helper) {
toolTipHelper = helper;
}
@Override
public ToolTipHelper getToolTipHelper() {
if (toolTipHelper == null) {
toolTipHelper = new ToolTipHelper(getViewer().getControl());
toolTipHelper.activate();
}
return toolTipHelper;
}
};
}
return super.getAdapter(adapter);
}
```
SelectionHandlesEditPolicy是一个GEF的EditPolicy,用于控制选中EditPart时显示的handles。它本身不提供鼠标悬浮提示的功能,但可以通过重写它的getToolTipRequest()方法来实现。例如:
```java
public class MySelectionHandlesEditPolicy extends SelectionHandlesEditPolicy {
@Override
protected Request createTargetRequest() {
return new SelectionRequest(RequestConstants.REQ_SELECTION_HOVER);
}
@Override
protected void showTargetFeedback(Request request) {
if (request.getType() == RequestConstants.REQ_SELECTION_HOVER) {
// show tooltip
String tooltipText = "This is a tooltip";
getHostFigure().setToolTip(new Label(tooltipText));
} else {
super.showTargetFeedback(request);
}
}
@Override
protected void eraseTargetFeedback(Request request) {
if (request.getType() == RequestConstants.REQ_SELECTION_HOVER) {
// hide tooltip
getHostFigure().setToolTip(null);
} else {
super.eraseTargetFeedback(request);
}
}
}
```
然后在EditPart的createEditPolicies()方法中添加该EditPolicy即可:
```java
@Override
protected void createEditPolicies() {
super.createEditPolicies();
installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE, new MySelectionHandlesEditPolicy());
}
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)