/** * Copyright (C) 2010-2017 Gordon Fraser, Andrea Arcuri and EvoSuite * contributors * * This file is part of EvoSuite. * * EvoSuite is free software: you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as published * by the Free Software Foundation, either version 3.0 of the License, or * (at your option) any later version. * * EvoSuite is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with EvoSuite. If not, see <http://www.gnu.org/licenses/>. */ package org.evosuite.eclipse.properties; import java.io.FileNotFoundException; import java.io.IOException; import org.eclipse.jface.preference.BooleanFieldEditor; import org.eclipse.jface.preference.FieldEditorPreferencePage; import org.eclipse.jface.preference.IntegerFieldEditor; import org.eclipse.jface.preference.PreferenceStore; import org.eclipse.jface.util.PropertyChangeEvent; import org.eclipse.ui.IWorkbench; import org.eclipse.ui.IWorkbenchPreferencePage; public class EvoSuitePreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage { public static final PreferenceStore PREFERENCE_STORE; public static final String MARKERS_ENABLED = "markersEnabled"; public static final String RUNTIME = "runtime"; public static final String ROAMTIME = "roamtime"; public static final String UNCOVERED_MARKER = "uncovered"; public static final String REMOVED_MARKER = "removed"; public static final String AUTOMATIC_TEST_ON_SAVE = "automatic"; public static final String ORGANIZE_IMPORTS = "organizeImports"; public static final String TEST_COMMENTS = "testComments"; static { PREFERENCE_STORE = new PreferenceStore("evosuite-properties"); } public EvoSuitePreferencePage(){ super("CATS Generation Properties", FieldEditorPreferencePage.GRID); setPreferenceStore(PREFERENCE_STORE); } @Override public PreferenceStore getPreferenceStore() { return PREFERENCE_STORE; } @Override protected void createFieldEditors() { BooleanFieldEditor markersEnabled = new BooleanFieldEditor(MARKERS_ENABLED, "Enable Markers and Quick-fixes", getFieldEditorParent()); addField(markersEnabled); IntegerFieldEditor runtime = new IntegerFieldEditor(RUNTIME, "Time for EvoSuite to improve code coverage (s)", getFieldEditorParent()); runtime.setEmptyStringAllowed(false); runtime.setValidRange(0, Integer.MAX_VALUE); addField(runtime); IntegerFieldEditor roamtime = new IntegerFieldEditor(ROAMTIME, "Inactive time before other classes will be tested (s)", getFieldEditorParent()); addField(roamtime); BooleanFieldEditor uncoveredLines = new BooleanFieldEditor(UNCOVERED_MARKER, "Show lines EvoSuite couldn't cover", getFieldEditorParent()); addField(uncoveredLines); BooleanFieldEditor removedLines = new BooleanFieldEditor(REMOVED_MARKER, "Show lines the compiler may have removed", getFieldEditorParent()); addField(removedLines); BooleanFieldEditor auto = new BooleanFieldEditor(AUTOMATIC_TEST_ON_SAVE, "Automatic test on save", getFieldEditorParent()); addField(auto); BooleanFieldEditor cleanupImports = new BooleanFieldEditor(ORGANIZE_IMPORTS, "Organize imports", getFieldEditorParent()); addField(cleanupImports); BooleanFieldEditor printComments = new BooleanFieldEditor(TEST_COMMENTS, "Print test comments", getFieldEditorParent()); addField(printComments); } @Override protected void performDefaults() { getPreferenceStore().setToDefault(MARKERS_ENABLED); getPreferenceStore().setToDefault(RUNTIME); getPreferenceStore().setToDefault(ROAMTIME); getPreferenceStore().setToDefault(UNCOVERED_MARKER); getPreferenceStore().setToDefault(REMOVED_MARKER); getPreferenceStore().setToDefault(AUTOMATIC_TEST_ON_SAVE); getPreferenceStore().setToDefault(ORGANIZE_IMPORTS); getPreferenceStore().setToDefault(TEST_COMMENTS); super.performDefaults(); } @Override public void init(IWorkbench arg0) { try { PreferenceStore prefStore = getPreferenceStore(); prefStore.load(); } catch (FileNotFoundException e){ // ignore if there is no file } catch (IOException e) { e.printStackTrace(); } getPreferenceStore().setDefault(MARKERS_ENABLED, false); getPreferenceStore().setDefault(RUNTIME, 30); getPreferenceStore().setDefault(ROAMTIME, 240); getPreferenceStore().setDefault(UNCOVERED_MARKER, false); getPreferenceStore().setDefault(REMOVED_MARKER, false); getPreferenceStore().setDefault(AUTOMATIC_TEST_ON_SAVE, false); getPreferenceStore().setDefault(ORGANIZE_IMPORTS, true); getPreferenceStore().setDefault(TEST_COMMENTS, false); storeDefaults(); //getPreferenceStore(). } public void storeDefaults(){ if (!getPreferenceStore().contains(MARKERS_ENABLED)){ getPreferenceStore().setValue(MARKERS_ENABLED, false); } if (!getPreferenceStore().contains(RUNTIME)){ getPreferenceStore().setValue(RUNTIME, 30); } if (!getPreferenceStore().contains(ROAMTIME)){ getPreferenceStore().setValue(ROAMTIME, 240); } if (!getPreferenceStore().contains(UNCOVERED_MARKER)){ getPreferenceStore().setValue(UNCOVERED_MARKER, false); } if (!getPreferenceStore().contains(REMOVED_MARKER)){ getPreferenceStore().setValue(REMOVED_MARKER, false); } if (!getPreferenceStore().contains(AUTOMATIC_TEST_ON_SAVE)){ getPreferenceStore().setValue(AUTOMATIC_TEST_ON_SAVE, false); } if (!getPreferenceStore().contains(ORGANIZE_IMPORTS)){ getPreferenceStore().setValue(ORGANIZE_IMPORTS, true); } if (!getPreferenceStore().contains(TEST_COMMENTS)){ getPreferenceStore().setValue(TEST_COMMENTS, false); } try { getPreferenceStore().save(); } catch (IOException e) { e.printStackTrace(); } } @Override public void propertyChange(PropertyChangeEvent event) { super.propertyChange(event); try { getPreferenceStore().save(); } catch (IOException e) { e.printStackTrace(); } } }