package net.jeeeyul.eclipse.themes.ui.preference.actions; import java.util.Properties; import net.jeeeyul.eclipse.themes.JThemesCore; import net.jeeeyul.eclipse.themes.ui.preference.JTPConstants; import net.jeeeyul.eclipse.themes.ui.preference.JThemePreferenceStore; import net.jeeeyul.eclipse.themes.ui.preference.internal.JTPreferencePage; import net.jeeeyul.eclipse.themes.ui.preference.internal.PropertiesUtil; import net.jeeeyul.eclipse.themes.ui.preference.preset.IJTPreset; import net.jeeeyul.eclipse.themes.ui.preference.preset.IJTPresetManager; import net.jeeeyul.swtend.SWTExtensions; import org.eclipse.jface.preference.PreferenceStore; import org.eclipse.swt.SWT; /** * Loads preset to prefernce page. * * @author Jeeeyul */ public class LoadPresetAction extends AbstractPreferenceAction { private IJTPreset preset; /** * Creates {@link LoadPresetAction} * * @param root * preference page. * @param preset * preset to load. */ public LoadPresetAction(JTPreferencePage root, IJTPreset preset) { super(root, preset.getName(), SWT.CHECK); this.preset = preset; this.setImageDescriptor(preset.getImageDescriptor()); /* * https://github.com/jeeeyul/eclipse-themes/issues/140 */ String lastChoosedPresetId = root.getLastChoosedPresetId(); if (lastChoosedPresetId == null) { lastChoosedPresetId = root.getPreferenceStore().getString(JTPConstants.Memento.LAST_CHOOSED_PRESET); } setChecked(preset.getId().equals(lastChoosedPresetId)); } @Override public void run() { IJTPresetManager presetManager = JThemesCore.getDefault().getPresetManager(); Properties properties = PropertiesUtil.merge(presetManager.getDefaultPreset().getProperties(), preset.getProperties()); PreferenceStore store = new PreferenceStore(); for (Object kObj : properties.keySet()) { String key = (String) kObj; String value = properties.getProperty(key); if (key.equals(JTPConstants.Layout.TAB_HEIGHT)) { int intValue = Integer.parseInt(value); store.setValue(key, Math.max(intValue, SWTExtensions.INSTANCE.getMinimumToolBarHeight())); } else { store.setValue(key, value); } } JThemePreferenceStore jtStore = new JThemePreferenceStore(store); getPage().loadFrom(jtStore); /* * https://github.com/jeeeyul/eclipse-themes/issues/140 */ getPage().setLastChoosedPresetId(preset.getId()); } }