Eclipse插件帮助 - 在自定义视图中显示结果

时间:2014-06-24 03:15:51

标签: java view eclipse-plugin

我对eclipse插件开发很新,所以如果问题非常简单,请耐心等待。我正在开发一个eclipse插件。我几乎完成了它,除了我被困在最后一步。我已经在plugin.xml文件中创建了自定义视图,并且我还使用它来实现IAction函数,以便为选择执行相应的操作。因此,使用它的逻辑是,在用户执行特定操作后,如果打开操作的结果应显示在自定义视图中,否则应通过程序打开视图,然后显示结果在里面。我写的代码如下 -

public class example extends ViewPart
{
private Text text;

@Override
public void createPartControl(Composite parent)
{
  Text text = new Text(parent,SWT.NULL);
  this.text = text;
}

@Override
public void setFocus()
{
}

@Override

 @Override
 public void printOnView(String str)
 {
   text.setText(str);
 } 
 }

问题是每次程序在public void run()函数的第一个setText()语句中使用NullPointerExeption失败。我已经尽了最大努力,但我无法找到解决方案。如果我在同一个createPartControl()函数中给出setText()语句,当我打开第一个视图时,它会在视图中显示文本,但如果我从外部尝试它,它就无法工作。我在这里结束了我的斗智,让我警告说我的整个方法可能都是错的,因为我对插件开发很新。如果有人能就此问题向我提供一些帮助或指导,我会很高兴。在此先感谢!

1 个答案:

答案 0 :(得分:0)

Eclipse正在创建对象的两个实例 - 一个用于View,另一个用于Action。对于View,将调用createPartControl,对于Action,仅调用run方法,因为createPartControl未运行,Text字段为null。

您应该使用两个单独的类,一个用于View,另一个用于Action。

在您的Action类中,您需要找到您的视图,例如:

IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();

IViewPart viewPart = page.findView("your view id");

MyViewClass myViewClass = (MyViewClass)viewPart;

// TODO call a method in MyViewClass to set the text

这假设视图已经打开。如果视图未打开,则必须打开它。