diff --git a/.classpath b/.classpath new file mode 100644 index 0000000000000000000000000000000000000000..a83f947c5efa7d0e7c76719a77eb9bf2f3aa9e20 --- /dev/null +++ b/.classpath @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> + <classpathentry kind="src" path="src"/> + <classpathentry exported="true" kind="lib" path="bin" sourcepath="bin"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"> + <attributes> + <attribute name="module" value="true"/> + </attributes> + </classpathentry> + <classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..4e6a73b2668d5862fede9b021b27cbd57548e2f2 --- /dev/null +++ b/.gitignore @@ -0,0 +1,75 @@ +############################## +## Java +############################## +.mtj.tmp/ +*.class +*.jar +*.war +*.ear +*.nar +hs_err_pid* +.svn/ + +############################## +## Maven +############################## +target/ +pom.xml.tag +pom.xml.releaseBackup +pom.xml.versionsBackup +pom.xml.next +release.properties +dependency-reduced-pom.xml +buildNumber.properties +.mvn/timing.properties +.mvn/wrapper/maven-wrapper.jar + +############################## +## Gradle +############################## +bin/ +build/ +.gradle +.gradletasknamecache +gradle-app.setting +!gradle-wrapper.jar + +############################## +## IntelliJ +############################## +out/ +.idea/ +.idea_modules/ +*.iml +*.ipr +*.iws + +############################## +## Eclipse +############################## +.settings/ +bin/ +tmp/ +.metadata +*.tmp +*.bak +*.swp +*~.nib +local.properties +.loadpath + +############################## +## NetBeans +############################## +nbproject/private/ +build/ +nbbuild/ +dist/ +nbdist/ +nbactions.xml +nb-configuration.xml + +############################## +## OS X +############################## +.DS_Store \ No newline at end of file diff --git a/.pmd b/.pmd new file mode 100644 index 0000000000000000000000000000000000000000..8e2b7180da6c57d32b16662769d92f06c3470528 --- /dev/null +++ b/.pmd @@ -0,0 +1,917 @@ +<?xml version="1.0" encoding="UTF-8"?> +<pmd> + <useProjectRuleSet>false</useProjectRuleSet> + <ruleSetFile>.ruleset</ruleSetFile> + <rules> + <rule> + <name>LooseCoupling</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>CloneMethodMustImplementCloneable</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>UnusedImports</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>SignatureDeclareThrowsException</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>IfStmtsMustUseBraces</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>WhileLoopsMustUseBraces</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>IfElseStmtsMustUseBraces</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>ForLoopsMustUseBraces</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>UseSingleton</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>SimplifyBooleanReturns</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>SimplifyBooleanExpressions</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>SwitchStmtsShouldHaveDefault</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>AvoidDeeplyNestedIfStmts</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>AvoidReassigningParameters</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>SwitchDensity</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>ConstructorCallsOverridableMethod</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>AccessorClassGeneration</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>FinalFieldCouldBeStatic</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>CloseResource</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>NonStaticInitializer</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>DefaultLabelNotLastInSwitchStmt</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>NonCaseLabelInSwitchStatement</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>OptimizableToArrayCall</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>BadComparison</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>EqualsNull</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>ConfusingTernary</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>InstantiationToGetClass</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>IdempotentOperations</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>SimpleDateFormatNeedsLocale</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>ImmutableField</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>UseLocaleWithCaseConversions</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>AvoidProtectedFieldInFinalClass</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>AssignmentToNonFinalStatic</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>MissingStaticMethodInNonInstantiatableClass</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>AvoidSynchronizedAtMethodLevel</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>MissingBreakInSwitch</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>UseNotifyAllInsteadOfNotify</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>AvoidInstanceofChecksInCatchClause</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>AbstractClassWithoutAbstractMethod</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>SimplifyConditional</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>CompareObjectsWithEquals</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>PositionLiteralsFirstInComparisons</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>UnnecessaryLocalBeforeReturn</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>NonThreadSafeSingleton</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>UncommentedEmptyMethod</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>UncommentedEmptyConstructor</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>AvoidConstantsInterface</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>UnsynchronizedStaticDateFormatter</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>PreserveStackTrace</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>UseCollectionIsEmpty</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>ClassWithOnlyPrivateConstructorsShouldBeFinal</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>EmptyMethodInAbstractClassShouldBeAbstract</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>SingularField</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>AvoidCatchingThrowable</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>SignatureDeclareThrowsException</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>ExceptionAsFlowControl</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>AvoidCatchingNPE</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>AvoidThrowingRawExceptionTypes</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>AvoidThrowingNullPointerException</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>AvoidRethrowingException</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>DoNotExtendJavaLangError</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>UnusedPrivateField</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>UnusedLocalVariable</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>UnusedPrivateMethod</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>UnusedFormalParameter</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>MoreThanOneLogger</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>LoggerIsNotStaticFinal</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>SystemPrintln</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>AvoidPrintStackTrace</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>AvoidDuplicateLiterals</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>StringInstantiation</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>StringToString</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>InefficientStringBuffering</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>UnnecessaryCaseChange</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>UseStringBufferLength</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>AppendCharacterWithChar</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>ConsecutiveLiteralAppends</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>UseIndexOfChar</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>InefficientEmptyStringCheck</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>InsufficientStringBufferDeclaration</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>UselessStringValueOf</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>StringBufferInstantiationWithChar</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>UseEqualsToCompareStrings</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>ReplaceVectorWithList</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>ReplaceHashtableWithMap</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>ReplaceEnumerationWithIterator</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>AvoidEnumAsIdentifier</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>AvoidAssertAsIdentifier</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>IntegerInstantiation</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>ByteInstantiation</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>ShortInstantiation</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>LongInstantiation</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>JUnit4TestShouldUseBeforeAnnotation</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>JUnit4TestShouldUseAfterAnnotation</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>JUnit4TestShouldUseTestAnnotation</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>JUnit4SuitesShouldUseSuiteAnnotation</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>JUnitUseExpected</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>UseProperClassLoader</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>MDBAndSessionBeanNamingConvention</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>RemoteSessionInterfaceNamingConvention</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>LocalInterfaceSessionNamingConvention</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>LocalHomeNamingConvention</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>RemoteInterfaceNamingConvention</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>DoNotCallSystemExit</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>StaticEJBFieldShouldBeFinal</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>DoNotUseThreads</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>LocalVariableCouldBeFinal</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>MethodArgumentCouldBeFinal</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>AvoidInstantiatingObjectsInLoops</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>UseArrayListInsteadOfVector</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>SimplifyStartsWith</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>UseStringBufferForStringAppends</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>UseArraysAsList</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>AvoidArrayLoops</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>UnnecessaryWrapperObjectCreation</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>AddEmptyString</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>EmptyCatchBlock</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>EmptyIfStmt</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>EmptyWhileStmt</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>EmptyTryBlock</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>EmptyFinallyBlock</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>EmptySwitchStatements</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>JumbledIncrementer</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>ForLoopShouldBeWhileLoop</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>UnnecessaryConversionTemporary</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>OverrideBothEqualsAndHashcode</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>DoubleCheckedLocking</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>ReturnFromFinallyBlock</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>EmptySynchronizedBlock</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>UnnecessaryReturn</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>EmptyStaticInitializer</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>UnconditionalIfStatement</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>EmptyStatementNotInLoop</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>BooleanInstantiation</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>UnnecessaryFinalModifier</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>CollapsibleIfStatements</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>UselessOverridingMethod</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>ClassCastExceptionWithToArray</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>AvoidDecimalLiteralsInBigDecimalConstructor</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>UselessOperationOnImmutable</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>MisplacedNullCheck</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>UnusedNullCheckInEquals</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>AvoidThreadGroup</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>BrokenNullCheck</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>BigIntegerInstantiation</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>AvoidUsingOctalValues</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>AvoidUsingHardCodedIP</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>CheckResultSet</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>MethodReturnsInternalArray</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>ArrayIsStoredDirectly</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>CouplingBetweenObjects</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>ExcessiveImports</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>LooseCoupling</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>DuplicateImports</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>DontImportJavaLang</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>UnusedImports</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>ImportFromSamePackage</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>TooManyStaticImports</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>JUnitStaticSuite</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>JUnitSpelling</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>JUnitAssertionsShouldIncludeMessage</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>JUnitTestsShouldIncludeAssert</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>TestClassWithoutTestCases</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>UnnecessaryBooleanAssertion</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>UseAssertEqualsInsteadOfAssertTrue</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>UseAssertSameInsteadOfAssertTrue</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>UseAssertNullInsteadOfAssertTrue</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>SimplifyBooleanAssertion</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>UnnecessaryConstructor</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>NullAssignment</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>OnlyOneReturn</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>UnusedModifier</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>AssignmentInOperand</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>AtLeastOneConstructor</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>DontImportSun</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>SuspiciousOctalEscape</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>CallSuperInConstructor</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>UnnecessaryParentheses</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>DefaultPackage</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>BooleanInversion</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>DataflowAnomalyAnalysis</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>AvoidFinalLocalVariable</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>AvoidUsingShortType</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>AvoidUsingVolatile</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>AvoidUsingNativeCode</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>AvoidAccessibilityAlteration</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>ShortVariable</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>LongVariable</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>ShortMethodName</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>VariableNamingConventions</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>MethodNamingConventions</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>ClassNamingConventions</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>AbstractNaming</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>AvoidDollarSigns</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>MethodWithSameNameAsEnclosingClass</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>SuspiciousHashcodeMethodName</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>SuspiciousConstantFieldName</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>SuspiciousEqualsMethodName</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>AvoidFieldNameMatchingTypeName</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>AvoidFieldNameMatchingMethodName</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>NoPackage</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>PackageCase</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>MisleadingVariableName</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>BooleanGetMethodName</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>NPathComplexity</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>ExcessiveMethodLength</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>ExcessiveParameterList</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>ExcessiveClassLength</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>CyclomaticComplexity</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>ExcessivePublicCount</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>TooManyFields</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>NcssMethodCount</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>NcssTypeCount</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>NcssConstructorCount</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>EmptyFinalizer</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>FinalizeOnlyCallsSuperFinalize</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>FinalizeOverloaded</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>FinalizeDoesNotCallSuperFinalize</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>FinalizeShouldBeProtected</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>AvoidCallingFinalize</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>UseCorrectExceptionLogging</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>ProperLogger</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>BeanMembersShouldSerialize</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>MissingSerialVersionUID</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>ProperCloneImplementation</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>CloneThrowsCloneNotSupportedException</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + <rule> + <name>CloneMethodMustImplementCloneable</name> + <ruleset>pmd-eclipse</ruleset> + </rule> + </rules> + <includeDerivedFiles>false</includeDerivedFiles> + <violationsAsErrors>true</violationsAsErrors> +</pmd> diff --git a/.project b/.project new file mode 100644 index 0000000000000000000000000000000000000000..c44246535d2419faf615465f8d70cab6f8116ce4 --- /dev/null +++ b/.project @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>comtestplugin</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.ManifestBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.SchemaBuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.pde.PluginNature</nature> + <nature>org.eclipse.jdt.core.javanature</nature> + </natures> + <linkedResources> + <link> + <name>src/comtest</name> + <type>2</type> + <location>E:/kurssit/ohj2/comtest/comtest</location> + </link> + </linkedResources> +</projectDescription> diff --git a/META-INF/MANIFEST.MF b/META-INF/MANIFEST.MF new file mode 100644 index 0000000000000000000000000000000000000000..89adc5bb24f58003e60684f7ce9b2c81194d0f81 --- /dev/null +++ b/META-INF/MANIFEST.MF @@ -0,0 +1,16 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: %Bundle-Name +Bundle-SymbolicName: comtestplug; singleton:=true +Bundle-Version: 1.0.13 +Bundle-Activator: comtestplug.Activator +Bundle-Localization: plugin +Require-Bundle: org.eclipse.ui, + org.eclipse.core.runtime, + org.eclipse.core.resources, + org.eclipse.jdt.junit, + org.eclipse.debug.ui, + org.eclipse.jdt.ui, + org.eclipse.jface.text +Bundle-ActivationPolicy: lazy +Bundle-ClassPath: bin/ diff --git a/build.properties b/build.properties new file mode 100644 index 0000000000000000000000000000000000000000..c6e7f705957fe4d17978b676e075518b3a2900a0 --- /dev/null +++ b/build.properties @@ -0,0 +1,14 @@ +output.. = bin/ +bin.includes = META-INF/,\ + .classpath,\ + build.properties,\ + .settings/,\ + bin/,\ + plugin.xml,\ + plugin.properties +jars.compile.order = . +bin.excludes = bin/comtest/Mock.class,\ + bin/comtest/ComTestTest.class,\ + bin/comtest/StringUtilitiesTest.class,\ + bin/comtest/StringsTest.class +src.includes = src/ diff --git a/build2.xml b/build2.xml new file mode 100644 index 0000000000000000000000000000000000000000..e93be047adf23841217d12af05a03a9a9a2c2df0 --- /dev/null +++ b/build2.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project default="plugin_export" name="build"> + <target name="plugin_export"> + <pde.exportPlugins destination="e:\kurssit\ohj2\comtestplugin\plugins" exportSource="false" exportType="directory" filename="comtestplug_1.0.8.jar" plugins="comtestplug" useJARFormat="true"/> + </target> +</project> diff --git a/plugin.properties b/plugin.properties new file mode 100644 index 0000000000000000000000000000000000000000..c3b98733ad86ab4844676b2adcd34489985f6533 --- /dev/null +++ b/plugin.properties @@ -0,0 +1,2 @@ +#Properties file for comtestplug +Bundle-Name = Comtestplug Plug-in \ No newline at end of file diff --git a/plugin.xml b/plugin.xml new file mode 100644 index 0000000000000000000000000000000000000000..e88a78273029e5093a9531eb464a54a81d8151dc --- /dev/null +++ b/plugin.xml @@ -0,0 +1,170 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?eclipse version="3.2"?> +<plugin> +<!-- Plugin for ComTest. Category, actionSets and actions + The default keyshotcuts does not work??? + Creates many instances of actions plugin, one + for PopUps and one for Windows. See Java comments from + GenerateTest.java. + + The shortcut is possible to change manually from: + Window/Preferences/General/Keys/Modify/ + Category: ComTest. + If you choose shortcut that is allready in use, remove + the old one. The shortcut works only for last item run + from PopUpMenu. Can somebody fix that? + + It could be nice to have also toolbar icon? + + Vesa Lappalainen 2.12.2007 + + To develop this plugin, + 1) first pick ComTest project from: + https://svn.cc.jyu.fi/srv/svn/comtest/proto/vesal/trunk (to directory comtest) + 2) then pick comtestplugin project from + https://svn.cc.jyu.fi/srv/svn/comtest/proto/ji/trunk (to directory comtestplugin) + 3) then try to change the Eclipse project variabale + comtestfolder + needed. I have that variable in WorkSpace configuration: + .metadata\.plugins\org.eclipse.core.runtime\.settings\org.eclipse.core.resources.prefs: + pathvariable.comtestfolder=E\:/kurssit/ohj2/comtest/comtest + + Create Java project comtest from directory ComTest + Create Plugin project comtestplugin from directory comtestplugin + 4) Now ComTest should be a linked directory under comtestplug/src path. + This is done by .project file like: + <linkedResources> + <link> + <name>src/comtest</name> + <type>2</type> + <locationURI>comtestfolder</locationURI> + </link> + </linkedResources> + Then variable comtestfolder is defined in: + Window/Preferences/General/Workspace/Linked Resources + and then add comtestfolder f.ex to + e:\kurssit\ohj2\comtest\comtest + 5) Run test or debug by selecting the plugin project name by + right mouse button and then run or debug as Eclipse Application + 6) To create a new plugin .jar open the file plugin.xml in Eclipse + and go Overview-tab and hit link "Export Wizard". + 7) Please choose directory so that it is your comtestplug + dircetory. + 8) After creating the new plugin, copy the plugin to your Eclipse + plugins directory and restart Eclipse. + 9) Please commit your changes. And please comment to source code + what you have done. + --> + + + <extension point="org.eclipse.ui.commands"> + <category + name="ComTest" + description="ComTest actions" + id="comtestplug.category.comtest" /> + <command + name="ComTest run" + description="Run comtest plugin" + categoryId="comtestplug.category.comtest" + id="comtestplug.generateAndRun.run" /> + </extension> + + <extension point = "org.eclipse.ui.actionSets"> + <actionSet id="comtestplug.actionSet" label="ComTest Actions" visible="true"> + +<!-- <menu id="comtest.RunMenu" + label="ComTest Menu" + path="additions"> + <separator name="group1" /> + <separator name="option1" /> + </menu> +--> + <action + class="comtestplug.popup.actions.GenerateTestAndRunJUnit" + id="comtestplug.generateAndRun.action" + label="Generate, Run JUnit, Action" + tooltip="Generate test and then run test" + definitionId="comtestplug.generateAndRun.run" + > + </action> + </actionSet> + </extension> + + <extension + point="org.eclipse.ui.popupMenus"> + <objectContribution + adaptable="true" + id="comtestplug.contribution1" + nameFilter="*.java" + objectClass="org.eclipse.core.resources.IFile"> + <menu + label="ComTest" + path="additions" + id="comtestplug.menu"> + <separator + name="group"> + </separator> + </menu> + <action + label="Generate tests" + class="comtestplug.popup.actions.GenerateTest" + menubarPath="comtestplug.menu/group" + id="comtestplug.newAction" + > + </action> + <action + class="comtestplug.popup.actions.GenerateTestAndRunJUnit" + id="comtestplug.generateAndRun" + label="Generate, Run JUnit" + tooltip="Generate test and then run test" + menubarPath="comtestplug.menu/group" + definitionId="comtestplug.generateAndRun.run" + > + <!-- enablesFor="1" OK for many but run just the firts --> + </action> + </objectContribution> + </extension> + <extension point="org.eclipse.ui.bindings"> +<!-- + for some reason (object not created) can not reference to comtestplug.generateAndRun.run... + <key sequence="Ctrl+3" commandId="comtestplug.generateAndRun.action.run" schemeId="org.eclipse.ui.defaultAcceleratorConfiguration" contextId="org.eclipse.ui.contexts.window" /> + <key sequence="Ctrl+4" commandId="comtestplug.generateAndRun.run" schemeId="org.eclipse.ui.defaultAcceleratorConfiguration" /> +--> + </extension> + + <extension + point="org.eclipse.ui.preferencePages"> + <page + name="ComTest Preferences" + class="comtestplug.preferences.ComTestPreferencePage" + id="comtestplug.preferences.ComTestPreferencePage"> + </page> + </extension> + <extension + point="org.eclipse.core.runtime.preferences"> + <initializer + class="comtestplug.preferences.PreferenceInitializer"> + </initializer> + </extension> + <extension + point="org.eclipse.ui.propertyPages"> + <page + objectClass="org.eclipse.core.resources.IFile" + name="ComTest Page" + nameFilter="*.*" + class="comtestplug.properties.ComTestPropertyPage" + id="comtestplug.properties.samplePropertyPage"> + </page> + </extension> + <extension + id="id1" + point="org.eclipse.jdt.ui.javaCompletionProposalComputer"> + <javaCompletionProposalComputer + activate="true" + categoryId="org.eclipse.ui.texteditor.textual_proposals" + class="comtestplug.ui.text.java.ComtestProposalComputer"> + <partition type="__java_javadoc"/> + </javaCompletionProposalComputer> + </extension> + +</plugin> diff --git a/plugin13.xml b/plugin13.xml new file mode 100644 index 0000000000000000000000000000000000000000..1baa344dbef5ec3832edaaeabcac6960279244ee --- /dev/null +++ b/plugin13.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project default="plugin_export" name="build"> + <target name="plugin_export"> + <pde.exportPlugins destination="e:\temp" exportSource="false" exportType="zip" filename="comtest13.jar.zip" plugins="comtestplug" useJARFormat="true"/> + </target> +</project> diff --git a/plugin9.xml b/plugin9.xml new file mode 100644 index 0000000000000000000000000000000000000000..c231e36ff7b35c9ace04ec4f66c710fb7e8c8725 --- /dev/null +++ b/plugin9.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project default="plugin_export" name="build"> + <target name="plugin_export"> + <pde.exportPlugins destination="E:\kurssit\ohj2\comtestplugin" exportSource="false" exportType="directory" plugins="comtestplug" useJARFormat="true"/> + </target> + <taskdef resource="net/sf/antcontrib/antcontrib.properties" classpath="E:/c/Java_ME_platform_SDK_3.0/toolbar/mobility8/modules/ext/ant-contrib-1.0b3.jar"/> + <taskdef resource="net/sf/antcontrib/antlib.xml" classpath="E:/c/Java_ME_platform_SDK_3.0/toolbar/mobility8/modules/ext/ant-contrib-1.0b3.jar"/> +</project> diff --git a/plugins/plugins/comtestplug_1.0.20/.classpath b/plugins/plugins/comtestplug_1.0.20/.classpath new file mode 100644 index 0000000000000000000000000000000000000000..a83f947c5efa7d0e7c76719a77eb9bf2f3aa9e20 --- /dev/null +++ b/plugins/plugins/comtestplug_1.0.20/.classpath @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> + <classpathentry kind="src" path="src"/> + <classpathentry exported="true" kind="lib" path="bin" sourcepath="bin"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"> + <attributes> + <attribute name="module" value="true"/> + </attributes> + </classpathentry> + <classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/plugins/plugins/comtestplug_1.0.20/META-INF/MANIFEST.MF b/plugins/plugins/comtestplug_1.0.20/META-INF/MANIFEST.MF new file mode 100644 index 0000000000000000000000000000000000000000..7b87f27c894ebf9f222d347ec0bbf50edb25b2e7 --- /dev/null +++ b/plugins/plugins/comtestplug_1.0.20/META-INF/MANIFEST.MF @@ -0,0 +1,16 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: %Bundle-Name +Bundle-SymbolicName: comtestplug; singleton:=true +Bundle-Version: 1.0.20 +Bundle-Activator: comtestplug.Activator +Bundle-Localization: plugin +Require-Bundle: org.eclipse.ui, + org.eclipse.core.runtime, + org.eclipse.core.resources, + org.eclipse.jdt.junit, + org.eclipse.debug.ui, + org.eclipse.jdt.ui, + org.eclipse.jface.text +Bundle-ActivationPolicy: lazy +Bundle-ClassPath: bin/ diff --git a/plugins/plugins/comtestplug_1.0.20/build.properties b/plugins/plugins/comtestplug_1.0.20/build.properties new file mode 100644 index 0000000000000000000000000000000000000000..c6e7f705957fe4d17978b676e075518b3a2900a0 --- /dev/null +++ b/plugins/plugins/comtestplug_1.0.20/build.properties @@ -0,0 +1,14 @@ +output.. = bin/ +bin.includes = META-INF/,\ + .classpath,\ + build.properties,\ + .settings/,\ + bin/,\ + plugin.xml,\ + plugin.properties +jars.compile.order = . +bin.excludes = bin/comtest/Mock.class,\ + bin/comtest/ComTestTest.class,\ + bin/comtest/StringUtilitiesTest.class,\ + bin/comtest/StringsTest.class +src.includes = src/ diff --git a/plugins/plugins/comtestplug_1.0.20/plugin.properties b/plugins/plugins/comtestplug_1.0.20/plugin.properties new file mode 100644 index 0000000000000000000000000000000000000000..c3b98733ad86ab4844676b2adcd34489985f6533 --- /dev/null +++ b/plugins/plugins/comtestplug_1.0.20/plugin.properties @@ -0,0 +1,2 @@ +#Properties file for comtestplug +Bundle-Name = Comtestplug Plug-in \ No newline at end of file diff --git a/plugins/plugins/comtestplug_1.0.20/plugin.xml b/plugins/plugins/comtestplug_1.0.20/plugin.xml new file mode 100644 index 0000000000000000000000000000000000000000..e88a78273029e5093a9531eb464a54a81d8151dc --- /dev/null +++ b/plugins/plugins/comtestplug_1.0.20/plugin.xml @@ -0,0 +1,170 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?eclipse version="3.2"?> +<plugin> +<!-- Plugin for ComTest. Category, actionSets and actions + The default keyshotcuts does not work??? + Creates many instances of actions plugin, one + for PopUps and one for Windows. See Java comments from + GenerateTest.java. + + The shortcut is possible to change manually from: + Window/Preferences/General/Keys/Modify/ + Category: ComTest. + If you choose shortcut that is allready in use, remove + the old one. The shortcut works only for last item run + from PopUpMenu. Can somebody fix that? + + It could be nice to have also toolbar icon? + + Vesa Lappalainen 2.12.2007 + + To develop this plugin, + 1) first pick ComTest project from: + https://svn.cc.jyu.fi/srv/svn/comtest/proto/vesal/trunk (to directory comtest) + 2) then pick comtestplugin project from + https://svn.cc.jyu.fi/srv/svn/comtest/proto/ji/trunk (to directory comtestplugin) + 3) then try to change the Eclipse project variabale + comtestfolder + needed. I have that variable in WorkSpace configuration: + .metadata\.plugins\org.eclipse.core.runtime\.settings\org.eclipse.core.resources.prefs: + pathvariable.comtestfolder=E\:/kurssit/ohj2/comtest/comtest + + Create Java project comtest from directory ComTest + Create Plugin project comtestplugin from directory comtestplugin + 4) Now ComTest should be a linked directory under comtestplug/src path. + This is done by .project file like: + <linkedResources> + <link> + <name>src/comtest</name> + <type>2</type> + <locationURI>comtestfolder</locationURI> + </link> + </linkedResources> + Then variable comtestfolder is defined in: + Window/Preferences/General/Workspace/Linked Resources + and then add comtestfolder f.ex to + e:\kurssit\ohj2\comtest\comtest + 5) Run test or debug by selecting the plugin project name by + right mouse button and then run or debug as Eclipse Application + 6) To create a new plugin .jar open the file plugin.xml in Eclipse + and go Overview-tab and hit link "Export Wizard". + 7) Please choose directory so that it is your comtestplug + dircetory. + 8) After creating the new plugin, copy the plugin to your Eclipse + plugins directory and restart Eclipse. + 9) Please commit your changes. And please comment to source code + what you have done. + --> + + + <extension point="org.eclipse.ui.commands"> + <category + name="ComTest" + description="ComTest actions" + id="comtestplug.category.comtest" /> + <command + name="ComTest run" + description="Run comtest plugin" + categoryId="comtestplug.category.comtest" + id="comtestplug.generateAndRun.run" /> + </extension> + + <extension point = "org.eclipse.ui.actionSets"> + <actionSet id="comtestplug.actionSet" label="ComTest Actions" visible="true"> + +<!-- <menu id="comtest.RunMenu" + label="ComTest Menu" + path="additions"> + <separator name="group1" /> + <separator name="option1" /> + </menu> +--> + <action + class="comtestplug.popup.actions.GenerateTestAndRunJUnit" + id="comtestplug.generateAndRun.action" + label="Generate, Run JUnit, Action" + tooltip="Generate test and then run test" + definitionId="comtestplug.generateAndRun.run" + > + </action> + </actionSet> + </extension> + + <extension + point="org.eclipse.ui.popupMenus"> + <objectContribution + adaptable="true" + id="comtestplug.contribution1" + nameFilter="*.java" + objectClass="org.eclipse.core.resources.IFile"> + <menu + label="ComTest" + path="additions" + id="comtestplug.menu"> + <separator + name="group"> + </separator> + </menu> + <action + label="Generate tests" + class="comtestplug.popup.actions.GenerateTest" + menubarPath="comtestplug.menu/group" + id="comtestplug.newAction" + > + </action> + <action + class="comtestplug.popup.actions.GenerateTestAndRunJUnit" + id="comtestplug.generateAndRun" + label="Generate, Run JUnit" + tooltip="Generate test and then run test" + menubarPath="comtestplug.menu/group" + definitionId="comtestplug.generateAndRun.run" + > + <!-- enablesFor="1" OK for many but run just the firts --> + </action> + </objectContribution> + </extension> + <extension point="org.eclipse.ui.bindings"> +<!-- + for some reason (object not created) can not reference to comtestplug.generateAndRun.run... + <key sequence="Ctrl+3" commandId="comtestplug.generateAndRun.action.run" schemeId="org.eclipse.ui.defaultAcceleratorConfiguration" contextId="org.eclipse.ui.contexts.window" /> + <key sequence="Ctrl+4" commandId="comtestplug.generateAndRun.run" schemeId="org.eclipse.ui.defaultAcceleratorConfiguration" /> +--> + </extension> + + <extension + point="org.eclipse.ui.preferencePages"> + <page + name="ComTest Preferences" + class="comtestplug.preferences.ComTestPreferencePage" + id="comtestplug.preferences.ComTestPreferencePage"> + </page> + </extension> + <extension + point="org.eclipse.core.runtime.preferences"> + <initializer + class="comtestplug.preferences.PreferenceInitializer"> + </initializer> + </extension> + <extension + point="org.eclipse.ui.propertyPages"> + <page + objectClass="org.eclipse.core.resources.IFile" + name="ComTest Page" + nameFilter="*.*" + class="comtestplug.properties.ComTestPropertyPage" + id="comtestplug.properties.samplePropertyPage"> + </page> + </extension> + <extension + id="id1" + point="org.eclipse.jdt.ui.javaCompletionProposalComputer"> + <javaCompletionProposalComputer + activate="true" + categoryId="org.eclipse.ui.texteditor.textual_proposals" + class="comtestplug.ui.text.java.ComtestProposalComputer"> + <partition type="__java_javadoc"/> + </javaCompletionProposalComputer> + </extension> + +</plugin> diff --git a/plugins/plugins/ctplugin_1.0.0.201912252227/META-INF/MANIFEST.MF b/plugins/plugins/ctplugin_1.0.0.201912252227/META-INF/MANIFEST.MF new file mode 100644 index 0000000000000000000000000000000000000000..fde98be663b9ef0886eba027e48db8e5d81e0e6f --- /dev/null +++ b/plugins/plugins/ctplugin_1.0.0.201912252227/META-INF/MANIFEST.MF @@ -0,0 +1,10 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: Ctplugin +Bundle-SymbolicName: ctplugin;singleton:=true +Bundle-Version: 1.0.0.201912252227 +Require-Bundle: org.eclipse.ui +Automatic-Module-Name: ctplugin +Bundle-RequiredExecutionEnvironment: JavaSE-13 + + diff --git a/plugins/plugins/ctplugin_1.0.0.201912252227/icons/sample.png b/plugins/plugins/ctplugin_1.0.0.201912252227/icons/sample.png new file mode 100644 index 0000000000000000000000000000000000000000..02c4b79e10986d56bda97051eb0da2e9119c97f5 Binary files /dev/null and b/plugins/plugins/ctplugin_1.0.0.201912252227/icons/sample.png differ diff --git a/plugins/plugins/ctplugin_1.0.0.201912252227/icons/sample@2x.png b/plugins/plugins/ctplugin_1.0.0.201912252227/icons/sample@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..c1224d1fce3debb7eb66e63ac948fcd6d33d2999 Binary files /dev/null and b/plugins/plugins/ctplugin_1.0.0.201912252227/icons/sample@2x.png differ diff --git a/plugins/plugins/ctplugin_1.0.0.201912252227/plugin.xml b/plugins/plugins/ctplugin_1.0.0.201912252227/plugin.xml new file mode 100644 index 0000000000000000000000000000000000000000..de5dac2282f3d11e3eb763db58776f430a16c055 --- /dev/null +++ b/plugins/plugins/ctplugin_1.0.0.201912252227/plugin.xml @@ -0,0 +1,62 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?eclipse version="3.4"?> +<plugin> + + <extension + point="org.eclipse.ui.commands"> + <category + id="ctplugin.commands.category" + name="Sample Category"> + </category> + <command + categoryId="ctplugin.commands.category" + name="Sample Command" + id="ctplugin.commands.sampleCommand"> + </command> + </extension> + <extension + point="org.eclipse.ui.handlers"> + <handler + class="ctplugin.handlers.ComTestHandler" + commandId="ctplugin.commands.sampleCommand"> + </handler> + </extension> + <extension + point="org.eclipse.ui.bindings"> + <key + commandId="ctplugin.commands.sampleCommand" + schemeId="org.eclipse.ui.defaultAcceleratorConfiguration" + contextId="org.eclipse.ui.contexts.window" + sequence="M1+6"> + </key> + </extension> + <extension + point="org.eclipse.ui.menus"> + <menuContribution + locationURI="menu:org.eclipse.ui.main.menu?after=additions"> + <menu + id="ctplugin.menus.sampleMenu" + label="Sample Menu" + mnemonic="M"> + <command + commandId="ctplugin.commands.sampleCommand" + id="ctplugin.menus.sampleCommand" + mnemonic="S"> + </command> + </menu> + </menuContribution> + <menuContribution + locationURI="toolbar:org.eclipse.ui.main.toolbar?after=additions"> + <toolbar + id="ctplugin.toolbars.sampleToolbar"> + <command + id="ctplugin.toolbars.sampleCommand" + commandId="ctplugin.commands.sampleCommand" + icon="icons/sample.png" + tooltip="Say hello world"> + </command> + </toolbar> + </menuContribution> + </extension> + +</plugin> diff --git a/plugins/plugins/ctplugin_1.0.0.201912252239/META-INF/MANIFEST.MF b/plugins/plugins/ctplugin_1.0.0.201912252239/META-INF/MANIFEST.MF new file mode 100644 index 0000000000000000000000000000000000000000..9b98f2179a3f1cdf262f39e42b76a4757b618055 --- /dev/null +++ b/plugins/plugins/ctplugin_1.0.0.201912252239/META-INF/MANIFEST.MF @@ -0,0 +1,10 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: Ctplugin +Bundle-SymbolicName: ctplugin;singleton:=true +Bundle-Version: 1.0.0.201912252239 +Require-Bundle: org.eclipse.ui +Automatic-Module-Name: ctplugin +Bundle-RequiredExecutionEnvironment: JavaSE-13 + + diff --git a/plugins/plugins/ctplugin_1.0.0.201912252239/icons/sample.png b/plugins/plugins/ctplugin_1.0.0.201912252239/icons/sample.png new file mode 100644 index 0000000000000000000000000000000000000000..02c4b79e10986d56bda97051eb0da2e9119c97f5 Binary files /dev/null and b/plugins/plugins/ctplugin_1.0.0.201912252239/icons/sample.png differ diff --git a/plugins/plugins/ctplugin_1.0.0.201912252239/icons/sample@2x.png b/plugins/plugins/ctplugin_1.0.0.201912252239/icons/sample@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..c1224d1fce3debb7eb66e63ac948fcd6d33d2999 Binary files /dev/null and b/plugins/plugins/ctplugin_1.0.0.201912252239/icons/sample@2x.png differ diff --git a/plugins/plugins/ctplugin_1.0.0.201912252239/plugin.xml b/plugins/plugins/ctplugin_1.0.0.201912252239/plugin.xml new file mode 100644 index 0000000000000000000000000000000000000000..de5dac2282f3d11e3eb763db58776f430a16c055 --- /dev/null +++ b/plugins/plugins/ctplugin_1.0.0.201912252239/plugin.xml @@ -0,0 +1,62 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?eclipse version="3.4"?> +<plugin> + + <extension + point="org.eclipse.ui.commands"> + <category + id="ctplugin.commands.category" + name="Sample Category"> + </category> + <command + categoryId="ctplugin.commands.category" + name="Sample Command" + id="ctplugin.commands.sampleCommand"> + </command> + </extension> + <extension + point="org.eclipse.ui.handlers"> + <handler + class="ctplugin.handlers.ComTestHandler" + commandId="ctplugin.commands.sampleCommand"> + </handler> + </extension> + <extension + point="org.eclipse.ui.bindings"> + <key + commandId="ctplugin.commands.sampleCommand" + schemeId="org.eclipse.ui.defaultAcceleratorConfiguration" + contextId="org.eclipse.ui.contexts.window" + sequence="M1+6"> + </key> + </extension> + <extension + point="org.eclipse.ui.menus"> + <menuContribution + locationURI="menu:org.eclipse.ui.main.menu?after=additions"> + <menu + id="ctplugin.menus.sampleMenu" + label="Sample Menu" + mnemonic="M"> + <command + commandId="ctplugin.commands.sampleCommand" + id="ctplugin.menus.sampleCommand" + mnemonic="S"> + </command> + </menu> + </menuContribution> + <menuContribution + locationURI="toolbar:org.eclipse.ui.main.toolbar?after=additions"> + <toolbar + id="ctplugin.toolbars.sampleToolbar"> + <command + id="ctplugin.toolbars.sampleCommand" + commandId="ctplugin.commands.sampleCommand" + icon="icons/sample.png" + tooltip="Say hello world"> + </command> + </toolbar> + </menuContribution> + </extension> + +</plugin> diff --git a/src/comtestplug/Activator.java b/src/comtestplug/Activator.java new file mode 100644 index 0000000000000000000000000000000000000000..318ef4e260dc960cbbf88ee43fb223237473f0b4 --- /dev/null +++ b/src/comtestplug/Activator.java @@ -0,0 +1,63 @@ +package comtestplug; + +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.ui.plugin.AbstractUIPlugin; +import org.osgi.framework.BundleContext; + +/** + * The activator class controls the plug-in life cycle + */ +public class Activator extends AbstractUIPlugin { + + /** + * Plugin name + */ + public static final String PLUGIN_ID = "comtestplug"; + + // The shared instance + private static Activator plugin; + + /** + * The constructor + */ + public Activator() { + plugin = this; + } + + /** + * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext) + */ + @Override + public void start(BundleContext context) throws Exception { + super.start(context); + } + + /** + * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext) + */ + @Override + public void stop(BundleContext context) throws Exception { + plugin = null; + super.stop(context); + } + + /** + * Returns the shared instance + * + * @return the shared instance + */ + public static Activator getDefault() { + return plugin; + } + + /** + * Returns an image descriptor for the image file at the given + * plug-in relative path + * + * @param path the path + * @return the image descriptor + */ + public static ImageDescriptor getImageDescriptor(String path) { + return imageDescriptorFromPlugin(PLUGIN_ID, path); + } +} diff --git a/src/comtestplug/popup/actions/GenerateTest.java b/src/comtestplug/popup/actions/GenerateTest.java new file mode 100644 index 0000000000000000000000000000000000000000..47cb6c98f9cfc03820e32f19b4b60a84ce151393 --- /dev/null +++ b/src/comtestplug/popup/actions/GenerateTest.java @@ -0,0 +1,351 @@ +package comtestplug.popup.actions; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashSet; +import java.util.Iterator; +import java.util.Set; +import java.util.Vector; + +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.IWorkspace; +import org.eclipse.core.resources.IWorkspaceRunnable; +import org.eclipse.core.resources.IncrementalProjectBuilder; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IPath; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.NullProgressMonitor; +import org.eclipse.core.runtime.Path; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.action.Action; +//import org.eclipse.ui.IActionDelegate; +import org.eclipse.ui.IObjectActionDelegate; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.IWorkbenchWindow; +import org.eclipse.ui.IWorkbenchWindowActionDelegate; +import org.eclipse.jface.dialogs.MessageDialog; + +import comtest.ComTest; + +/** + * <p>Test generator action for ComTest to by used from Eclipse.</p> + * + * <p>I needed to implement also IWorkbenchWindowActionDelegate + * and extend Action to get key shortcuts to work. + * Now the problem is thata there is two plugin instances. + * One for PopUp menus that changes the selection. + * And one for "windows" that does not carry out the file name. + * So the filename from PopUp is saved to + * <pre> + * private static Collection<IFile> staticfiles = new ArrayList<IFile>(); + * </pre> + * static array so it can be found from the other instance. + * Actually this works quite nice. There is allways the last from + * PopUp runned file name that can be runned anywhere in Eclipse by key shortcut.</p> + * + * @author vesal, panu, ji + * + */ +public class GenerateTest extends Action implements IObjectActionDelegate,IWorkbenchWindowActionDelegate { + private Collection<IFile> files; + private IWorkbenchWindow window = null; + + /** + * Constructor for Action1. + */ + public GenerateTest() { + super(); + files = new ArrayList<IFile>(); + } + + /** + * @see IObjectActionDelegate#setActivePart(IAction, IWorkbenchPart) + */ + @Override + public void setActivePart(IAction action, IWorkbenchPart targetPart) {} + + /** + * Method to start plugin + */ + @Override + public void run() { + run((IAction)null); + } + + /** + * @see IActionDelegate#run(IAction) + */ + @Override + public void run(IAction action) { + + if ( window != null ) { + selectionChanged(action, window.getSelectionService().getSelection()); + } + + final IWorkspace workspace = ResourcesPlugin.getWorkspace(); + + try{ + + // Run ComTest in its own task. + final ComtestRun cr = new ComtestRun(files); + if ( !cr.checkFiles(window) ) return; + workspace.run(cr,workspace.getRoot(), 0, null); + + // Build are affected projects. + // But because jdt.core could not be loaded + // we wait the completion before doing anything. + for (final IProject project : cr.getAffectedProjects()){ + buildDone(cr.getOutFiles()); + /* // for some reason in Eclipse 19.12 the OnceDonner.done is not fired??? + project.build(IncrementalProjectBuilder.INCREMENTAL_BUILD, new OnceDonner(){ + + @Override + protected void doTheDone() throws CoreException { + // Stubid HACK. Building projects prompts + // file savings so run ComTest AGAIN to use saved files. + workspace.run(cr,workspace.getRoot(), 0, new OnceDonner(){ + @Override + protected void doTheDone() throws CoreException { + // And because of new code generated we need to build once more. + project.build(IncrementalProjectBuilder.INCREMENTAL_BUILD, new OnceDonner(){ + @Override + protected void doTheDone() throws CoreException { + // Call build done method for after build parties. + buildDone(cr.getOutFiles()); + } + }); + } + }); + } + }); + */ + } + + + + } catch (CoreException e){ + e.printStackTrace(); + } + } + + /** + * @see IActionDelegate#selectionChanged(IAction, ISelection) + */ + @Override + public void selectionChanged(IAction action, ISelection selection) { + try { + if ( !( selection instanceof IStructuredSelection ) ) return; + IStructuredSelection sel = (IStructuredSelection) selection; + doSelection(sel); + } catch (ClassCastException cce) { + doSelection(selection); + } + } + + private void doSelection(IStructuredSelection selection) { + boolean first = true; + try { + for (Iterator<IFile> items = selection.iterator(); items.hasNext();) { + IFile file = items.next(); + if ( first) files.clear(); first = false; + files.add(file); + } + } catch (ClassCastException e) { + // System.err.println("Items:" + selection.toString()); + // e.printStackTrace(); + } + } + + /** + * Method exists for overriding purposes. + * With this generated files can be further processed. + * For example run with JUnit. + * This implementation does nothing. + * @param testFiles + */ + protected void buildDone(Collection<IFile> testFiles) {} + + @SuppressWarnings("static-method") + private void doSelection(ISelection sel) { + System.err.println("something different" + sel.toString()); + } + + + + static class ComtestRun implements IWorkspaceRunnable{ + private static Collection<IFile> staticfiles = new ArrayList<IFile>(); + Collection<IFile> myInFiles = new Vector<IFile>(); + Set<IProject> myAffectedProjects =new HashSet<IProject>(); + Set<IFile> myOutFiles = new HashSet<IFile>(); + + /** + * Run to plugin using files + * @param files to make tests + */ + public ComtestRun(Collection<IFile> files){ + if ( files.size() > 0 ) { + this.myInFiles.addAll(files); + } + if ( myInFiles.size() == 0 ) this.myInFiles.addAll(staticfiles); + + } + + /** + * Check if there is no saved files. When run as action, + * we must use the saved files. + * @param window where to show warning + * @return how it succeeds + */ + public boolean checkFiles(IWorkbenchWindow window) { + if ( myInFiles.size() > 0 ) return true; + if ( window == null ) return true; + MessageDialog.openInformation( + window.getShell(), + "ComTest warning", + "Run first one time from PopUp menu"); + return false; + } + + /** + * Run the plugin + * @param monitor + * @throws CoreException + */ + @Override + @SuppressWarnings("static-access") + public void run(IProgressMonitor monitor) throws CoreException { + boolean goodfiles = false; + for(IFile file : myInFiles){ + final IProject project = file.getProject(); + final IPath inPath = file.getLocation(); + final String inname = inPath.toString(); + String lowername = inname.toLowerCase(); + if ( lowername.endsWith("test.java") && ! lowername.endsWith("comtest.java") ) { + if ( myInFiles.size() <= 1) + MessageDialog.openInformation( + null, + "ComTest warning", + "Do not run for names ending with test.java: \n" + inname); + continue; // do not run for test-ending names + } + + /*IJavaElement je = (IJavaElement) file.getAdapter(IJavaElement.class); + if (je instanceof ICompilationUnit){ + ICompilationUnit cu = (ICompilationUnit) je; + + + if (cu.isWorkingCopy()){ + cu.commitWorkingCopy(false, null); + } else { + cu.save(null, false); + }*/ + + String outname = ComTest.processFile(inname); + if (outname != null) { + IPath projectLocation = project.getLocation(); + IPath outPath = new Path(outname); + int count = outPath.matchingFirstSegments(projectLocation); + if (count == projectLocation.segmentCount()){ + // Result is under project. + IFile outFile = project.getFile(outPath.removeFirstSegments(count)); + myAffectedProjects.add(outFile.getProject()); + outFile.getParent().refreshLocal(IResource.DEPTH_INFINITE, null); + myOutFiles.add(outFile); + goodfiles = true; + } + } else{ + //TODO Error logging and stuff. + System.err.println("ERROR> " + inname); + } + //} + } + if ( goodfiles ) { + staticfiles.clear(); + this.staticfiles.addAll(myInFiles); // save found files + } + + } + + /** + * Return projects that was affected + * @return affected projects + */ + public Collection<IProject> getAffectedProjects(){ + return myAffectedProjects; + } + + /** + * Get files that was output + * @return files that was output + */ + public Collection<IFile> getOutFiles(){ + return myOutFiles; + } + } + + static abstract class OnceDonner extends NullProgressMonitor { + + /** + * Method that must be implemented + * @throws CoreException when error + * + */ + protected abstract void doTheDone() throws CoreException; + + boolean alreadyDone =false; + + /** + * Method to call when done + */ + @Override + public final void done() { + if (alreadyDone){return;} + alreadyDone = true; + try{ + doTheDone(); + } catch(CoreException e){ + e.printStackTrace(); + } + } + + /** + * Return if it is done + * @return if it is done + */ + public boolean isDone(){ + return alreadyDone; + } + + + @Override + public void worked(int work) { + // System.err.println("Work: " + work); + } + + + } + + /** + * Method to clean things + */ + @Override + public void dispose() { + window = null; + } + + /** + * Method to init things + * @param window to use as source + */ + @Override + public void init(IWorkbenchWindow window) { + this.window = window; + return; + + } +} diff --git a/src/comtestplug/popup/actions/GenerateTestAndRunJUnit.java b/src/comtestplug/popup/actions/GenerateTestAndRunJUnit.java new file mode 100644 index 0000000000000000000000000000000000000000..1a9dab7689915c7ade2ec37969c24e5bde38a0ea --- /dev/null +++ b/src/comtestplug/popup/actions/GenerateTestAndRunJUnit.java @@ -0,0 +1,60 @@ +package comtestplug.popup.actions; + +import java.util.Collection; + +import org.eclipse.core.resources.IFile; +import org.eclipse.debug.ui.ILaunchShortcut; + +// Tämä import toimii 3.3:ssa +import org.eclipse.jdt.junit.launcher.JUnitLaunchShortcut; + +// Tämä import toimii 3.2:ssa, huomaa "varoitus" +// import org.eclipse.jdt.internal.junit.launcher.JUnitLaunchShortcut; + +import org.eclipse.jface.viewers.StructuredSelection; +// import org.eclipse.ui.IObjectActionDelegate; + +/** + * Class for running ComTest + * @author vesal + * + */ +public class GenerateTestAndRunJUnit extends GenerateTest{ // implements IObjectActionDelegate{ + + /** + * Eclipse version that plugin works + */ + public static final String ECVERSION = " for Eclipse 3.4+"; + + /** + * Initializer for run + * + */ + public GenerateTestAndRunJUnit() { + super(); + setActionDefinitionId("comtestplug.generateAndRun.run"); + } + + + /** + * Runs JUnit test if only one file was generated. + * + */ + @Override + protected void buildDone(Collection<IFile> testFiles) { + if (testFiles.size() > 0){ + // JUnit can (Currently) be run only for one file at the same time. + + // Run JUnit just the first file + IFile[] outFileArray = new IFile[1]; + for ( IFile f : testFiles) { + outFileArray[0] = f; + break; + } + ILaunchShortcut sk = new JUnitLaunchShortcut(); + //sk.launch(new StructuredSelection(outFileArray), "run"); + sk.launch(new StructuredSelection(outFileArray), "debug"); + } + } + +} diff --git a/src/comtestplug/preferences/ComTestPreferencePage.java b/src/comtestplug/preferences/ComTestPreferencePage.java new file mode 100644 index 0000000000000000000000000000000000000000..5b130b59abbc1dc8494739c89fd72472da00eeb0 --- /dev/null +++ b/src/comtestplug/preferences/ComTestPreferencePage.java @@ -0,0 +1,75 @@ +package comtestplug.preferences; + +import org.eclipse.jface.preference.*; +import org.eclipse.ui.IWorkbenchPreferencePage; +import org.eclipse.ui.IWorkbench; +import comtestplug.Activator; +import static comtestplug.popup.actions.GenerateTestAndRunJUnit.*; + +/** + * This class represents a preference page that + * is contributed to the Preferences dialog. By + * subclassing <samp>FieldEditorPreferencePage</samp>, we + * can use the field support built into JFace that allows + * us to create a page that is small and knows how to + * save, restore and apply itself. + * <p> + * This page is used to modify preferences only. They + * are stored in the preference store that belongs to + * the main plug-in class. That way, preferences can + * be accessed directly via the preference store. + */ + +public class ComTestPreferencePage + extends FieldEditorPreferencePage + implements IWorkbenchPreferencePage { + + /** + * Version number for plugin + */ + public static final String VERSION="14.03.2010" + ECVERSION; + + /** + * Initializer for preferences page + */ + public ComTestPreferencePage() { + super(GRID); + setPreferenceStore(Activator.getDefault().getPreferenceStore()); + setDescription("ComTest " + VERSION + " - just example preference page, does not do anything yet"); + } + + /** + * Creates the field editors. Field editors are abstractions of + * the common GUI blocks needed to manipulate various types + * of preferences. Each field editor knows how to save and + * restore itself. + */ + @Override + public void createFieldEditors() { + addField(new DirectoryFieldEditor(PreferenceConstants.P_PATH, + "&Directory preference:", getFieldEditorParent())); + addField( + new BooleanFieldEditor( + PreferenceConstants.P_BOOLEAN, + "&An example of a boolean preference", + getFieldEditorParent())); + + addField(new RadioGroupFieldEditor( + PreferenceConstants.P_CHOICE, + "An example of a multiple-choice preference", + 1, + new String[][] { { "&Choice 1", "choice1" }, { + "C&hoice 2", "choice2" } + }, getFieldEditorParent())); + addField( + new StringFieldEditor(PreferenceConstants.P_STRING, "A &text preference:", getFieldEditorParent())); + } + + /** + * @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench) + */ + @Override + public void init(IWorkbench workbench) { + } + +} \ No newline at end of file diff --git a/src/comtestplug/preferences/PreferenceConstants.java b/src/comtestplug/preferences/PreferenceConstants.java new file mode 100644 index 0000000000000000000000000000000000000000..a85c9a4feeea8bcc91f291bd257ba8aeebcace33 --- /dev/null +++ b/src/comtestplug/preferences/PreferenceConstants.java @@ -0,0 +1,20 @@ +package comtestplug.preferences; + +/** + * Constant definitions for plug-in preferences + */ +public class PreferenceConstants { + + /** */ + public static final String P_PATH = "pathPreference"; + + /** */ + public static final String P_BOOLEAN = "booleanPreference"; + + /** */ + public static final String P_CHOICE = "choicePreference"; + + /** */ + public static final String P_STRING = "stringPreference"; + +} diff --git a/src/comtestplug/preferences/PreferenceInitializer.java b/src/comtestplug/preferences/PreferenceInitializer.java new file mode 100644 index 0000000000000000000000000000000000000000..d666f2461bfdb90a900960aedb2b8dcaf61de89f --- /dev/null +++ b/src/comtestplug/preferences/PreferenceInitializer.java @@ -0,0 +1,27 @@ +package comtestplug.preferences; + +import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer; +import org.eclipse.jface.preference.IPreferenceStore; + +import comtestplug.Activator; + +/** + * Class used to initialize default preference values. + */ +public class PreferenceInitializer extends AbstractPreferenceInitializer { + + /** + * + * @see org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer#initializeDefaultPreferences() + */ + @Override + public void initializeDefaultPreferences() { + IPreferenceStore store = Activator.getDefault() + .getPreferenceStore(); + store.setDefault(PreferenceConstants.P_BOOLEAN, true); + store.setDefault(PreferenceConstants.P_CHOICE, "choice2"); + store.setDefault(PreferenceConstants.P_STRING, + "Default value"); + } + +} diff --git a/src/comtestplug/properties/ComTestPropertyPage.java b/src/comtestplug/properties/ComTestPropertyPage.java new file mode 100644 index 0000000000000000000000000000000000000000..7f4809082f87c98f7c654f83af3881a5df76f43f --- /dev/null +++ b/src/comtestplug/properties/ComTestPropertyPage.java @@ -0,0 +1,144 @@ +package comtestplug.properties; + +import org.eclipse.core.resources.IResource; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.QualifiedName; +import org.eclipse.swt.SWT; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Text; +import org.eclipse.ui.dialogs.PropertyPage; + +/** + * Class for ComTest properties. + * Nothing done yet + * @author vesal + * + */ +public class ComTestPropertyPage extends PropertyPage { + + private static final String PATH_TITLE = "Path:"; + private static final String OWNER_TITLE = "&Owner:"; + private static final String OWNER_PROPERTY = "OWNER"; + private static final String DEFAULT_OWNER = "John Doe"; + + private static final int TEXT_FIELD_WIDTH = 50; + + private Text ownerText; + + /** + * Constructor for SamplePropertyPage. + */ + public ComTestPropertyPage() { + super(); + } + + private void addFirstSection(Composite parent) { + Composite composite = createDefaultComposite(parent); + + //Label for path field + Label pathLabel = new Label(composite, SWT.NONE); + pathLabel.setText(PATH_TITLE); + + // Path text field + Text pathValueText = new Text(composite, SWT.WRAP | SWT.READ_ONLY); + pathValueText.setText(((IResource) getElement()).getFullPath().toString()); + } + + @SuppressWarnings("static-method") + private void addSeparator(Composite parent) { + Label separator = new Label(parent, SWT.SEPARATOR | SWT.HORIZONTAL); + GridData gridData = new GridData(); + gridData.horizontalAlignment = GridData.FILL; + gridData.grabExcessHorizontalSpace = true; + separator.setLayoutData(gridData); + } + + private void addSecondSection(Composite parent) { + Composite composite = createDefaultComposite(parent); + + // Label for owner field + Label ownerLabel = new Label(composite, SWT.NONE); + ownerLabel.setText(OWNER_TITLE); + + // Owner text field + ownerText = new Text(composite, SWT.SINGLE | SWT.BORDER); + GridData gd = new GridData(); + gd.widthHint = convertWidthInCharsToPixels(TEXT_FIELD_WIDTH); + ownerText.setLayoutData(gd); + + // Populate owner text field + try { + String owner = + ((IResource) getElement()).getPersistentProperty( + new QualifiedName("", OWNER_PROPERTY)); + ownerText.setText((owner != null) ? owner : DEFAULT_OWNER); + } catch (CoreException e) { + ownerText.setText(DEFAULT_OWNER); + } + } + + /** + * see PreferencePage#createContents(Composite) + * @param parent + * @return new control + */ + @Override + protected Control createContents(Composite parent) { + Composite composite = new Composite(parent, SWT.NONE); + GridLayout layout = new GridLayout(); + composite.setLayout(layout); + GridData data = new GridData(GridData.FILL); + data.grabExcessHorizontalSpace = true; + composite.setLayoutData(data); + + addFirstSection(composite); + addSeparator(composite); + addSecondSection(composite); + return composite; + } + + @SuppressWarnings("static-method") + private Composite createDefaultComposite(Composite parent) { + Composite composite = new Composite(parent, SWT.NULL); + GridLayout layout = new GridLayout(); + layout.numColumns = 2; + composite.setLayout(layout); + + GridData data = new GridData(); + data.verticalAlignment = GridData.FILL; + data.horizontalAlignment = GridData.FILL; + composite.setLayoutData(data); + + return composite; + } + + /** + * Set default properties + */ + @Override + protected void performDefaults() { + // Populate the owner text field with the default value + ownerText.setText(DEFAULT_OWNER); + } + + /** + * @return if ok + */ + @Override + public boolean performOk() { + // store the value in the owner text field + try { + ((IResource) getElement()).setPersistentProperty( + new QualifiedName("", OWNER_PROPERTY), + ownerText.getText()); + } catch (CoreException e) { + return false; + } + return true; + } + +} \ No newline at end of file diff --git a/src/comtestplug/ui/text/java/ComtestProposalComputer.java b/src/comtestplug/ui/text/java/ComtestProposalComputer.java new file mode 100644 index 0000000000000000000000000000000000000000..0dcd48927cc23e9166ff4225f6836613e0412af2 --- /dev/null +++ b/src/comtestplug/ui/text/java/ComtestProposalComputer.java @@ -0,0 +1,104 @@ +package comtestplug.ui.text.java; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Vector; + +import org.eclipse.core.runtime.IProgressMonitor; + +import org.eclipse.jdt.ui.text.java.ContentAssistInvocationContext; +import org.eclipse.jdt.ui.text.java.IJavaCompletionProposalComputer; +import org.eclipse.jface.text.BadLocationException; +import org.eclipse.jface.text.contentassist.CompletionProposal; +import org.eclipse.jface.text.contentassist.ICompletionProposal; +import org.eclipse.jface.text.contentassist.IContextInformation; + +import comtest.StringUtilities; + +/** + * Class for plugin text to fill + * @author panu + * + */ +public class ComtestProposalComputer implements IJavaCompletionProposalComputer { + final static String[] proposals = {"#STATICIMPORT","#NOIMPORT","#DIRECTORY=","#PACKAGE=", + "#DYNAMICIMPORT","#CLASSIMPORT","#PACKAGEIMPORT", + "#COLUMNSEPARATOR","#COLUMNCHAR","#THROWS","#import"}; + List<String> baseProposals = Arrays.asList(proposals); + + /** + * @param context + * @param monitor + * @return list of proposals + */ + @Override +public List<ICompletionProposal> computeCompletionProposals( + ContentAssistInvocationContext context, IProgressMonitor monitor) { + List<ICompletionProposal> ret = new Vector<ICompletionProposal>(); + try { + int offs = context.getInvocationOffset(); + String buffer = context.getDocument().get(0, offs); + for(String proposal : proposals){ + int index = StringUtilities.countEndIndex(buffer, proposal); + if (index == 0) continue; + String replace = proposal.substring(index); + ICompletionProposal ci = new CompletionProposal( + replace, offs, 0, replace.length(), + null,proposal,null,null); + ret.add(ci); + } + int index = StringUtilities.countEndIndex(buffer, "comtest"); + if (index == 0) return ret; + String indent = StringUtilities.getLineIndent(buffer,offs); + String comtestBlock = "@example\n"+indent+"* <pre name=\"test\">\n"+indent+"* \n"+indent+"* </pre>"; + int p = comtestBlock.indexOf("* \n"); + + ICompletionProposal ci = new CompletionProposal( + comtestBlock, + offs-index, index, p+2, + null,"ComTest example",null,null); + ret.add(ci); + } catch (BadLocationException e) { + e.printStackTrace(); + } + + + return ret; + } + + /** + * @param context + * @param monitor + * @return list of proposals + */ + @Override + public List<IContextInformation> computeContextInformation( + ContentAssistInvocationContext context, IProgressMonitor monitor) { + // TODO Auto-generated method stub + return new ArrayList<IContextInformation>(); + } + + /** + * @return error message from class + */ + @Override + public String getErrorMessage() { + return "Error from ComTest"; + } + + /** + * + */ + @Override + public void sessionEnded() { + } + + /** + * + */ + @Override + public void sessionStarted() { + } + +}