All Classes Namespaces Files Functions Variables
ScrollBorder.java
Go to the documentation of this file.
1 package fi.jyu.mit.fxgui;
2 
3 import javafx.beans.DefaultProperty;
4 import javafx.collections.ListChangeListener;
5 import javafx.geometry.Insets;
6 import javafx.scene.Node;
7 import javafx.scene.control.Label;
8 import javafx.scene.control.ScrollPane;
9 import javafx.scene.layout.VBox;
10 
11 /**
12  * VBox with borders and ScrollPane inside. Last added child is inside
13  * ScrollPane. Others are after that.
14  * @author vesal
15  * @version 4.2.2017
16  */
17 @DefaultProperty("content")
18 public class ScrollBorder extends VBox {
19 
20  private ScrollPane sp = new ScrollPane();
21  private Label labelValitse;
22 
23  /**
24  * Initialize component
25  */
26  public ScrollBorder() {
27  super();
28  VBox vbox2 = this;
29  vbox2.setPadding(new Insets(10, 10, 10, 10));
30  VBox.setMargin(vbox2, new Insets(5, 20, 20, 20));
31  vbox2.setStyle("-fx-border-color: black;");
32 
33  labelValitse = new Label("Valitse:");
34  super.getChildren().add(labelValitse);
35 
36  sp.getStyleClass().add("edge-to-edge");
37  super.getChildren().add(sp);
38 
39  getChildren().addListener(new ListChangeListener<Node>() {
40  @SuppressWarnings("synthetic-access")
41  @Override
42  public void onChanged(Change<? extends Node> c) {
43  if (!c.next()) return;
44  for (Node item: c.getAddedSubList())
45  sp.setContent(item);
46  }
47  });
48  }
49 
50 
51  /**
52  * @return ScrollPane
53  */
54  public ScrollPane getScrollPane() {
55  return sp;
56  }
57 
58 
59  /**
60  * @param sp new scrollPane
61  */
62  public void setScrollPane(ScrollPane sp) {
63  this.sp = sp;
64  }
65 
66 
67  /**
68  * @param node the box to scroll
69  */
70  public void setContent(Node node) {
71  sp.setContent(node);
72  }
73 
74 
75  /**
76  * @return current content
77  */
78  public final Node getContent() {
79  return sp.getContent();
80  }
81 
82 
83 
84  /**
85  * @param text caption for component
86  */
87  public void setCaption(String text) {
88  labelValitse.setText(text);
89  }
90 
91 
92  /**
93  * @return current caption
94  */
95  public String getCaption() {
96  return labelValitse.getText();
97  }
98 
99 }