class CopyEdgeDataToOtherEdges extends BasicEdgesManipulator implements GeneralColumnsAndRowChooser {

    private Edge clickedEdge;
    private Edge[] edges;
    private Column[] columnsToCopyData;

    @Override
    public void setup(Edge[] edges, Edge clickedEdge) {<FILL_FUNCTION_BODY>}

    @Override
    public void execute() {
        if (columnsToCopyData.length >= 0) {
            AttributeColumnsController ac = Lookup.getDefault().lookup(AttributeColumnsController.class);
            ac.copyEdgeDataToOtherEdges(clickedEdge, edges, columnsToCopyData);
            Lookup.getDefault().lookup(DataTablesController.class).refreshCurrentTable();
        }
    }

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

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

    @Override
    public boolean canExecute() {
        return edges.length > 1;//At least 2 edges to copy data from one to the other.
    }

    @Override
    public ManipulatorUI getUI() {
        return new GeneralChooseColumnsAndRowUI(
            NbBundle.getMessage(CopyEdgeDataToOtherEdges.class, "CopyEdgeDataToOtherEdges.ui.rowDescription"),
            NbBundle.getMessage(CopyEdgeDataToOtherEdges.class, "CopyEdgeDataToOtherEdges.ui.columnsDescription"));
    }

    @Override
    public int getType() {
        return 200;
    }

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

    @Override
    public Icon getIcon() {
        return ImageUtilities.loadImageIcon("DataLaboratoryPlugin/broom--arrow.png", false);
    }

    @Override
    public Column[] getColumns() {
        return columnsToCopyData;
    }

    @Override
    public void setColumns(Column[] columnsToClearData) {
        this.columnsToCopyData = columnsToClearData;
    }

    @Override
    public Element[] getRows() {
        return edges;
    }

    @Override
    public Element getRow() {
        return clickedEdge;
    }

    @Override
    public void setRow(Element row) {
        clickedEdge = (Edge) row;
    }
}

        this.clickedEdge = clickedEdge;
        this.edges = edges;
        AttributeColumnsController ac = Lookup.getDefault().lookup(AttributeColumnsController.class);
        ArrayList<Column> columnsToCopyDataList = new ArrayList<>();
        for (Column column : Lookup.getDefault().lookup(GraphController.class).getGraphModel().getEdgeTable()) {
            if (ac.canChangeColumnData(column)) {
                columnsToCopyDataList.add(column);
            }
        }
        columnsToCopyData = columnsToCopyDataList.toArray(new Column[0]);
    
<methods>public non-sealed void <init>() ,public java.lang.Integer getMnemonicKey() ,public org.gephi.datalab.spi.ContextMenuItemManipulator[] getSubItems() ,public boolean isAvailable() <variables>