Guest User

Untitled

a guest
Jun 17th, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.57 KB | None | 0 0
  1. private class AliasListCellFactory implements
  2. Callback<ListView<DXSynonym>, ListCell<DXSynonym>> {
  3.  
  4. @Override
  5. public ListCell<DXSynonym> call(ListView<DXSynonym> p) {
  6. return new ListCell<DXSynonym>() {
  7.  
  8. @Override
  9. protected void updateItem(DXSynonym item, boolean empty) {
  10. super.updateItem(item, empty);
  11.  
  12. if (item != null) {
  13. DXSynonym dx = (DXSynonym) lsvAlias.getUserData();
  14.  
  15. if (dx != null && dx == item) {
  16. this.setStyle("-fx-text-fill: crimson;");
  17. } else { this.setStyle("-fx-text-fill: black;"); }
  18.  
  19. this.setText(item.getDxName());
  20.  
  21. } else { this.setText(Census.FORMAT_TEXT_NULL); }
  22. }};
  23. }
  24.  
  25. // Handler for Button[fx:id="btnAliasDefault"] onAction
  26. @FXML
  27. void handleAliasDefault(ActionEvent event) {
  28.  
  29. int sel = lsvAlias.getSelectionModel().getSelectedIndex();
  30. if (sel >= 0 && sel < lsvAlias.getItems().size()) {
  31. lsvAlias.setUserData(lsvAlias.getItems().get(sel));
  32. }
  33. }
  34.  
  35. public void refresh() {
  36. super.flow.recreateCells();
  37. }
  38.  
  39. MySkin<Subscription> skin = new MySkin<>(this.listView); // Injected by FXML
  40. this.listView.setSkin(skin);
  41. ...
  42. ((MySkin) listView.getSkin()).refresh(); // This is how you use it
  43.  
  44. public class Custom {
  45. StringProperty name = new SimpleStringProperty();
  46. IntegerProperty id = new SimpleIntegerProperty();
  47.  
  48. public static Callback<Custom, Observable[]> extractor() {
  49. return new Callback<Custom, Observable[]>() {
  50. @Override
  51. public Observable[] call(Custom param) {
  52. return new Observable[]{param.id, param.name};
  53. }
  54. };
  55. }
  56.  
  57. @Override
  58. public String toString() {
  59. return String.format("%s: %s", name.get(), id.get());
  60. }
  61. }
  62.  
  63. ListView<Custom> myListView;
  64. //...init the ListView appropriately
  65. ObservableList<Custom> items = FXCollections.observableArrayList(Custom.extractor());
  66. myListView.setItems(items);
  67. Custom item = new Custom();
  68. items.add(item);
  69. item.name.set("Mickey Mouse");
  70. // ^ Should update your ListView!!!
  71.  
  72. @FXML
  73. void handleAliasDefault(ActionEvent event) {
  74.  
  75. int sel = lsvAlias.getSelectionModel().getSelectedIndex();
  76. if (sel >= 0 && sel < lsvAlias.getItems().size()) {
  77. lsvAlias.setUserData(lsvAlias.getItems().get(sel));
  78. this.<DXSynonym>forceListRefreshOn(lsvAlias);
  79. }
  80. }
  81.  
  82. private <T> void forceListRefreshOn(ListView<T> lsv) {
  83. ObservableList<T> items = lsv.<T>getItems();
  84. lsv.<T>setItems(null);
  85. lsv.<T>setItems(items);
  86. }
  87.  
  88. ListView<T> list;
  89. list.refresh();
Add Comment
Please, Sign In to add comment