aboutsummaryrefslogtreecommitdiff
path: root/find_java2/src/WinLauncher2App.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'find_java2/src/WinLauncher2App.cpp')
-rwxr-xr-xfind_java2/src/WinLauncher2App.cpp154
1 files changed, 154 insertions, 0 deletions
diff --git a/find_java2/src/WinLauncher2App.cpp b/find_java2/src/WinLauncher2App.cpp
new file mode 100755
index 000000000..392ad9e62
--- /dev/null
+++ b/find_java2/src/WinLauncher2App.cpp
@@ -0,0 +1,154 @@
+/*
+* Copyright (C) 2014 The Android Open Source Project
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+
+#include "stdafx.h"
+#include "WinLauncher2App.h"
+
+#include "utils.h"
+#include "JavaFinder.h"
+#include "FindJava2Dlg.h"
+
+#ifdef _DEBUG
+#define new DEBUG_NEW
+#endif
+
+
+// CWinLauncher2App
+
+BEGIN_MESSAGE_MAP(CWinLauncher2App, CWinApp)
+ ON_COMMAND(ID_HELP, &CWinApp::OnHelp)
+END_MESSAGE_MAP()
+
+
+// The one and only CWinLauncher2App object
+CWinLauncher2App theApp;
+
+class CLauncherCmdLineInfo : public CCommandLineInfo {
+public:
+ bool mDoHelp;
+ bool mDoForceUi;
+ bool mDoJava1_7;
+ CString mFilename;
+
+ CLauncherCmdLineInfo() : mDoHelp(false), mDoForceUi(false), mDoJava1_7(false) {}
+
+ virtual void ParseParam(const TCHAR* pszParam, BOOL bFlag, BOOL bLast) {
+ // Expected command line:
+ // /h | help : msg box with command line arguments
+ // /f | force : force UI selection
+ // /7 : require java 1.7
+ // path-to-launch
+
+ if (!bFlag) {
+ mFilename = pszParam;
+ } else if (_tcsnccmp(pszParam, _T("h"), 2) == 0) {
+ mDoHelp = true;
+ } else if (_tcsnccmp(pszParam, _T("f"), 2) == 0) {
+ mDoForceUi = true;
+ } else if (_tcsnccmp(pszParam, _T("7"), 2) == 0) {
+ mDoJava1_7 = true;
+ }
+ }
+};
+
+
+CWinLauncher2App::CWinLauncher2App() {
+ // support Restart Manager
+ m_dwRestartManagerSupportFlags = AFX_RESTART_MANAGER_SUPPORT_RESTART;
+
+ // TODO: add construction code here,
+ // Place all significant initialization in InitInstance
+}
+
+BOOL CWinLauncher2App::InitInstance() {
+ // InitCommonControlsEx() is required on Windows XP if an application
+ // manifest specifies use of ComCtl32.dll version 6 or later to enable
+ // visual styles. Otherwise, any window creation will fail.
+ INITCOMMONCONTROLSEX InitCtrls;
+ InitCtrls.dwSize = sizeof(InitCtrls);
+ // Set this to include all the common control classes you want to use
+ // in your application.
+ InitCtrls.dwICC = ICC_WIN95_CLASSES;
+ InitCommonControlsEx(&InitCtrls);
+
+ CWinApp::InitInstance();
+ AfxEnableControlContainer();
+
+ // Create the shell manager, in case the dialog contains
+ // any shell tree view or shell list view controls.
+ CShellManager *pShellManager = new CShellManager;
+
+ // Activate "Windows Native" visual manager for enabling themes in MFC controls
+ CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerWindows));
+
+ // Set CWinApp default registry key. Must be consistent with all apps using findjava2.
+ SetRegistryKey(_T("Android-FindJava2"));
+
+ // Use VERSIONINFO.FileDescription as the canonical app name
+ initUtils(NULL);
+
+ CLauncherCmdLineInfo cmdLine;
+ ParseCommandLine(cmdLine);
+
+ if (cmdLine.mDoHelp) {
+ const TCHAR *msg =
+ _T("WinLauncher2 [/7|/f|/h]\r\n")
+ _T("/7 : Requires Java 1.7 instead of 1.6\r\n")
+ _T("/f : Force UI\r\n")
+ _T("/h : Help\r\n");
+ AfxMessageBox(msg);
+ return FALSE; // quit without starting MFC app msg loop
+ }
+
+ CJavaFinder javaFinder(JAVA_VERS_TO_INT(1, cmdLine.mDoJava1_7 ? 7 : 6));
+ CJavaPath javaPath = javaFinder.getRegistryPath();
+ if (cmdLine.mDoForceUi || javaPath.isEmpty()) {
+ javaPath.clear();
+
+ CFindJava2Dlg dlg;
+ dlg.setJavaFinder(&javaFinder);
+ m_pMainWnd = &dlg;
+ INT_PTR nResponse = dlg.DoModal();
+
+ if (nResponse == IDOK) {
+ // Use choice selected by user and save in registry.
+ javaPath = dlg.getSelectedPath();
+ javaFinder.setRegistryPath(javaPath);
+ } else if (nResponse == IDCANCEL) {
+ // Canceled by user, exit silently.
+ } else if (nResponse == -1) {
+ TRACE(traceAppMsg, 0, "Warning: dialog creation failed, so application is terminating unexpectedly.\n");
+ }
+ }
+
+ if (!javaPath.isEmpty()) {
+ // TODO actually launch configured app instead of just printing path.
+ CString msg(_T("PLACEHOLDER TODO run app using "));
+ msg.Append(javaPath.mPath);
+ AfxMessageBox(msg);
+ }
+
+ // Delete the shell manager created above.
+ if (pShellManager != NULL) {
+ delete pShellManager;
+ }
+
+ // Since the dialog has been closed, return FALSE so that we exit the
+ // application, rather than start the application's message pump.
+ return FALSE;
+}
+