eclipse插件开发问题

Areslp 2007-01-23 03:56:26
写了一个插件,我想在eclipse里面点运行时,得到一个打开的编辑框的画布里的图形,让这个图形改变颜色,编辑框是用gmf做的,以前没有做过插件,我不知道要实现这种效果应该是在launch里面去想办法得到图形对象还是还需要在editor里面做些事情,麻烦大家指点一下,谢谢了:)
...全文
290 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
iloveu521 2007-09-24
  • 打赏
  • 举报
回复
EList elist=diagram.getChildren(); //为什么运行到这里就死掉了呢?
diagram.getChildren(); 返回的是List
Areslp 2007-01-31
  • 打赏
  • 举报
回复
up一下,现在取到editpart对象了,但是按照八进制blog上写的((org.eclipse.gmf.runtime.notation.View) EditPart.getModel()).getElement()或ViewUtil.resolveSemanticElement(view)确出现问题,程序最后跑到
private void runEventLoop(Window.IExceptionHandler handler, Display display)里死循环
现在代码如下:
public void launch(ISelection selection, String mode) {
// TODO 自动生成方法存根
try {
System.out.println("start");
IWorkbenchPage page = PlatformUI.getWorkbench()
.getActiveWorkbenchWindow().getActivePage();
IEditorPart ieditorpart = page.getActiveEditor();

MindmapDiagramEditor editor = (MindmapDiagramEditor) ieditorpart;
// TransactionalEditingDomain domain=editor.getEditingDomain();
// DiagramEditPart diagrameditpart=editor.getDiagramEditPart();
// Diagram diagram = editor.getDiagram();
//editor.close(false);
editor.setFocus();
// cn.edu.buaa.testsuite.diagram.edit.parts.MapEditPart o=(cn.edu.buaa.testsuite.diagram.edit.parts.MapEditPart)editor.getDiagramEditPart();
// System.out.println(o.getClass());

Object o=editor.getAdapter(GraphicalViewer.class);
if(o==null){
System.out.println("o is null");
}else{
System.out.println(o.getClass());
}
GraphicalViewer view=(GraphicalViewer)o;
List editparts=view.getContents().getChildren();
Iterator it=editparts.iterator();
while(it.hasNext()){
EditPart editpart=(EditPart)it.next();
if(editpart instanceof StateNodeEditPart){
StateNodeEditPart realeditpart=(StateNodeEditPart)editpart;
System.out.println("in::"+realeditpart);
Object temp=realeditpart.getModel();
System.out.println(temp.getClass());
EObject r=ViewUtil.resolveSemanticElement((View)temp);
}
if(editpart instanceof TopicEditPart){
TopicEditPart realeditpart=(TopicEditPart)editpart;
System.out.println("in::"+realeditpart);
}

System.out.println(editpart.getClass());
}



System.out.println("over");
} catch (Exception e) {
e.printStackTrace();
}
}
另外eclipse有时对gmf的某些类不能代码提示了,方法都显示不出来。。
上面那个死循环错误,我老遇到,但是又不知道是为什么,取到diagram对象的也是,debug都看到里面的children里是我想要的图形对象了,但是一调用getChildren就死循环了。。
Areslp 2007-01-30
  • 打赏
  • 举报
回复
public void launch(ISelection selection, String mode) {
// TODO 自动生成方法存根
try {
System.out.println("start");
IWorkbenchPage page = PlatformUI.getWorkbench()
.getActiveWorkbenchWindow().getActivePage();
IEditorPart ieditorpart = page.getActiveEditor();
MindmapDiagramEditor editor = (MindmapDiagramEditor) ieditorpart;
// TransactionalEditingDomain domain=editor.getEditingDomain();
DiagramEditPart diagrameditpart=editor.getDiagramEditPart();
Diagram diagram = editor.getDiagram();
EList elist=diagram.getChildren(); //为什么运行到这里就死掉了呢?
System.out.println("over");
} catch (Exception e) {
e.printStackTrace();
}
}
大头贼 2007-01-23
  • 打赏
  • 举报
回复
应该两边都要做吧,事件触发是在Launch里,但是launch里的操作还是要用到editor啊

58,454

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧