class NodesDataTable extends AbstractElementsDataTable<Node> {

    private final List<PropertyDataColumn<Node>> propertiesColumns = new ArrayList<>();


    public NodesDataTable() {
        super();

        //Add listener of table selection to refresh edit window when the selection changes (and if the table is not being refreshed):
        table.getSelectionModel().addListSelectionListener(new ListSelectionListener() {

            @Override
            public void valueChanged(ListSelectionEvent e) {<FILL_FUNCTION_BODY>}
        });

        table.addMouseListener(new NodesPopupAdapter(this));
        table.addKeyListener(new KeyAdapter() {

            @Override
            public void keyReleased(KeyEvent e) {
                if (e.getKeyCode() == KeyEvent.VK_DELETE) {
                    DataLaboratoryHelper dlh = DataLaboratoryHelper.getDefault();
                    List<Node> selectedNodes = getElementsFromSelectedRows();
                    if (!selectedNodes.isEmpty()) {
                        NodesManipulator del = dlh.getNodesManipulatorByName("DeleteNodes");
                        if (del != null) {
                            del.setup(selectedNodes.toArray(new Node[0]), null);
                            if (del.canExecute()) {
                                dlh.executeManipulator(del);
                            }
                        }
                    }
                }
            }
        });
    }

    @Override
    public List<? extends ElementDataColumn<Node>> getFakeDataColumns(GraphModel graphModel,
                                                                      DataTablesModel dataTablesModel) {
        return propertiesColumns;
    }
}

                if (!isRefreshingTable()) {
                    EditWindowController edc = Lookup.getDefault().lookup(EditWindowController.class);
                    if (edc != null && edc.isOpen()) {
                        if (table.getSelectedRow() != -1) {
                            edc.editNodes(getElementsFromSelectedRows().toArray(new Node[0]));
                        } else {
                            edc.disableEdit();
                        }
                    }
                }
            
<methods>public void <init>() ,public Column getColumnAtIndex(int) ,public Node getElementFromRow(int) ,public List<Node> getElementsFromSelectedRows() ,public abstract List<? extends ElementDataColumn<Node>> getFakeDataColumns(GraphModel, org.gephi.desktop.datalab.DataTablesModel) ,public GraphModel getGraphModel() ,public java.lang.String getPattern() ,public JXTable getTable() ,public boolean hasData() ,public boolean isDrawTimeIntervalGraphics() ,public boolean isRefreshingTable() ,public void refreshModel(Node[], Column[], GraphModel, org.gephi.desktop.datalab.DataTablesModel) ,public void scrollToFirstElementSelected() ,public void scrollToTop() ,public void setDrawSparklines(boolean) ,public void setDrawTimeIntervalGraphics(boolean) ,public void setElementsSelection(List<Node>) ,public void setElementsSelection(Node[]) ,public boolean setFilterPattern(java.lang.String, int) <variables>private final DefaultTableRenderer arrayRenderer,private final non-sealed DefaultTableRenderer arraySparklinesGraphicsRenderer,protected final non-sealed org.gephi.datalab.api.AttributeColumnsController attributeColumnsController,private final DefaultTableRenderer defaultStringRepresentationRenderer,private final DefaultTableRenderer doubleRenderer,private boolean drawSparklines,private boolean drawTimeIntervalGraphics,protected java.lang.String filterPattern,protected GraphModel graphModel,private final non-sealed DefaultTableRenderer intervalMapSparklinesGraphicsRenderer,private final non-sealed org.gephi.desktop.datalab.utils.componentproviders.IntervalSetGraphicsComponentProvider intervalSetGraphicsComponentProvider,private final non-sealed DefaultTableRenderer intervalSetGraphicsRenderer,protected ElementsDataTableModel<Node> model,protected boolean refreshingTable,protected List<Node> selectedElements,protected Column[] showingColumns,protected final non-sealed JXTable table,private final non-sealed DefaultTableRenderer timeMapRenderer,private final non-sealed DefaultTableRenderer timeSetRenderer,private final non-sealed DefaultTableRenderer timestampMapSparklinesGraphicsRenderer,private final non-sealed org.gephi.desktop.datalab.utils.componentproviders.TimestampSetGraphicsComponentProvider timestampSetGraphicsComponentProvider,private final non-sealed DefaultTableRenderer timestampSetGraphicsRenderer