package org.lightview.presentation.applications;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.collections.ObservableList;
import javafx.collections.SetChangeListener;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.ListView;
import javafx.scene.control.MultipleSelectionModel;
import javafx.scene.control.SelectionMode;
import javafx.scene.layout.*;
import org.lightview.model.Application;
import org.lightview.presentation.dashboard.DashboardModel;
import org.lightview.presentation.applications.ejbs.EJBsPresenter;
import org.lightview.presentation.applications.ejbs.EJBsView;
import javax.inject.Inject;
/**
*
* @author adam-bien.com
*/
public class ApplicationsPresenter implements Initializable {
private EJBsPresenter ejbPresenter;
private EJBsView ejbView;
@FXML
private AnchorPane ejbs;
@FXML
private ListView<String> applicationsList;
@Inject
private DashboardModel dashboardModel;
@Override
public void initialize(URL url, ResourceBundle rb) {
this.ejbView = new EJBsView();
this.ejbPresenter = (EJBsPresenter) ejbView.getPresenter();
this.setupViews();
}
void setupViews() {
MultipleSelectionModel<String> selectionModel = applicationsList.getSelectionModel();
selectionModel.setSelectionMode(SelectionMode.SINGLE);
selectionModel.selectedItemProperty().addListener(new ChangeListener<String>() {
@Override
public void changed(ObservableValue<? extends String> ov, String t, String newSelection) {
ejbPresenter.showComponentsForApp(dashboardModel.applicationsSetProperty(), newSelection);
}
});
final ObservableList<String> items = applicationsList.getItems();
this.dashboardModel.applicationsSetProperty().addListener(new SetChangeListener<Application>() {
@Override
public void onChanged(Change<? extends Application> change) {
if (change.wasAdded()) {
items.add(change.getElementAdded().getApplicationName());
}
if (change.wasRemoved()) {
items.remove(change.getElementRemoved().getApplicationName());
}
}
});
ejbs.getChildren().add(this.ejbView.getViewWithoutRootContainer());
}
}