View Javadoc
1   /*
2    * Copyright 2013-2023 Medical Information Systems Research Group (https://medical.zcu.cz),
3    * Department of Computer Science and Engineering, University of West Bohemia.
4    * Address: Univerzitni 8, 306 14 Plzen, Czech Republic.
5    *
6    * This file is part of Sparkle project.
7    *
8    * Sparkle is free software: you can redistribute it and/or modify
9    * it under the terms of the GNU General Public License as published by
10   * the Free Software Foundation, either version 3 of the License.
11   *
12   * Sparkle is distributed in the hope that it will be useful,
13   * but WITHOUT ANY WARRANTY; without even the implied warranty of
14   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15   * GNU General Public License for more details.
16   *
17   * You should have received a copy of the GNU General Public License
18   * along with Sparkle. If not, see <http://www.gnu.org/licenses/>.
19   */
20  package cz.zcu.mre.sparkle.gui.mainForm.mainMenu;
21  
22  import cz.zcu.mre.sparkle.SparklePreferences;
23  import cz.zcu.mre.sparkle.gui.dialogs.SettingDialog;
24  import cz.zcu.mre.sparkle.gui.mainForm.MainForm;
25  import cz.zcu.mre.sparkle.gui.mainForm.mainMenu.menuItems.MenuItemsView;
26  import cz.zcu.mre.sparkle.gui.mainForm.mainTabPane.MainTabPane;
27  import cz.zcu.mre.sparkle.gui.tools.Components;
28  import javafx.event.ActionEvent;
29  import javafx.fxml.FXML;
30  import javafx.scene.control.CheckMenuItem;
31  import javafx.scene.control.MenuBar;
32  import javafx.scene.control.MenuItem;
33  import java.util.List;
34  
35  /**
36   * Hlavni menu.
37   *
38   * @author Jan Smucr
39   * @author Klara Hlavacova
40   * @author Petr Vcelak (vcelak@kiv.zcu.cz)
41   */
42  public class MainMenuBar
43          extends MenuBar {
44  
45      private static final String CHANGE_LOG_URL = "https://mre.zcu.cz/sparkle/changelog.html";
46      private static final String SHORTCUTS_URL = "https://mre.zcu.cz/sparkle/shortcuts.html";
47      private static final String EXAMPLES_URL = "https://mre.zcu.cz/sparkle/examples.html";
48      private static final String DOCUMENTATION_URL = "https://mre.zcu.cz/sparkle";
49  
50      @FXML
51      private List<MenuItem> menuItemsApplication;
52      @FXML
53      private List<MenuItem> menuItemsQuery;
54      @FXML
55      private List<MenuItem> menuItemsStorage;
56      @FXML
57      private List<MenuItem> menuItemsView;
58  
59      private MainForm mainForm;
60  
61      public MainMenuBar() {
62          Components.load(this);
63      }
64  
65      public void initialize(MainForm mainForm) {
66          this.mainForm = mainForm;
67          MainMenuAction.setupBinding(mainForm);
68          MenuItem showTitlesMenuItem = getMenuItemsView().get(MenuItemsView.getShowTitlesOrdinal());
69          ((CheckMenuItem) showTitlesMenuItem).setSelected(SettingDialog.isShowingTitlesOn());
70      }
71  
72      @FXML
73      @SuppressWarnings("unused")
74      private void settingOnAction() {
75          MainMenuAction.showSettingDialog(mainForm);
76      }
77  
78      @FXML
79      @SuppressWarnings("unused")
80      private void saveOnAction() {
81          MainMenuAction.save(mainForm.getMainTabPane());
82      }
83  
84      @FXML
85      @SuppressWarnings("unused")
86      private void saveAsOnAction() {
87          MainMenuAction.saveAs(mainForm.getMainTabPane());
88      }
89  
90      @FXML
91      @SuppressWarnings("unused")
92      public void saveAllOnAction() {
93          MainMenuAction.saveAll(mainForm.getMainTabPane());
94      }
95  
96      @FXML
97      @SuppressWarnings("unused")
98      private void exportOnAction() {
99          MainMenuAction.export(mainForm.getMainTabPane());
100     }
101 
102     @FXML
103     @SuppressWarnings("unused")
104     private void openOnAction() {
105         MainMenuAction.open(mainForm);
106     }
107 
108     @FXML
109     @SuppressWarnings("unused")
110     private void evaluateOnAction() {
111         MainMenuAction.evaluate(mainForm.getMainTabPane(), mainForm.getDataAgent());
112     }
113 
114     @FXML
115     @SuppressWarnings("unused")
116     private void stopEvaluationOnAction() {
117         MainMenuAction.stopEvaluation(mainForm.getMainTabPane());
118     }
119 
120     @FXML
121     @SuppressWarnings("unused")
122     public void createNewSelectQueryOnAction() {
123         ((MainTabPane) mainForm.getMainTabPane()).createQueryTab(MainTabPane.QueryType.SELECT, mainForm);
124     }
125 
126     @FXML
127     @SuppressWarnings("unused")
128     public void createNewAskQueryOnAction() {
129         ((MainTabPane) mainForm.getMainTabPane()).createQueryTab(MainTabPane.QueryType.ASK, mainForm);
130     }
131 
132     @FXML
133     @SuppressWarnings("unused")
134     public void createNewConstructQueryOnAction() {
135         ((MainTabPane) mainForm.getMainTabPane()).createQueryTab(MainTabPane.QueryType.CONSTRUCT, mainForm);
136     }
137 
138     @FXML
139     @SuppressWarnings("unused")
140     public void createNewDescribeQueryOnAction() {
141         ((MainTabPane) mainForm.getMainTabPane()).createQueryTab(MainTabPane.QueryType.DESCRIBE, mainForm);
142     }
143 
144     @FXML
145     @SuppressWarnings("unused")
146     public void createNewDeleteInsertQueryOnAction() {
147         ((MainTabPane) mainForm.getMainTabPane()).createQueryTab(MainTabPane.QueryType.DELETE_INSERT, mainForm);
148     }
149 
150     @FXML
151     @SuppressWarnings("unused")
152     public void createNewInsertQueryOnAction() {
153         ((MainTabPane) mainForm.getMainTabPane()).createQueryTab(MainTabPane.QueryType.INSERT, mainForm);
154     }
155 
156     @FXML
157     @SuppressWarnings("unused")
158     public void createNewDeleteQueryOnAction() {
159         ((MainTabPane) mainForm.getMainTabPane()).createQueryTab(MainTabPane.QueryType.DELETE, mainForm);
160     }
161 
162     @FXML
163     @SuppressWarnings("unused")
164     private void onApplicationCloseMenuItemClick(final ActionEvent event) {
165         mainForm.close();
166     }
167 
168     @FXML
169     @SuppressWarnings("unused")
170     private void importFileOnAction(final ActionEvent event) {
171         MainMenuAction.onImportFileMenuItemClick(mainForm);
172     }
173 
174     @FXML
175     @SuppressWarnings("unused")
176     private void switchStorageOnAction(final ActionEvent event) {
177         MainMenuAction.switchStorage(mainForm);
178     }
179 
180     @FXML
181     @SuppressWarnings("unused")
182     private void clearStorageOnAction() {
183         MainMenuAction.clearStorage(mainForm);
184     }
185 
186     @FXML
187     @SuppressWarnings("unused")
188     private void manageLocalPrefixesOnAction() {
189         MainMenuAction.manageLocalPrefixesOnAction(mainForm);
190     }
191 
192     @FXML
193     @SuppressWarnings("unused")
194     private void manageQueryPrefixesOnAction() {
195         MainMenuAction.manageQueryPrefixesOnAction(mainForm);
196     }
197 
198     @FXML
199     @SuppressWarnings("unused")
200     private void manageLocalResourcesOnAction() {
201         MainMenuAction.manageLocalResourcesOnAction(mainForm);
202     }
203 
204     @FXML
205     @SuppressWarnings("unused")
206     private void manageQueryResourcesOnAction() {
207         MainMenuAction.manageQueryResourcesOnAction(mainForm);
208     }
209 
210     @FXML
211     @SuppressWarnings("unused")
212     private void manageLocalFunctionsOnAction() {
213         MainMenuAction.manageLocalFunctionsOnAction(mainForm);
214     }
215 
216     @FXML
217     @SuppressWarnings("unused")
218     private void manageQueryFunctionsOnAction() {
219         MainMenuAction.manageQueryFunctionsOnAction(mainForm);
220     }
221 
222     @FXML
223     @SuppressWarnings("unused")
224     private void manageLocalDataTypesOnAction() {
225         MainMenuAction.manageLocalDataTypesOnAction(mainForm);
226     }
227 
228     @FXML
229     @SuppressWarnings("unused")
230     private void manageQueryDataTypesOnAction() {
231         MainMenuAction.manageQueryDataTypesOnAction(mainForm);
232     }
233 
234     @FXML
235     @SuppressWarnings("unused")
236     private void manageSparqlEndpointsOnAction() {
237         MainMenuAction.manageSparqlEndpointsOnAction(mainForm);
238     }
239 
240     @FXML
241     @SuppressWarnings("unused")
242     private void changelogOnAction() {
243         MainMenuAction.openUrlInBrowser(CHANGE_LOG_URL, mainForm.getStage());
244     }
245 
246     @FXML
247     @SuppressWarnings("unused")
248     private void shortcutsOnAction() {
249         MainMenuAction.openUrlInBrowser(SHORTCUTS_URL, mainForm.getStage());
250     }
251 
252     @FXML
253     private void examplesOnAction() {
254         MainMenuAction.openUrlInBrowser(EXAMPLES_URL, mainForm.getStage());
255     }
256 
257     @FXML
258     @SuppressWarnings("unused")
259     private void documentationOnAction() {
260         MainMenuAction.openUrlInBrowser(DOCUMENTATION_URL, mainForm.getStage());
261         /*MainMenuAction.showDocumentationDialog(mainForm.getStage());*/
262     }
263 
264     @FXML
265     @SuppressWarnings("unused")
266     private void creditsOnAction() {
267         MainMenuAction.showCreditsDialog(mainForm.getStage());
268     }
269 
270     @FXML
271     @SuppressWarnings("unused")
272     private void aboutOnAction() {
273         MainMenuAction.showAboutDialog(mainForm.getStage());
274     }
275 
276     @FXML
277     @SuppressWarnings("unused")
278     private void showTitlesOnAction() {
279         MenuItem menuItem = getMenuItemsView().get(MenuItemsView.getShowTitlesOrdinal());
280 
281         SparklePreferences.getUserInstance()
282                 .putBoolean(SparklePreferences.TITLES_ONOF, ((CheckMenuItem) menuItem).isSelected());
283     }
284 
285     public List<MenuItem> getMenuItemsApplication() {
286         return menuItemsApplication;
287     }
288 
289     public List<MenuItem> getMenuItemsQuery() {
290         return menuItemsQuery;
291     }
292 
293     public List<MenuItem> getMenuItemsStorage() {
294         return menuItemsStorage;
295     }
296 
297     private List<MenuItem> getMenuItemsView() {
298         return menuItemsView;
299     }
300 }