private void configureTable()

in codeexplorer/src/main/java/nl/obren/sokrates/codeexplorer/duplication/DuplicatesPane.java [95:131]


    private void configureTable() {
        table.setEditable(false);
        table.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);
        filesForPreview1.setOnAction(event -> {
            int selectedIndex = filesForPreview1.getSelectionModel().getSelectedIndex();
            if (selection != null && selectedIndex >= 0) {
                DuplicatedFileBlock duplicatedFileBlock = selection.getDuplicatedFileBlocks().get(selectedIndex);
                codePreview1.setEditorValue(duplicatedFileBlock.getSourceFile());
                codePreview1.select(duplicatedFileBlock.getStartLine(), duplicatedFileBlock.getEndLine() - 1);
                codePreview1.goToLine(duplicatedFileBlock.getStartLine());
            }
        });
        filesForPreview2.setOnAction(event -> {
            int selectedIndex = filesForPreview2.getSelectionModel().getSelectedIndex();
            if (selection != null && selectedIndex >= 0) {
                DuplicatedFileBlock duplicatedFileBlock = selection.getDuplicatedFileBlocks().get(selectedIndex);
                codePreview2.setEditorValue(duplicatedFileBlock.getSourceFile());
                codePreview2.select(duplicatedFileBlock.getStartLine(), duplicatedFileBlock.getEndLine() - 1);
                codePreview2.goToLine(duplicatedFileBlock.getStartLine());
            }
        });
        table.getSelectionModel().selectedItemProperty().addListener((obs, oldSelection, newSelection) -> {
            selection = newSelection;
            if (newSelection != null) {
                duplicationFragmentPreview.setText(newSelection.getDisplayContent());
                List<String> items = new ArrayList<>();
                newSelection.getDuplicatedFileBlocks().forEach(duplicatedFileBlock -> {
                    items.add(duplicatedFileBlock.getSourceFile().getRelativePath() + " ("
                            + duplicatedFileBlock.getStartLine() + ":" + duplicatedFileBlock.getEndLine() + ")");
                });
                filesForPreview1.setItems(FXCollections.observableArrayList(items));
                filesForPreview1.getSelectionModel().select(0);
                filesForPreview2.setItems(FXCollections.observableArrayList(items));
                filesForPreview2.getSelectionModel().select(1);
            }
        });
    }