package com.rgi.view.pane;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.function.Consumer;
import javafx.geometry.Pos;
import javafx.scene.Node;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import com.rgi.store.tiles.TileStoreException;
import com.rgi.store.tiles.TileStoreReader;
import com.rgi.suite.tilestoreadapter.TileStoreReaderAdapter;
public class TileReadersOptionViewerWindow extends Stage
{
private final Collection<TileStoreReaderAdapter> readerAdapters;
private final Consumer<Collection<TileStoreReader>> readerConsumer;
private final VBox content = new VBox();
private final boolean needsInput = false;
public TileReadersOptionViewerWindow(final Collection<TileStoreReaderAdapter> readerAdapters, final Consumer<Collection<TileStoreReader>> readerConsumer)
{
if(readerAdapters == null || readerAdapters.size() < 1)
{
throw new IllegalArgumentException("Adapter collection may not be null or empty");
}
this.setTitle("File Options");
this.setResizable(false);
// this.content.setLayout(new BoxLayout(this.content, BoxLayout.PAGE_AXIS));
this.readerAdapters = readerAdapters;
this.readerConsumer = readerConsumer;
// for(final TileStoreReaderAdapter adapter : this.readerAdapters)
// {
// if(adapter != null)
// {
// this.needsInput |= adapter.needsInput();
//
// final GridPane readerPanel = new GridPane();
// BorderedTitledPane pane = new BorderedTitledPane(adapter.getFile().getName(), readerPanel);
// //readerPanel.setBorder(BorderFactory.createTitledBorder(adapter.getFile().getName()));
//
// int rowCount = 0;
//
// for(final Collection<JComponent> row : adapter.getReaderParameterControls())
// {
// int columnCount = 0;
// for(final JComponent column : row)
// {
// final Dimension dimension = column.getPreferredSize();
//
// // This is a work-around to resize (and then stretch) the middle column to fit our input form layout
// if(dimension == null || (columnCount == 1 &&
// (dimension.getWidth() < 1 ||
// dimension.getHeight() < 1)))
// {
//
// column.setPreferredSize(new Dimension(220, 25));
// }
// readerPanel.add(new SimpleGridBagConstraints(columnCount, rowCount, columnCount == 1), column, row);
//
// //readerPanel.add(column, new SimpleGridBagConstraints(columnCount, rowCount, columnCount == 1));
//
// ++columnCount;
// }
//
// ++rowCount;
// }
//
// this.content.getChildren().add(readerPanel);
// }
// }
//
// this.sizeToScene();
}
public TileReadersOptionViewerWindow(final Collection<TileStoreReaderAdapter> tileStoreReaderAdapters)
{
this(tileStoreReaderAdapters, null);
}
public Collection<TileStoreReader> getReaders()
{
final List<TileStoreReader> readers = new ArrayList<>();
this.readerAdapters
.stream()
.forEach(adapter -> { try
{
readers.addAll(adapter.getTileStoreReaders());
}
catch(final TileStoreException ex)
{
// this.error(String.format("There was an error opening %s: %s",
// adapter.getFile().getName(),
// ex.getMessage()));
}
});
return readers;
}
class BorderedTitledPane extends StackPane {
BorderedTitledPane(final String titleString, final Node content) {
Label title = new Label(" " + titleString + " ");
title.getStyleClass().add("bordered-titled-title");
StackPane.setAlignment(title, Pos.TOP_CENTER);
StackPane contentPane = new StackPane();
content.getStyleClass().add("bordered-titled-content");
contentPane.getChildren().add(content);
this.getStyleClass().add("bordered-titled-border");
this.getChildren().addAll(title, contentPane);
}
}
}