/*
* Copyright (C) 2014 GG-Net GmbH
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package eu.ggnet.saft.sample.search;
import java.util.*;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.control.*;
import javafx.scene.layout.BorderPane;
import eu.ggnet.saft.api.ui.ClosedListener;
import eu.ggnet.saft.api.ui.Title;
import eu.ggnet.saft.core.all.SelectionEnhancer;
import eu.ggnet.saft.core.ops.*;
/**
*
* @author oliver.guenther
*/
@Title("Search Simulator")
public class SearchViewWithEverything extends BorderPane implements ClosedListener {
private final Selector<SearchResult> selector;
public SearchViewWithEverything() {
SelectionEnhancer<SearchResult> enhancer = (SearchResult selected) -> {
if ( selected instanceof MicroUnitDossier ) {
MicroUnitDossier mud = (MicroUnitDossier)selected;
return Arrays.asList(new MicroUnit(mud.uniqueUnitId, mud.shortDescription), new MicroDossier(mud.dossierId, mud.shortDescription));
}
return new ArrayList<>();
};
selector = Ops.seletor(SearchResult.class, enhancer);
final ListView<SearchResult> searchResults = new ListView<>();
final ObservableList<SearchResult> searchModel = FXCollections.observableArrayList();
searchResults.setItems(searchModel);
final MultipleSelectionModel<SearchResult> selectionModel = searchResults.getSelectionModel();
selectionModel.selectedItemProperty().addListener((ob, o, n) -> {
selector.selected(n);
});
searchResults.setOnMouseClicked(FxOps.defaultMouseEventOf(selectionModel));
ContextMenu toFxContextMenu = FxOps.contextMenuOf(selectionModel, enhancer);
searchResults.setContextMenu(toFxContextMenu);
setCenter(searchResults);
Button searchButton = new Button("Simulierte Suche");
searchButton.setOnAction(e -> {
searchModel.addAll(VirtualDataSource.search());
});
setTop(searchButton);
}
@Override
public void closed() {
selector.clear();
}
}