class Edit implements Tool {
    private EditWindowController edc;

    @Override
    public void select() {
        edc = Lookup.getDefault().lookup(EditWindowController.class);
        edc.openEditWindow();
    }

    @Override
    public void unselect() {
        edc.disableEdit();
        edc.closeEditWindow();
    }

    @Override
    public ToolEventListener[] getListeners() {<FILL_FUNCTION_BODY>}

    @Override
    public ToolUI getUI() {
        return new ToolUI() {

            @Override
            public JPanel getPropertiesBar(Tool tool) {
                return new JPanel();
            }

            @Override
            public Icon getIcon() {
                return ImageUtilities.loadImageIcon("ToolsPlugin/edit.png", false);
            }

            @Override
            public String getName() {
                return NbBundle.getMessage(Edit.class, "Edit.name");
            }

            @Override
            public String getDescription() {
                return NbBundle.getMessage(Edit.class, "Edit.description");
            }

            @Override
            public int getPosition() {
                return 10;
            }
        };
    }

    @Override
    public ToolSelectionType getSelectionType() {
        return ToolSelectionType.SELECTION;
    }
}

        return new ToolEventListener[] {new NodeClickEventListener() {

            @Override
            public void clickNodes(Node[] nodes) {
                if (nodes.length > 0) {
                    edc.editNode(nodes[0]);
                } else {
                    edc.disableEdit();
                }
            }
        }};
    
<no_super_class>