Initial import.

This commit is contained in:
Erik C. Thauvin 2006-02-24 12:38:42 +00:00
parent 1457c02c00
commit f473693052
25 changed files with 2468 additions and 0 deletions

47
META-INF/plugin.xml Normal file
View file

@ -0,0 +1,47 @@
<idea-plugin url="http://www.intellij.org/twiki/bin/view/Main/TestNGGenerator">
<name>TestNG Generator</name>
<description>
<![CDATA[
Automatically generates a TestNG test class skeleton for all of the current class methods.<br>
The output is produced using a Velocity template, which can be modified to meet your specific needs.<br>
If a test class already exists, your will be prompted to either
overwrite or compare the test class using diff panels.<br>
]]>
</description>
<version>@VERSION@</version>
<vendor email="erik@thauvin.net" url="http://erik.thauvin.net/">Erik C. Thauvin</vendor>
<idea-version since-build="4155"/>
<change-notes>
<![CDATA[
<b>1.0</b> Based on Alex Nazimok's JUnit Generator 1.1.6<br>
]]>
</change-notes>
<application-components>
<component>
<implementation-class>org.intellij.plugins.testnggen.TestNGGenerator</implementation-class>
<interface-class>org.intellij.plugins.testnggen.TestNGGenerator</interface-class>
</component>
<component>
<implementation-class>org.intellij.plugins.testnggen.ui.TestNGGenConfig</implementation-class>
<option name="workspace" value="true"/>
</component>
</application-components>
<actions>
<action id="Actions.ActionsPlugin.TestNGGenerator"
class="org.intellij.plugins.testnggen.TestNGGeneratorAction"
text="TestNG Test Class"
description="Generates TestNG test class skeleton, including all methods of the tested class.">
</action>
<group>
<reference id="Actions.ActionsPlugin.TestNGGenerator"/>
<add-to-group group-id="GenerateGroup" anchor="after" relative-to-action="GenerateEquals"/>
</group>
</actions>
</idea-plugin>

1
build.properties Normal file
View file

@ -0,0 +1 @@
version=1.0

64
build.xml Normal file
View file

@ -0,0 +1,64 @@
<project name="testnggen" basedir="." default="all">
<target name="init" description="initializes all the variables for the build">
<property file="build.properties"/>
<fail unless="version" message="version property is missing, see build.properties"/>
<property name="src.dir" value="${basedir}/src"/>
<property name="dist.dir" value="${basedir}/dist"/>
<property name="lib.dir" value="${basedir}/lib"/>
<property name="jar.file" location="${dist.dir}/${ant.project.name}.jar"/>
<property name="dist.file" value="${dist.dir}/${ant.project.name}-${version}"/>
<filterset id="dirs.filterset">
<filter token="VERSION" value="${version}"/>
</filterset>
<path id="class.path">
<fileset dir="${lib.dir}">
<include name="**/*.jar"/>
</fileset>
</path>
</target>
<target name="all" depends="clean, compile, deploy" description="executes all the targets in the build file"/>
<target name="compile" depends="init" description="compiles the source">
<mkdir dir="classes"/>
<javac srcdir="${src.dir}" destdir="${basedir}/classes" deprecation="true" debug="true">
<include name="**/*.java"/>
<classpath refid="class.path"/>
</javac>
</target>
<target name="deploy" depends="compile"
description="creates all the needed distribution files and packages them into zip file.">
<mkdir dir="${dist.dir}"/>
<zip destfile="${dist.file}-src.zip" basedir="${basedir}" excludes="classes/**,dist/**"/>
<mkdir dir="${dist.dir}"/>
<copy todir="${basedir}/classes">
<fileset dir="${basedir}" includes="META-INF/**"/>
<filterset refid="dirs.filterset"/>
</copy>
<jar jarfile="${jar.file}" basedir="${basedir}/classes">
<fileset dir="${src.dir}" includes="**/*.gif"/>
</jar>
<zip destfile="${dist.file}.zip">
<zipfileset dir="${basedir}" includes="resources/**"/>
<zipfileset file="${jar.file}"/>
</zip>
</target>
<target name="clean" depends="init" description="cleans the classes and dist directories.">
<delete quiet="true" includeEmptyDirs="true">
<fileset dir="${basedir}/classes" includes="*,*/**"/>
<fileset dir="${dist.dir}" includes="*,*/**"/>
</delete>
</target>
</project>

BIN
lib/extensions.jar Normal file

Binary file not shown.

BIN
lib/openapi.jar Normal file

Binary file not shown.

BIN
lib/velocity.jar Normal file

Binary file not shown.

View file

@ -0,0 +1,16 @@
## Output Pattern definition file.
##
## Available variables:
## $SOURCEPATH$ - location where source code for current project resides
## $PACKAGE$ - package path where TestedClass resides
## $FILENAME$ - Filename of the testClass. Note: if you modify filename only
## the file name will be affected not a class name
##
## Anything before $SOURCEPATH$ will be ignored. If you need to go outside of the
## sourcepath use $SOURCEPATH$/../
##
## For project sepcific configuration you can add seporate line for every project.
## Earch line must start with project name. i.e
## myproject=$SOURCEPATH$/testing/$PACKAGE$/$FILENAME$
## If project specific configuration does not exist, the following line will be used.
output=$SOURCEPATH$/test/$PACKAGE$/$FILENAME$

79
resources/testnggen.vm Normal file
View file

@ -0,0 +1,79 @@
########################################################################################
##
## Available variables:
## $entryList.methodList - ArrayList of method names
## $entryList.fieldList - ArrayList of class scope field names
## $entryList.className - class name
## $entryList.packageName - package name
## $today - Today's date in "MM/DD/YYYY" format
## $todayLong - Today's date in "Month Day, Year" format
## $author - The author (current user) name.
## $hasAnnotations - Is set to true if annotations (>= JDK 1.5) are available.
##
## You can configure the output class name using "testClass" variable below.
## Here are some examples:
## Test${entry.ClassName} - will produce TestSomeClass
## ${entry.className}Test - will produce SomeClassTest
##
########################################################################################
##
#macro (cap $strIn)$strIn.valueOf($strIn.charAt(0)).toUpperCase()$strIn.substring(1)#end
## Iteratre through the list and generate testcase for every entry.
#foreach ($entry in $entryList)
#set( $testClass="${entry.className}Test")
##
package $entry.packageName;
#if($hasAnnotations)
import org.testng.annotations.*;
#else
import org.testng.Assert;
#end
/**
* ${entry.className} Tester.
*
* @author $author
* @version $Revision$, $Date$
* @created $todayLong
* @since 1.0
*/
public class $testClass
{
#if($hasAnnotations)
@Configuration(beforeTestClass = true)
#else
/**
* Test Setup.
*
* @testng.configuration beforeTestClass = "true"
*/
#end
public void setUp()
{
//TODO: Code that will be invoked when this test is instantiated
}
#foreach($method in $entry.methodList)
#if($hasAnnotations)
@Test
#else
/**
* $method Tester.
*
* @testng.test
*/
#end
public void test#cap(${method})()
{
//TODO: Test goes here...
#if($hasAnnotations)
assert false : "test#cap(${method}) not implemented.";
#else
Assert.assertFalse(true, "test#cap(${method}) not implemented.");
#end
}
#end
}
#end

View file

@ -0,0 +1,31 @@
package org.intellij.plugins.testnggen;
/**
* Constants
*
* @author Alex Nazimok (SCI)
* @author <a href="mailto:erik@thauvin.net">Erik C. Thauvin</a>
* @since <pre>Aug 30, 2003</pre>
*/
public class Const {
public static final String RELATIVE_DIR_NAME = "resources";
public static final String ENTRY_LIST_VAR_NAME = "entryList";
public static final String TODAY_VAR_NAME = "today";
public static final String TODAY_LONG_VAR_NAME = "todayLong";
public static final String AUTHOR_VAR_NAME = "author";
public static final String HAS_ANNOTATIONS_VAR_NAME = "hasAnnotations";
public static final String TEMPLATE_NAME = "testnggen.vm";
public static final String RESOURCE_LOADER_TYPE = "file";
public static final String RESOURCE_LOADER_CLASS_KEY = "file.resource.loader.class";
public static final String RESOURCE_LOADER_CLASS_VALUE = "org.apache.velocity.runtime.resource.loader.FileResourceLoader";
public static final String PROPERTIES_FILE_NAME = "testnggen.properties";
public static final String OUTPUT_KEY = "output";
public static final String OVERWRITE_MSG =
"File already exists. Do you want to see the difference between the old and the new test cases?\n"
+ "By answering 'No' you will overwrite an existing file.";
public static final String CLASS_NAME_VAR = "testClass";
public static final String DATE_FORMAT_VAR = "dateFormat";
private Const() {}
}

View file

@ -0,0 +1,125 @@
package org.intellij.plugins.testnggen;
import com.intellij.openapi.actionSystem.DataContext;
import com.intellij.openapi.fileEditor.FileEditorManager;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.openapi.vfs.VirtualFileSystem;
import com.intellij.psi.PsiJavaFile;
import org.intellij.plugins.testnggen.diff.DiffFileAction;
import org.intellij.plugins.testnggen.util.GenUtil;
import javax.swing.*;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.StringWriter;
/**
* Responsible for writing test case out to the file and bringing
* new editor window up.
* Must implement runnable since we are using Application.runWriteAction in
* TestNGGeneratorAction to refresh the content of the VirtualFileSystem.
*
* @author Alex Nazimok (SCI)
* @author <a href="mailto:erik@thauvin.net">Erik C. Thauvin</a>
* @since <pre>Sep 1, 2003</pre>
*/
public class FileCreator implements Runnable {
private final String _outputFile;
private final StringWriter _writer;
private final DataContext _ctx;
private final PsiJavaFile _file;
private final GeneratorContext _genCtx;
private final boolean _overwrite;
/**
* Default constructor
* @param outputFile output file name
* @param writer holds the content of the file
* @param genCtx generator context
*/
public FileCreator(String outputFile, StringWriter writer, GeneratorContext genCtx, boolean overwrite) {
_outputFile = outputFile + ".java";
_writer = writer;
_ctx = genCtx.getDataContext();
_file = genCtx.getFile();
_genCtx = genCtx;
_overwrite = overwrite;
}
/**
* When an object implementing interface <code>Runnable</code> is used
* to create a thread, starting the thread causes the object's
* <code>run</code> method to be called in that separately executing
* thread.
* <p>
* The general contract of the method <code>run</code> is that it may
* take any action whatsoever.
*
* @see java.lang.Thread#run()
*/
public final void run() {
final File newFile = new File(_outputFile);
int overwriteInd = JOptionPane.NO_OPTION;
if (!newFile.getParentFile().exists()) {
newFile.getParentFile().mkdirs();
}
if (newFile.exists() && !_overwrite) {
overwriteInd =
JOptionPane.showOptionDialog(null, Const.OVERWRITE_MSG, "View the difference?",
JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, null, null);
}
if (JOptionPane.NO_OPTION == overwriteInd) {
FileWriter w = null;
try {
w = new FileWriter(newFile);
w.write(_writer.toString());
w.flush();
}
catch (IOException e) {
e.printStackTrace();
}
finally {
if (w != null) {
try {
w.close();
}
catch (IOException ignore) {
; // Do nothing
}
}
}
//Refresh and open new file in the editor
final Project project = GenUtil.getProject(_ctx);
final VirtualFileSystem vfs = _file.getVirtualFile().getFileSystem();
GenUtil.getLogger(getClass().getName()).info("OutputFile: " + _outputFile);
final VirtualFile fileToOpen = vfs.refreshAndFindFileByPath(_outputFile);
if(fileToOpen != null) {
FileEditorManager.getInstance(project).openFile(fileToOpen, true);
try {
// Demetra doesn't support this call, for some reason
vfs.forceRefreshFile(fileToOpen);
}
catch (NoSuchMethodError ignore) {
; // Do nothing.
}
}
else {
throw new IllegalArgumentException("Unable to find: " + _outputFile);
}
}
else if (JOptionPane.YES_OPTION == overwriteInd) {
final VirtualFileSystem vfs = _file.getVirtualFile().getFileSystem();
DiffFileAction.showDiff(_writer.toString(), vfs.findFileByPath(_outputFile), _genCtx);
}
}
}

View file

@ -0,0 +1,58 @@
package org.intellij.plugins.testnggen;
import com.intellij.openapi.actionSystem.DataContext;
import com.intellij.psi.PsiClass;
import com.intellij.psi.PsiJavaFile;
/**
* Data holder/distributer object.
*
* @author Alex Nazimok (SCI)
* @since <pre>Sep 3, 2003</pre>
*/
public class GeneratorContext {
private final DataContext _ctx;
private final PsiJavaFile _file;
private final PsiClass _psiClass;
private String _outputFileName;
public GeneratorContext(DataContext ctx, PsiJavaFile file, PsiClass psiClass) {
_ctx = ctx;
_file = file;
_psiClass = psiClass;
}
public final DataContext getDataContext() {
return _ctx;
}
public final PsiJavaFile getFile() {
return _file;
}
public final PsiClass getPsiClass() {
return _psiClass;
}
public final String getPackageName() {
return _file.getPackageName();
}
public final String getClassName(boolean qualified) {
if (!qualified) {
return _psiClass.getName();
}
else {
return _psiClass.getQualifiedName();
}
}
public final String getOutputFileName() {
return _outputFileName;
}
public final void setOutputFileName(String outputFileName) {
_outputFileName = outputFileName;
}
}

View file

@ -0,0 +1,30 @@
package org.intellij.plugins.testnggen;
import com.intellij.openapi.components.ApplicationComponent;
/**
* ApplicationComponent implementation
* @author Alex Nazimok (SCI)
* @since <pre>Aug 29, 2003</pre>
*/
public class TestNGGenerator implements ApplicationComponent {
/**
* Method is called after plugin is already created and configured. Plugin can start to communicate with
* other plugins only in this method.
*/
public final void initComponent() {}
/**
* This method is called on plugin disposal.
*/
public final void disposeComponent() {}
/**
* Returns the name of component
* @return String representing component name. Use plugin_name.component_name notation.
*/
public final String getComponentName() {
return "TestNGGenerator.TestNGGenerator";
}
}

View file

@ -0,0 +1,31 @@
package org.intellij.plugins.testnggen;
import com.intellij.openapi.actionSystem.DataContext;
import com.intellij.openapi.actionSystem.Presentation;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.editor.actionSystem.EditorAction;
import com.intellij.psi.PsiJavaFile;
import org.intellij.plugins.testnggen.util.GenUtil;
/**
* TestNGGenerator action implementation
* @author Alex Nazimok (SCI)
* @since <pre>Aug 28, 2003</pre>
*/
public class TestNGGeneratorAction extends EditorAction {
public TestNGGeneratorAction() {
super(new TestNGGeneratorActionHandler());
}
/**
* Enables Generate popup for Java files only.
* @param editor
* @param presentation
* @param dataContext
*/
public final void update(Editor editor, Presentation presentation, DataContext dataContext) {
final PsiJavaFile javaFile = GenUtil.getSelectedJavaFile(dataContext);
presentation.setEnabled(javaFile != null);
}
}

View file

@ -0,0 +1,207 @@
package org.intellij.plugins.testnggen;
import com.intellij.openapi.actionSystem.DataContext;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.editor.actionSystem.EditorWriteActionHandler;
import com.intellij.psi.*;
import com.intellij.pom.java.LanguageLevel;
import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.VelocityEngine;
import org.intellij.plugins.testnggen.util.GenUtil;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
/**
* This is where the magic happens.
*
* @author Alex Nazimok (SCI)
* @author <a href="mailto:erik@thauvin.net">Erik C. Thauvin</a>
* @since <pre>Sep 3, 2003</pre>
* @noinspection InnerClassMayBeStatic
*/
public class TestNGGeneratorActionHandler extends EditorWriteActionHandler {
private static final Logger logger = GenUtil.getLogger(TestNGGeneratorActionHandler.class.getName());
private List entryList;
private GeneratorContext genCtx;
/**
* Executed upon action in the Editor
*
* @param editor IDEA Editor
* @param dataContext DataCOntext
*/
public final void executeWriteAction(Editor editor, DataContext dataContext) {
final PsiJavaFile file = GenUtil.getSelectedJavaFile(dataContext);
if (file == null) {
return;
}
final PsiClass[] psiClasses = file.getClasses();
if (psiClasses == null) {
return;
}
for (int i = 0; i < psiClasses.length; i++) {
if ((psiClasses[i] != null) && (psiClasses[i].getQualifiedName() != null)) {
genCtx = new GeneratorContext(dataContext, file, psiClasses[i]);
entryList = new ArrayList(0);
try {
if (psiClasses[i] == null) {
return;
}
if (!psiClasses[i].isInterface()) {
final List methodList = new ArrayList(0);
final List fieldList = new ArrayList(0);
buildMethodList(psiClasses[i].getMethods(), methodList);
buildFieldList(psiClasses[i].getFields(), fieldList);
final PsiClass[] innerClass = psiClasses[i].getAllInnerClasses();
for (int idx = 0; idx < innerClass.length; idx++) {
buildMethodList(innerClass[idx].getMethods(), methodList);
buildFieldList(psiClasses[i].getFields(), fieldList);
}
entryList.add(new TemplateEntry(genCtx.getClassName(false),
genCtx.getPackageName(),
methodList,
fieldList));
process();
}
}
catch (Exception e) {
GenUtil.getLogger(getClass().getName()).error(e);
}
}
}
}
/**
* Builds a list of class scope fields from an array of PsiFields
* @param fields an array of fields
* @param fieldList list to be populated
*/
private static void buildFieldList(PsiField[] fields, List fieldList) {
for(int i = 0; i < fields.length; i++){
fieldList.add(fields[i].getName());
}
}
/**
* Builds method List from an array of PsiMethods
*
* @param methods array of methods
* @param methodList list to be populated
*/
private static void buildMethodList(PsiMethod[] methods, List methodList) {
for (int j = 0; j < methods.length; j++) {
if (!methods[j].isConstructor()) {
final PsiModifierList modifiers = methods[j].getModifierList();
if (!modifiers.hasModifierProperty("private")) {
final String methodName = methods[j].getName();
if (!methodList.contains(methodName)) {
methodList.add(methodName);
}
else {
for (int k = 1; k < methods.length; k++) {
if (!methodList.contains(methodName + k)) {
methodList.add(methodName + k);
break;
}
}
}
}
}
}
}
/**
* Sets all the needed vars in VelocityContext and
* merges the template
*/
private void process() {
try {
final Properties velocityProperties = new Properties();
velocityProperties.setProperty(VelocityEngine.RESOURCE_LOADER, Const.RESOURCE_LOADER_TYPE);
velocityProperties.setProperty(Const.RESOURCE_LOADER_CLASS_KEY, Const.RESOURCE_LOADER_CLASS_VALUE);
velocityProperties.setProperty(VelocityEngine.FILE_RESOURCE_LOADER_PATH,
GenUtil.getResourcePath(Const.RELATIVE_DIR_NAME));
final VelocityContext context = new VelocityContext();
context.put(Const.ENTRY_LIST_VAR_NAME, entryList);
context.put(Const.TODAY_VAR_NAME, GenUtil.formatDate("MM/dd/yyyy"));
context.put(Const.TODAY_LONG_VAR_NAME, GenUtil.formatDate("MMMM d, yyyy"));
context.put(Const.AUTHOR_VAR_NAME, System.getProperty("user.name", ""));
final LanguageLevel level = PsiManager.getInstance(GenUtil.getProject(genCtx.getDataContext())).getEffectiveLanguageLevel();
final boolean hasAnnotations = !(level == LanguageLevel.JDK_1_4 || level == LanguageLevel.JDK_1_3);
context.put(Const.HAS_ANNOTATIONS_VAR_NAME, Boolean.valueOf(hasAnnotations));
final VelocityEngine ve = new VelocityEngine();
ve.init(velocityProperties);
final Template template = ve.getTemplate(Const.TEMPLATE_NAME);
final StringWriter writer = new StringWriter();
template.merge(context, writer);
genCtx.setOutputFileName((String) context.get(Const.CLASS_NAME_VAR));
ApplicationManager.getApplication().runWriteAction(new FileCreator(GenUtil.getOutputFile(genCtx,
genCtx.getOutputFileName()), writer, genCtx, false));
}
catch (Exception e) {
logger.error(e);
}
}
/**
* DataHolder class. Needs to be public since velocity is using it in the
* template.
* @noinspection CanBeStatic,PublicInnerClass,NonStaticInnerClassInSecureContext
*/
public class TemplateEntry {
private List _methodList = new ArrayList(0);
private List _fieldList = new ArrayList(0);
private final String _className;
private final String _packageName;
public TemplateEntry(String className, String packageName, List methodList, List fieldList) {
_className = className;
_packageName = packageName;
_methodList = methodList;
_fieldList = fieldList;
}
public final String getClassName() {
return _className;
}
public final String getPackageName() {
return _packageName;
}
public final List getMethodList() {
return _methodList;
}
public final List getFieldList() {
return _fieldList;
}
}
}

View file

@ -0,0 +1,62 @@
package org.intellij.plugins.testnggen.diff;
import com.intellij.openapi.fileTypes.FileTypeManager;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.Messages;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.openapi.actionSystem.DataConstants;
import org.intellij.plugins.testnggen.GeneratorContext;
import java.io.IOException;
public final class DiffFileAction {
/**
* Disables the default constructor.
*
* @throws UnsupportedOperationException if the constructor is called.
*/
private DiffFileAction() throws UnsupportedOperationException {
throw new UnsupportedOperationException("Illegal constructor call.");
}
public static void showDiff(String paneTwoContents, VirtualFile paneTwoFile, GeneratorContext genCtx) {
final Project project =
(Project) genCtx.getDataContext().getData(DataConstants.PROJECT);
if (project != null) {
if ((paneTwoFile != null) && (paneTwoContents != null)) {
DiffFileToken paneOneToken = null;
try {
paneOneToken = DiffFileToken.createForVirtualFile(paneTwoFile);
}
catch (IOException e) {
System.err.println(new StringBuffer("DiffFile plugin: could not read selected file: ").append(
paneTwoFile.getPath()).toString());
e.printStackTrace();
Messages.showDialog(project, "Could not read contents of selected file.", // message
"Diff File Error", // title
new String[] { "Dismiss" }, 0, Messages.getErrorIcon());
return;
}
if (paneOneToken != null) {
final DiffFileToken paneTwoToken = new DiffFileToken();
paneTwoToken.setName("Editor Contents");
paneTwoToken.setTitle("Temporary Buffer");
paneTwoToken.setContents(paneTwoContents);
paneTwoToken.setType(FileTypeManager.getInstance().getFileTypeByExtension(paneTwoFile.getExtension()));
final DiffViewerFrame diffViewer =
new DiffViewerFrame(project /*, paneTwoFile */ , paneOneToken, paneTwoToken, genCtx);
diffViewer.setVisible(true);
}
}
}
}
}

View file

@ -0,0 +1,73 @@
package org.intellij.plugins.testnggen.diff;
import com.intellij.openapi.fileTypes.FileType;
import com.intellij.openapi.fileTypes.FileTypeManager;
import com.intellij.openapi.vfs.VirtualFile;
import java.io.IOException;
/**
* A basic Java bean that holds information about a file that is relevant for a diff viewer.
*/
public final class DiffFileToken {
private String _name;
private String _title;
private String _contents;
private FileType _type;
public DiffFileToken() {}
public DiffFileToken(String name, String title, String fileContents, FileType fileType) {
_name = name;
_title = title;
_contents = fileContents;
_type = fileType;
}
/**
* Creates a token based upon the specified virtual file. The file's path is used for the name,
* the contents are extracted, and the file type is inferred from the file's extension.
*
* @param file The file the token will be based upon.
* @return A new DiffFileToken.
* @throws IOException If the contents of the virtual file can not be read.
*/
public static DiffFileToken createForVirtualFile(VirtualFile file)
throws IOException {
return new DiffFileToken(file.getName(), file.getPath(), String.valueOf(file.contentsToCharArray()),
FileTypeManager.getInstance().getFileTypeByExtension(file.getExtension()));
}
public String getName() {
return _name;
}
public void setName(String name) {
_name = name;
}
public String getTitle() {
return _title;
}
public void setTitle(String title) {
_title = title;
}
public String getContents() {
return _contents;
}
public void setContents(String contents) {
_contents = contents;
}
public FileType getType() {
return _type;
}
public void setType(FileType type) {
_type = type;
}
}

View file

@ -0,0 +1,74 @@
package org.intellij.plugins.testnggen.diff;
import com.intellij.openapi.diff.DiffManager;
import com.intellij.openapi.diff.DiffPanel;
import com.intellij.openapi.diff.SimpleContent;
import com.intellij.openapi.fileTypes.FileType;
import com.intellij.openapi.project.Project;
import java.awt.*;
/**
* Class to add some convenience abilities to the DiffPanel.
*/
public final class DiffPanelHelper {
private Project _project = null;
private DiffFileToken _paneTwoToken = null;
private DiffFileToken _paneOneToken = null;
private DiffPanel _panel = null;
private Window _window = null;
/**
* Create a new DiffPanelHelper for the specified window, project, backing file, and contents.
* The virtual file is used when a line number is selected.
*
* @param window The window that will contain the diffPanel.
* @param project The project this window is associated with.
* @param paneOneToken A token containing information about the file to be placed in the left
* hand pane.
* @param paneTwoToken A token containing information about the file to be placed in the right
*/
public DiffPanelHelper(Window window, Project project, DiffFileToken paneOneToken, DiffFileToken paneTwoToken) {
_window = window;
_project = project;
_paneTwoToken = paneTwoToken;
_paneOneToken = paneOneToken;
}
public String getTitle() {
return new StringBuffer(_paneOneToken.getName()).
append(" vs. ").append(_paneTwoToken.getName()) .toString();
}
public DiffPanel getDiffPanel() {
initDiffPanel();
return _panel;
}
public void closeDiffPanel() {
if (_panel != null) {
_panel.dispose();
_panel = null;
}
}
private void initDiffPanel() {
if (_panel == null) {
_panel = DiffManager.getInstance().createDiffPanel(_window, _project);
FileType fileType = _paneTwoToken.getType();
if (fileType == null) {
fileType = _paneOneToken.getType();
}
_panel.setTitle1(_paneOneToken.getTitle());
_panel.setTitle2(_paneTwoToken.getTitle());
_panel.setContents(new SimpleContent(_paneOneToken.getContents(), fileType),
new SimpleContent(_paneTwoToken.getContents(), fileType));
}
}
}

View file

@ -0,0 +1,149 @@
package org.intellij.plugins.testnggen.diff;
import com.intellij.openapi.actionSystem.DataConstants;
import com.intellij.openapi.actionSystem.DataProvider;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.DimensionService;
import org.intellij.plugins.testnggen.FileCreator;
import org.intellij.plugins.testnggen.GeneratorContext;
import org.intellij.plugins.testnggen.util.GenUtil;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.IOException;
import java.io.StringWriter;
public final class DiffViewerFrame extends JFrame implements DataProvider {
private static final String DIMENSION_KEY = "DiffViewer.JFrame";
private Project _project = null;
private DiffPanelHelper _diffPanelHelper = null;
private final GeneratorContext _ctx;
private final String _content;
public DiffViewerFrame(Project project /*, VirtualFile backingFile */, DiffFileToken paneOneToken,
DiffFileToken paneTwoToken, GeneratorContext ctx) {
setProject(project);
_diffPanelHelper = new DiffPanelHelper(this, project, paneOneToken, paneTwoToken);
_ctx = ctx;
_content = paneTwoToken.getContents();
setTitle(buildTitle());
init();
}
public Project getProject() {
return _project;
}
public void setProject(Project project) {
_project = project;
}
public Object getData(String dataId) {
if (DataConstants.PROJECT.equals(dataId)) {
return _project;
}
else {
return null;
}
}
public void dispose() {
_diffPanelHelper.closeDiffPanel();
super.dispose();
}
private void init() {
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
setIconImage(new ImageIcon(getClass().getResource("/diff/Diff.png")).getImage());
getRootPane().registerKeyboardAction(new ActionListener() {
public void actionPerformed(ActionEvent e) {
dispose();
}
}, KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), JComponent.WHEN_IN_FOCUSED_WINDOW);
addWindowListener(new WindowAdapter() {
public void windowClosed(WindowEvent e) {
final DimensionService dimensionService = DimensionService.getInstance();
dimensionService.setSize(DIMENSION_KEY, getSize());
dimensionService.setLocation(DIMENSION_KEY, getLocation());
}
});
final Container contentPane = getContentPane();
contentPane.setLayout(new BorderLayout(8, 0));
contentPane.add(createCenterPanel(), BorderLayout.CENTER);
contentPane.add(createButtonPanel(), BorderLayout.SOUTH);
pack();
final DimensionService dimensionService = DimensionService.getInstance();
final Dimension size = dimensionService.getSize(DIMENSION_KEY);
if (size != null) {
setSize(size);
}
final Point location = dimensionService.getLocation(DIMENSION_KEY);
if (location != null) {
setLocation(location);
}
else {
setLocationRelativeTo(null);
}
}
JComponent createButtonPanel() {
final JPanel panel = new JPanel(new FlowLayout(FlowLayout.RIGHT, 8, 8));
final Action[] actions = createActions();
for (int index = 0; index < actions.length; index++) {
panel.add(new JButton(actions[index]));
}
return panel;
}
JComponent createCenterPanel() {
return _diffPanelHelper.getDiffPanel().getComponent();
}
Action[] createActions() {
final Action closeAction =
new AbstractAction("Close") {
public void actionPerformed(ActionEvent actionevent) {
DiffViewerFrame.this.setVisible(false);
DiffViewerFrame.this.dispose();
}
};
final Action overwriteAction =
new AbstractAction("Overwrite") {
public void actionPerformed(ActionEvent actionevent) {
final StringWriter writer = new StringWriter();
writer.write(_content);
try {
ApplicationManager.getApplication().runWriteAction(new FileCreator(GenUtil.getOutputFile(_ctx,
_ctx.getOutputFileName()), writer, _ctx, true));
DiffViewerFrame.this.setVisible(false);
DiffViewerFrame.this.dispose();
}
catch (IOException e) {
e.printStackTrace();
}
}
};
return new Action[] { overwriteAction, closeAction };
}
private String buildTitle() {
return new StringBuffer("Diff: ").append(_diffPanelHelper.getTitle()).toString();
}
}

View file

@ -0,0 +1,158 @@
/*
* Copyright (c) United Parcel Service of America, Inc.
* All Rights Reserved.
*
* The use, disclosure, reproduction, modification, transfer, or transmittal
* of this work for any purpose in any form or by any means without the
* written permission of United Parcel Service is strictly prohibited.
* Confidential, Unpublished Property of United Parcel Service.
* Use and Distribution Limited Solely to Authorized Personnel.
*/
package org.intellij.plugins.testnggen.ui;
import com.intellij.openapi.components.ApplicationComponent;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.editor.EditorFactory;
import com.intellij.openapi.options.Configurable;
import com.intellij.openapi.options.ConfigurationException;
import org.intellij.plugins.testnggen.Const;
import org.intellij.plugins.testnggen.util.GenUtil;
import javax.swing.*;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.RandomAccessFile;
/**
* TestNGGenerator configuration UI.
* Could be accessed via File->Settings->(IDE Settings) TestNG Generator
*
* @author Alex Nazimok (SCI)
* @since <pre>Sep 7, 2004</pre>
*/
public class TestNGGenConfig implements ApplicationComponent, Configurable {
private Editor templateEditor;
private Editor propsEditor;
private String templateContent = "";
private String propsContent = "";
private static final String TEMPLATE_FILE = GenUtil.getResourcePath(Const.RELATIVE_DIR_NAME) + File.separator + Const.TEMPLATE_NAME;
private static final String PROPS_FILE = GenUtil.getResourcePath(Const.RELATIVE_DIR_NAME) + File.separator + Const.PROPERTIES_FILE_NAME;
public final String getDisplayName() {
return "TestNG Generator";
}
public final Icon getIcon() {
return new ImageIcon(TestNGGenConfig.class.getResource("smalllogo.gif"));
}
public final String getHelpTopic() {
return null;
}
public final String getComponentName() {
return "TestNGGeneratorPlugin.TestNGGenConfig";
}
public final void initComponent() {
templateContent = readFile(TEMPLATE_FILE);
propsContent = readFile(PROPS_FILE);
}
public final JComponent createComponent() {
final JTabbedPane tabbedPane = new JTabbedPane();
// test-case template configuration tab
final EditorFactory factory = EditorFactory.getInstance();
final char[] chars = new char[templateContent.length()];
templateContent.getChars(0, templateContent.length(), chars, 0);
templateEditor = factory.createEditor(factory.createDocument(chars));
tabbedPane.addTab("Velocity Template", templateEditor.getComponent());
templateEditor.getComponent().setBorder(BorderFactory.createCompoundBorder(
BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), TEMPLATE_FILE),
BorderFactory.createEmptyBorder(5, 5, 5, 5)));
// Output Properties configuration tab
propsEditor = factory.createEditor(factory.createDocument(propsContent));
tabbedPane.addTab("Output Pattern", propsEditor.getComponent());
propsEditor.getComponent().setBorder(BorderFactory.createCompoundBorder(
BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), PROPS_FILE),
BorderFactory.createEmptyBorder(5, 5, 5, 5)));
return tabbedPane;
}
public final boolean isModified() {
return !templateContent.equals(templateEditor.getDocument().getText()) ||
!propsContent.equals(propsEditor.getDocument().getText());
}
public final void apply() throws ConfigurationException {
templateContent = templateEditor.getDocument().getText();
propsContent = propsEditor.getDocument().getText();
}
private String readFile(String filename) {
RandomAccessFile file = null;
try {
file = new RandomAccessFile(filename, "r");
final byte[] bytes = new byte[(int) file.length()];
file.readFully(bytes);
return new String(bytes);
}
catch (Exception ex) {
GenUtil.getLogger(getClass().getName()).error(ex);
}
finally {
if (file != null) {
try {
file.close();
}
catch (IOException ignore) {
; // Do nothing
}
}
}
throw new RuntimeException("Unable to read config files.");
}
private void writeFile(String filename, String content) {
FileWriter file = null;
try {
file = new FileWriter(new File(filename), false);
file.write(content);
}
catch (IOException e) {
GenUtil.getLogger(getClass().getName()).error(e);
}
finally {
if (file != null) {
try {
file.close();
}
catch (IOException ignore) {
; // Do nothing
}
}
}
}
public final void disposeUIResources() {
writeFile(TEMPLATE_FILE, templateContent);
writeFile(PROPS_FILE, propsContent);
}
public final void disposeComponent() {
}
public final void reset() {
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 315 B

View file

@ -0,0 +1,177 @@
package org.intellij.plugins.testnggen.util;
import com.intellij.openapi.actionSystem.DataConstants;
import com.intellij.openapi.actionSystem.DataContext;
import com.intellij.openapi.application.PathManager;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.roots.ProjectRootManager;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiClass;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiJavaFile;
import org.intellij.plugins.testnggen.Const;
import org.intellij.plugins.testnggen.GeneratorContext;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Properties;
import java.util.Date;
/**
* General purpose utility class.
*
* @author Alex Nazimok (SCI)
* @since <pre>Aug 30, 2003</pre>
*/
public class GenUtil {
/**
* Disables the default constructor.
*
* @throws UnsupportedOperationException if the constructor is called.
*/
private GenUtil() throws UnsupportedOperationException {
throw new UnsupportedOperationException("Illegal constructor call.");
}
/**
* Returns full path to the relativePath.
*
* @param relativePath directory relative to IDEA's home.
* @return Full path to the relativePath passed in.
*/
public static String getResourcePath(String relativePath) {
if (relativePath == null) {
throw new IllegalArgumentException("relative path should not be null");
}
String pluginPath = PathManager.getPluginsPath();
pluginPath = pluginPath + File.separator + relativePath;
return pluginPath;
}
/**
* Get's the javafile that's currently selected in the editor. Returns null if it's not a javafile.
*
* @param dataContext data context.
* @return The current javafile. Null if not a javafile.
*/
public static PsiJavaFile getSelectedJavaFile(DataContext dataContext) {
final PsiFile psiFile = (PsiFile) dataContext.getData("psi.File");
if (!(psiFile instanceof PsiJavaFile)) {
return null;
}
else {
return (PsiJavaFile) psiFile;
}
}
/**
* Returns Project from DataContext
*
* @param ctx DataContext
* @return Project object
*/
public static Project getProject(DataContext ctx) {
return (Project) ctx.getData(DataConstants.PROJECT);
}
/**
* Returns a logger
*
* @param className class name for which logger should be constructed
* @return a logger instance
*/
public static Logger getLogger(String className) {
return Logger.getInstance(className);
}
/**
* Returns source paths for currently selected java file
*
* @param clss psiClass
* @return list of source paths
*/
public static String getSourcePath(PsiClass clss, DataContext ctx) {
final VirtualFile[] roots = ProjectRootManager.getInstance(getProject(ctx)).getContentSourceRoots();
final String className = clss.getContainingFile().getVirtualFile().getPath();
for (int i = 0; i < roots.length; i++) {
if (className.startsWith(roots[i].getPath())) {
return roots[i].getPath();
}
}
return null;
}
/**
* Returns an output pattern
*
* @return output pattern
* @throws java.io.IOException
*/
public static String getOutputPattern(GeneratorContext genCtx)
throws IOException {
final String resourcePath = getResourcePath(Const.RELATIVE_DIR_NAME);
final Properties configProps = new Properties();
configProps.load(new FileInputStream(resourcePath + '/' + Const.PROPERTIES_FILE_NAME));
String outputPattern = configProps.getProperty(getProject(genCtx.getDataContext()).getName());
if (outputPattern == null || outputPattern.trim().length() == 0) {
outputPattern = configProps
.getProperty(Const.OUTPUT_KEY);
}
return outputPattern;
}
/**
* Returns absolute path + filename of the output file
*
* @param genCtx GeneratorContext
* @return absolute path + filename of the output file
* @throws java.io.IOException
*/
public static String getOutputFile(GeneratorContext genCtx, String testClassName)
throws IOException {
String outputPattern = getOutputPattern(genCtx);
String sourcePath = getSourcePath(genCtx.getPsiClass(), genCtx.getDataContext());
if (sourcePath == null) {
throw new IllegalArgumentException("Sourcepath cannot be null");
}
final String packageName = genCtx.getFile().getPackageName();
final int indexOf = sourcePath.indexOf("$SOURCEPATH$");
if (indexOf != -1) {
sourcePath = sourcePath.substring(indexOf);
}
outputPattern = StringUtil.replace(outputPattern, "$SOURCEPATH$", sourcePath);
outputPattern = StringUtil.replace(outputPattern, "$PACKAGE$", packageName.replace('.', '/'));
outputPattern = StringUtil.replace(outputPattern, "$FILENAME$", testClassName);
return outputPattern;
}
/**
* Returns Current date as formatted string, format specified by pattern argument.
*
* @param pattern date format
* @return current date as formatted string, format specified by pattern argument.
* @see SimpleDateFormat
*/
public static String formatDate(String pattern) {
final SimpleDateFormat sdf = new SimpleDateFormat(pattern);
return sdf.format(new Date());
}
}

View file

@ -0,0 +1,76 @@
package org.intellij.plugins.testnggen.util;
/**
*
* @author Alex Nazimok (SCI)
* @since <pre>Aug 30, 2003</pre>
*/
public class StringUtil {
/**
* Disables the default constructor.
*
* @throws UnsupportedOperationException if the constructor is called.
*/
private StringUtil() throws UnsupportedOperationException {
throw new UnsupportedOperationException("Illegal constructor call.");
}
/**
* Replaces all occurrences of <code>replPattern</code> in the <code>inputStr</code>
* with <code>replaceWith</code> string.
* @param inputStr input string
* @param replPattern replace pattern
* @param replaceWith string to replace replPattern
* @return inputStr with all occurrences of replPattern being replaced with relaceWith string.
*/
public static String replace(String inputStr, String replPattern, String replaceWith) {
while (true) {
final int indexOf = inputStr.indexOf(replPattern);
if (indexOf == -1) {
break;
}
final int end = indexOf + replPattern.length();
inputStr = inputStr.substring(0, indexOf) + replaceWith + inputStr.substring(end);
}
return inputStr;
}
/**
* Capitalizes string passed in
* @param strIn string to be capitalized
* @return capitalized string
* @throws java.lang.IndexOutOfBoundsException
*/
public static String cap(String strIn) throws IndexOutOfBoundsException {
if ((strIn == null) || (strIn.trim().length() == 0)) {
throw new IllegalArgumentException("Argumnet strIn in method GenUtil.cap must not be null.");
}
return String.valueOf(strIn.charAt(0)).toUpperCase() + strIn.substring(1);
}
/**
* Removes package name from classname
* @param className class name
* @return class name without package name
*/
public static String trimPackageName(String className) {
if (className == null) {
return null;
}
final int indexOf = className.lastIndexOf('.');
if (indexOf != -1) {
return className.substring(indexOf + 1);
}
else {
return className;
}
}
}

42
testnggen.iml Normal file
View file

@ -0,0 +1,42 @@
<?xml version="1.0" encoding="UTF-8"?>
<module version="4" relativePaths="true" type="JAVA_MODULE">
<component name="ModuleRootManager" />
<component name="NewModuleRootManager">
<output url="file://$MODULE_DIR$/classes" />
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="module-library">
<library>
<CLASSES>
<root url="jar://$MODULE_DIR$/lib/velocity.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</orderEntry>
<orderEntry type="module-library">
<library>
<CLASSES>
<root url="jar://$MODULE_DIR$/lib/openapi.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</orderEntry>
<orderEntry type="module-library">
<library>
<CLASSES>
<root url="jar://$MODULE_DIR$/lib/extensions.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</orderEntry>
<orderEntryProperties />
</component>
</module>

256
testnggen.ipr Normal file
View file

@ -0,0 +1,256 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4" relativePaths="true">
<component name="AntConfiguration">
<defaultAnt bundledAnt="true" />
<buildFile url="file://$PROJECT_DIR$/build.xml">
<additionalClassPath />
<antReference projectDefault="true" />
<customJdkName value="" />
<maximumHeapSize value="128" />
<properties />
</buildFile>
</component>
<component name="BSFConsole">
<sendcommandbycontrolenter>false</sendcommandbycontrolenter>
<restoresystemstreams>false</restoresystemstreams>
<outwaitsforerr>false</outwaitsforerr>
<errwaitsforout>false</errwaitsforout>
<storedupsinrecentcommands>false</storedupsinrecentcommands>
<moduleforclasspath />
<includeoutputpath>false</includeoutputpath>
<includetestsoutputpath>false</includetestsoutputpath>
<languages>
<language name="ant" engine="org.kos.bsfconsoleplugin.languages.AntConsoleBSFEngine" />
<language name="beanshell" engine="bsh.util.BeanShellBSFEngine" />
<language name="netrexx" engine="org.apache.bsf.engines.netrexx.NetRexxEngine" />
<language name="xslt" engine="org.apache.bsf.engines.xslt.XSLTEngine" />
<language name="beanbasic" engine="org.apache.bsf.engines.beanbasic.BeanBasicEngine" />
<language name="bml" engine="org.apache.bml.ext.BMLEngine" />
<language name="groovy" engine="org.codehaus.groovy.bsf.GroovyEngine" />
<language name="jacl" engine="org.apache.bsf.engines.jacl.JaclEngine" />
<language name="java" engine="org.apache.bsf.engines.java.JavaEngine" />
<language name="javaclass" engine="org.apache.bsf.engines.javaclass.JavaClassEngine" />
<language name="javascript" engine="org.apache.bsf.engines.javascript.JavaScriptEngine" />
<language name="jpython" engine="org.apache.bsf.engines.jpython.JPythonEngine" />
<language name="jruby" engine="org.jruby.javasupport.bsf.JRubyEngine" />
<language name="jscript" engine="org.apache.bsf.engines.activescript.ActiveScriptEngine" />
<language name="judoscript" engine="com.judoscript.BSFJudoEngine" />
<language name="jython" engine="org.apache.bsf.engines.jython.JythonEngine" />
<language name="lotusscript" engine="org.apache.bsf.engines.lotusscript.LsEngine" />
<language name="perl" engine="org.apache.bsf.engines.perl.PerlEngine" />
<language name="perlscript" engine="org.apache.bsf.engines.activescript.ActiveScriptEngine" />
<language name="pnuts" engine="pnuts.ext.PnutsBSFEngine" />
<language name="vbscript" engine="org.apache.bsf.engines.activescript.ActiveScriptEngine" />
</languages>
<startupscripts />
<preferredrecentcommandsdividerlocations>
<dividerlocationd language="ant" position="1214" />
<dividerlocationd language="beanshell" position="1214" />
</preferredrecentcommandsdividerlocations>
<BSFConsoleSearchOptions searchfromcursor="false">
<recentsearches />
</BSFConsoleSearchOptions>
</component>
<component name="CodeStyleSettingsManager">
<option name="PER_PROJECT_SETTINGS" />
<option name="USE_PER_PROJECT_SETTINGS" value="false" />
</component>
<component name="CompilerConfiguration">
<option name="DEFAULT_COMPILER" value="Javac" />
<option name="CLEAR_OUTPUT_DIRECTORY" value="false" />
<option name="DEPLOY_AFTER_MAKE" value="0" />
<resourceExtensions>
<entry name=".+\.(properties|xml|html|dtd|tld)" />
<entry name=".+\.(gif|png|jpeg|jpg)" />
</resourceExtensions>
<wildcardResourcePatterns>
<entry name="?*.properties" />
<entry name="?*.xml" />
<entry name="?*.gif" />
<entry name="?*.png" />
<entry name="?*.jpeg" />
<entry name="?*.jpg" />
<entry name="?*.html" />
<entry name="?*.dtd" />
<entry name="?*.tld" />
<entry name="?*.properties" />
<entry name="?*.xml" />
<entry name="?*.html" />
<entry name="?*.dtd" />
<entry name="?*.tld" />
<entry name="?*.gif" />
<entry name="?*.png" />
<entry name="?*.jpeg" />
<entry name="?*.jpg" />
</wildcardResourcePatterns>
</component>
<component name="DataSourceManagerImpl" />
<component name="DependenciesAnalyzeManager">
<option name="myForwardDirection" value="false" />
</component>
<component name="DependencyValidationManager" />
<component name="EntryPointsManager">
<entry_points />
</component>
<component name="ExportToHTMLSettings">
<option name="PRINT_LINE_NUMBERS" value="false" />
<option name="OPEN_IN_BROWSER" value="false" />
<option name="OUTPUT_DIRECTORY" />
</component>
<component name="GUI Designer component loader factory" />
<component name="JavacSettings">
<option name="DEBUGGING_INFO" value="true" />
<option name="GENERATE_NO_WARNINGS" value="false" />
<option name="DEPRECATION" value="true" />
<option name="ADDITIONAL_OPTIONS_STRING" value="" />
<option name="MAXIMUM_HEAP_SIZE" value="128" />
</component>
<component name="JavadocGenerationManager">
<option name="OUTPUT_DIRECTORY" />
<option name="OPTION_SCOPE" value="protected" />
<option name="OPTION_HIERARCHY" value="true" />
<option name="OPTION_NAVIGATOR" value="true" />
<option name="OPTION_INDEX" value="true" />
<option name="OPTION_SEPARATE_INDEX" value="true" />
<option name="OPTION_DOCUMENT_TAG_USE" value="false" />
<option name="OPTION_DOCUMENT_TAG_AUTHOR" value="false" />
<option name="OPTION_DOCUMENT_TAG_VERSION" value="false" />
<option name="OPTION_DOCUMENT_TAG_DEPRECATED" value="true" />
<option name="OPTION_DEPRECATED_LIST" value="true" />
<option name="OTHER_OPTIONS" value="" />
<option name="HEAP_SIZE" />
<option name="OPEN_IN_BROWSER" value="true" />
</component>
<component name="JikesSettings">
<option name="JIKES_PATH" value="" />
<option name="DEBUGGING_INFO" value="true" />
<option name="DEPRECATION" value="true" />
<option name="GENERATE_NO_WARNINGS" value="false" />
<option name="IS_EMACS_ERRORS_MODE" value="true" />
<option name="ADDITIONAL_OPTIONS_STRING" value="" />
</component>
<component name="Palette2">
<group name="Swing">
<item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.png" removable="false">
<default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
</item>
<item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.png" removable="false">
<default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
</item>
<item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.png" removable="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
</item>
<item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.png" removable="false">
<default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
</item>
<item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.png" removable="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
<initial-values>
<property name="text" value="Button" />
</initial-values>
</item>
<item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.png" removable="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
<initial-values>
<property name="text" value="RadioButton" />
</initial-values>
</item>
<item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.png" removable="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
<initial-values>
<property name="text" value="CheckBox" />
</initial-values>
</item>
<item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.png" removable="false">
<default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
<initial-values>
<property name="text" value="Label" />
</initial-values>
</item>
<item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.png" removable="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.png" removable="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.png" removable="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.png" removable="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.png" removable="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.png" removable="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.png" removable="false">
<default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
</item>
<item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.png" removable="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.png" removable="false">
<default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.png" removable="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.png" removable="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
<preferred-size width="200" height="200" />
</default-constraints>
</item>
<item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.png" removable="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
<preferred-size width="200" height="200" />
</default-constraints>
</item>
<item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.png" removable="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
</item>
<item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.png" removable="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
</item>
</group>
</component>
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/testnggen.iml" filepath="$PROJECT_DIR$/testnggen.iml" />
</modules>
</component>
<component name="ProjectRootManager" version="2" assert-keyword="true" jdk-15="false" project-jdk-name="1.4.x" />
<component name="RmicSettings">
<option name="IS_EANABLED" value="false" />
<option name="DEBUGGING_INFO" value="true" />
<option name="GENERATE_NO_WARNINGS" value="false" />
<option name="GENERATE_IIOP_STUBS" value="false" />
<option name="ADDITIONAL_OPTIONS_STRING" value="" />
</component>
<component name="libraryTable" />
<component name="uidesigner-configuration">
<option name="INSTRUMENT_CLASSES" value="true" />
<option name="COPY_FORMS_RUNTIME_TO_OUTPUT" value="true" />
</component>
<UsedPathMacros />
</project>

712
testnggen.iws Normal file
View file

@ -0,0 +1,712 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4" relativePaths="true">
<component name="AspectsView" />
<component name="BookmarkManager" />
<component name="ChangeBrowserSettings">
<option name="MAIN_SPLITTER_PROPORTION" value="0.3" />
<option name="MESSAGES_SPLITTER_PROPORTION" value="0.8" />
<option name="USE_DATE_BEFORE_FILTER" value="false" />
<option name="USE_DATE_AFTER_FILTER" value="false" />
<option name="USE_CHANGE_BEFORE_FILTER" value="false" />
<option name="USE_CHANGE_AFTER_FILTER" value="false" />
<option name="DATE_BEFORE" value="" />
<option name="DATE_AFTER" value="" />
<option name="CHANGE_BEFORE" value="" />
<option name="CHANGE_AFTER" value="" />
<option name="USE_USER_FILTER" value="false" />
<option name="USER" value="" />
</component>
<component name="CheckinPanelState" />
<component name="Commander">
<leftPanel />
<rightPanel />
<splitter proportion="0.5" />
</component>
<component name="CompilerWorkspaceConfiguration">
<option name="COMPILE_IN_BACKGROUND" value="false" />
<option name="AUTO_SHOW_ERRORS_IN_EDITOR" value="true" />
<option name="CLOSE_MESSAGE_VIEW_IF_SUCCESS" value="true" />
<option name="COMPILE_DEPENDENT_FILES" value="false" />
</component>
<component name="Cvs2Configuration">
<option name="PRUNE_EMPTY_DIRECTORIES" value="true" />
<option name="MERGING_MODE" value="0" />
<option name="MERGE_WITH_BRANCH1_NAME" value="HEAD" />
<option name="MERGE_WITH_BRANCH2_NAME" value="HEAD" />
<option name="RESET_STICKY" value="false" />
<option name="CREATE_NEW_DIRECTORIES" value="true" />
<option name="DEFAULT_TEXT_FILE_SUBSTITUTION" value="kv" />
<option name="PROCESS_UNKNOWN_FILES" value="false" />
<option name="PROCESS_DELETED_FILES" value="false" />
<option name="PROCESS_IGNORED_FILES" value="false" />
<option name="RESERVED_EDIT" value="false" />
<option name="CHECKOUT_DATE_OR_REVISION_SETTINGS">
<value>
<option name="BRANCH" value="" />
<option name="DATE" value="" />
<option name="USE_BRANCH" value="false" />
<option name="USE_DATE" value="false" />
</value>
</option>
<option name="UPDATE_DATE_OR_REVISION_SETTINGS">
<value>
<option name="BRANCH" value="" />
<option name="DATE" value="" />
<option name="USE_BRANCH" value="false" />
<option name="USE_DATE" value="false" />
</value>
</option>
<option name="SHOW_CHANGES_REVISION_SETTINGS">
<value>
<option name="BRANCH" value="" />
<option name="DATE" value="" />
<option name="USE_BRANCH" value="false" />
<option name="USE_DATE" value="false" />
</value>
</option>
<option name="SHOW_OUTPUT" value="false" />
<option name="ADD_WATCH_INDEX" value="0" />
<option name="REMOVE_WATCH_INDEX" value="0" />
<option name="UPDATE_KEYWORD_SUBSTITUTION" />
<option name="MAKE_NEW_FILES_READONLY" value="false" />
<option name="SHOW_CORRUPTED_PROJECT_FILES" value="0" />
<option name="TAG_AFTER_PROJECT_COMMIT" value="false" />
<option name="OVERRIDE_EXISTING_TAG_FOR_PROJECT" value="true" />
<option name="TAG_AFTER_PROJECT_COMMIT_NAME" value="" />
<option name="CLEAN_COPY" value="false" />
</component>
<component name="DaemonCodeAnalyzer">
<disable_hints />
</component>
<component name="DebuggerManager">
<breakpoint_any>
<breakpoint>
<option name="NOTIFY_CAUGHT" value="true" />
<option name="NOTIFY_UNCAUGHT" value="true" />
<option name="ENABLED" value="false" />
<option name="SUSPEND_POLICY" value="SuspendAll" />
<option name="LOG_ENABLED" value="false" />
<option name="LOG_EXPRESSION_ENABLED" value="false" />
<option name="COUNT_FILTER_ENABLED" value="false" />
<option name="COUNT_FILTER" value="0" />
<option name="CONDITION_ENABLED" value="false" />
<option name="CLASS_FILTERS_ENABLED" value="false" />
<option name="INSTANCE_FILTERS_ENABLED" value="false" />
<option name="CONDITION" value="" />
<option name="LOG_MESSAGE" value="" />
</breakpoint>
<breakpoint>
<option name="NOTIFY_CAUGHT" value="true" />
<option name="NOTIFY_UNCAUGHT" value="true" />
<option name="ENABLED" value="false" />
<option name="SUSPEND_POLICY" value="SuspendAll" />
<option name="LOG_ENABLED" value="false" />
<option name="LOG_EXPRESSION_ENABLED" value="false" />
<option name="COUNT_FILTER_ENABLED" value="false" />
<option name="COUNT_FILTER" value="0" />
<option name="CONDITION_ENABLED" value="false" />
<option name="CLASS_FILTERS_ENABLED" value="false" />
<option name="INSTANCE_FILTERS_ENABLED" value="false" />
<option name="CONDITION" value="" />
<option name="LOG_MESSAGE" value="" />
</breakpoint>
</breakpoint_any>
<breakpoint_rules />
<ui_properties />
</component>
<component name="ErrorTreeViewConfiguration">
<option name="IS_AUTOSCROLL_TO_SOURCE" value="false" />
<option name="HIDE_WARNINGS" value="false" />
</component>
<component name="FavoritesViewImpl">
<favorites_list name="testnggen">
<option name="IS_AUTOSCROLL_TO_SOURCE" value="false" />
<option name="IS_SHOW_MEMBERS" value="false" />
<option name="IS_STRUCTURE_VIEW" value="false" />
<option name="IS_SHOW_MODULES" value="true" />
<option name="IS_FLATTEN_PACKAGES" value="false" />
<option name="IS_ABBREVIATION_PACKAGE_NAMES" value="false" />
<option name="IS_HIDE_EMPTY_MIDDLE_PACKAGES" value="false" />
<option name="IS_SHOW_LIBRARY_CONTENTS" value="true" />
</favorites_list>
<option name="myCurrentFavoritesList" value="testnggen" />
</component>
<component name="FileEditorManager">
<leaf>
<file leaf-file-name="DiffFileAction.java" pinned="false" current="true" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/src/org/intellij/plugins/testnggen/diff/DiffFileAction.java">
<provider selected="true" editor-type-id="text-editor">
<state line="21" column="58" selection-start="678" selection-end="678" vertical-scroll-proportion="0.22731614">
<folding />
</state>
</provider>
</entry>
</file>
</leaf>
</component>
<component name="FindManager">
<FindUsagesManager>
<setting name="OPEN_NEW_TAB" value="false" />
</FindUsagesManager>
</component>
<component name="HierarchyBrowserManager">
<option name="IS_AUTOSCROLL_TO_SOURCE" value="false" />
<option name="SORT_ALPHABETICALLY" value="false" />
<option name="HIDE_CLASSES_WHERE_METHOD_NOT_IMPLEMENTED" value="false" />
</component>
<component name="InspectionManager">
<option name="AUTOSCROLL_TO_SOURCE" value="false" />
<option name="SPLITTER_PROPORTION" value="0.5" />
<option name="GROUP_BY_SEVERITY" value="false" />
<option name="ANALYZE_TEST_SOURCES" value="false" />
<option name="SCOPE_TYPE" value="1" />
<option name="CUSTOM_SCOPE_NAME" value="Project Files" />
<profile name="Erik's Inspections" />
</component>
<component name="J2EEProjectPane">
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="testnggen.ipr" />
<option name="myItemType" value="com.intellij.j2ee.module.view.nodes.J2EEProjectNodeDescriptor" />
</PATH_ELEMENT>
</PATH>
<setting name="SHOW_AS_DEPLOYMENT_VIEW" value="false" />
</component>
<component name="ModuleEditorState">
<option name="LAST_EDITED_MODULE_NAME" value="testnggen" />
<option name="LAST_EDITED_TAB_NAME" value="Libraries (Classpath)" />
</component>
<component name="NamedScopeManager" />
<component name="PackagesPane">
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="testnggen.ipr" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PackageViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="testnggen" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PackageViewModuleNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="testnggen.ipr" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PackageViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="testnggen" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PackageViewModuleNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="org.intellij.plugins.testnggen" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PackageElementNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="testnggen.ipr" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PackageViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="testnggen" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PackageViewModuleNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="org.intellij.plugins.testnggen" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PackageElementNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="ui" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PackageElementNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="testnggen.ipr" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PackageViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="testnggen" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PackageViewModuleNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="org.intellij.plugins.testnggen" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PackageElementNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="diff" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PackageElementNode" />
</PATH_ELEMENT>
</PATH>
</component>
<component name="PerforceChangeBrowserSettings">
<option name="USE_CLIENT_FILTER" value="true" />
<option name="CLIENT" value="" />
</component>
<component name="PerforceDirect.Settings">
<option name="useP4CONFIG" value="true" />
<option name="port" value="jasper:1666" />
<option name="client" value="" />
<option name="user" value="" />
<option name="passwd" value="" />
<option name="showCmds" value="false" />
<option name="useNativeApi" value="true" />
<option name="pathToExec" value="p4" />
<option name="useCustomPathToExec" value="false" />
<option name="SYNC_FORCE" value="false" />
<option name="SYNC_RUN_RESOLVE" value="true" />
<option name="REVERT_UNCHANGED_FILES" value="true" />
<option name="CHARSET" value="none" />
<option name="SHOW_BRANCHES_HISTORY" value="true" />
<option name="ENABLED" value="true" />
<option name="USE_LOGIN" value="false" />
<option name="LOGIN_SILENTLY" value="false" />
<option name="INTEGRATE_BRANCH_NAME" />
<option name="INTEGRATE_CHANGELIST_NUM" value="-1" />
<option name="INTEGRATE_RUN_RESOLVE" value="true" />
<option name="INTEGRATE_REVERT_UNCHANGED" value="true" />
<option name="INTEGRATE_CHANGE_LIST_NUMBER" value="" />
<option name="INTEGRATE_CHANGE_LIST" value="false" />
<option name="INTEGRATE_REVERSE" value="false" />
</component>
<component name="ProjectLevelVcsManager">
<OptionsSetting value="true" id="Add" />
<OptionsSetting value="true" id="Remove" />
<OptionsSetting value="true" id="Checkin" />
<OptionsSetting value="true" id="Checkout" />
<OptionsSetting value="true" id="Update" />
<OptionsSetting value="true" id="Status" />
<OptionsSetting value="true" id="Edit" />
<OptionsSetting value="true" id="Undo Check Out" />
<OptionsSetting value="true" id="Compare with SourceSafe Version" />
<OptionsSetting value="true" id="Get Latest Version" />
<ConfirmationsSetting value="0" id="Add" />
<ConfirmationsSetting value="0" id="Remove" />
</component>
<component name="ProjectPane">
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="testnggen.ipr" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="testnggen" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="testnggen.ipr" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="testnggen" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="PsiDirectory:C:\Documents and Settings\erik\My Documents\My Downloads\testnggen" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="testnggen.ipr" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="testnggen" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="PsiDirectory:C:\Documents and Settings\erik\My Documents\My Downloads\testnggen" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="PsiDirectory:C:\Documents and Settings\erik\My Documents\My Downloads\testnggen\resources" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="testnggen.ipr" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="testnggen" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewModuleNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="PsiDirectory:C:\Documents and Settings\erik\My Documents\My Downloads\testnggen" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="PsiDirectory:C:\Documents and Settings\erik\My Documents\My Downloads\testnggen\META-INF" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
</component>
<component name="ProjectReloadState">
<option name="STATE" value="0" />
</component>
<component name="ProjectView">
<navigator currentView="PackagesPane" splitterProportion="0.5">
<flattenPackages />
<showMembers />
<showModules />
<showLibraryContents />
<hideEmptyPackages />
<abbreviatePackageNames />
<showStructure PackagesPane="false" ProjectPane="false" />
<autoscrollToSource />
<autoscrollFromSource />
<sortByType />
</navigator>
</component>
<component name="PropertiesComponent">
<property name="MemberChooser.copyJavadoc" value="false" />
<property name="GoToClass.includeLibraries" value="false" />
<property name="MemberChooser.showClasses" value="true" />
<property name="MemberChooser.sorted" value="false" />
<property name="RunManagerConfig.compileBeforeRunning" value="true" />
<property name="GoToFile.includeJavaFiles" value="false" />
<property name="GoToClass.toSaveIncludeLibraries" value="false" />
<property name="RunManagerConfig.showSettingsBeforeRunnig" value="true" />
</component>
<component name="ReadonlyStatusHandler">
<option name="SHOW_DIALOG" value="true" />
</component>
<component name="RecentsManager" />
<component name="Regex">
<option name="pos1" value="218" />
<option name="pos2" value="218" />
<option name="pos3" value="162" />
<option name="pos4" value="444" />
<option name="pos5" value="162" />
<option name="autoUpdate" value="true" />
<option name="referenceOn" value="false" />
<option name="referencePos" value="0" />
</component>
<component name="RestoreUpdateTree" />
<component name="RunManager">
<activeType name="TestNG" />
<configuration selected="false" default="true" type="Application" factoryName="Application">
<option name="MAIN_CLASS_NAME" />
<option name="VM_PARAMETERS" />
<option name="PROGRAM_PARAMETERS" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" />
<module name="" />
</configuration>
<configuration selected="false" default="true" type="Remote" factoryName="Remote">
<option name="USE_SOCKET_TRANSPORT" value="true" />
<option name="SERVER_MODE" value="false" />
<option name="SHMEM_ADDRESS" value="javadebug" />
<option name="HOST" value="localhost" />
<option name="PORT" value="5005" />
</configuration>
<configuration selected="false" default="true" type="JUnit" factoryName="JUnit">
<module name="" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" />
<option name="PACKAGE_NAME" />
<option name="MAIN_CLASS_NAME" />
<option name="METHOD_NAME" />
<option name="TEST_OBJECT" value="class" />
<option name="VM_PARAMETERS" />
<option name="PARAMETERS" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
<option name="ADDITIONAL_CLASS_PATH" />
<option name="TEST_SEARCH_SCOPE">
<value defaultName="wholeProject" />
</option>
</configuration>
<configuration selected="false" default="true" type="TestNG" factoryName="TestNG">
<module name="" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" />
<option name="SUITE_NAME" />
<option name="PACKAGE_NAME" />
<option name="MAIN_CLASS_NAME" />
<option name="METHOD_NAME" />
<option name="GROUP_NAME" />
<option name="TEST_OBJECT" value="CLASS" />
<option name="VM_PARAMETERS" />
<option name="PARAMETERS" />
<option name="WORKING_DIRECTORY" />
<option name="ADDITIONAL_CLASS_PATH" />
<option name="TEST_SEARCH_SCOPE">
<value defaultName="wholeProject" />
</option>
<properties />
</configuration>
<configuration selected="false" default="true" type="Applet" factoryName="Applet">
<module name="" />
<option name="MAIN_CLASS_NAME" />
<option name="HTML_FILE_NAME" />
<option name="HTML_USED" value="false" />
<option name="WIDTH" value="400" />
<option name="HEIGHT" value="300" />
<option name="POLICY_FILE" value="$APPLICATION_HOME_DIR$/bin/appletviewer.policy" />
<option name="VM_PARAMETERS" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" />
</configuration>
</component>
<component name="SelectInManager" />
<component name="StarteamConfiguration">
<option name="SERVER" value="" />
<option name="PORT" value="49201" />
<option name="USER" value="" />
<option name="PASSWORD" value="" />
<option name="PROJECT" value="" />
<option name="VIEW" value="" />
<option name="ALTERNATIVE_WORKING_PATH" value="" />
</component>
<component name="StructuralSearchPlugin" />
<component name="StructureViewFactory">
<option name="AUTOSCROLL_MODE" value="true" />
<option name="AUTOSCROLL_FROM_SOURCE" value="false" />
<option name="ACTIVE_ACTIONS" value="" />
</component>
<component name="SvnChangesBrowserSettings">
<option name="USE_AUTHOR_FIELD" value="true" />
<option name="AUTHOR" value="" />
<option name="LOCATION" value="" />
<option name="USE_PROJECT_SETTINGS" value="true" />
<option name="USE_ALTERNATE_LOCATION" value="false" />
</component>
<component name="SvnConfiguration">
<option name="USER" value="" />
<option name="PASSWORD" value="" />
<option name="PROCESS_UNRESOLVED" value="false" />
<configuration useDefault="true">C:\Documents and Settings\erik\Application Data\Subversion</configuration>
</component>
<component name="TodoView" selected-index="0">
<todo-panel id="selected-file">
<are-packages-shown value="false" />
<are-modules-shown value="false" />
<flatten-packages value="false" />
<is-autoscroll-to-source value="true" />
</todo-panel>
<todo-panel id="all">
<are-packages-shown value="true" />
<are-modules-shown value="false" />
<flatten-packages value="false" />
<is-autoscroll-to-source value="true" />
</todo-panel>
</component>
<component name="ToolWindowManager">
<frame x="-4" y="-4" width="1608" height="1208" extended-state="6" />
<editor active="true" />
<layout>
<window_info id="CVS" active="false" anchor="bottom" auto_hide="false" internal_type="docked" type="docked" visible="false" weight="0.33" order="8" />
<window_info id="Regex" active="false" anchor="bottom" auto_hide="false" internal_type="docked" type="docked" visible="false" weight="0.33" order="8" />
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="docked" type="docked" visible="false" weight="0.33" order="7" />
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="docked" type="docked" visible="true" weight="0.19151671" order="0" />
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="docked" type="docked" visible="false" weight="0.32980132" order="1" />
<window_info id="Jalopy" active="false" anchor="bottom" auto_hide="false" internal_type="docked" type="docked" visible="false" weight="0.33" order="8" />
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="docked" type="docked" visible="false" weight="0.25" order="1" />
<window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="docked" type="docked" visible="false" weight="0.32667875" order="8" />
<window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="docked" type="docked" visible="false" weight="0.4" order="6" />
<window_info id="Module Dependencies" active="false" anchor="right" auto_hide="false" internal_type="docked" type="docked" visible="false" weight="0.33" order="3" />
<window_info id="Dependency Viewer" active="false" anchor="bottom" auto_hide="false" internal_type="docked" type="docked" visible="false" weight="0.33" order="8" />
<window_info id="Favorites" active="false" anchor="right" auto_hide="false" internal_type="docked" type="docked" visible="false" weight="0.3293556" order="3" />
<window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="docked" type="docked" visible="true" weight="0.07390746" order="1" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="docked" type="docked" visible="false" weight="0.32980132" order="2" />
<window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="docked" type="docked" visible="false" weight="0.25" order="2" />
<window_info id="File View" active="false" anchor="right" auto_hide="false" internal_type="docked" type="docked" visible="false" weight="0.33" order="3" />
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="docked" type="docked" visible="false" weight="0.4" order="4" />
<window_info id="BSFConsole" active="false" anchor="bottom" auto_hide="false" internal_type="docked" type="docked" visible="false" weight="0.32980132" order="8" />
<window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="sliding" type="sliding" visible="false" weight="0.4" order="0" />
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="docked" type="docked" visible="false" weight="0.33" order="8" />
<window_info id="Web" active="false" anchor="left" auto_hide="false" internal_type="docked" type="docked" visible="false" weight="0.25" order="2" />
<window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="docked" type="docked" visible="false" weight="0.33" order="0" />
<window_info id="EJB" active="false" anchor="bottom" auto_hide="false" internal_type="docked" type="docked" visible="false" weight="0.25" order="3" />
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="docked" type="docked" visible="false" weight="0.25" order="5" />
</layout>
</component>
<component name="VCS.FileViewConfiguration">
<option name="SELECTED_STATUSES" value="DEFAULT" />
<option name="SELECTED_COLUMNS" value="DEFAULT" />
<option name="SHOW_FILTERS" value="true" />
<option name="CUSTOMIZE_VIEW" value="true" />
<option name="SHOW_FILE_HISTORY_AS_TREE" value="true" />
</component>
<component name="VcsManagerConfiguration">
<option name="CHECK_CODE_SMELLS_BEFORE_PROJECT_COMMIT" value="true" />
<option name="PUT_FOCUS_INTO_COMMENT" value="false" />
<option name="FORCE_NON_EMPTY_COMMENT" value="false" />
<option name="LAST_COMMIT_MESSAGE" />
<option name="SAVE_LAST_COMMIT_MESSAGE" value="true" />
<option name="CHECKIN_DIALOG_SPLITTER_PROPORTION" value="0.8" />
<option name="OPTIMIZE_IMPORTS_BEFORE_PROJECT_COMMIT" value="false" />
<option name="OPTIMIZE_IMPORTS_BEFORE_FILE_COMMIT" value="false" />
<option name="REFORMAT_BEFORE_PROJECT_COMMIT" value="false" />
<option name="REFORMAT_BEFORE_FILE_COMMIT" value="false" />
<option name="FILE_HISTORY_DIALOG_COMMENTS_SPLITTER_PROPORTION" value="0.8" />
<option name="FILE_HISTORY_DIALOG_SPLITTER_PROPORTION" value="0.5" />
<option name="ERROR_OCCURED" value="false" />
<option name="ACTIVE_VCS_NAME" value="svn" />
<option name="UPDATE_GROUP_BY_PACKAGES" value="false" />
<option name="SHOW_FILE_HISTORY_AS_TREE" value="false" />
<option name="FILE_HISTORY_SPLITTER_PROPORTION" value="0.6" />
</component>
<component name="VssConfiguration">
<option name="CLIENT_PATH" value="" />
<option name="SRCSAFEINI_PATH" value="" />
<option name="USER_NAME" value="" />
<option name="PWD" value="" />
<option name="VSS_IS_INITIALIZED" value="true" />
<CheckoutOptions>
<option name="COMMENT" value="" />
<option name="DO_NOT_GET_LATEST_VERSION" value="false" />
<option name="REPLACE_WRITABLE" value="false" />
<option name="RECURSIVE" value="false" />
</CheckoutOptions>
<CheckinOptions>
<option name="COMMENT" value="" />
<option name="KEEP_CHECKED_OUT" value="false" />
<option name="RECURSIVE" value="false" />
</CheckinOptions>
<AddOptions>
<option name="COMMENT" value="" />
<option name="STORE_ONLY_LATEST_VERSION" value="false" />
<option name="CHECK_OUT_IMMEDIATELY" value="false" />
<option name="FILE_TYPE" value="0" />
</AddOptions>
<UndocheckoutOptions>
<option name="MAKE_WRITABLE" value="false" />
<option name="REPLACE_LOCAL_COPY" value="0" />
<option name="RECURSIVE" value="false" />
</UndocheckoutOptions>
<GetOptions>
<option name="REPLACE_WRITABLE" value="0" />
<option name="MAKE_WRITABLE" value="false" />
<option name="RECURSIVE" value="false" />
</GetOptions>
</component>
<component name="antWorkspaceConfiguration">
<option name="IS_AUTOSCROLL_TO_SOURCE" value="false" />
<option name="FILTER_TARGETS" value="false" />
<buildFile url="file://$PROJECT_DIR$/build.xml">
<antCommandLine value="" />
<runInBackground value="false" />
<targetFilters>
<filter targetName="compile" isVisible="true" />
<filter targetName="init" isVisible="true" />
<filter targetName="clean" isVisible="true" />
<filter targetName="deploy" isVisible="true" />
<filter targetName="all" isVisible="true" />
</targetFilters>
<treeView value="true" />
<verbose value="true" />
<viewClosedWhenNoErrors value="false" />
</buildFile>
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/resources/testnggen.vm">
<provider selected="true" editor-type-id="text-editor">
<state line="66" column="27" selection-start="1883" selection-end="1883" vertical-scroll-proportion="0.5641026">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/org/intellij/plugins/testnggen/util/StringUtil.java">
<provider selected="true" editor-type-id="text-editor">
<state line="36" column="12" selection-start="1118" selection-end="1118" vertical-scroll-proportion="0.33333334">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/org/intellij/plugins/testnggen/util/GenUtil.java">
<provider selected="true" editor-type-id="text-editor">
<state line="122" column="60" selection-start="3799" selection-end="3799" vertical-scroll-proportion="0.33333334">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/org/intellij/plugins/testnggen/Const.java">
<provider selected="true" editor-type-id="text-editor">
<state line="10" column="13" selection-start="208" selection-end="208" vertical-scroll-proportion="0.16553067">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/org/intellij/plugins/testnggen/GeneratorContext.java">
<provider selected="true" editor-type-id="text-editor">
<state line="13" column="13" selection-start="290" selection-end="290" vertical-scroll-proportion="0.15579358">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/org/intellij/plugins/testnggen/TestNGGenerator.java">
<provider selected="true" editor-type-id="text-editor">
<state line="10" column="13" selection-start="228" selection-end="228" vertical-scroll-proportion="0.16553067">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/org/intellij/plugins/testnggen/FileCreator.java">
<provider selected="true" editor-type-id="text-editor">
<state line="28" column="13" selection-start="965" selection-end="965" vertical-scroll-proportion="-0.70496595">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/org/intellij/plugins/testnggen/TestNGGeneratorActionHandler.java">
<provider selected="true" editor-type-id="text-editor">
<state line="175" column="45" selection-start="6887" selection-end="6887" vertical-scroll-proportion="0.37098345">
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/org/intellij/plugins/testnggen/diff/DiffPanelHelper.java">
<provider selected="true" editor-type-id="text-editor">
<state line="14" column="19" selection-start="387" selection-end="387" vertical-scroll-proportion="0.13242453">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/org/intellij/plugins/testnggen/diff/DiffViewerFrame.java">
<provider selected="true" editor-type-id="text-editor">
<state line="18" column="19" selection-start="617" selection-end="617" vertical-scroll-proportion="0.29795521">
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/org/intellij/plugins/testnggen/ui/TestNGGenConfig.java">
<provider selected="true" editor-type-id="text-editor">
<state line="43" column="44" selection-start="1877" selection-end="1877" vertical-scroll-proportion="0.36416748">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/org/intellij/plugins/testnggen/diff/DiffFileToken.java">
<provider selected="true" editor-type-id="text-editor">
<state line="12" column="19" selection-start="345" selection-end="345" vertical-scroll-proportion="0.13242453">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/org/intellij/plugins/testnggen/TestNGGeneratorAction.java">
<provider selected="true" editor-type-id="text-editor">
<state line="15" column="13" selection-start="472" selection-end="472" vertical-scroll-proportion="0.16553067">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/org/intellij/plugins/testnggen/diff/DiffFileAction.java">
<provider selected="true" editor-type-id="text-editor">
<state line="21" column="58" selection-start="678" selection-end="678" vertical-scroll-proportion="0.22731614">
<folding />
</state>
</provider>
</entry>
</component>
</project>