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

* check for libraries in entire project, fixes for file wizards

* moved open to WizardHelper
* renamed LibraryHandler to WizardHelper
parent fd88b579
Loading
Loading
Loading
Loading
Loading
+0 −12
Original line number Diff line number Diff line
package org.etsi.mts.tdl.ui.wizard

import org.eclipse.xtext.ui.wizard.template.IFileGenerator

class LibraryHandler {
	static def void addLibraries(IFileGenerator generator, String library, String folder) {
		val target = '''«folder»/«library».tdltx'''
		if (!TemplateHelper.checkIfFileExists(target, generator)) {
			generator.generate(target, TemplateHelper.getLibrary("TDL"))
		}
	}
}
+72 −77
Original line number Diff line number Diff line
@@ -3,22 +3,12 @@
 */
package org.etsi.mts.tdl.ui.wizard


import org.eclipse.xtext.ui.wizard.template.FileTemplate
import org.eclipse.xtext.ui.wizard.template.IFileGenerator
import org.eclipse.xtext.ui.wizard.template.IFileTemplateProvider
import org.eclipse.core.runtime.preferences.InstanceScope
import org.eclipse.ui.preferences.ScopedPreferenceStore
import org.etsi.mts.tdl.ui.wizard.TemplateHelper.Libraries
import org.etsi.mts.tdl.transform.Converter
import java.io.File
import org.eclipse.xtext.ui.wizard.template.WorkspaceFileGenerator
import org.eclipse.core.internal.resources.WorkspaceRoot
import org.eclipse.core.runtime.Path
import org.eclipse.xtext.ui.wizard.template.AbstractFileTemplate
import org.eclipse.xtext.ui.wizard.template.AbstractTemplate

import static extension org.etsi.mts.tdl.ui.wizard.LibraryHandler.*;
import static extension org.etsi.mts.tdl.ui.wizard.WizardHelper.*

/**
 * Create a list with all file templates to be shown in the template new file wizard.
@@ -44,6 +34,7 @@ final class TDLtxFile {
    //TODO: reuse?
    
	override generateFiles(IFileGenerator generator) {
		if (generator instanceof WorkspaceFileGenerator) {
			generator.generate('''«folder»/«name».tdltx''', '''
				/*
				 * This is an example model
@@ -52,7 +43,10 @@ final class TDLtxFile {
				    
				}
			''')
//        generator.generate('''«folder»/«packageName».tdltx''', TemplateContent.Example)
		} else {
			generator.generate('''«folder»/«name».tdltx''', "")
		}
//        generator.generate('''«folder»/«packageName».tdltx''', TemplateContent.Examplde)
	}
}

@@ -62,12 +56,6 @@ final class TDLtxFileWithStandardLibrary {
	protected val libraries = group("Select libraries to import:")
	protected val includeTDL = check("TDL Standard Library", true, "Include TDL Standard Library (recommended)", libraries)
	protected val includeHTTP = check("HTTP Protocol Library", true, "Include HTTP Protocol Library", libraries)
	protected var validated = false

	override protected updateVariables() {
		validated = true
		super.updateVariables()
	}

	protected def String addLibraries(IFileGenerator generator) {
		var imports = ""
@@ -85,7 +73,7 @@ final class TDLtxFileWithStandardLibrary {
    //TODO: reuse?
	override generateFiles(IFileGenerator generator) {
		//TODO: use enum values?
		if (validated) {
		if (generator instanceof WorkspaceFileGenerator) {
			var imports = addLibraries(generator)
			generator.generate('''«folder»/«name».tdltx''', '''
				/*
@@ -96,7 +84,9 @@ final class TDLtxFileWithStandardLibrary {
				    
				}
			''')
			
			open('''«folder»/«name».tdltx''')
		} else {
			generator.generate('''«folder»/«name».tdltx''', "")
		}
	}
}
@@ -107,6 +97,7 @@ final class TDLtxFileFromOpenAPI {

    //TODO: reuse?
	override generateFiles(IFileGenerator generator) {
		if (generator instanceof WorkspaceFileGenerator) {
			generator.addLibraries("TDL", folder)
			//TODO: add possibility to reuse library selection
			var imports = "Import all from TDL\n"
@@ -159,5 +150,9 @@ final class TDLtxFileFromOpenAPI {
					}
				}
			''')
			open('''«folder»/«name».tdltx''')
		} else {
			generator.generate('''«folder»/«name».tdltx''', "")
		}
    }
}
+2 −16
Original line number Diff line number Diff line
@@ -20,7 +20,7 @@ import org.eclipse.ui.ide.IDE
import org.eclipse.swt.widgets.Display

import static org.eclipse.core.runtime.IStatus.*

import static extension org.etsi.mts.tdl.ui.wizard.WizardHelper.*
//TODO: customise further, reuse?
@ProjectTemplate(label="TDL Textual for Executable Tests", icon="project_template.png", description="<p><b>TDL Textual for Executable Tests</b></p>
<p>Project template for executable tests.</p><p><img href=\"project_template_tri.png\"/></p>")
@@ -140,20 +140,6 @@ final class TDLtxProjectWithOpenAPI {
		open(projectInfo.projectName+"/src/"+path+"/"+name+".tdltx")		        
    }
    	
	private def open(String filePath) {
        val path = new Path(filePath)
		val ifile=ResourcesPlugin.getWorkspace().getRoot().getFile(path)
//        val page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
		val page = PlatformUI.workbench.workbenchWindows.get(0).activePage
		Display.^default.asyncExec(new Runnable() {
			
			override run() {
				IDE.openEditor(page, ifile)
			}
			
        })
	}
	
    protected override List<Pair<String, Image>> getImages() {
        #["project_template_tri.png".image]
    }
+2 −0
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ public class TemplateHelper {
		Standard, HTTP 
	}
	
	//reimplemented in Xtend
	public static boolean checkIfFileExists(String path, IFileGenerator generator) {
		WorkspaceFileGenerator gen = (WorkspaceFileGenerator) generator;
		WorkspaceRoot root = (WorkspaceRoot) gen.getRule();
@@ -59,6 +60,7 @@ public class TemplateHelper {
			} else {
				System.out.println("Get from class localtion..."); 
				//TODO: this needs to be revised.. currently libraries in two locations..
				//TODO: extract and reuse in ResoureHandler?
				String binPath = TemplateContent.class.getClass().getProtectionDomain().getCodeSource()
						.getLocation().getPath();
				String projectPath = new File(binPath).getParent();
+43 −0
Original line number Diff line number Diff line
package org.etsi.mts.tdl.ui.wizard

import org.eclipse.xtext.ui.wizard.template.IFileGenerator
import org.eclipse.xtext.ui.wizard.template.WorkspaceFileGenerator
import org.eclipse.core.internal.resources.WorkspaceRoot
import org.eclipse.core.runtime.Path
import org.eclipse.core.resources.ResourcesPlugin
import org.eclipse.ui.PlatformUI
import org.eclipse.swt.widgets.Display
import org.eclipse.ui.ide.IDE
import org.etsi.mts.tdl.resources.FileFinder

class WizardHelper {
	static def void addLibraries(IFileGenerator generator, String library, String folder) {
		val target = '''«folder»/«library».tdltx'''
		if (!generator.checkIfFileExists(target)) {
			generator.generate(target, TemplateHelper.getLibrary("TDL"))
		}
	}
	
	static def boolean checkIfFileExists(IFileGenerator generator, String path) {
		//TODO: check in whole project
		val root = ((generator as WorkspaceFileGenerator).rule as WorkspaceRoot)
		val p = new Path(path)
		val project = root.getProject(p.segment(0))
		val FileFinder finder = [it|it.name.contains(p.lastSegment)]
		project.accept(finder);
		return finder.file !== null
	}

	static def open(String filePath) {
	        val path = new Path(filePath)
			val file = ResourcesPlugin.getWorkspace().getRoot().getFile(path)
	//        val page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
			val page = PlatformUI.workbench.workbenchWindows.get(0).activePage
			Display.^default.asyncExec(new Runnable() {
				override run() {
					IDE.openEditor(page, file)
				}
				
	        })
		}
}