/******************************************************************************* * Copyright (c) 2007 Exadel, Inc. and Red Hat, Inc. * Distributed under license by Red Hat, Inc. All rights reserved. * This program is made available under the terms of the * Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Exadel, Inc. and Red Hat, Inc. - initial API and implementation ******************************************************************************/ package org.jboss.tools.common.model.options; import java.util.Properties; import org.eclipse.core.runtime.Platform; import org.jboss.tools.common.model.ServiceDialog; import org.jboss.tools.common.model.XModel; import org.jboss.tools.common.model.XModelConstants; import org.jboss.tools.common.model.XModelException; import org.jboss.tools.common.model.XModelFactory; import org.jboss.tools.common.model.XModelObject; import org.jboss.tools.common.model.XModelObjectConstants; import org.jboss.tools.common.model.plugin.ModelPlugin; import org.jboss.tools.common.model.util.ModelFeatureFactory; public class PreferenceModelUtilities { static final String ENT_OPTION_ROOT = "OptionRoot"; //$NON-NLS-1$ private static XModel preferenceModel; private static ServiceDialog createServiceDialog() { return (ServiceDialog)ModelFeatureFactory.getInstance().createFeatureInstance("org.jboss.tools.common.model.ui.wizards.one.ServiceDialogImpl"); //$NON-NLS-1$ } public static void initDefaultPreferenceModel() { if(preferenceModel != null) { return; } String f = ModelPlugin.getDefault().getStateLocation().toString(); Properties p = new Properties(); p.setProperty(XModelConstants.WORKSPACE, f); preferenceModel = createPreferenceModel(p); ServiceDialog d = createServiceDialog(); if(d != null) { d.setModel(preferenceModel); preferenceModel.setService(d); } } public static XModel getPreferenceModel() { if(preferenceModel == null) { Platform.getBundle(ModelPlugin.PLUGIN_ID); //Kick preference store to make it load. ModelPlugin.getDefault().getPreferenceStore().getDefaultBoolean("preferenceModel"); //$NON-NLS-1$ //Just in case initDefaultPreferenceModel(); } return preferenceModel; } public static XModel createPreferenceModel(Properties p) { p.putAll(System.getProperties()); p.setProperty(XModelObjectConstants.PROP_ROOT_ENTITY, ENT_OPTION_ROOT); return XModelFactory.getModel(p); } public static void initPreferenceValue(XModel initialModel, Preference preference) throws XModelException { String value = preference.getValue(); if (value == null || value.length() == 0) { XModelObject object = initialModel.getByPath(preference.getModelPath()); if (object != null) { String newValue = object.getAttributeValue(preference.getName()); if (newValue != null && !newValue.equals(value)) preference.setValue(newValue); } } } }