in kit/src/main/java/com/oracle/javafx/scenebuilder/kit/editor/panel/library/maven/MavenDialogController.java [113:208]
public MavenDialogController(EditorController editorController, String userM2Repository,
String tempM2Repository, PreferencesControllerBase preferencesControllerBase, Stage owner) {
super(LibraryPanelController.class.getResource("MavenDialog.fxml"), I18N.getBundle(), owner); //NOI18N
this.userLibrary = (UserLibrary) editorController.getLibrary();
this.owner = owner;
this.editorController = editorController;
this.preferencesControllerBase = preferencesControllerBase;
maven = new MavenRepositorySystem(false, userM2Repository, tempM2Repository,
preferencesControllerBase.getRepositoryPreferences());
versionsService = new Service<ObservableList<Version>>() {
@Override
protected Task<ObservableList<Version>> createTask() {
return new Task<ObservableList<Version>>() {
@Override
protected ObservableList<Version> call() throws Exception {
return FXCollections.observableArrayList(getVersions());
}
};
}
};
versionsService.stateProperty().addListener((obs, ov, nv) -> {
if (nv.equals(Worker.State.SUCCEEDED)) {
versionsCombo.getItems().setAll(versionsService.getValue()
.sorted((v1, v2) -> v2.compareTo(v1)));
versionsCombo.setCellFactory(p -> new ListCell<Version>() {
@Override
protected void updateItem(Version item, boolean empty) {
super.updateItem(item, empty);
if (item != null && !empty) {
final RemoteRepository remote = maven.getRemoteRepository(item);
setText(item + " [" + remote.getId() + "]");
} else {
setText(null);
}
}
});
versionsCombo.getSelectionModel().selectedItemProperty().addListener(comboBoxListener);
versionsCombo.setDisable(false);
} else if (nv.equals(Worker.State.CANCELLED) || nv.equals(Worker.State.FAILED)) {
versionsCombo.setDisable(false);
}
});
installService = new Service<MavenArtifact>() {
@Override
protected Task<MavenArtifact> createTask() {
return new Task<MavenArtifact>() {
@Override
protected MavenArtifact call() throws Exception {
return resolveArtifacts();
}
};
}
};
installService.stateProperty().addListener((obs, ov, nv) -> {
if (nv.equals(Worker.State.SUCCEEDED)) {
final MavenArtifact mavenArtifact = installService.getValue();
if (mavenArtifact == null || mavenArtifact.getPath().isEmpty() ||
!new File(mavenArtifact.getPath()).exists()) {
logInfoMessage("log.user.maven.failed", getArtifactCoordinates());
} else {
List<File> files = new ArrayList<>();
files.add(new File(mavenArtifact.getPath()));
if (!mavenArtifact.getDependencies().isEmpty()) {
files.addAll(Stream
.of(mavenArtifact.getDependencies().split(File.pathSeparator))
.map(File::new)
.collect(Collectors.toList()));
}
final ImportWindowController iwc
= new ImportWindowController(
new LibraryPanelController(editorController, preferencesControllerBase.getMavenPreferences()),
files, preferencesControllerBase.getMavenPreferences(),
(Stage)installButton.getScene().getWindow(), false,
preferencesControllerBase.getMavenPreferences().getArtifactsFilter());
iwc.setToolStylesheet(editorController.getToolStylesheet());
ButtonID userChoice = iwc.showAndWait();
if (userChoice == ButtonID.OK) {
mavenArtifact.setFilter(iwc.getNewExcludedItems());
updatePreferences(mavenArtifact);
logInfoMessage("log.user.maven.installed", getArtifactCoordinates());
}
this.onCloseRequest(null);
}
} else if (nv.equals(Worker.State.CANCELLED) || nv.equals(Worker.State.FAILED)) {
logInfoMessage("log.user.maven.failed", getArtifactCoordinates());
}
});
}