package rhogenwizard.preferences; import java.io.File; import java.io.FileNotFoundException; import java.util.ArrayList; import java.util.List; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.Path; import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer; import org.eclipse.jface.preference.IPreferenceStore; import rhogenwizard.Activator; import rhogenwizard.RunExeHelper; import rhogenwizard.buildfile.AppYmlFile; import rhogenwizard.buildfile.SdkYmlFile; /** * Class used to initialize default preference values. */ public class PreferenceInitializer extends AbstractPreferenceInitializer { static String rhodesDefaultVersion = "3.3.2"; static PreferenceInitializer initPref = null; private SdkYmlFile m_ymlFile = null; public static PreferenceInitializer getInstance() { try { if (initPref == null) { initPref = new PreferenceInitializer(); } File rhobuildYml = findRhobuildYml(); try { initPref.m_ymlFile = new SdkYmlFile(rhobuildYml.getAbsolutePath()); } catch (FileNotFoundException e) { e.printStackTrace(); } initPref.initializeDefaultPreferences(); } catch (Exception e) { Activator.logError(e); } return initPref; } public static String getRhodesPath() { return findRhobuildYml().getParentFile().toString(); } public void initializeDefaultPreferences() { IPreferenceStore store = Activator.getDefault().getPreferenceStore(); try { if (m_ymlFile != null) { String cabWizPath = m_ymlFile.getCabWizPath() != null ? m_ymlFile.getCabWizPath() : ""; String vcbuildPath = m_ymlFile.getVcBuildPath() != null ? m_ymlFile.getVcBuildPath() : ""; String androidSdkPath = m_ymlFile.getAndroidSdkPath() != null ? m_ymlFile.getAndroidSdkPath() : ""; String androidNdkPath = m_ymlFile.getAndroidNdkPath() != null ? m_ymlFile.getAndroidNdkPath() : ""; String javaPath = m_ymlFile.getJavaPath() != null ? m_ymlFile.getJavaPath() : ""; store.setDefault(PreferenceConstants.javaPath, javaPath); store.setDefault(PreferenceConstants.androidSdkParh, androidSdkPath); store.setDefault(PreferenceConstants.androidNdkPath, androidNdkPath); store.setDefault(PreferenceConstants.cabWizardPath, cabWizPath); store.setDefault(PreferenceConstants.vcBuildPath, vcbuildPath); store.setValue(PreferenceConstants.javaPath, javaPath); store.setValue(PreferenceConstants.androidSdkParh, androidSdkPath); store.setValue(PreferenceConstants.androidNdkPath, androidNdkPath); store.setValue(PreferenceConstants.cabWizardPath, cabWizPath); store.setValue(PreferenceConstants.vcBuildPath, vcbuildPath); } } catch (Exception e) { e.printStackTrace(); } } public void savePreferences() { try { if (m_ymlFile != null) { IPreferenceStore store = Activator.getDefault().getPreferenceStore(); String cabWizPath = store.getString(PreferenceConstants.cabWizardPath); String vcbuildPath = store.getString(PreferenceConstants.vcBuildPath); String javaPath = store.getString(PreferenceConstants.javaPath); String sdkPath = store.getString(PreferenceConstants.androidSdkParh); String ndkPath = store.getString(PreferenceConstants.androidNdkPath); m_ymlFile.setJavaPath(javaPath); m_ymlFile.setCabWizPath(cabWizPath); m_ymlFile.setVcBuildPath(vcbuildPath); m_ymlFile.setAndroidNdkPath(ndkPath); m_ymlFile.setAndroidSdkPath(sdkPath); m_ymlFile.save(); } } catch (Exception e) { e.printStackTrace(); } } private static List<String> getRhodesProjects() { List<String> namesList = new ArrayList<String>(); for (IProject p : ResourcesPlugin.getWorkspace().getRoot().getProjects()) { if (p.isOpen() && buildYml(p).exists()) { namesList.add(p.getName()); } } return namesList; } private static File buildYml(IProject project) { return new File(project.getLocation() + File.separator + AppYmlFile.configFileName); } private static File findRhobuildYml() { IPath rhobuildYml = null; List<String> projectNames = getRhodesProjects(); for (String projectName : projectNames) { IProject currProject = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName); if (AppYmlFile.isExists(currProject.getLocation().toOSString())) { try { if (currProject.isOpen()) { AppYmlFile appYmlFile = AppYmlFile.createFromProject(currProject); rhobuildYml = new Path(appYmlFile.getSdkConfigPath()); if (!rhobuildYml.isAbsolute()) { IPath basePath = new Path(currProject.getLocation().toOSString()); rhobuildYml = basePath.append(rhobuildYml); } } } catch (FileNotFoundException e) { e.printStackTrace(); } break; } } if (rhobuildYml == null) { rhobuildYml = new Path(RunExeHelper.getSdkInfo() + File.separator + SdkYmlFile.configName); } return rhobuildYml.toFile(); } }