diff --git a/src/lib_gui/CMakeLists.txt b/src/lib_gui/CMakeLists.txt index 083732f8..98e07f53 100644 --- a/src/lib_gui/CMakeLists.txt +++ b/src/lib_gui/CMakeLists.txt @@ -164,7 +164,7 @@ add_files( qt/QtApplication.h qt/QtCoreApplication.cpp qt/QtCoreApplication.h - + utility/path_detector/cxx_header/CxxFrameworkPathDetector.cpp utility/path_detector/cxx_header/CxxFrameworkPathDetector.h utility/path_detector/cxx_header/CxxHeaderPathDetector.cpp @@ -173,12 +173,14 @@ add_files( utility/path_detector/cxx_header/CxxVsHeaderPathDetector.h utility/path_detector/cxx_header/utilityCxxHeaderDetection.cpp utility/path_detector/cxx_header/utilityCxxHeaderDetection.h - + utility/path_detector/java_runtime/JavaPathDetector.cpp utility/path_detector/java_runtime/JavaPathDetector.h + utility/path_detector/java_runtime/JavaPathDetectorMac.cpp + utility/path_detector/java_runtime/JavaPathDetectorMac.h utility/path_detector/java_runtime/JavaPathDetectorWindows.cpp utility/path_detector/java_runtime/JavaPathDetectorWindows.h - + utility/path_detector/CombinedPathDetector.cpp utility/path_detector/CombinedPathDetector.h utility/path_detector/PathDetector.cpp diff --git a/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentPaths.cpp b/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentPaths.cpp index e77ebb7a..d669e89c 100644 --- a/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentPaths.cpp +++ b/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentPaths.cpp @@ -164,6 +164,7 @@ void QtProjectWizzardContentPaths::addDetection(QGridLayout* layout, int row) connect(button, SIGNAL(clicked()), this, SLOT(detectionClicked())); QHBoxLayout* hlayout = new QHBoxLayout(); + hlayout->setContentsMargins(0, 0, 0, 0); hlayout->addWidget(label); hlayout->addWidget(m_detectorBox); hlayout->addWidget(button); diff --git a/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentPreferences.cpp b/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentPreferences.cpp index ed952700..6dbe3fbb 100644 --- a/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentPreferences.cpp +++ b/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentPreferences.cpp @@ -3,6 +3,7 @@ #include "settings/ApplicationSettings.h" #include "utility/file/FileSystem.h" #include "utility/messaging/type/MessageSwitchColorScheme.h" +#include "utility/path_detector/java_runtime/JavaPathDetectorMac.h" #include "utility/path_detector/java_runtime/JavaPathDetectorWindows.h" #include "utility/ResourcePaths.h" @@ -157,7 +158,15 @@ void QtProjectWizzardContentPreferences::populateForm(QGridLayout* layout, int& // java path m_javaPath = new QtLocationPicker(this); m_javaPath->setPickDirectory(true); - m_javaPath->setPlaceholderText("/bin/client"); + + if (QSysInfo::windowsVersion() != QSysInfo::WV_None) + { + m_javaPath->setPlaceholderText("/bin/client"); + } + else if (QSysInfo::macVersion() != QSysInfo::MV_None) + { + m_javaPath->setPlaceholderText("/Contents/Home"); + } layout->addWidget(createFormLabel("Java Path"), row, QtProjectWizzardWindow::FRONT_COL, Qt::AlignRight); layout->addWidget(m_javaPath, row, QtProjectWizzardWindow::BACK_COL); @@ -173,7 +182,12 @@ void QtProjectWizzardContentPreferences::populateForm(QGridLayout* layout, int& m_javaPathDetector = std::make_shared(); m_javaPathDetector->addDetector(std::make_shared("1.8")); addJavaPathDetection(layout, row); - row++; + } + else if (QSysInfo::macVersion() != QSysInfo::MV_None) + { + m_javaPathDetector = std::make_shared(); + m_javaPathDetector->addDetector(std::make_shared("1.8")); + addJavaPathDetection(layout, row); } layout->setRowMinimumHeight(row++, 20); @@ -264,7 +278,7 @@ void QtProjectWizzardContentPreferences::javaPathDetectionClicked() } } -void QtProjectWizzardContentPreferences::addJavaPathDetection(QGridLayout* layout, int row) +void QtProjectWizzardContentPreferences::addJavaPathDetection(QGridLayout* layout, int& row) { std::vector detectorNames = m_javaPathDetector->getWorkingDetectorNames(); if (!detectorNames.size()) @@ -286,6 +300,7 @@ void QtProjectWizzardContentPreferences::addJavaPathDetection(QGridLayout* layou connect(button, SIGNAL(clicked()), this, SLOT(javaPathDetectionClicked())); QHBoxLayout* hlayout = new QHBoxLayout(); + hlayout->setContentsMargins(0, 0, 0, 0); hlayout->addWidget(label); hlayout->addWidget(m_javaPathDetectorBox); hlayout->addWidget(button); @@ -294,4 +309,5 @@ void QtProjectWizzardContentPreferences::addJavaPathDetection(QGridLayout* layou detectionWidget->setLayout(hlayout); layout->addWidget(detectionWidget, row, QtProjectWizzardWindow::BACK_COL, Qt::AlignLeft | Qt::AlignTop); + row++; } diff --git a/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentPreferences.h b/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentPreferences.h index 434cd870..de572a48 100644 --- a/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentPreferences.h +++ b/src/lib_gui/qt/window/project_wizzard/QtProjectWizzardContentPreferences.h @@ -31,7 +31,7 @@ private slots: void javaPathDetectionClicked(); private: - void addJavaPathDetection(QGridLayout* layout, int row); + void addJavaPathDetection(QGridLayout* layout, int& row); QLineEdit* m_fontFace; QComboBox* m_fontSize; diff --git a/src/lib_gui/utility/path_detector/java_runtime/JavaPathDetectorMac.cpp b/src/lib_gui/utility/path_detector/java_runtime/JavaPathDetectorMac.cpp new file mode 100644 index 00000000..e92af1a3 --- /dev/null +++ b/src/lib_gui/utility/path_detector/java_runtime/JavaPathDetectorMac.cpp @@ -0,0 +1,34 @@ +#include "utility/path_detector/java_runtime/JavaPathDetectorMac.h" + +#include "utility/utilityApp.h" +#include "utility/utilityString.h" + +JavaPathDetectorMac::JavaPathDetectorMac(const std::string javaVersion) + : JavaPathDetector("Java " + javaVersion + " for Mac", javaVersion) +{ +} + +JavaPathDetectorMac::~JavaPathDetectorMac() +{ +} + +std::vector JavaPathDetectorMac::getPaths() const +{ + std::vector paths; + + std::string command = "/usr/libexec/java_home"; + std::string output = utility::executeProcess(command.c_str()); + + if (output.size()) + { + output = utility::trim(output); + + FilePath javaPath(output); + if (!javaPath.empty() && javaPath.exists()) + { + paths.push_back(javaPath); + } + } + + return paths; +} diff --git a/src/lib_gui/utility/path_detector/java_runtime/JavaPathDetectorMac.h b/src/lib_gui/utility/path_detector/java_runtime/JavaPathDetectorMac.h new file mode 100644 index 00000000..153bfcb5 --- /dev/null +++ b/src/lib_gui/utility/path_detector/java_runtime/JavaPathDetectorMac.h @@ -0,0 +1,16 @@ +#ifndef JAVA_PATH_DETECTOR_MAC_H +#define JAVA_PATH_DETECTOR_MAC_H + +#include "utility/path_detector/java_runtime/JavaPathDetector.h" + +class JavaPathDetectorMac + : public JavaPathDetector +{ +public: + JavaPathDetectorMac(const std::string javaVersion); + virtual ~JavaPathDetectorMac(); + + virtual std::vector getPaths() const; +}; + +#endif // JAVA_PATH_DETECTOR_MAC_H