|
8 | 8 | import com.github.introfog.gitwave.model.UpdateChecker;
|
9 | 9 |
|
10 | 10 | import java.io.File;
|
| 11 | +import javafx.concurrent.Task; |
11 | 12 | import javafx.scene.control.Menu;
|
12 | 13 | import javafx.scene.control.MenuItem;
|
13 | 14 | import javafx.scene.control.SeparatorMenuItem;
|
|
16 | 17 |
|
17 | 18 | public class MenuController extends SupportController {
|
18 | 19 | private static final Logger LOGGER = LoggerFactory.getLogger(MenuController.class);
|
19 |
| - private Menu menu; |
20 |
| - private MenuItem updateMenuItem; |
21 |
| - private SeparatorMenuItem updateMenuItemSeparator; |
| 20 | + private final Menu menu; |
| 21 | + private final MenuItem updateMenuItem; |
| 22 | + private final SeparatorMenuItem updateMenuItemSeparator; |
22 | 23 |
|
23 | 24 | public MenuController(FxmlStageHolder fxmlStageHolder, Menu menu, MenuItem updateMenuItem, SeparatorMenuItem updateMenuItemSeparator) {
|
24 | 25 | super(fxmlStageHolder);
|
25 | 26 | this.menu = menu;
|
26 | 27 | this.updateMenuItem = updateMenuItem;
|
27 | 28 | this.updateMenuItemSeparator = updateMenuItemSeparator;
|
28 |
| - if (UpdateChecker.isNewReleaseAvailable()) { |
29 |
| - this.menu.setText("Menu*"); |
30 |
| - this.updateMenuItem.setDisable(false); |
31 |
| - this.updateMenuItem.setVisible(true); |
32 |
| - this.updateMenuItemSeparator.setDisable(false); |
33 |
| - this.updateMenuItemSeparator.setVisible(true); |
34 |
| - } |
| 29 | + new Thread(createCheckForUpdateTask()).start(); |
35 | 30 | }
|
36 | 31 |
|
37 | 32 | @Override
|
@@ -60,4 +55,24 @@ public void openAbout() {
|
60 | 55 | public void openUpdate() {
|
61 | 56 | StageFactory.createModalUpdateWindow().getStage().showAndWait();
|
62 | 57 | }
|
| 58 | + |
| 59 | + private Task<Boolean> createCheckForUpdateTask() { |
| 60 | + Task<Boolean> checkForUpdate = new Task<>() { |
| 61 | + @Override |
| 62 | + protected Boolean call() { |
| 63 | + return UpdateChecker.isNewReleaseAvailable(); |
| 64 | + } |
| 65 | + }; |
| 66 | + checkForUpdate.setOnSucceeded((e) -> { |
| 67 | + boolean isNewReleaseAvailable = checkForUpdate.getValue(); |
| 68 | + if (isNewReleaseAvailable) { |
| 69 | + this.menu.setText("Menu*"); |
| 70 | + this.updateMenuItem.setDisable(false); |
| 71 | + this.updateMenuItem.setVisible(true); |
| 72 | + this.updateMenuItemSeparator.setDisable(false); |
| 73 | + this.updateMenuItemSeparator.setVisible(true); |
| 74 | + } |
| 75 | + }); |
| 76 | + return checkForUpdate; |
| 77 | + } |
63 | 78 | }
|
0 commit comments