Loading de.ugoe.cs.swe.TTCN3.ui/src/de/ugoe/cs/swe/ui/ScopeRebuild.java 0 → 100644 +112 −0 Original line number Diff line number Diff line package de.ugoe.cs.swe.ui; import java.util.List; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.xtext.builder.BuilderParticipant; import org.eclipse.xtext.builder.EclipseResourceFileSystemAccess2; import org.eclipse.xtext.builder.IXtextBuilderParticipant; import org.eclipse.xtext.generator.IFileSystemAccess; import org.eclipse.xtext.generator.IGenerator2; import org.eclipse.xtext.resource.IContainer; import org.eclipse.xtext.resource.IResourceDescription; import org.eclipse.xtext.resource.IResourceDescription.Delta; import org.eclipse.xtext.resource.IResourceDescriptions; import org.eclipse.xtext.resource.impl.ResourceDescriptionsProvider; import com.google.inject.Inject; import de.ugoe.cs.swe.common.CommonHelper; import de.ugoe.cs.swe.common.PreAnalyzer; import de.ugoe.cs.swe.scoping.TTCN3GlobalScopeProvider; import de.ugoe.cs.swe.tTCN3.TTCN3Module; import de.ugoe.cs.swe.validation.TTCN3StatisticsProvider; public class ScopeRebuild extends BuilderParticipant { @Inject private ResourceDescriptionsProvider resourceDescriptionsProvider; @Inject private IContainer.Manager containerManager; @Inject(optional = true) private IGenerator2 generator; protected ThreadLocal<Boolean> buildSemaphor = new ThreadLocal<Boolean>(); @Override public void build(IBuildContext context, IProgressMonitor monitor) throws CoreException { buildSemaphor.set(false); super.build(context, monitor); } @Override protected void handleChangedContents(IResourceDescription.Delta delta, IXtextBuilderParticipant.IBuildContext context, EclipseResourceFileSystemAccess2 fileSystemAccess) throws org.eclipse.core.runtime.CoreException { super.handleChangedContents(delta, context, fileSystemAccess); if (!buildSemaphor.get()) { //invokeRebuild(delta, context, fileSystemAccess); } } private void invokeRebuild(Delta delta, IBuildContext context, IFileSystemAccess fileSystemAccess) { buildSemaphor.set(true); //TODO: make this context specific //NOTE: probably won't work without better integration System.out.println("Rebuilding.."); Resource resource = context.getResourceSet().getResource(delta.getUri(), true); // if (shouldGenerate(resource, context)) { // IResourceDescriptions index = resourceDescriptionsProvider.createResourceDescriptions(); // IResourceDescription resDesc = index.getResourceDescription(resource.getURI()); // List<IContainer> visibleContainers = containerManager.getVisibleContainers(resDesc, index); // for (IContainer c : visibleContainers) { // for (IResourceDescription rd : c.getResourceDescriptions()) { // context.getResourceSet().getResource(rd.getURI(), true); // } // } // // //generator.doGenerate(context.getResourceSet(), fileSystemAccess); // } TTCN3GlobalScopeProvider.RESOURCES.clear(); TTCN3GlobalScopeProvider.NAMED_MODULES.clear(); TTCN3GlobalScopeProvider.EXPORTED_OBJECTS.clear(); TTCN3GlobalScopeProvider.IMPORTS.clear(); TTCN3GlobalScopeProvider.IMPORTED_FROM.clear(); TTCN3GlobalScopeProvider.IMPORTED_RESOURCES.clear(); TTCN3GlobalScopeProvider.STATIC_SCOPE.clear(); System.out.println("Reset Master : "+resource.getURI()); for (IResourceDescription d : resourceDescriptionsProvider.getResourceDescriptions(context.getResourceSet()).getAllResourceDescriptions()) { Resource r = resource.getResourceSet().getResource(d.getURI(), true); System.out.println("Reset: "+d.getURI()); TTCN3Module module = CommonHelper.getModule(r); if (!TTCN3GlobalScopeProvider.NAMED_MODULES.containsKey(module.getName())) { TTCN3GlobalScopeProvider.RESOURCES.add(r); TTCN3GlobalScopeProvider.NAMED_MODULES.put(module.getName(), module); } } for (IResourceDescription d : resourceDescriptionsProvider.getResourceDescriptions(context.getResourceSet()).getAllResourceDescriptions()) { Resource r = resource.getResourceSet().getResource(d.getURI(), true); TTCN3GlobalScopeProvider.initExportedObjects(r); System.out.println("InitExports: "+r.getURI()); } for (int i = 0; i < TTCN3GlobalScopeProvider.RESOURCES.size(); i++) { PreAnalyzer p = new PreAnalyzer(TTCN3GlobalScopeProvider.RESOURCES.get(i)); try { p.call(); } catch (Exception e) { e.printStackTrace(); } } TTCN3StatisticsProvider.getInstance().setPreAnalyzingCompleted(true); } } No newline at end of file de.ugoe.cs.swe.TTCN3.ui/src/de/ugoe/cs/swe/ui/TTCN3UiModule.java +11 −1 Original line number Diff line number Diff line Loading @@ -5,6 +5,7 @@ package de.ugoe.cs.swe.ui; import org.eclipse.emf.ecore.EcorePackage; import org.eclipse.ui.plugin.AbstractUIPlugin; import org.eclipse.xtext.builder.IXtextBuilderParticipant; import org.eclipse.xtext.builder.nature.NatureAddingEditorCallback; import org.eclipse.xtext.ide.editor.model.TokenTypeToStringMapper; import org.eclipse.xtext.ide.editor.syntaxcoloring.AbstractAntlrTokenToAttributeIdMapper; Loading @@ -16,6 +17,7 @@ import com.google.common.base.Predicate; import com.google.inject.Binder; import com.google.inject.name.Names; import de.ugoe.cs.swe.ui.preferences.TTCN3RootPreferencePage; import de.ugoe.cs.swe.ui.syntaxcoloring.TTCN3HighlightingCalculator; import de.ugoe.cs.swe.ui.syntaxcoloring.TTCN3HighlightingConfiguration; import de.ugoe.cs.swe.ui.syntaxcoloring.TTCN3TokenToAttributeIdMapper; Loading @@ -26,6 +28,9 @@ import de.ugoe.cs.swe.ui.syntaxcoloring.TTCN3TokenToAttributeIdMapper; public class TTCN3UiModule extends de.ugoe.cs.swe.ui.AbstractTTCN3UiModule { public TTCN3UiModule(AbstractUIPlugin plugin) { super(plugin); } public Class<? extends IXtextBuilderParticipant> bindIXtextBuilderParticipant() { return ScopeRebuild.class; } //@Override public Class<? extends IHighlightingConfiguration> bindIHighlightingConfiguration() { Loading @@ -37,6 +42,11 @@ public class TTCN3UiModule extends de.ugoe.cs.swe.ui.AbstractTTCN3UiModule { public Class<? extends ISemanticHighlightingCalculator> bindISemanticHighlightingCalculator() { return TTCN3HighlightingCalculator.class; } public Class<? extends org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage> bindLanguageRootPreferencePage() { return TTCN3RootPreferencePage.class; } @Override public void configure(Binder binder) { super.configure(binder); Loading de.ugoe.cs.swe.TTCN3.ui/src/de/ugoe/cs/swe/ui/preferences/TTCN3PreferenceInitializer.java 0 → 100644 +86 −0 Original line number Diff line number Diff line package de.ugoe.cs.swe.ui.preferences; import java.io.File; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.util.LinkedList; import java.util.List; import org.apache.log4j.Level; import org.apache.log4j.Logger; import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.util.IPropertyChangeListener; import org.eclipse.jface.util.PropertyChangeEvent; import de.ugoe.cs.swe.TTCN3Configuration.QualityCheckProfile; import de.ugoe.cs.swe.common.ConfigTools; import de.ugoe.cs.swe.common.ConfigurationProfile; import de.ugoe.cs.swe.ui.internal.TTCN3Activator; /** * The Class GFPreferenceInitializer. */ public class TTCN3PreferenceInitializer extends AbstractPreferenceInitializer { /** * Logger */ private static final Logger log = Logger.getLogger(TTCN3PreferenceInitializer.class); public static String[] getFieldsOfType(Class<?> target, Class<?> searchType) { Field[] fields = target.getDeclaredFields(); List<String> results = new LinkedList<String>(); for(Field f:fields){ // System.out.println(f.getName() + " -> "+f.getType()); if(f.getType().equals(searchType)){ results.add(f.getName()); } } return results.toArray(new String[results.size()]); } public static String[] getBooleans(){ return getFieldsOfType(QualityCheckProfile.class, boolean.class); } /* (non-Javadoc) * @see org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer#initializeDefaultPreferences() */ @Override public void initializeDefaultPreferences() { System.out.println("init"); IPreferenceStore store = TTCN3Activator.getInstance().getPreferenceStore(); // Set defaults from environment variables try { QualityCheckProfile activeProfile = (QualityCheckProfile) ConfigTools.getInstance().getSelectedProfile(); for (String s : getBooleans()) { System.out.println(s); } for (String s : getBooleans()) { Method method = activeProfile.getClass().getDeclaredMethod("is"+(""+s.charAt(0)).toUpperCase()+s.substring(1)); boolean v = (boolean) method.invoke(activeProfile); store.setDefault(s, "is"+(""+s.charAt(0)).toUpperCase()+s.substring(1)); //store.setDefault("checkNoUninitialisedVariables", activeProfile.isCheckNoUninitialisedVariables()); } } catch (Exception e) { } store.setDefault("log-level", "DEBUG"); // Listener for changing logging level as needed store.addPropertyChangeListener(new IPropertyChangeListener() { public void propertyChange(PropertyChangeEvent event) { if (event.getProperty().equals("log-level")) { Level level = Level.toLevel(event.getNewValue().toString(), Level.INFO); } } }); } } No newline at end of file de.ugoe.cs.swe.TTCN3.ui/src/de/ugoe/cs/swe/ui/preferences/TTCN3RootPreferencePage.java 0 → 100644 +152 −0 Original line number Diff line number Diff line package de.ugoe.cs.swe.ui.preferences; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import org.eclipse.jface.preference.ComboFieldEditor; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.graphics.FontData; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Label; import org.eclipse.ui.IWorkbench; import org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage; import org.eclipse.xtext.ui.editor.preferences.fields.CheckBoxGroupFieldEditor; import de.ugoe.cs.swe.TTCN3Configuration.QualityCheckProfile; import de.ugoe.cs.swe.common.ConfigTools; import de.ugoe.cs.swe.ui.internal.TTCN3Activator; /** * Root preference page */ public class TTCN3RootPreferencePage extends LanguageRootPreferencePage { /** * The Constant PAGE_DESCRIPTION. */ private static final String PAGE_DESCRIPTION = "Settings for the guideline checks:"; /* (non-Javadoc) * @see org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage#createFieldEditors() */ @Override protected void createFieldEditors() { Composite parent = getFieldEditorParent(); FontData fontData = parent.getFont().getFontData()[0]; Font fontItalic = new Font(parent.getDisplay(), new FontData(fontData.getName(), fontData.getHeight(), SWT.ITALIC)); final IPreferenceStore store = TTCN3Activator.getInstance().getPreferenceStore(); final QualityCheckProfile activeProfile = (QualityCheckProfile) ConfigTools.getInstance().getSelectedProfile(); String[] booleans = TTCN3PreferenceInitializer.getBooleans(); //Store profile settings (only needed once) // for (String s : booleans) { // try { // Method method = activeProfile.getClass().getDeclaredMethod("is"+(""+s.charAt(0)).toUpperCase()+s.substring(1)); // boolean v = (boolean) method.invoke(activeProfile); // store.setValue(s, "is"+(""+s.charAt(0)).toUpperCase()+s.substring(1)); // } catch (NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { // // TODO Auto-generated catch block // e.printStackTrace(); // } // //store.setDefault("checkNoUninitialisedVariables", activeProfile.isCheckNoUninitialisedVariables()); // } //Update profile from stored settings for (String s : booleans) { try { boolean v = store.getBoolean(s); Method method = activeProfile.getClass().getDeclaredMethod("set"+(""+s.charAt(0)).toUpperCase()+s.substring(1), Boolean.TYPE); method.invoke(activeProfile, v); } catch (NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { // TODO Auto-generated catch block e.printStackTrace(); } //store.setDefault("checkNoUninitialisedVariables", activeProfile.isCheckNoUninitialisedVariables()); } String[][] settings = new String[booleans.length][2]; int i = 0; //Create settings from profile for (String s : booleans) { try { Method method = activeProfile.getClass().getDeclaredMethod("is"+(""+s.charAt(0)).toUpperCase()+s.substring(1)); boolean v = (boolean) method.invoke(activeProfile); //v = store.getBoolean(s); //from store settings[i] = new String[]{s,v+""}; } catch (NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { // TODO Auto-generated catch block e.printStackTrace(); } i++; } addField(new CheckBoxGroupFieldEditor("checks", "Checks:", 2, settings, parent, false) { @Override protected boolean isSelected(String fieldName, String valueToSet) { // System.out.println(fieldName +" -> " + valueToSet); boolean v = false; try { //Fill settings from profile Method method = activeProfile.getClass().getDeclaredMethod("is"+(""+fieldName.charAt(0)).toUpperCase()+fieldName.substring(1)); v = (boolean) method.invoke(activeProfile); //v = store.getBoolean(fieldName); //from store } catch (NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { e.printStackTrace(); } return v; } @Override protected String calculateResult(String[][] settings) { for (String[] s : settings) { // if (!s[1].equals(s[2])) { try { //Update settings in profile and in store Method method = activeProfile.getClass().getDeclaredMethod("set"+(""+s[0].charAt(0)).toUpperCase()+s[0].substring(1), Boolean.TYPE); method.invoke(activeProfile, Boolean.parseBoolean(s[2])); store.setValue(s[0],Boolean.parseBoolean(s[2])); //from store } catch (NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { e.printStackTrace(); } // } } return "true"; } }); String[][] entryNamesAndValues = new String[][]{ // Refer: http://logging.apache.org/log4j/1.2/manual.html {"All", "DEBUG"}, {"Info", "INFO"}, {"Warnings", "WARN"}, {"None", "OFF"}, }; addField(new ComboFieldEditor("log-level", "Log Le&vel:", entryNamesAndValues, parent)); new Label(parent, SWT.NULL); // skip cell Label label_LogLevel = new Label(parent, SWT.NULL); label_LogLevel.setFont(fontItalic); label_LogLevel.setText("Only affects console output, not Eclipse's internal log. "); // addField(new BooleanFieldEditor(GFPreferences.BUILD_DEPENDENTS, "&Build dependents of changed files", parent)); } /* (non-Javadoc) * @see org.eclipse.xtext.ui.editor.preferences.AbstractPreferencePage#init(org.eclipse.ui.IWorkbench) */ @Override public void init(IWorkbench workbench) { setPreferenceStore(TTCN3Activator.getInstance().getPreferenceStore()); setDescription(PAGE_DESCRIPTION); } } No newline at end of file de.ugoe.cs.swe.TTCN3.ui/src/de/ugoe/cs/swe/ui/syntaxcoloring/TTCN3HighlightingCalculator.java +3 −1 Original line number Diff line number Diff line Loading @@ -46,7 +46,9 @@ public class TTCN3HighlightingCalculator implements ISemanticHighlightingCalcula // } // } // } if (r.getName().endsWith("KEYWORD")) { if (r.getName().endsWith("KEYWORD") || r.getName().equals("MODULE") || r.getName().equals("ADDRESSVALUE")) { highlightNode( node, TTCN3HighlightingConfiguration.KEYWORD_LAYOUT, acceptor); } } Loading Loading
de.ugoe.cs.swe.TTCN3.ui/src/de/ugoe/cs/swe/ui/ScopeRebuild.java 0 → 100644 +112 −0 Original line number Diff line number Diff line package de.ugoe.cs.swe.ui; import java.util.List; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.xtext.builder.BuilderParticipant; import org.eclipse.xtext.builder.EclipseResourceFileSystemAccess2; import org.eclipse.xtext.builder.IXtextBuilderParticipant; import org.eclipse.xtext.generator.IFileSystemAccess; import org.eclipse.xtext.generator.IGenerator2; import org.eclipse.xtext.resource.IContainer; import org.eclipse.xtext.resource.IResourceDescription; import org.eclipse.xtext.resource.IResourceDescription.Delta; import org.eclipse.xtext.resource.IResourceDescriptions; import org.eclipse.xtext.resource.impl.ResourceDescriptionsProvider; import com.google.inject.Inject; import de.ugoe.cs.swe.common.CommonHelper; import de.ugoe.cs.swe.common.PreAnalyzer; import de.ugoe.cs.swe.scoping.TTCN3GlobalScopeProvider; import de.ugoe.cs.swe.tTCN3.TTCN3Module; import de.ugoe.cs.swe.validation.TTCN3StatisticsProvider; public class ScopeRebuild extends BuilderParticipant { @Inject private ResourceDescriptionsProvider resourceDescriptionsProvider; @Inject private IContainer.Manager containerManager; @Inject(optional = true) private IGenerator2 generator; protected ThreadLocal<Boolean> buildSemaphor = new ThreadLocal<Boolean>(); @Override public void build(IBuildContext context, IProgressMonitor monitor) throws CoreException { buildSemaphor.set(false); super.build(context, monitor); } @Override protected void handleChangedContents(IResourceDescription.Delta delta, IXtextBuilderParticipant.IBuildContext context, EclipseResourceFileSystemAccess2 fileSystemAccess) throws org.eclipse.core.runtime.CoreException { super.handleChangedContents(delta, context, fileSystemAccess); if (!buildSemaphor.get()) { //invokeRebuild(delta, context, fileSystemAccess); } } private void invokeRebuild(Delta delta, IBuildContext context, IFileSystemAccess fileSystemAccess) { buildSemaphor.set(true); //TODO: make this context specific //NOTE: probably won't work without better integration System.out.println("Rebuilding.."); Resource resource = context.getResourceSet().getResource(delta.getUri(), true); // if (shouldGenerate(resource, context)) { // IResourceDescriptions index = resourceDescriptionsProvider.createResourceDescriptions(); // IResourceDescription resDesc = index.getResourceDescription(resource.getURI()); // List<IContainer> visibleContainers = containerManager.getVisibleContainers(resDesc, index); // for (IContainer c : visibleContainers) { // for (IResourceDescription rd : c.getResourceDescriptions()) { // context.getResourceSet().getResource(rd.getURI(), true); // } // } // // //generator.doGenerate(context.getResourceSet(), fileSystemAccess); // } TTCN3GlobalScopeProvider.RESOURCES.clear(); TTCN3GlobalScopeProvider.NAMED_MODULES.clear(); TTCN3GlobalScopeProvider.EXPORTED_OBJECTS.clear(); TTCN3GlobalScopeProvider.IMPORTS.clear(); TTCN3GlobalScopeProvider.IMPORTED_FROM.clear(); TTCN3GlobalScopeProvider.IMPORTED_RESOURCES.clear(); TTCN3GlobalScopeProvider.STATIC_SCOPE.clear(); System.out.println("Reset Master : "+resource.getURI()); for (IResourceDescription d : resourceDescriptionsProvider.getResourceDescriptions(context.getResourceSet()).getAllResourceDescriptions()) { Resource r = resource.getResourceSet().getResource(d.getURI(), true); System.out.println("Reset: "+d.getURI()); TTCN3Module module = CommonHelper.getModule(r); if (!TTCN3GlobalScopeProvider.NAMED_MODULES.containsKey(module.getName())) { TTCN3GlobalScopeProvider.RESOURCES.add(r); TTCN3GlobalScopeProvider.NAMED_MODULES.put(module.getName(), module); } } for (IResourceDescription d : resourceDescriptionsProvider.getResourceDescriptions(context.getResourceSet()).getAllResourceDescriptions()) { Resource r = resource.getResourceSet().getResource(d.getURI(), true); TTCN3GlobalScopeProvider.initExportedObjects(r); System.out.println("InitExports: "+r.getURI()); } for (int i = 0; i < TTCN3GlobalScopeProvider.RESOURCES.size(); i++) { PreAnalyzer p = new PreAnalyzer(TTCN3GlobalScopeProvider.RESOURCES.get(i)); try { p.call(); } catch (Exception e) { e.printStackTrace(); } } TTCN3StatisticsProvider.getInstance().setPreAnalyzingCompleted(true); } } No newline at end of file
de.ugoe.cs.swe.TTCN3.ui/src/de/ugoe/cs/swe/ui/TTCN3UiModule.java +11 −1 Original line number Diff line number Diff line Loading @@ -5,6 +5,7 @@ package de.ugoe.cs.swe.ui; import org.eclipse.emf.ecore.EcorePackage; import org.eclipse.ui.plugin.AbstractUIPlugin; import org.eclipse.xtext.builder.IXtextBuilderParticipant; import org.eclipse.xtext.builder.nature.NatureAddingEditorCallback; import org.eclipse.xtext.ide.editor.model.TokenTypeToStringMapper; import org.eclipse.xtext.ide.editor.syntaxcoloring.AbstractAntlrTokenToAttributeIdMapper; Loading @@ -16,6 +17,7 @@ import com.google.common.base.Predicate; import com.google.inject.Binder; import com.google.inject.name.Names; import de.ugoe.cs.swe.ui.preferences.TTCN3RootPreferencePage; import de.ugoe.cs.swe.ui.syntaxcoloring.TTCN3HighlightingCalculator; import de.ugoe.cs.swe.ui.syntaxcoloring.TTCN3HighlightingConfiguration; import de.ugoe.cs.swe.ui.syntaxcoloring.TTCN3TokenToAttributeIdMapper; Loading @@ -26,6 +28,9 @@ import de.ugoe.cs.swe.ui.syntaxcoloring.TTCN3TokenToAttributeIdMapper; public class TTCN3UiModule extends de.ugoe.cs.swe.ui.AbstractTTCN3UiModule { public TTCN3UiModule(AbstractUIPlugin plugin) { super(plugin); } public Class<? extends IXtextBuilderParticipant> bindIXtextBuilderParticipant() { return ScopeRebuild.class; } //@Override public Class<? extends IHighlightingConfiguration> bindIHighlightingConfiguration() { Loading @@ -37,6 +42,11 @@ public class TTCN3UiModule extends de.ugoe.cs.swe.ui.AbstractTTCN3UiModule { public Class<? extends ISemanticHighlightingCalculator> bindISemanticHighlightingCalculator() { return TTCN3HighlightingCalculator.class; } public Class<? extends org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage> bindLanguageRootPreferencePage() { return TTCN3RootPreferencePage.class; } @Override public void configure(Binder binder) { super.configure(binder); Loading
de.ugoe.cs.swe.TTCN3.ui/src/de/ugoe/cs/swe/ui/preferences/TTCN3PreferenceInitializer.java 0 → 100644 +86 −0 Original line number Diff line number Diff line package de.ugoe.cs.swe.ui.preferences; import java.io.File; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.util.LinkedList; import java.util.List; import org.apache.log4j.Level; import org.apache.log4j.Logger; import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.util.IPropertyChangeListener; import org.eclipse.jface.util.PropertyChangeEvent; import de.ugoe.cs.swe.TTCN3Configuration.QualityCheckProfile; import de.ugoe.cs.swe.common.ConfigTools; import de.ugoe.cs.swe.common.ConfigurationProfile; import de.ugoe.cs.swe.ui.internal.TTCN3Activator; /** * The Class GFPreferenceInitializer. */ public class TTCN3PreferenceInitializer extends AbstractPreferenceInitializer { /** * Logger */ private static final Logger log = Logger.getLogger(TTCN3PreferenceInitializer.class); public static String[] getFieldsOfType(Class<?> target, Class<?> searchType) { Field[] fields = target.getDeclaredFields(); List<String> results = new LinkedList<String>(); for(Field f:fields){ // System.out.println(f.getName() + " -> "+f.getType()); if(f.getType().equals(searchType)){ results.add(f.getName()); } } return results.toArray(new String[results.size()]); } public static String[] getBooleans(){ return getFieldsOfType(QualityCheckProfile.class, boolean.class); } /* (non-Javadoc) * @see org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer#initializeDefaultPreferences() */ @Override public void initializeDefaultPreferences() { System.out.println("init"); IPreferenceStore store = TTCN3Activator.getInstance().getPreferenceStore(); // Set defaults from environment variables try { QualityCheckProfile activeProfile = (QualityCheckProfile) ConfigTools.getInstance().getSelectedProfile(); for (String s : getBooleans()) { System.out.println(s); } for (String s : getBooleans()) { Method method = activeProfile.getClass().getDeclaredMethod("is"+(""+s.charAt(0)).toUpperCase()+s.substring(1)); boolean v = (boolean) method.invoke(activeProfile); store.setDefault(s, "is"+(""+s.charAt(0)).toUpperCase()+s.substring(1)); //store.setDefault("checkNoUninitialisedVariables", activeProfile.isCheckNoUninitialisedVariables()); } } catch (Exception e) { } store.setDefault("log-level", "DEBUG"); // Listener for changing logging level as needed store.addPropertyChangeListener(new IPropertyChangeListener() { public void propertyChange(PropertyChangeEvent event) { if (event.getProperty().equals("log-level")) { Level level = Level.toLevel(event.getNewValue().toString(), Level.INFO); } } }); } } No newline at end of file
de.ugoe.cs.swe.TTCN3.ui/src/de/ugoe/cs/swe/ui/preferences/TTCN3RootPreferencePage.java 0 → 100644 +152 −0 Original line number Diff line number Diff line package de.ugoe.cs.swe.ui.preferences; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import org.eclipse.jface.preference.ComboFieldEditor; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.graphics.FontData; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Label; import org.eclipse.ui.IWorkbench; import org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage; import org.eclipse.xtext.ui.editor.preferences.fields.CheckBoxGroupFieldEditor; import de.ugoe.cs.swe.TTCN3Configuration.QualityCheckProfile; import de.ugoe.cs.swe.common.ConfigTools; import de.ugoe.cs.swe.ui.internal.TTCN3Activator; /** * Root preference page */ public class TTCN3RootPreferencePage extends LanguageRootPreferencePage { /** * The Constant PAGE_DESCRIPTION. */ private static final String PAGE_DESCRIPTION = "Settings for the guideline checks:"; /* (non-Javadoc) * @see org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage#createFieldEditors() */ @Override protected void createFieldEditors() { Composite parent = getFieldEditorParent(); FontData fontData = parent.getFont().getFontData()[0]; Font fontItalic = new Font(parent.getDisplay(), new FontData(fontData.getName(), fontData.getHeight(), SWT.ITALIC)); final IPreferenceStore store = TTCN3Activator.getInstance().getPreferenceStore(); final QualityCheckProfile activeProfile = (QualityCheckProfile) ConfigTools.getInstance().getSelectedProfile(); String[] booleans = TTCN3PreferenceInitializer.getBooleans(); //Store profile settings (only needed once) // for (String s : booleans) { // try { // Method method = activeProfile.getClass().getDeclaredMethod("is"+(""+s.charAt(0)).toUpperCase()+s.substring(1)); // boolean v = (boolean) method.invoke(activeProfile); // store.setValue(s, "is"+(""+s.charAt(0)).toUpperCase()+s.substring(1)); // } catch (NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { // // TODO Auto-generated catch block // e.printStackTrace(); // } // //store.setDefault("checkNoUninitialisedVariables", activeProfile.isCheckNoUninitialisedVariables()); // } //Update profile from stored settings for (String s : booleans) { try { boolean v = store.getBoolean(s); Method method = activeProfile.getClass().getDeclaredMethod("set"+(""+s.charAt(0)).toUpperCase()+s.substring(1), Boolean.TYPE); method.invoke(activeProfile, v); } catch (NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { // TODO Auto-generated catch block e.printStackTrace(); } //store.setDefault("checkNoUninitialisedVariables", activeProfile.isCheckNoUninitialisedVariables()); } String[][] settings = new String[booleans.length][2]; int i = 0; //Create settings from profile for (String s : booleans) { try { Method method = activeProfile.getClass().getDeclaredMethod("is"+(""+s.charAt(0)).toUpperCase()+s.substring(1)); boolean v = (boolean) method.invoke(activeProfile); //v = store.getBoolean(s); //from store settings[i] = new String[]{s,v+""}; } catch (NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { // TODO Auto-generated catch block e.printStackTrace(); } i++; } addField(new CheckBoxGroupFieldEditor("checks", "Checks:", 2, settings, parent, false) { @Override protected boolean isSelected(String fieldName, String valueToSet) { // System.out.println(fieldName +" -> " + valueToSet); boolean v = false; try { //Fill settings from profile Method method = activeProfile.getClass().getDeclaredMethod("is"+(""+fieldName.charAt(0)).toUpperCase()+fieldName.substring(1)); v = (boolean) method.invoke(activeProfile); //v = store.getBoolean(fieldName); //from store } catch (NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { e.printStackTrace(); } return v; } @Override protected String calculateResult(String[][] settings) { for (String[] s : settings) { // if (!s[1].equals(s[2])) { try { //Update settings in profile and in store Method method = activeProfile.getClass().getDeclaredMethod("set"+(""+s[0].charAt(0)).toUpperCase()+s[0].substring(1), Boolean.TYPE); method.invoke(activeProfile, Boolean.parseBoolean(s[2])); store.setValue(s[0],Boolean.parseBoolean(s[2])); //from store } catch (NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { e.printStackTrace(); } // } } return "true"; } }); String[][] entryNamesAndValues = new String[][]{ // Refer: http://logging.apache.org/log4j/1.2/manual.html {"All", "DEBUG"}, {"Info", "INFO"}, {"Warnings", "WARN"}, {"None", "OFF"}, }; addField(new ComboFieldEditor("log-level", "Log Le&vel:", entryNamesAndValues, parent)); new Label(parent, SWT.NULL); // skip cell Label label_LogLevel = new Label(parent, SWT.NULL); label_LogLevel.setFont(fontItalic); label_LogLevel.setText("Only affects console output, not Eclipse's internal log. "); // addField(new BooleanFieldEditor(GFPreferences.BUILD_DEPENDENTS, "&Build dependents of changed files", parent)); } /* (non-Javadoc) * @see org.eclipse.xtext.ui.editor.preferences.AbstractPreferencePage#init(org.eclipse.ui.IWorkbench) */ @Override public void init(IWorkbench workbench) { setPreferenceStore(TTCN3Activator.getInstance().getPreferenceStore()); setDescription(PAGE_DESCRIPTION); } } No newline at end of file
de.ugoe.cs.swe.TTCN3.ui/src/de/ugoe/cs/swe/ui/syntaxcoloring/TTCN3HighlightingCalculator.java +3 −1 Original line number Diff line number Diff line Loading @@ -46,7 +46,9 @@ public class TTCN3HighlightingCalculator implements ISemanticHighlightingCalcula // } // } // } if (r.getName().endsWith("KEYWORD")) { if (r.getName().endsWith("KEYWORD") || r.getName().equals("MODULE") || r.getName().equals("ADDRESSVALUE")) { highlightNode( node, TTCN3HighlightingConfiguration.KEYWORD_LAYOUT, acceptor); } } Loading