Package: JavaFXMainPanelPresentationDelegate
JavaFXMainPanelPresentationDelegate
name | instruction | branch | complexity | line | method | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
bind(MainPanelPresentation.Bindings) |
|
|
|
|
|
||||||||||||||||||||
lambda$populate$0() |
|
|
|
|
|
||||||||||||||||||||
lambda$populate$1() |
|
|
|
|
|
||||||||||||||||||||
lambda$populate$2() |
|
|
|
|
|
||||||||||||||||||||
lambda$populate$3() |
|
|
|
|
|
||||||||||||||||||||
lambda$populate$4() |
|
|
|
|
|
||||||||||||||||||||
notify(String) |
|
|
|
|
|
||||||||||||||||||||
notify(UserNotificationWithFeedback) |
|
|
|
|
|
||||||||||||||||||||
pickDirectory(BoundProperty, UserNotificationWithFeedback) |
|
|
|
|
|
||||||||||||||||||||
pickFile(BoundProperty, UserNotificationWithFeedback) |
|
|
|
|
|
||||||||||||||||||||
populate(PresentationModel, PresentationModel, PresentationModel) |
|
|
|
|
|
||||||||||||||||||||
static {...} |
|
|
|
|
|
Coverage
1: /*
2: * *************************************************************************************************************************************************************
3: *
4: * SteelBlue: DCI User Interfaces
5: * http://tidalwave.it/projects/steelblue
6: *
7: * Copyright (C) 2015 - 2024 by Tidalwave s.a.s. (http://tidalwave.it)
8: *
9: * *************************************************************************************************************************************************************
10: *
11: * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
12: * You may obtain a copy of the License at
13: *
14: * http://www.apache.org/licenses/LICENSE-2.0
15: *
16: * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
17: * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
18: *
19: * *************************************************************************************************************************************************************
20: *
21: * git clone https://bitbucket.org/tidalwave/steelblue-src
22: * git clone https://github.com/tidalwave-it/steelblue-src
23: *
24: * *************************************************************************************************************************************************************
25: */
26: package it.tidalwave.role.ui.example.presentation.impl.javafx;
27:
28: import javax.annotation.Nonnull;
29: import java.nio.file.Path;
30: import javafx.fxml.FXML;
31: import javafx.scene.control.Button;
32: import javafx.scene.control.ComboBox;
33: import javafx.scene.control.ListView;
34: import javafx.scene.control.TableView;
35: import javafx.scene.control.TextArea;
36: import javafx.scene.control.TextField;
37: import javafx.scene.control.TreeTableView;
38: import javafx.scene.control.TreeView;
39: import it.tidalwave.util.ui.UserNotificationWithFeedback;
40: import it.tidalwave.role.ui.BoundProperty;
41: import it.tidalwave.role.ui.PresentationModel;
42: import it.tidalwave.role.ui.javafx.JavaFXBinder;
43: import it.tidalwave.role.ui.example.presentation.MainPanelPresentation;
44: import lombok.RequiredArgsConstructor;
45: import lombok.extern.slf4j.Slf4j;
46:
47: /***************************************************************************************************************************************************************
48: *
49: * The JavaFX controller just works as a dumb object with SteelBlue: it must implement in the most simple way each
50: * method in the presentation interface, by applying simple manipulation to the UI. No logic here, neither presentaton
51: * nor business.
52: *
53: * @author Fabrizio Giudici
54: *
55: **************************************************************************************************************************************************************/
56: @RequiredArgsConstructor @Slf4j
57: public class JavaFXMainPanelPresentationDelegate implements MainPanelPresentation
58: {
59: // START SNIPPET: fields
60: // This facility provides all the methods to bind JavaFX controls to DCI roles.
61: @Nonnull
62: private final JavaFXBinder binder;
63:
64: @FXML
65: private Button btButton;
66:
67: @FXML
68: private Button btDialogOk;
69:
70: @FXML
71: private Button btDialogOkCancel;
72:
73: @FXML
74: private Button btPickFile;
75:
76: @FXML
77: private Button btPickDirectory;
78:
79: @FXML
80: private TextField tfTextField;
81:
82: @FXML
83: private ListView<PresentationModel> lvListView;
84:
85: @FXML
86: private ComboBox<PresentationModel> cbComboBox;
87:
88: @FXML
89: private TableView<PresentationModel> tvTableView;
90:
91: @FXML
92: private TreeView<PresentationModel> tvTreeView;
93:
94: @FXML
95: private TreeTableView<PresentationModel> ttvTreeTableView;
96:
97: @FXML
98: private TextArea taLog;
99: // END SNIPPET: fields
100:
101: /***********************************************************************************************************************************************************
102: * {@inheritDoc}
103: **********************************************************************************************************************************************************/
104: // START SNIPPET: bind
105: @Override
106: public void bind (@Nonnull final Bindings bindings)
107: {
108: binder.bind(btButton, bindings.actionButton);
109: binder.bind(btDialogOk, bindings.actionDialogOk);
110: binder.bind(btDialogOkCancel, bindings.actionDialogCancelOk);
111: binder.bind(btPickFile, bindings.actionPickFile);
112: binder.bind(btPickDirectory, bindings.actionPickDirectory);
113: binder.bindBidirectionally(tfTextField, bindings.textProperty, bindings.booleanProperty);
114: }
115: // END SNIPPET: bind
116:
117: /***********************************************************************************************************************************************************
118: * {@inheritDoc}
119: **********************************************************************************************************************************************************/
120: // START SNIPPET: populate
121: @Override
122: public void populate (@Nonnull final PresentationModel pmSimpleEntities,
123: @Nonnull final PresentationModel pmDciEntities,
124: @Nonnull final PresentationModel pmFileEntities)
125: {
126: binder.bind(lvListView, pmSimpleEntities, () -> log.info("Finished setup of lvListView"));
127: binder.bind(cbComboBox, pmSimpleEntities, () -> log.info("Finished setup of cbComboBox"));
128: binder.bind(tvTableView, pmDciEntities, () -> log.info("Finished setup of tvTableView"));
129: binder.bind(tvTreeView, pmFileEntities, () -> log.info("Finished setup of tvTreeView"));
130: binder.bind(ttvTreeTableView, pmFileEntities, () -> log.info("Finished setup of ttvTreeTableView"));
131: }
132: // END SNIPPET: populate
133:
134: /***********************************************************************************************************************************************************
135: * {@inheritDoc}
136: **********************************************************************************************************************************************************/
137: // START SNIPPET: notify1
138: @Override
139: public void notify (@Nonnull final UserNotificationWithFeedback notification)
140: {
141: binder.showInModalDialog(notification);
142: }
143: // END SNIPPET: notify1
144:
145: /***********************************************************************************************************************************************************
146: * {@inheritDoc}
147: **********************************************************************************************************************************************************/
148: // START SNIPPET: notify2
149: @Override
150: public void notify (@Nonnull final String message)
151: {
152: taLog.appendText(message + "\n");
153: }
154: // END SNIPPET: notify2
155:
156: /***********************************************************************************************************************************************************
157: * {@inheritDoc}
158: **********************************************************************************************************************************************************/
159: // START SNIPPET: pickFile
160: @Override
161: public void pickFile (@Nonnull final BoundProperty<Path> selectedFile,
162: @Nonnull final UserNotificationWithFeedback notification)
163: {
164: binder.openFileChooserFor(notification, selectedFile);
165: }
166: // END SNIPPET: pickFile
167:
168: /***********************************************************************************************************************************************************
169: * {@inheritDoc}
170: **********************************************************************************************************************************************************/
171: // START SNIPPET: pickDirectory
172: @Override
173: public void pickDirectory (@Nonnull final BoundProperty<Path> selectedFolder,
174: @Nonnull final UserNotificationWithFeedback notification)
175: {
176: binder.openDirectoryChooserFor(notification, selectedFolder);
177: }
178: // END SNIPPET: pickDirectory
179: }