# HG changeset patch # User timkelly # Date 1272649301 18000 # Node ID 25ab7e58dbf739e70b9a1cc9a5751bc603324e16 # Parent 9d5a1c3cc1cf24760d196209ed4dbe6b3faa75c2# Parent af4b6a3f5e02b8e2f91c2f9e784f530d105d34af merge commit diff -r af4b6a3f5e02 -r 25ab7e58dbf7 project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/ProjectUIPlugin.java --- a/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/ProjectUIPlugin.java Fri Apr 30 10:40:55 2010 -0500 +++ b/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/ProjectUIPlugin.java Fri Apr 30 12:41:41 2010 -0500 @@ -16,6 +16,33 @@ */ package com.nokia.carbide.cpp.internal.project.ui; +import org.eclipse.cdt.ui.CUIPlugin; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.Status; +import org.eclipse.jface.dialogs.IDialogConstants; +import org.eclipse.jface.dialogs.MessageDialogWithToggle; +import org.eclipse.jface.preference.IPreferenceStore; +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.jface.util.IPropertyChangeListener; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.ui.IPerspectiveDescriptor; +import org.eclipse.ui.IStartup; +import org.eclipse.ui.IWorkbench; +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.IWorkbenchWindow; +import org.eclipse.ui.internal.ide.IDEInternalPreferences; +import org.eclipse.ui.internal.ide.IDEWorkbenchPlugin; +import org.eclipse.ui.navigator.CommonNavigator; +import org.eclipse.ui.navigator.resources.ProjectExplorer; +import org.eclipse.ui.plugin.AbstractUIPlugin; +import org.eclipse.ui.progress.UIJob; +import org.osgi.framework.BundleContext; + import com.nokia.carbide.cpp.internal.api.project.core.ProjectCorePluginUtility; import com.nokia.carbide.cpp.internal.api.project.core.ResourceChangeListener; import com.nokia.carbide.cpp.internal.project.ui.dialogs.MMPSelectionResolver; @@ -23,21 +50,6 @@ import com.nokia.carbide.cpp.internal.project.ui.preferences.PreferenceConstants; import com.nokia.cpp.internal.api.utils.core.Logging; -import org.eclipse.cdt.ui.CUIPlugin; -import org.eclipse.core.resources.IProject; -import org.eclipse.core.resources.ResourcesPlugin; -import org.eclipse.core.runtime.*; -import org.eclipse.jface.preference.IPreferenceStore; -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.jface.util.IPropertyChangeListener; -import org.eclipse.jface.viewers.StructuredSelection; -import org.eclipse.ui.*; -import org.eclipse.ui.navigator.CommonNavigator; -import org.eclipse.ui.navigator.resources.ProjectExplorer; -import org.eclipse.ui.plugin.AbstractUIPlugin; -import org.eclipse.ui.progress.UIJob; -import org.osgi.framework.BundleContext; - /** * The activator class controls the plug-in life cycle */ @@ -178,11 +190,52 @@ } final IPerspectiveDescriptor perspective = workbench.getPerspectiveRegistry().findPerspectiveWithId("com.nokia.carbide.cpp.CarbideCppPerspective"); //$NON-NLS-1$ + + IWorkbenchPage page = activeWorkbenchWindow.getActivePage(); + if (page != null) + { + if (page.getPerspective().getId().equals(perspective.getId())) + return; // already on the default perspective for this projects + } + final IWorkbenchPage activePage = activeWorkbenchWindow.getActivePage(); + if (activePage != null) { job = new UIJob(""){ //$NON-NLS-1$ public IStatus runInUIThread(IProgressMonitor monitor) { - activePage.setPerspective(perspective); + boolean switchToDefaultPerspective = false; + IPreferenceStore store = IDEWorkbenchPlugin.getDefault().getPreferenceStore(); + if (store != null){ + String promptSetting = store.getString(IDEInternalPreferences.PROJECT_SWITCH_PERSP_MODE); + if ((promptSetting.equals(MessageDialogWithToggle.ALWAYS)) ){ + switchToDefaultPerspective = true; + } + else if ((promptSetting.equals(MessageDialogWithToggle.PROMPT))) { + MessageDialogWithToggle toggleDialog = MessageDialogWithToggle.openYesNoQuestion( + null, + Messages.getString("PerspectiveSwitchDialog_Title"), + Messages.getString("PerspectiveSwitchDialog_Query"), + Messages.getString("PerspectiveSwitchDialog_RememberDecisionText"), + false, + null, + null); + + boolean toggleState = toggleDialog.getToggleState(); + switchToDefaultPerspective = toggleDialog.getReturnCode() == IDialogConstants.YES_ID; + + // set the store + if (toggleState){ + if (switchToDefaultPerspective) + store.setValue(IDEInternalPreferences.PROJECT_SWITCH_PERSP_MODE, MessageDialogWithToggle.ALWAYS); + else + store.setValue(IDEInternalPreferences.PROJECT_SWITCH_PERSP_MODE, MessageDialogWithToggle.NEVER); + } + } + } + + if (switchToDefaultPerspective){ + activePage.setPerspective(perspective); + } return Status.OK_STATUS; }}; job.setSystem(true); diff -r af4b6a3f5e02 -r 25ab7e58dbf7 project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/messages.properties --- a/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/messages.properties Fri Apr 30 10:40:55 2010 -0500 +++ b/project/com.nokia.carbide.cpp.project.ui/src/com/nokia/carbide/cpp/internal/project/ui/messages.properties Fri Apr 30 12:41:41 2010 -0500 @@ -104,3 +104,7 @@ CreateSourceFolders.DialogMessage=Select the mmp files to update with this change:\n· add user include path\n OnDeviceSetupDialog.Title=On-Device Setup +PerspectiveSwitchDialog_Title=Confirm Perspective Switch +PerspectiveSwitchDialog_Query=The type of project you are creating is associated with the Carbide C/C++ perspective.\n\nDo you want to switch to this perspective now? +PerspectiveSwitchDialog_RememberDecisionText=&Remember my decision + diff -r af4b6a3f5e02 -r 25ab7e58dbf7 qt/com.nokia.carbide.cpp.qt.ui/src/com/nokia/carbide/cpp/internal/qt/ui/QtUIPlugin.java --- a/qt/com.nokia.carbide.cpp.qt.ui/src/com/nokia/carbide/cpp/internal/qt/ui/QtUIPlugin.java Fri Apr 30 10:40:55 2010 -0500 +++ b/qt/com.nokia.carbide.cpp.qt.ui/src/com/nokia/carbide/cpp/internal/qt/ui/QtUIPlugin.java Fri Apr 30 12:41:41 2010 -0500 @@ -23,10 +23,15 @@ import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; +import org.eclipse.jface.dialogs.IDialogConstants; +import org.eclipse.jface.dialogs.MessageDialogWithToggle; +import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.ui.IPerspectiveDescriptor; import org.eclipse.ui.IWorkbench; import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.IWorkbenchWindow; +import org.eclipse.ui.internal.ide.IDEInternalPreferences; +import org.eclipse.ui.internal.ide.IDEWorkbenchPlugin; import org.eclipse.ui.plugin.AbstractUIPlugin; import org.eclipse.ui.progress.UIJob; import org.osgi.framework.BundleContext; @@ -40,6 +45,7 @@ import com.nokia.carbide.cpp.internal.api.sdk.ISDKManagerLoadedHook; import com.nokia.carbide.cpp.internal.qt.core.QtCorePlugin; import com.nokia.carbide.cpp.internal.qt.core.QtSDKUtils; +import com.nokia.carbide.cpp.internal.qt.ui.wizard.Messages; import com.nokia.carbide.cpp.sdk.core.ISymbianBuildContext; public class QtUIPlugin extends AbstractUIPlugin implements ICarbideConfigurationChangedListener, ISDKManagerLoadedHook { @@ -128,14 +134,48 @@ IWorkbenchWindow windows[] = workbench.getWorkbenchWindows(); activeWorkbenchWindow = windows[0]; } - final IPerspectiveDescriptor perspective = workbench.getPerspectiveRegistry().findPerspectiveWithId("com.trolltech.qtcppproject.QtCppPerspective"); //$NON-NLS-1$ final IWorkbenchPage activePage = activeWorkbenchWindow.getActivePage(); + if (activePage != null) { UIJob job = new UIJob(""){ //$NON-NLS-1$ public IStatus runInUIThread(IProgressMonitor monitor) { - activePage.setPerspective(perspective); + boolean switchToDefaultPerspective = false; + IPreferenceStore store = IDEWorkbenchPlugin.getDefault().getPreferenceStore(); + + if (store != null){ + String promptSetting = store.getString(IDEInternalPreferences.PROJECT_SWITCH_PERSP_MODE); + if ((promptSetting.equals(MessageDialogWithToggle.ALWAYS)) ){ + switchToDefaultPerspective = true; + } + else if ((promptSetting.equals(MessageDialogWithToggle.PROMPT))) { + MessageDialogWithToggle toggleDialog = MessageDialogWithToggle.openYesNoQuestion( + null, + Messages.PerspectiveSwitchDialog_Title, + Messages.PerspectiveSwitchDialog_Query, + Messages.PerspectiveSwitchDialog_RememberDecisionText, + false, + null, + null); + + boolean toggleState = toggleDialog.getToggleState(); + switchToDefaultPerspective = toggleDialog.getReturnCode() == IDialogConstants.YES_ID; + + // set the store + if (toggleState){ + if (switchToDefaultPerspective) + store.setValue(IDEInternalPreferences.PROJECT_SWITCH_PERSP_MODE, MessageDialogWithToggle.ALWAYS); + else + store.setValue(IDEInternalPreferences.PROJECT_SWITCH_PERSP_MODE, MessageDialogWithToggle.NEVER); + } + } + } + + if (switchToDefaultPerspective){ + activePage.setPerspective(perspective); + } + return Status.OK_STATUS; }}; job.setSystem(true); diff -r af4b6a3f5e02 -r 25ab7e58dbf7 qt/com.nokia.carbide.cpp.qt.ui/src/com/nokia/carbide/cpp/internal/qt/ui/wizard/Messages.java --- a/qt/com.nokia.carbide.cpp.qt.ui/src/com/nokia/carbide/cpp/internal/qt/ui/wizard/Messages.java Fri Apr 30 10:40:55 2010 -0500 +++ b/qt/com.nokia.carbide.cpp.qt.ui/src/com/nokia/carbide/cpp/internal/qt/ui/wizard/Messages.java Fri Apr 30 12:41:41 2010 -0500 @@ -121,6 +121,12 @@ public static String QtBuildTargetsPage_noQtConfigsError; + public static String PerspectiveSwitchDialog_Title; + + public static String PerspectiveSwitchDialog_Query; + + public static String PerspectiveSwitchDialog_RememberDecisionText; + static { // initialize resource bundle diff -r af4b6a3f5e02 -r 25ab7e58dbf7 qt/com.nokia.carbide.cpp.qt.ui/src/com/nokia/carbide/cpp/internal/qt/ui/wizard/messages.properties --- a/qt/com.nokia.carbide.cpp.qt.ui/src/com/nokia/carbide/cpp/internal/qt/ui/wizard/messages.properties Fri Apr 30 10:40:55 2010 -0500 +++ b/qt/com.nokia.carbide.cpp.qt.ui/src/com/nokia/carbide/cpp/internal/qt/ui/wizard/messages.properties Fri Apr 30 12:41:41 2010 -0500 @@ -52,3 +52,8 @@ QtBuildTargetsPage_filterCheckboxText=Filter build configurations that don't contain Qt support QtBuildTargetsPage_filterCheckboxToolTip=Filters any build configurations that don't contain the Qt libraries QtBuildTargetsPage_noQtConfigsError=No SDK's were found that contain Qt support + +PerspectiveSwitchDialog_Title=Confirm Perspective Switch +PerspectiveSwitchDialog_Query=The type of project you are creating is associated with the Qt C++ perspective.\n\nDo you want to switch to this perspective now? +PerspectiveSwitchDialog_RememberDecisionText=&Remember my decision +