Commit b7da918f authored by Philip Makedonski's avatar Philip Makedonski
Browse files

+ added toggle for validation (supersedes reloading), #95

parent afbe12e0
Loading
Loading
Loading
Loading
Loading
+23 −15
Original line number Diff line number Diff line
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>   

   <extension
         point="org.eclipse.ui.commands">
      <category
@@ -24,9 +23,14 @@
            id="org.etsi.mts.tdl.tools.rt.ui.commands.translateTTCN3Command">
      </command>
      <command
            name="Reload OCL constraints"
            name="Activate TDL validation"
            categoryId="org.etsi.mts.tdl.tools.rt.ui.commands.category"
            id="org.etsi.mts.tdl.tools.rt.ui.commands.reloadValidatorCommand">
            id="org.etsi.mts.tdl.tools.rt.ui.commands.toggleValidatorCommand">
	      <state
	            class="org.eclipse.ui.handlers.RegistryToggleState"
	            id="org.eclipse.ui.commands.toggleState">
	         <class class="org.eclipse.ui.handlers.RegistryToggleState:true"/>
	      </state>
      </command>
   </extension>
   <extension
@@ -44,8 +48,8 @@
            class="org.etsi.mts.tdl.tools.rt.ui.handlers.RendererHandler">
      </handler>
      <handler
            commandId="org.etsi.mts.tdl.tools.rt.ui.commands.reloadValidatorCommand"
            class="org.etsi.mts.tdl.tools.rt.ui.handlers.ReloadValidationHandler">
            commandId="org.etsi.mts.tdl.tools.rt.ui.commands.toggleValidatorCommand"
            class="org.etsi.mts.tdl.tools.rt.ui.handlers.ToggleValidation">
      </handler>
   </extension>
   <extension
@@ -99,10 +103,11 @@
               mnemonic="T"
               id="org.etsi.mts.tdl.tools.menus.TDLMenu">
            <command
                  commandId="org.etsi.mts.tdl.tools.rt.ui.commands.reloadValidatorCommand"
                  commandId="org.etsi.mts.tdl.tools.rt.ui.commands.toggleValidatorCommand"
                  icon="icons/ValidateIcon.png"
                  mnemonic="V"
                  id="org.etsi.mts.tdl.tools.rt.ui.menus.reloadValidatorCommand">
                  style="toggle"
                  id="org.etsi.mts.tdl.tools.rt.ui.menus.toggleValidatorCommand">
            </command>
         </menu>
      </menuContribution>
@@ -129,13 +134,16 @@
                  id="org.etsi.mts.tdl.tools.rt.ui.toolbars.translateTTCN3Command">
            </command>
	         <command
                  commandId="org.etsi.mts.tdl.tools.rt.ui.commands.reloadValidatorCommand"
	              commandId="org.etsi.mts.tdl.tools.rt.ui.commands.toggleValidatorCommand"
                  icon="icons/ValidateIcon.png"
                  tooltip="Reload OCL constraints"
                  id="org.etsi.mts.tdl.tools.rt.ui.toolbars.reloadValidatorCommand">
                  tooltip="Toggle TDL validation"
	              style="toggle"
                  id="org.etsi.mts.tdl.tools.rt.ui.toolbars.toggleValidatorCommand">
	         </command>
         </toolbar>
      </menuContribution>
   </extension>   

	<extension point="org.eclipse.ui.startup">
	   <startup class="org.etsi.mts.tdl.tools.rt.ui.ToggleHandler"/>
	</extension>
</plugin>
+58 −0
Original line number Diff line number Diff line
package org.etsi.mts.tdl.tools.rt.ui;
import org.eclipse.core.commands.Command;
import org.eclipse.core.commands.State;
import org.eclipse.core.runtime.Platform;
import org.eclipse.emf.ecore.EValidator;
import org.eclipse.ui.IStartup;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.commands.ICommandService;
import org.etsi.mts.tdl.Validator;
import org.etsi.mts.tdl.tdlPackage;
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;

public class ToggleHandler implements IStartup {
    private static final String COMMAND_ID = "org.etsi.mts.tdl.tools.rt.ui.commands.toggleValidatorCommand";

    @Override
    public void earlyStartup() {
        boolean state = getToggleState(COMMAND_ID);
		if (state) {
            enablePlugin();
        } else {
            disablePlugin();
        }
    }
    
    private boolean getToggleState(String commandId) {
        ICommandService commandService = PlatformUI.getWorkbench().getService(ICommandService.class);
        if (commandService != null) {
            Command command = commandService.getCommand(commandId);
            State state = command.getState("org.eclipse.ui.commands.toggleState");
            if (state != null) {
                return (Boolean) state.getValue();
            }
        }
        return true; // default value
    }

	public static void toggleState(boolean currentState) {
        System.out.println(currentState);
		if (!currentState) {
            enablePlugin();
        } else {
            disablePlugin();
        }
	}
    
    static void enablePlugin() {
		Bundle bundle = Platform.getBundle("org.etsi.mts.tdl.model");
		BundleContext context = bundle.getBundleContext();
		Validator.registerValidator("model/tdl-constraints.ocl", tdlPackage.eINSTANCE, context);
    }
    
    static void disablePlugin() {
		EValidator.Registry.INSTANCE.remove(tdlPackage.eINSTANCE);
    }

}
+21 −0
Original line number Diff line number Diff line
package org.etsi.mts.tdl.tools.rt.ui.handlers;
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.ui.handlers.HandlerUtil;
import org.etsi.mts.tdl.tools.rt.ui.ToggleHandler;

public class ToggleValidation extends AbstractHandler {


    public ToggleValidation() {
    }
    
    @Override
    public Object execute(ExecutionEvent event) throws ExecutionException {
    	boolean currentState = HandlerUtil.toggleCommandState(event.getCommand());
        ToggleHandler.toggleState(currentState);    	
        return null;
    }

}
 No newline at end of file