All Classes Namespaces Files Functions Variables
AutolaskuriController.java
Go to the documentation of this file.
1 package autolaskuri.loop;
2 
3 import java.net.URL;
4 import java.util.HashMap;
5 import java.util.List;
6 import java.util.Map;
7 import java.util.ResourceBundle;
8 
9 import javafx.beans.property.SimpleIntegerProperty;
10 import javafx.event.ActionEvent;
11 import javafx.fxml.FXML;
12 import javafx.fxml.Initializable;
13 import javafx.scene.Node;
14 import javafx.scene.control.Button;
15 import javafx.scene.control.Label;
16 import static fi.jyu.mit.fxgui.Functions.*;
17 
18 /**
19  * Yksinkertainen autolaskuri, jossa painkikkeita painamalla
20  * voidaan kasvattaa laskureiden arvoja.
21  * Laskurit ja painikkeet tunnistetaan sillä, että niillä on sama id.
22  * Laskurit tunnistetaan sillä että niissä on luokka "laskuri".
23  * Laskureita etsitään samasta alueesta kuin buttonNollaa on.
24  * @author vesal
25  * @version 6.3.2016
26  */
27 public class AutolaskuriController implements Initializable {
28 
29  @FXML private Button buttonNollaa;
30  private Map<String,SimpleIntegerProperty> laskettavat = new HashMap<>();
31  private List<Label> laskurit;
32 
33  @Override
34  public void initialize(URL location, ResourceBundle resources) {
35  laskurit = getNodes(buttonNollaa.getParent(), Label.class, n -> n.getStyleClass().contains("laskuri"), true);
36 
37  for (Label laskuri: laskurit) {
38  SimpleIntegerProperty laskettava = new SimpleIntegerProperty(0);
39  laskuri.textProperty().bind(laskettava.asString());
40  laskettavat.put(laskuri.getId(),laskettava);
41  }
42  }
43 
44 
45  @FXML void handleLaske(ActionEvent event) {
46  Node source = (Node)event.getSource();
47  String id = source.getId();
48  if ( id == null || id.length() < 1 ) return;
49  SimpleIntegerProperty laskettava = laskettavat.get(id);
50  if ( laskettava == null ) return;
51  laskettava.set(laskettava.get()+1);
52  }
53 
54 
55  @FXML void handleNollaa() {
56  for ( SimpleIntegerProperty laskettava: laskettavat.values())
57  laskettava.set(0);
58  }
59 
60 }