/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package org.pieShare.pieShareAppFx.controller; import java.io.IOException; import java.net.URL; import java.util.ResourceBundle; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.event.EventHandler; import javafx.fxml.FXML; import javafx.fxml.FXMLLoader; import javafx.scene.Node; import javafx.scene.control.ListCell; import javafx.scene.control.ListView; import javafx.scene.input.MouseEvent; import javafx.util.Callback; import org.pieShare.pieShareApp.model.PieShareAppBeanNames; import org.pieShare.pieShareAppFx.FXMLLoaderExistingController; import org.pieShare.pieShareAppFx.conrolExtensions.TwoColumnListViewEntry; import org.pieShare.pieShareAppFx.controller.api.ITwoColumnListViewItem; import org.pieShare.pieShareAppFx.controller.api.IController; import org.pieShare.pieTools.pieUtilities.service.beanService.IBeanService; /** * * @author Richard */ public class TwoColumnListViewController implements IController { private IBeanService beanService; public void setBeanService(IBeanService beanService) { this.beanService = beanService; } @FXML private ListView<ITwoColumnListViewItem> listView; private ObservableList<ITwoColumnListViewItem> listViewItems; @Override public Node getControl() throws IOException { FXMLLoaderExistingController loader = beanService.getBean(FXMLLoaderExistingController.class); return loader.load(getClass().getResourceAsStream("/fxml/TwoColumnListView.fxml"), this); } public void addItem(ITwoColumnListViewItem item) { listViewItems.add(item); } public void removeItem(ITwoColumnListViewItem item) { listViewItems.remove(item); } public void clearAll() { listViewItems.clear(); } @Override public void initialize(URL location, ResourceBundle resources) { listViewItems = FXCollections.observableArrayList(); listView.setItems(listViewItems); listView.setCellFactory(new Callback<ListView<ITwoColumnListViewItem>, ListCell<ITwoColumnListViewItem>>() { @Override public ListCell<ITwoColumnListViewItem> call(final ListView<ITwoColumnListViewItem> param) { return new TwoColumnListViewEntry(); } }); } //ToDo: Could solve Database Persist problem. public void setOnMouseClicked(EventHandler<? super MouseEvent> value) { listView.setOnMouseClicked(value); } public ITwoColumnListViewItem getSelectedItem() { return listView.getSelectionModel().getSelectedItem(); } }