package whitman.fa.encounter;
import javafx.application.Application;
import javafx.beans.property.IntegerProperty;
import javafx.beans.property.ObjectProperty;
import javafx.beans.property.SimpleIntegerProperty;
import javafx.beans.property.SimpleObjectProperty;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.geometry.Pos;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.TableCell;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.effect.DropShadow;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.scene.text.Font;
import javafx.scene.text.Text;
import javafx.stage.Stage;
import javafx.util.Callback;
public class ExampleProblem extends Application
{
BorderPane rootLayout;
ObservableList<Encounter> encounters = FXCollections.observableArrayList();
ObservableList<MobPict> imgData = FXCollections.observableArrayList();
Group root;
Scene scene;
GridPane pane;
public ExampleProblem()
{
imgData.addAll(new MobPict("Bugbear.jpg","Bugbear"), new MobPict("po_BGArcher_h.png", "PC"));
encounters.addAll(
new Encounter(1,5,1,1,"Bugbear",0,0,null,3,"Bestiary pg 75", imgData.get(0)),
new Encounter(6,15,1,1,"PC",0,0,null,3,"HeroLabs",imgData.get(1))
);
}
@Override
public void start(Stage primaryStage) throws Exception
{
primaryStage.setTitle("Table Test with image column");
//Display TableView
Group group = getBackground();
VBox box = new VBox();
box.setLayoutX(20);
box.setLayoutY(5);
box.setSpacing(15);
Text text = new Text("Image Column test");
text.setFont(new Font(20));
TableView<Encounter> table = getTable();
box.getChildren().addAll(text, table);
group.getChildren().add(box);
Scene scene = new Scene(group, 680,530,Color.web("#666666"));
primaryStage.setScene(scene);
primaryStage.show();
}
public Group getBackground()
{
Group group = new Group();
group.setLayoutX(40);
group.setLayoutY(40);
Rectangle rect = new Rectangle();
rect.setWidth(600);
rect.setHeight(460);
rect.setFill(Color.web("#f5f5f5"));
DropShadow dropShadow = new DropShadow();
dropShadow.setRadius(50);
dropShadow.setOffsetX(0);
dropShadow.setOffsetY(0);
dropShadow.setColor(Color.web("#969696"));
rect.setEffect(dropShadow);
group.getChildren().add(rect);
return group;
}
@SuppressWarnings("unchecked")
public TableView<Encounter> getTable()
{
TableView<Encounter> imageTable = new TableView<Encounter>();
TableColumn<Encounter, Number> minChanceCol = new TableColumn<Encounter, Number>("Min Chance");
minChanceCol.setCellValueFactory(new PropertyValueFactory<Encounter, Number>("minChance"));
TableColumn<Encounter, Number> maxChanceCol = new TableColumn<Encounter, Number>("Max Chance");
maxChanceCol.setCellValueFactory(new PropertyValueFactory<Encounter, Number>("maxChance"));
TableColumn<Encounter, MobPict> imgCol = new TableColumn<Encounter, MobPict>("Images");
imgCol.setCellValueFactory(new PropertyValueFactory<Encounter, MobPict>("mobPicPath"));
imgCol.setCellFactory(new Callback<TableColumn<Encounter,MobPict>,TableCell<Encounter,MobPict>>()
{
@Override
public TableCell<Encounter, MobPict> call(TableColumn<Encounter, MobPict> param)
{
TableCell<Encounter, MobPict> cell = new TableCell<Encounter, MobPict>()
{
@Override
public void updateItem(MobPict item, boolean empty)
{
//System.out.println("update Item called");
//System.out.println(item.getMobName());
if(item != null)
{
VBox box;
ImageView imgView;
box= new VBox();
box.setAlignment(Pos.CENTER);
imgView = new ImageView();
imgView.setFitHeight(100);
imgView.setFitWidth(100);
imgView.setImage(new Image(TestApp.class.getResource("img").toString()+"/"+item.getMobPicPath()));
box.getChildren().add(imgView);
setGraphic(box);
}
}
};
return cell;
};
});
imageTable.getColumns().addAll(minChanceCol,maxChanceCol, imgCol);
imageTable.setItems(encounters);
return imageTable;
}
}