public void setProject(IProject project) { this.project = project; updateView(); boolean useDependencyManagement = false; try { IPath vaadinLibrary = ProjectUtil.getVaadinLibraryInProject(project, true); useDependencyManagement = (vaadinLibrary == null || !ProjectUtil.isInProject(project, vaadinLibrary)); } catch (CoreException e) { ErrorUtil.handleBackgroundException("Error trying to check Vaadin version in project", e); } setUseDependencyManagement(useDependencyManagement); }
private void updateVersionCombo() { versionCombo.setEnabled(true); downloadButton.setEnabled(!useDependencyManagement); // Note that this can also be modified by the data model provider latestNightlyCheckbox.setEnabled(!useDependencyManagement); try { versionCombo.removeAll(); // Always allow empty selection which removes Vaadin from the // project versionCombo.add(""); versionMap.clear(); // Vaadin 7 (dependency management) or older versions if (useDependencyManagement) { for (MavenVaadinVersion version : MavenVersionManager.getAvailableVersions(false)) { versionMap.put(version.getVersionNumber(), version); versionCombo.add(version.getVersionNumber()); } } else { for (LocalVaadinVersion version : LocalFileManager.getLocalVaadinVersions(false)) { versionMap.put(version.getVersionNumber(), version); versionCombo.add(version.getVersionNumber()); } } versionCombo.setText(""); try { // select current version (if any) if (project == null) { return; } // TODO should use getVaadinLibraryVersion() IPath vaadinLibrary = ProjectUtil.getVaadinLibraryInProject(project, true); if (vaadinLibrary == null) { return; } // is the Vaadin JAR actually inside the project? boolean vaadinInProject = ProjectUtil.isInProject(project, vaadinLibrary); String currentVaadinVersionString = VersionUtil.getVaadinVersionFromJar(vaadinLibrary); if (currentVaadinVersionString == null) { return; } // There is a version of the Vaadin jar for the project. It // might be in WEB-INF/lib or somewhere else on the classpath. // Ensure the version is listed, it might be a custom jar or it // might have been removed from the local store for instance // when Eclipse was upgraded. // TODO should this take dependency versions into account // differently? LocalVaadinVersion projectVaadinVersion = new LocalVaadinVersion( FileType.VAADIN_RELEASE, currentVaadinVersionString, vaadinLibrary); // Always show current version as "6.4.8 (vaadin-*.jar)" String comboboxString = currentVaadinVersionString + " (" + projectVaadinVersion.getJarFilename() + ")"; versionMap.put(comboboxString, projectVaadinVersion); // Add the string to the combo box as first // ("" becomes second) versionCombo.add(comboboxString, 0); versionCombo.setText(comboboxString); if (!vaadinInProject) { // If the Vaadin JAR is outside the project we just // show it to the user. We really do not want to delete // files outside the project anyway. versionCombo.setEnabled(false); downloadButton.setEnabled(false); latestNightlyCheckbox.setSelection(false); latestNightlyCheckbox.setEnabled(false); } } catch (CoreException ce) { // ignore if cannot select current version ErrorUtil.handleBackgroundException( IStatus.WARNING, "Failed to select the Vaadin version used in the project", ce); } } catch (CoreException ex) { // leave the combo empty and show an error message ErrorUtil.displayError("Failed to list downloaded Vaadin versions", ex, getShell()); } }