从 eclipse 插件编辑器的下拉监听器调用 firePropertyChange

Invoke firePropertyChange from eclipse Plugin Editor's drop listener

我在 eclipse 插件的编辑器中实现了拖放支持。现在我想通过从 drop 侦听器调用 firePropertyChange 来通知编辑器更改。

firePropertyChange(IEditorPart.PROP_DIRTY);

这样做正确吗?或者有没有其他的选择。

DropListener 代码:

    public class DropListener extends ViewerDropAdapter {

    private final TableViewer viewer;

    private AbstractCSVFile model;

     private CSVRow target ;

     private final PropertyChangeSupport propertySupport = new PropertyChangeSupport(this);

    public  DropListener(TableViewer viewer) {
        super(viewer);
        this.viewer = viewer;
        // TODO Auto-generated constructor stub
    }

    @Override
      public void drop(DropTargetEvent event) {
        int location = this.determineLocation(event);
        target = (CSVRow) determineTarget(event);
        String translatedLocation ="";

        switch (location){
        case 1 :
          translatedLocation = "Dropped before the target ";
          break;
        case 2 :
          translatedLocation = "Dropped after the target ";
          break;
        case 3 :
          translatedLocation = "Dropped on the target ";
          break;
        case 4 :
          translatedLocation = "Dropped into nothing ";
          break;
        }
        System.out.println(translatedLocation);
        System.out.println("The drop was done on the element: " + target);
        super.drop(event);
      }

    @Override
    public boolean performDrop(Object data) {

        System.out.println("Drop to be performed with the event data > " + data.toString());

        if (target != null) {

            model = (AbstractCSVFile)getViewer().getInput();

            System.out.println("viewer input >>>>" +getViewer().getInput());


            model.addObjectRowAfterElement(target, data.toString());

            //notify editor here ....

            viewer.refresh();
        }




        return false;
    }

    @Override
    public boolean validateDrop(Object target, int operation, TransferData transferType) {
        // TODO Auto-generated method stub
        return true;
    }

}

我已将 DropListener 添加为编辑器的内部 class,并已在 属性 中调用:

firePropertyChange(IEditorPart.PROP_DIRTY);

使用此 link 作为参考。 https://github.com/jonalv/bioclipse.brunn/blob/c5e9ba0caa593e16485fdd313a0d06131207ea11/plugins/net.bioclipse.brunn.ui/src/net/bioclipse/brunn/ui/editors/masterPlateEditor/MasterPlateEditor.java