Revision: 7115
http://pmd.svn.sourceforge.net/pmd/?rev=7115&view=rev
Author: hooperbloob
Date: 2010-08-31 05:31:48 +0000 (Tue, 31 Aug 2010)
Log Message:
-----------
Lots of nice updates:
* Colour syntax highlighting for all relevant editors & example viewers.
* User-selectable marker shapes and colours, violation decorators in the navigator tree
* New AST view and related XPath test editor
* Rule search (page form only, non-functional)
Disabled Quickfix views until its ready
Zapped several nevarious bugs in previous functionality
Note: for the time being, violation errors will not appear in the Problems
page. There is a conflict between having unique markers and 'standard'
error markers that denote inclusion in the error page. Will check out
the use of annotations to deal with this...
For evaluation:
The size and scope of the rule editor is (I believe) outgrowing its
placement within its preference page and it needs to be parked within
it own view. Besides, tracking all the edits being made to the rules
goes beyond what the pref pages can handle (i.e. apply/cancel...
which never worked properly for the rules in any case)
To that end, I've copied the rule table into its own view for now and
left the one in the preference page as is so we can compare & contrast.
Only one will remain by the time the best approach is chosen.
Modified Paths:
--------------
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/.classpath
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/META-INF/MANIFEST.MF
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/build.properties
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/messages.properties
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/nl/fr/messages.properties
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/plugin.xml
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/plugin/PMDPlugin.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/plugin/PriorityDescriptor.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/plugin/UISettings.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/runtime/PMDRuntimeConstants.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/runtime/builder/MarkerUtil.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/runtime/cmd/BaseVisitor.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/runtime/cmd/ReviewCodeCmd.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/runtime/preferences/IPreferences.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/runtime/preferences/impl/PreferencesImpl.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/runtime/preferences/impl/PreferencesManagerImpl.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/PMDUiConstants.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/actions/ClearReviewsAction.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/actions/PMDRemoveMarkersAction.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/model/FileRecord.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/nls/StringKeys.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/preferences/GeneralPreferencesPage.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/preferences/RuleDialog.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/preferences/br/AbstractColumnDescriptor.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/preferences/br/AbstractRuleColumnDescriptor.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/preferences/br/AbstractTreeTableManager.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/preferences/br/ColumnDescriptor.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/preferences/br/IndexedString.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/preferences/br/PMDPreferencePage2.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/preferences/br/RuleFieldAccessor.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/preferences/br/RuleTableManager.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/preferences/br/RuleUtil.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/preferences/br/TODO items
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/preferences/panelmanagers/AbstractRulePanelManager.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/preferences/panelmanagers/CreateRuleWizard.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/preferences/panelmanagers/ExamplePanelManager.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/preferences/panelmanagers/ExclusionPanelManager.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/preferences/panelmanagers/FormArranger.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/preferences/panelmanagers/PerRulePropertyPanelManager.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/preferences/panelmanagers/RulePanelManager.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/preferences/panelmanagers/XPathPanelManager.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/views/AbstractPMDPagebookView.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/views/ViolationOutline.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/views/ViolationOutlineContentProvider.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/views/ViolationOutlineLabelProvider.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/views/ViolationOverview.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/views/ViolationOverviewContentProvider.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/views/ViolationOverviewLabelProvider.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/views/ViolationOverviewMenuManager.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/views/actions/AbstractPMDAction.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/views/actions/CalculateStatisticsAction.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/views/actions/CollapseAllAction.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/views/actions/PackageSwitchAction.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/views/actions/ProjectFilterAction.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/views/actions/ReviewAction.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/views/actions/ReviewResourceAction.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/views/dataflow/DataflowView.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/views/dataflow/DataflowViewPage.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/util/FontBuilder.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/util/Util.java
Added Paths:
-----------
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/icons/markerP1.png
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/icons/markerP2.png
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/icons/markerP3.png
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/icons/markerP4.png
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/icons/markerP5.png
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/search/
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/search/RuleSearchPage.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/RuleLabelDecorator.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/Shape.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/ShapeDescriptor.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/ShapePainter.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/ShapePicker.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/editors/
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/editors/BasicLineStyleListener.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/editors/SyntaxData.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/editors/SyntaxManager.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/editors/TextChange.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/editors/c.properties
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/editors/cpp.properties
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/editors/ecmascript.properties
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/editors/fortran77.properties
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/editors/java.properties
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/editors/ruby.properties
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/editors/scala.properties
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/editors/xpath.properties
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/preferences/PriorityColumnDescriptor.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/preferences/PriorityTableLabelProvider.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/preferences/br/PriorityDescriptorCache.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/preferences/br/PriorityFieldAccessor.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/preferences/br/PriorityFieldAccessorAdapter.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/views/AbstractStructureInspectorPage.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/views/AbstractViolationLabelProvider.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/views/ChangeEvaluator.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/views/ChangeRecord.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/views/ast/
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/views/ast/ASTContentProvider.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/views/ast/ASTLabelProvider.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/views/ast/ASTView.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/views/ast/ASTViewPage.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/views/ast/XPathEvaluator.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/views/rules/
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/views/rules/RuleEditorView.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/test/net/sourceforge/pmd/eclipse/ui/ShapeSetCanvasTest.java
Removed Paths:
-------------
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/preferences/br/PMDPreferencePage.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/preferences/panelmanagers/ShapeDescriptor.java
trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/ui/preferences/panelmanagers/ShapeSetCanvas.java
Modified: trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/.classpath
===================================================================
--- trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/.classpath 2010-08-31 02:55:25 UTC (rev 7114)
+++ trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/.classpath 2010-08-31 05:31:48 UTC (rev 7115)
@@ -11,14 +11,7 @@
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="test"/>
- <classpathentry kind="lib" path="/home/br/apps/eclipse/plugins/org.eclipse.core.commands_3.5.0.I20090525-2000.jar"/>
- <classpathentry kind="lib" path="/home/br/apps/eclipse/plugins/org.eclipse.equinox.common_3.5.1.R35x_v20090807-1100.jar"/>
- <classpathentry kind="lib" path="/home/br/apps/eclipse/plugins/org.apache.commons.logging_1.0.4.v200904062259.jar"/>
<classpathentry kind="lib" path="lib/xercesImpl-2.6.2.jar"/>
<classpathentry kind="con" path="org.eclipse.tptp.platform.instrumentation.ui.ContainerInitializer/Build to Manage Libraries"/>
- <classpathentry kind="lib" path="/home/br/apps/eclipse/plugins/org.eclipse.swt_3.5.2.v3557f.jar" sourcepath="/home/br/apps/eclipse/plugins/swt-debug.jar"/>
- <classpathentry kind="lib" path="/home/br/apps/eclipse/plugins/org.eclipse.osgi_3.5.2.R35x_v20100126.jar"/>
- <classpathentry kind="lib" path="/home/br/apps/eclipse/plugins/org.eclipse.team.core_3.5.1.r35x_20100113-0800.jar"/>
- <classpathentry kind="lib" path="/home/br/apps/eclipse/plugins/org.tigris.subversion.subclipse.core_1.6.10.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>
Modified: trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/META-INF/MANIFEST.MF
===================================================================
--- trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/META-INF/MANIFEST.MF 2010-08-31 02:55:25 UTC (rev 7114)
+++ trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/META-INF/MANIFEST.MF 2010-08-31 05:31:48 UTC (rev 7115)
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: %plugin.name
Bundle-SymbolicName: net.sourceforge.pmd.eclipse.plugin;singleton:=true
-Bundle-Version: 5.0.0.v20100726
+Bundle-Version: 5.0.0.v20100826
Bundle-Activator: net.sourceforge.pmd.eclipse.plugin.PMDPlugin
Require-Bundle: org.apache.commons.logging;bundle-version="1.0.4",
org.eclipse.core.resources;bundle-version="3.5.0",
@@ -11,7 +11,12 @@
org.eclipse.jface.text;bundle-version="3.5.0",
org.eclipse.ui;bundle-version="3.5.0",
org.eclipse.ui.ide;bundle-version="3.5.0",
- org.eclipse.ui.editors;bundle-version="3.5.0"
+ org.eclipse.ui.editors;bundle-version="3.5.0",
+ org.eclipse.team.core;bundle-version="3.5.0",
+ org.eclipse.search,
+ org.eclipse.help;bundle-version="3.5.0",
+ org.eclipse.help.ui;bundle-version="3.5.0",
+ org.eclipse.help.appserver;bundle-version="3.1.400"
Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: J2SE-1.5
Bundle-Vendor: %plugin.provider
@@ -36,9 +41,10 @@
net.sourceforge.pmd.eclipse.runtime.properties,
net.sourceforge.pmd.eclipse.runtime.writer,
net.sourceforge.pmd.eclipse.ui,
+ net.sourceforge.pmd.eclipse.ui.actions,
net.sourceforge.pmd.eclipse.ui.model,
- net.sourceforge.pmd.eclipse.ui.nls,
net.sourceforge.pmd.eclipse.ui.preferences.br,
net.sourceforge.pmd.eclipse.ui.views.actions,
net.sourceforge.pmd.util,
+ org.apache.log4j,
rulesets
Modified: trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/build.properties
===================================================================
--- trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/build.properties 2010-08-31 02:55:25 UTC (rev 7114)
+++ trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/build.properties 2010-08-31 05:31:48 UTC (rev 7115)
@@ -52,7 +52,8 @@
about.ini,\
toc.xml,\
welcome.xml,\
- schema/
+ schema/,\
+ src/
jars.compile.order = pmd-plugin.jar
source.pmd-plugin.jar = src/
output.pmd-plugin.jar = bin/
Added: trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/icons/markerP1.png
===================================================================
(Binary files differ)
Property changes on: trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/icons/markerP1.png
___________________________________________________________________
Added: svn:executable
+ *
Added: svn:mime-type
+ application/octet-stream
Added: trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/icons/markerP2.png
===================================================================
(Binary files differ)
Property changes on: trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/icons/markerP2.png
___________________________________________________________________
Added: svn:executable
+ *
Added: svn:mime-type
+ application/octet-stream
Added: trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/icons/markerP3.png
===================================================================
(Binary files differ)
Property changes on: trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/icons/markerP3.png
___________________________________________________________________
Added: svn:executable
+ *
Added: svn:mime-type
+ application/octet-stream
Added: trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/icons/markerP4.png
===================================================================
(Binary files differ)
Property changes on: trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/icons/markerP4.png
___________________________________________________________________
Added: svn:executable
+ *
Added: svn:mime-type
+ application/octet-stream
Added: trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/icons/markerP5.png
===================================================================
(Binary files differ)
Property changes on: trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/icons/markerP5.png
___________________________________________________________________
Added: svn:executable
+ *
Added: svn:mime-type
+ application/octet-stream
Modified: trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/messages.properties
===================================================================
--- trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/messages.properties 2010-08-31 02:55:25 UTC (rev 7114)
+++ trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/messages.properties 2010-08-31 05:31:48 UTC (rev 7115)
@@ -19,6 +19,7 @@
preference.pmd.label.sample = Sample :
preference.pmd.tooltip.addcomment = Use MessageFormat substitution rules. {0} is the user name, {1} is the current date.
preference.pmd.message.incorrect_format = Incorrect message format
+preference.pmd.group.priorities = Priority levels
preference.pmd.group.review = Violations review parameters
preference.pmd.group.general = General options
preference.pmd.label.perspective_on_check = Show PMD perspective when checking code
@@ -151,14 +152,16 @@
preference.cpd.tilesize = Minimum Tile Size
# View labels
+
view.outline.default_text = A violation outline is not available
view.outline.column_message = Error Message
view.outline.column_line = Line
view.overview.column_element = Element
view.overview.column_vio_total = # Violations
-view.overview.column_vio_loc = # Violations/LOC
+view.overview.column_vio_loc = # Violations/KLOC
view.overview.column_vio_method = # Violations/Method
view.overview.column_project = Project
+
view.dataflow.default_text = A dataflow graph is not available
view.dataflow.choose_method = Choose a method:
view.dataflow.graph.column_line = Line
@@ -174,6 +177,9 @@
view.dataflow.table.column_line = Line(s)
view.dataflow.table.column_variable = Variable
view.dataflow.table.column_method = Method
+
+view.ast.default_text = An abstract syntax tree is not available
+
view.column.message = Message
view.column.rule = Rule
view.column.class = Class
@@ -309,3 +315,10 @@
priority.warning_high = Warning high
priority.warning = Warning
priority.information = Information
+
+priority.column.name = Name
+priority.column.value = Value
+priority.column.size = Size
+priority.column.shape = Shape
+priority.column.color = Color
+priority.column.description = Description
\ No newline at end of file
Modified: trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/nl/fr/messages.properties
===================================================================
--- trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/nl/fr/messages.properties 2010-08-31 02:55:25 UTC (rev 7114)
+++ trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/nl/fr/messages.properties 2010-08-31 05:31:48 UTC (rev 7115)
@@ -101,7 +101,7 @@
view.outline.column_line = Ligne
view.overview.column_element = El\xE9ment
view.overview.column_vio_total = # Violations
-view.overview.column_vio_loc = # Violations/LDC
+view.overview.column_vio_loc = # Violations/KLDC
view.overview.column_vio_method = # Violations/M\xE9thode
view.overview.column_project = Projet
view.dataflow.default_text = Aucun graphe de flot de donn\xE9es n'est disponible
Modified: trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/plugin.xml
===================================================================
--- trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/plugin.xml 2010-08-31 02:55:25 UTC (rev 7114)
+++ trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/plugin.xml 2010-08-31 05:31:48 UTC (rev 7115)
@@ -12,6 +12,7 @@
</toc>
</extension>
+<!-- original marker
<extension
id="pmdMarker"
name="%marker.pmd"
@@ -26,7 +27,93 @@
name="rulename">
</attribute>
</extension>
+-->
+ <extension
+ id="pmdMarker1"
+ name="%marker.pmd"
+ point="org.eclipse.core.resources.markers">
+ <super type="org.eclipse.core.resources.textmarker"></super>
+ <persistent value="true"> </persistent>
+ <attribute name="rulename"> </attribute>
+ </extension>
+
+ <extension
+ id="pmdMarker2"
+ name="%marker.pmd"
+ point="org.eclipse.core.resources.markers">
+ <super type="org.eclipse.core.resources.textmarker"></super>
+ <persistent value="true"> </persistent>
+ <attribute name="rulename"> </attribute>
+ </extension>
+
+ <extension
+ id="pmdMarker3"
+ name="%marker.pmd"
+ point="org.eclipse.core.resources.markers">
+ <super type="org.eclipse.core.resources.textmarker"></super>
+ <persistent value="true"> </persistent>
+ <attribute name="rulename"> </attribute>
+ </extension>
+
+ <extension
+ id="pmdMarker4"
+ name="%marker.pmd"
+ point="org.eclipse.core.resources.markers">
+ <super type="org.eclipse.core.resources.textmarker"></super>
+ <persistent value="true"> </persistent>
+ <attribute name="rulename"> </attribute>
+ </extension>
+
+ <extension
+ id="pmdMarker5"
+ name="%marker.pmd"
+ point="org.eclipse.core.resources.markers">
+ <super type="org.eclipse.core.resources.textmarker"></super>
+ <persistent value="true"> </persistent>
+ <attribute name="rulename"> </attribute>
+ </extension>
+
+<extension point="org.eclipse.ui.ide.markerImageProviders">
+ <imageprovider
+ id="PMD.imageProvider1"
+ icon="icons/markerP1.png"
+ markertype="net.sourceforge.pmd.eclipse.plugin.pmdMarker1">
+ </imageprovider>
+</extension>
+
+<extension point="org.eclipse.ui.ide.markerImageProviders">
+ <imageprovider
+ id="PMD.imageProvider2"
+ icon="icons/markerP2.png"
+ markertype="net.sourceforge.pmd.eclipse.plugin.pmdMarker2">
+ </imageprovider>
+</extension>
+
+<extension point="org.eclipse.ui.ide.markerImageProviders">
+ <imageprovider
+ id="PMD.imageProvider3"
+ icon="icons/markerP3.png"
+ markertype="net.sourceforge.pmd.eclipse.plugin.pmdMarker3">
+ </imageprovider>
+</extension>
+
+<extension point="org.eclipse.ui.ide.markerImageProviders">
+ <imageprovider
+ id="PMD.imageProvider4"
+ icon="icons/markerP4.png"
+ markertype="net.sourceforge.pmd.eclipse.plugin.pmdMarker4">
+ </imageprovider>
+</extension>
+
+<extension point="org.eclipse.ui.ide.markerImageProviders">
+ <imageprovider
+ id="PMD.imageProvider5"
+ icon="icons/markerP5.png"
+ markertype="net.sourceforge.pmd.eclipse.plugin.pmdMarker5">
+ </imageprovider>
+</extension>
+
<extension
id="pmdTaskMarker"
name="%marker.task"
@@ -402,6 +489,22 @@
icon="icons/icon_cpd.gif"
id="net.sourceforge.pmd.eclipse.ui.views.CPDView"
name="%view.cpd"/>
+ <view
+ allowMultiple="false"
+ category="net.sourceforge.pmd.eclipse.ui.views"
+ class="net.sourceforge.pmd.eclipse.ui.views.rules.RuleEditorView"
+ id="net.sourceforge.pmd.eclipse.plugin.ruleEditorView"
+ name="Rule Editor"
+ restorable="true">
+ </view>
+ <view
+ allowMultiple="false"
+ category="net.sourceforge.pmd.eclipse.ui.views"
+ class="net.sourceforge.pmd.eclipse.ui.views.ast.ASTView"
+ id="net.sourceforge.pmd.eclipse.plugin.astView"
+ name="XPath Designer"
+ restorable="true">
+ </view>
</extension>
<extension
@@ -438,5 +541,45 @@
</menu>
</menuContribution>
</extension>
+ <extension
+ point="org.eclipse.ui.decorators">
+ <decorator
+ adaptable="true"
+ class="net.sourceforge.pmd.eclipse.ui.RuleLabelDecorator"
+ icon="icons/sample_decorator.gif"
+ id="net.sourceforge.pmd.eclipse.plugin.RuleLabelDecorator"
+ label="Rule Violation Decorator"
+ lightweight="true"
+ location="TOP_LEFT"
+ state="true">
+ <description>
+ The markers used by PMD to flag projects and files with violations.
+ </description>
+ <enablement>
+ <and>
+ <objectClass
+ name="org.eclipse.core.resources.IResource">
+ </objectClass>
+ <or>
+ <objectClass
+ name="org.eclipse.core.resources.IProject">
+ </objectClass>
+ <objectClass
+ name="org.eclipse.core.resources.IFile">
+ </objectClass>
+ </or>
+ </and>
+ </enablement>
+ </decorator>
+ </extension>
+
+ <extension
+ point="org.eclipse.search.searchPages">
+ <page
+ class="net.sourceforge.pmd.eclipse.search.RuleSearchPage"
+ id="net.sourceforge.pmd.eclipse.plugin.page1"
+ label="Rule search">
+ </page>
+ </extension>
</plugin>
Modified: trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/plugin/PMDPlugin.java
===================================================================
--- trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/plugin/PMDPlugin.java 2010-08-31 02:55:25 UTC (rev 7114)
+++ trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/plugin/PMDPlugin.java 2010-08-31 05:31:48 UTC (rev 7115)
@@ -1,8 +1,12 @@
package net.sourceforge.pmd.eclipse.plugin;
+import java.io.File;
import java.io.IOException;
+import java.net.URL;
+import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.Iterator;
import net.sourceforge.pmd.RuleSet;
@@ -23,6 +27,7 @@
import net.sourceforge.pmd.eclipse.runtime.writer.IAstWriter;
import net.sourceforge.pmd.eclipse.runtime.writer.IRuleSetWriter;
import net.sourceforge.pmd.eclipse.runtime.writer.impl.WriterFactoryImpl;
+import net.sourceforge.pmd.eclipse.ui.RuleLabelDecorator;
import net.sourceforge.pmd.eclipse.ui.nls.StringKeys;
import net.sourceforge.pmd.eclipse.ui.nls.StringTable;
@@ -32,9 +37,14 @@
import org.apache.log4j.Logger;
import org.apache.log4j.PatternLayout;
import org.apache.log4j.RollingFileAppender;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.FileLocator;
import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.Status;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.resource.ImageDescriptor;
@@ -43,6 +53,7 @@
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.RGB;
import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.IDecoratorManager;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
@@ -52,6 +63,8 @@
*/
public class PMDPlugin extends AbstractUIPlugin {
+ private static File pluginFolder;
+
private HashMap<RGB, Color> coloursByRGB = new HashMap<RGB, Color>();
public static final String PLUGIN_ID = "net.sourceforge.pmd.eclipse.plugin";
@@ -93,6 +106,22 @@
for (Color color : colors) color.dispose();
}
+ public static File getPluginFolder() {
+
+ if (pluginFolder == null) {
+ URL url = Platform.getBundle(PLUGIN_ID).getEntry("/");
+ try {
+ url = FileLocator.resolve(url);
+ }
+ catch(IOException ex) {
+ ex.printStackTrace();
+ }
+ pluginFolder = new File(url.getPath());
+ }
+
+ return pluginFolder;
+ }
+
/*
* (non-Javadoc)
* @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
@@ -369,5 +398,90 @@
log(IStatus.ERROR, "Error when processing RuleSets extensions", e);
}
}
+
+ public RuleLabelDecorator ruleLabelDecorator() {
+ IDecoratorManager mgr = getWorkbench().getDecoratorManager();
+ return (RuleLabelDecorator) mgr.getBaseLabelProvider("net.sourceforge.pmd.eclipse.plugin.RuleLabelDecorator");
+ }
+
+ public void changedFiles(Collection<IFile> changedFiles) {
+
+ Collection<IResource> withParents = new HashSet<IResource>(changedFiles.size() * 2);
+ withParents.addAll(changedFiles);
+ for (IFile file : changedFiles) {
+ IResource parent = file.getParent();
+ while (parent != null) {
+ withParents.add(parent);
+ parent = parent.getParent();
+ }
+ }
+
+ changed( withParents );
+ }
+
+ public void changed(Collection<IResource> changedResources) {
+ ruleLabelDecorator().changed(changedResources);
+ }
+
+ private void addFilesTo(IResource resource, Collection<IResource> allKids) {
+
+ if (resource instanceof IFile) {
+ allKids.add(resource);
+ return;
+ }
+
+ if (resource instanceof IFolder) {
+ IFolder folder = (IFolder)resource;
+ IResource[] kids = null;
+ try {
+ kids = folder.members();
+ } catch (CoreException e) {
+ e.printStackTrace();
+ }
+ for (IResource irc : kids) {
+ if (irc instanceof IFile) {
+ allKids.add(irc);
+ continue;
+ }
+ if (irc instanceof IFolder) {
+ addFilesTo(irc, allKids);
+ }
+ }
+
+ allKids.add(folder);
+ return;
+ }
+
+ if (resource instanceof IProject) {
+ IProject project = (IProject)resource;
+ IResource[] kids = null;
+ try {
+ kids = project.members();
+ } catch (CoreException e) {
+ e.printStackTrace();
+ }
+ for (IResource irc : kids) {
+ if (irc instanceof IFile) {
+ allKids.add(irc);
+ continue;
+ }
+ if (irc instanceof IFolder) {
+ addFilesTo(irc, allKids);
+ }
+ }
+ allKids.add(project);
+ return;
+ }
+ }
+
+ public void removedMarkersIn(IResource resource) {
+
+ Collection<IResource> changes = new ArrayList<IResource>();
+
+ addFilesTo(resource, changes);
+
+ ruleLabelDecorator().changed(changes);
+ }
+
}
Modified: trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/plugin/PriorityDescriptor.java
===================================================================
--- trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/plugin/PriorityDescriptor.java 2010-08-31 02:55:25 UTC (rev 7114)
+++ trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/plugin/PriorityDescriptor.java 2010-08-31 05:31:48 UTC (rev 7115)
@@ -1,9 +1,13 @@
package net.sourceforge.pmd.eclipse.plugin;
+import java.util.EnumSet;
+
import net.sourceforge.pmd.RulePriority;
-import net.sourceforge.pmd.eclipse.ui.preferences.panelmanagers.ShapeDescriptor;
+import net.sourceforge.pmd.eclipse.ui.Shape;
+import net.sourceforge.pmd.eclipse.ui.ShapeDescriptor;
+import net.sourceforge.pmd.eclipse.ui.ShapePainter;
import net.sourceforge.pmd.eclipse.ui.views.actions.AbstractPMDAction;
-import net.sourceforge.pmd.eclipse.util.Util;
+import net.sourceforge.pmd.util.StringUtil;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.swt.graphics.Image;
@@ -14,35 +18,138 @@
*
* @author Brian Remedios
*/
-public class PriorityDescriptor {
+public class PriorityDescriptor implements Cloneable {
public final RulePriority priority;
public String label;
+ public String description;
public String filterText;
public String iconId;
public ShapeDescriptor shape;
- private static final RGB ProtoTransparentColour = new RGB(1,1,1); // almost black
+ private static final RGB ProtoTransparentColour = new RGB(1,1,1); // almost full black, unlikely to be used
+ private static final char DELIMITER = '_';
+
+ public static PriorityDescriptor from(String text) {
+
+ String[] values = text.split(Character.toString(DELIMITER));
+ if (values.length != 7) return null;
+
+ RGB rgb = rgbFrom(values[5]);
+ if (rgb == null) return null;
+
+ return new PriorityDescriptor(
+ RulePriority.valueOf(Integer.parseInt(values[0])),
+ values[1],
+ values[2],
+ values[3],
+ shapeFrom(values[4]),
+ rgb,
+ Integer.parseInt(values[6])
+ );
+ }
+
+ private static Shape shapeFrom(String id) {
+ int num = Integer.parseInt(id);
+ for (Shape shape : EnumSet.allOf(Shape.class)) {
+ if (shape.id == num) return shape;
+ }
+ return null;
+ }
+
+ private static RGB rgbFrom(String desc) {
+ String[] clrs = desc.split(",");
+ if (clrs.length != 3) return null;
+ return new RGB(
+ Integer.parseInt(clrs[0]),
+ Integer.parseInt(clrs[1]),
+ Integer.parseInt(clrs[2])
+ );
+ }
+
+ private static void rgbOn(StringBuilder sb, RGB rgb) {
+ sb.append(rgb.red).append(',');
+ sb.append(rgb.green).append(',');
+ sb.append(rgb.blue);
+ }
+
public PriorityDescriptor(RulePriority thePriority, String theLabelKey, String theFilterTextKey, String theIconId, ShapeDescriptor theShape) {
priority = thePriority;
label = AbstractPMDAction.getString(theLabelKey);
+ description = "--"; // TODO
filterText = AbstractPMDAction.getString(theFilterTextKey);
iconId = theIconId;
shape = theShape;
}
- public PriorityDescriptor(RulePriority thePriority, String theLabelKey, String theFilterTextKey, String theIconId, Util.shape theShape, RGB theColor, int theSize) {
+ public PriorityDescriptor(RulePriority thePriority, String theLabelKey, String theFilterTextKey, String theIconId, Shape theShape, RGB theColor, int theSize) {
this(thePriority, theLabelKey, theFilterTextKey, theIconId, new ShapeDescriptor(theShape, theColor, theSize));
}
+ private PriorityDescriptor(RulePriority thePriority) {
+ priority = thePriority;
+ }
+
+ public String storeString() {
+ StringBuilder sb = new StringBuilder();
+ storeOn(sb);
+ return sb.toString();
+ }
+
+ public boolean equals(Object other) {
+
+ if (this == other) return true;
+ if (other.getClass() != getClass()) return false;
+
+ PriorityDescriptor otherOne = (PriorityDescriptor)other;
+
+ return priority.equals(otherOne.priority) &&
+ StringUtil.isSame(label, otherOne.label, false, false, false) &&
+ shape.equals(otherOne.shape) &&
+ StringUtil.isSame(description, otherOne.description, false, false, false) &&
+ StringUtil.isSame(filterText, otherOne.filterText, false, false, false) &&
+ StringUtil.isSame(iconId, otherOne.iconId, false, false, false);
+ }
+
+ public int hashCode() {
+ return
+ priority.hashCode() ^ shape.hashCode() ^
+ String.valueOf(label).hashCode() ^
+ String.valueOf(description).hashCode() ^
+ String.valueOf(iconId).hashCode();
+ }
+
+ public void storeOn(StringBuilder sb) {
+ sb.append(priority.getPriority()).append(DELIMITER);
+ sb.append(label).append(DELIMITER);
+// sb.append(description).append(DELIMITER);
+ sb.append(filterText).append(DELIMITER);
+ sb.append(iconId).append(DELIMITER);
+ sb.append(shape.shape.id).append(DELIMITER);
+ rgbOn(sb, shape.rgbColor); sb.append(DELIMITER);
+ sb.append(shape.size).append(DELIMITER);
+ }
+
public ImageDescriptor getImageDescriptor() {
return PMDPlugin.getImageDescriptor(iconId);
}
+ public PriorityDescriptor clone() {
+
+ PriorityDescriptor copy = new PriorityDescriptor(priority);
+ copy.label = label;
+ copy.description = description;
+ copy.filterText = filterText;
+ copy.iconId = iconId;
+ copy.shape = shape.clone();
+
+ return copy;
+ }
+
public Image getImage(Display display) {
- return Util.newDrawnImage(
+ return ShapePainter.newDrawnImage(
display,
shape.size,
shape.size,
@@ -51,4 +158,29 @@
shape.rgbColor //fillColour
);
}
+
+ public Image getImage(Display display, int maxDimension) {
+
+ return ShapePainter.newDrawnImage(
+ display,
+ Math.min(shape.size, maxDimension),
+ Math.min(shape.size, maxDimension),
+ shape.shape,
+ ProtoTransparentColour,
+ shape.rgbColor //fillColour
+ );
+ }
+
+ public String toString() {
+
+ StringBuilder sb = new StringBuilder();
+ sb.append("RuleDescriptor: ");
+ sb.append(priority).append(", ");
+ sb.append(label).append(", ");
+ sb.append(description).append(", ");
+ sb.append(filterText).append(", ");
+ sb.append(iconId).append(", ");
+ sb.append(shape);
+ return sb.toString();
+ }
}
Modified: trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/plugin/UISettings.java
===================================================================
--- trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/plugin/UISettings.java 2010-08-31 02:55:25 UTC (rev 7114)
+++ trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/plugin/UISettings.java 2010-08-31 05:31:48 UTC (rev 7115)
@@ -1,20 +1,31 @@
package net.sourceforge.pmd.eclipse.plugin;
+import java.net.MalformedURLException;
+import java.net.URL;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
+import java.util.EnumSet;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import net.sourceforge.pmd.RulePriority;
-import net.sourceforge.pmd.eclipse.ui.PMDUiConstants;
+import net.sourceforge.pmd.eclipse.runtime.preferences.IPreferences;
+import net.sourceforge.pmd.eclipse.ui.Shape;
+import net.sourceforge.pmd.eclipse.ui.ShapeDescriptor;
import net.sourceforge.pmd.eclipse.ui.nls.StringKeys;
import net.sourceforge.pmd.eclipse.ui.nls.StringTable;
-import net.sourceforge.pmd.eclipse.ui.preferences.panelmanagers.ShapeDescriptor;
-import net.sourceforge.pmd.eclipse.util.Util;
+import net.sourceforge.pmd.eclipse.ui.preferences.br.PriorityDescriptorCache;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.ImageData;
+import org.eclipse.swt.graphics.ImageLoader;
import org.eclipse.swt.graphics.RGB;
+import org.eclipse.swt.widgets.Display;
/**
*
@@ -27,19 +38,35 @@
private static Map<Object, ShapeDescriptor> shapesByPriority;
private static Map<Integer, RulePriority> prioritiesByIntValue;
+ private static final int MAX_MARKER_DIMENSION = 9;
+
private static final Map<RulePriority, PriorityDescriptor> uiDescriptorsByPriority = new HashMap<RulePriority, PriorityDescriptor>(5);
+
+
+ public static void reloadPriorities() {
+ uiDescriptorsByPriority.clear();
+ uiDescriptorsByPriority(); // cause a reload
+ }
- static {
- uiDescriptorsByPriority.put(RulePriority.LOW, new PriorityDescriptor(RulePriority.LOW, StringKeys.MSGKEY_VIEW_FILTER_PRIORITY_1, StringKeys.MSGKEY_VIEW_TOOLTIP_FILTER_PRIORITY_1, PMDUiConstants.ICON_BUTTON_PRIO1, Util.shape.triangleSouthEast, new RGB( 0,0,255), 13) ); // blue
- uiDescriptorsByPriority.put(RulePriority.MEDIUM_LOW, new PriorityDescriptor(RulePriority.MEDIUM_LOW, StringKeys.MSGKEY_VIEW_FILTER_PRIORITY_2, StringKeys.MSGKEY_VIEW_TOOLTIP_FILTER_PRIORITY_2, PMDUiConstants.ICON_BUTTON_PRIO2, Util.shape.triangleDown, new RGB( 0,255,0), 13) ); // green
- uiDescriptorsByPriority.put(RulePriority.MEDIUM, new PriorityDescriptor(RulePriority.MEDIUM, StringKeys.MSGKEY_VIEW_FILTER_PRIORITY_3, StringKeys.MSGKEY_VIEW_TOOLTIP_FILTER_PRIORITY_3, PMDUiConstants.ICON_BUTTON_PRIO3, Util.shape.triangleUp, new RGB( 255,255,0), 13) ); // yellow
- uiDescriptorsByPriority.put(RulePriority.MEDIUM_HIGH, new PriorityDescriptor(RulePriority.MEDIUM_HIGH,StringKeys.MSGKEY_VIEW_FILTER_PRIORITY_4, StringKeys.MSGKEY_VIEW_TOOLTIP_FILTER_PRIORITY_4, PMDUiConstants.ICON_BUTTON_PRIO4, Util.shape.triangleNorthEast, new RGB( 255,0,255), 13) ); // purple
- uiDescriptorsByPriority.put(RulePriority.HIGH, new PriorityDescriptor(RulePriority.HIGH, StringKeys.MSGKEY_VIEW_FILTER_PRIORITY_5, StringKeys.MSGKEY_VIEW_TOOLTIP_FILTER_PRIORITY_5, PMDUiConstants.ICON_BUTTON_PRIO5, Util.shape.diamond, new RGB( 255,0,0), 13) ); // red
+ private static Map<RulePriority, PriorityDescriptor> uiDescriptorsByPriority() {
+
+ if (uiDescriptorsByPriority.isEmpty()) {
+ IPreferences preferences = PMDPlugin.getDefault().getPreferencesManager().loadPreferences();
+ for (RulePriority rp : currentPriorities(true)) {
+ uiDescriptorsByPriority.put(rp, preferences.getPriorityDescriptor(rp));
+ }
+ }
+
+ return uiDescriptorsByPriority;
}
+
+ public static Shape[] allShapes() {
+ return new Shape[] { Shape.circle, Shape.star, Shape.domeLeft, Shape.domeRight, Shape.diamond, Shape.square, Shape.roundedRect, Shape.minus, Shape.pipe, Shape.plus, Shape.triangleUp, Shape.triangleDown, Shape.triangleRight, Shape.triangleLeft, Shape.triangleNorthEast, Shape.triangleSouthEast, Shape.triangleSouthWest, Shape.triangleNorthWest };
+ }
public static RulePriority[] currentPriorities(boolean sortAscending) {
- RulePriority[] priorities = uiDescriptorsByPriority.keySet().toArray(new RulePriority[uiDescriptorsByPriority.size()]);
+ RulePriority[] priorities = RulePriority.values();
Arrays.sort(priorities, new Comparator<RulePriority>() {
public int compare(RulePriority rpA, RulePriority rbB) {
@@ -47,18 +74,89 @@
}
});
return priorities;
- }
+ }
+
+ public static Map<Shape, ShapeDescriptor> shapeSet(RGB color, int size) {
+
+ Map<Shape, ShapeDescriptor> shapes = new HashMap<Shape, ShapeDescriptor>();
+
+ for(Shape shape : EnumSet.allOf(Shape.class)) {
+ shapes.put(shape, new ShapeDescriptor(shape, color, size));
+ }
+
+ return shapes;
+ }
+ public static String markerFilenameFor(RulePriority priority) {
+ String fileDir = PMDPlugin.getPluginFolder().getAbsolutePath();
+ return fileDir + "/" + relativeMarkerFilenameFor(priority);
+ }
+
+ public static String relativeMarkerFilenameFor(RulePriority priority) {
+ return "icons/markerP" + priority.getPriority() + ".png";
+ }
+
+ private static ImageDescriptor getImageDescriptor(final String fileName) {
+
+ URL installURL = PMDPlugin.getDefault().getBundle().getEntry("/");
+ try {
+ URL url = new URL(installURL, fileName);
+ return ImageDescriptor.createFromURL(url);
+ }
+ catch (MalformedURLException mue) {
+ mue.printStackTrace();
+ return null;
+ }
+ }
+
+ public static ImageDescriptor markerDescriptorFor(RulePriority priority) {
+ String path = relativeMarkerFilenameFor(priority);
+ return getImageDescriptor(path);
+ }
+
+ public static Map<Integer, ImageDescriptor> markerImgDescriptorsByPriority() {
+
+ RulePriority[] priorities = currentPriorities(true);
+ Map<Integer, ImageDescriptor> overlaysByPriority = new HashMap<Integer, ImageDescriptor>(priorities.length);
+ for (RulePriority priority : priorities) {
+ overlaysByPriority.put(
+ priority.getPriority(),
+ markerDescriptorFor(priority)
+ );
+ }
+ return overlaysByPriority;
+ }
+
+ public static void createRuleMarkerIcons(Display display) {
+
+ ImageLoader loader = new ImageLoader();
+
+ PriorityDescriptorCache pdc = PriorityDescriptorCache.instance;
+
+ for (RulePriority priority : currentPriorities(true)) {
+ Image image = pdc.descriptorFor(priority).getImage(display, MAX_MARKER_DIMENSION);
+ loader.data = new ImageData[] { image.getImageData() };
+ String fullPath = markerFilenameFor( priority );
+ loader.save(fullPath, SWT.IMAGE_PNG);
+
+ image.dispose();
+ }
+ }
+
+ public static String descriptionFor(RulePriority priority) {
+ return descriptorFor(priority).description;
+ }
+
public static PriorityDescriptor descriptorFor(RulePriority priority) {
- return uiDescriptorsByPriority.get(priority);
+ return uiDescriptorsByPriority().get(priority);
}
public static Map<Object, ShapeDescriptor> shapesByPriority() {
if (shapesByPriority != null) return shapesByPriority;
- Map<Object, ShapeDescriptor> shapesByPriority = new HashMap<Object, ShapeDescriptor>(uiDescriptorsByPriority.size());
- for (Map.Entry<RulePriority, PriorityDescriptor> entry : uiDescriptorsByPriority.entrySet()) {
+ Map<Object, ShapeDescriptor> shapesByPriority = new HashMap<Object, ShapeDescriptor>(uiDescriptorsByPriority().size());
+ for (Map.Entry<RulePriority, PriorityDescriptor> entry : uiDescriptorsByPriority().entrySet()) {
shapesByPriority.put(entry.getKey(), entry.getValue().shape);
}
@@ -68,8 +166,8 @@
public static RulePriority priorityFor(int value) {
if (prioritiesByIntValue == null) {
- prioritiesByIntValue = new HashMap<Integer, RulePriority>(uiDescriptorsByPriority.size());
- for (Map.Entry<RulePriority, PriorityDescriptor> entry : uiDescriptorsByPriority.entrySet()) {
+ prioritiesByIntValue = new HashMap<Integer, RulePriority>(uiDescriptorsByPriority().size());
+ for (Map.Entry<RulePriority, PriorityDescriptor> entry : uiDescriptorsByPriority().entrySet()) {
prioritiesByIntValue.put(entry.getKey().getPriority(), entry.getKey());
}
}
@@ -97,8 +195,8 @@
public static List<Integer> getPriorityIntValues() {
- List<Integer> values = new ArrayList<Integer>(uiDescriptorsByPriority.size());
- for (RulePriority priority : uiDescriptorsByPriority.keySet()) {
+ List<Integer> values = new ArrayList<Integer>();
+ for (RulePriority priority : RulePriority.values()) {
values.add(priority.getPriority());
}
return values;
Modified: trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/runtime/PMDRuntimeConstants.java
===================================================================
--- trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/runtime/PMDRuntimeConstants.java 2010-08-31 02:55:25 UTC (rev 7114)
+++ trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/runtime/PMDRuntimeConstants.java 2010-08-31 05:31:48 UTC (rev 7115)
@@ -12,10 +12,18 @@
*/
public class PMDRuntimeConstants {
- public static final String PMD_MARKER = PMDPlugin.PLUGIN_ID + ".pmdMarker";
+ public static final String PMD_MARKER = PMDPlugin.PLUGIN_ID + ".pmdMarker"; // obsolete
+
+ public static final String PMD_MARKER_1 = PMDPlugin.PLUGIN_ID + ".pmdMarker1";
+ public static final String PMD_MARKER_2 = PMDPlugin.PLUGIN_ID + ".pmdMarker2";
+ public static final String PMD_MARKER_3 = PMDPlugin.PLUGIN_ID + ".pmdMarker3";
+ public static final String PMD_MARKER_4 = PMDPlugin.PLUGIN_ID + ".pmdMarker4";
+ public static final String PMD_MARKER_5 = PMDPlugin.PLUGIN_ID + ".pmdMarker5";
+
public static final String PMD_DFA_MARKER = PMDPlugin.PLUGIN_ID + ".pmdDFAMarker";
public static final String PMD_TASKMARKER = PMDPlugin.PLUGIN_ID + ".pmdTaskMarker";
- public static final String[] ALL_MARKER_TYPES = new String[] { PMD_MARKER, PMD_DFA_MARKER, PMD_TASKMARKER };
+ public static final String[] RULE_MARKER_TYPES = new String[] { PMD_MARKER, PMD_MARKER_1, PMD_MARKER_2, PMD_MARKER_3, PMD_MARKER_4, PMD_MARKER_5 };
+ public static final String[] ALL_MARKER_TYPES = new String[] { PMD_MARKER, PMD_DFA_MARKER, PMD_TASKMARKER, PMD_MARKER_1, PMD_MARKER_2, PMD_MARKER_3, PMD_MARKER_4, PMD_MARKER_5 };
public static final IntegerProperty MAX_VIOLATIONS_DESCRIPTOR = new IntegerProperty("maxviolations", "Max allowable violations", 1, Integer.MAX_VALUE-1, 1000, 0f);
Modified: trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/runtime/builder/MarkerUtil.java
===================================================================
--- trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/runtime/builder/MarkerUtil.java 2010-08-31 02:55:25 UTC (rev 7114)
+++ trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/runtime/builder/MarkerUtil.java 2010-08-31 05:31:48 UTC (rev 7115)
@@ -1,8 +1,10 @@
package net.sourceforge.pmd.eclipse.runtime.builder;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
+import java.util.Map;
import java.util.Set;
import net.sourceforge.pmd.Rule;
@@ -10,12 +12,18 @@
import net.sourceforge.pmd.eclipse.plugin.PMDPlugin;
import net.sourceforge.pmd.eclipse.runtime.PMDRuntimeConstants;
import net.sourceforge.pmd.eclipse.ui.PMDUiConstants;
+import net.sourceforge.pmd.eclipse.ui.model.AbstractPMDRecord;
+import net.sourceforge.pmd.eclipse.ui.model.FileRecord;
+import net.sourceforge.pmd.eclipse.ui.model.MarkerRecord;
+import net.sourceforge.pmd.eclipse.ui.model.RootRecord;
import net.sourceforge.pmd.util.StringUtil;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.resources.IMarkerDelta;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IResourceChangeEvent;
import org.eclipse.core.resources.IResourceVisitor;
import org.eclipse.core.resources.IWorkspaceRoot;
import org.eclipse.core.runtime.CoreException;
@@ -28,6 +36,8 @@
public static final IMarker[] EMPTY_MARKERS = new IMarker[0];
+ private static Map<String, Rule> rulesByName;
+
private MarkerUtil() { }
public static boolean hasAnyRuleMarkers(IResource resource) throws CoreException {
@@ -42,15 +52,17 @@
if (resource instanceof IFile) {
- IMarker[] ruleMarkers = null;
- try {
- ruleMarkers = resource.findMarkers(PMDRuntimeConstants.PMD_MARKER, true, IResource.DEPTH_INFINITE);
- } catch (CoreException ex) {
- // what do to?
- }
- if (ruleMarkers.length > 0) {
- foundOne[0] = true;
- return false;
+ for (String markerType : PMDRuntimeConstants.RULE_MARKER_TYPES) {
+ IMarker[] ruleMarkers = null;
+ try {
+ ruleMarkers = resource.findMarkers(markerType, true, IResource.DEPTH_INFINITE);
+ } catch (CoreException ex) {
+ // what do to?
+ }
+ if (ruleMarkers.length > 0) {
+ foundOne[0] = true;
+ return false;
+ }
}
}
@@ -92,7 +104,7 @@
}
public static int rulePriorityFor(IMarker marker) throws CoreException {
- return ((Integer)marker.getAttribute(PMDUiConstants.KEY_MARKERATT_PRIORITY)).intValue();
+ return (Integer)marker.getAttribute(PMDUiConstants.KEY_MARKERATT_PRIORITY);
}
public static int deleteViolationsOf(String ruleName, IResource resource) {
@@ -120,6 +132,17 @@
}
}
+ public static List<IMarkerDelta> markerDeltasIn(IResourceChangeEvent event) {
+
+ List<IMarkerDelta> deltas = new ArrayList<IMarkerDelta>();
+ for (String markerType : PMDRuntimeConstants.RULE_MARKER_TYPES) {
+ IMarkerDelta[] deltaArray = event.findMarkerDeltas(markerType, true);
+ for (IMarkerDelta delta : deltaArray) deltas.add(delta);
+ }
+
+ return deltas;
+ }
+
public static List<Rule> rulesFor(IMarker[] markers) {
List<Rule> rules = new ArrayList<Rule>(markers.length);
@@ -165,6 +188,7 @@
for (String markerType : markerTypes) {
resource.deleteMarkers(markerType, true, IResource.DEPTH_INFINITE);
}
+ PMDPlugin.getDefault().removedMarkersIn(resource);
}
public static IMarker[] findAllMarkers(IResource resource) throws CoreException {
@@ -189,4 +213,61 @@
return markerList.toArray(markerArray);
}
+ public static Set<Integer> priorityRangeOf(IResource resource, String[] markerTypes, int sizeLimit) throws CoreException {
+
+ Set<Integer> priorityLevels = new HashSet<Integer>(sizeLimit);
+
+ for (String markerType : markerTypes) {
+ for (IMarker marker : resource.findMarkers(markerType, true, IResource.DEPTH_INFINITE)) {
+ priorityLevels.add( rulePriorityFor(marker) );
+ if (priorityLevels.size() == sizeLimit) return priorityLevels;
+ }
+ }
+
+ return priorityLevels;
+ }
+
+
+ private static void gatherRuleNames() {
+
+ rulesByName = new HashMap<String, Rule>();
+ Set<RuleSet> ruleSets = PMDPlugin.getDefault().getRuleSetManager().getRegisteredRuleSets();
+ for (RuleSet rs : ruleSets) {
+ for (Rule rule : rs.getRules()) {
+ rulesByName.put(rule.getName(), rule);
+ }
+ }
+ }
+
+ private static Rule ruleFrom(IMarker marker) {
+ String ruleName = marker.getAttribute(PMDRuntimeConstants.KEY_MARKERATT_RULENAME, "");
+ if (StringUtil.isEmpty(ruleName)) return null; //printValues(marker);
+ return rulesByName.get(ruleName);
+ }
+
+ public static Set<IFile> allMarkedFiles(RootRecord root) {
+
+ gatherRuleNames();
+
+ Set<IFile> files = new HashSet<IFile>();
+
+ for (AbstractPMDRecord projectRecord : root.getChildren()) {
+ for (AbstractPMDRecord packageRecord : projectRecord.getChildren()) {
+ for (AbstractPMDRecord fileRecord : packageRecord.getChildren()) {
+ ((FileRecord)fileRecord).updateChildren();
+ for (AbstractPMDRecord mRecord : fileRecord.getChildren()) {
+ MarkerRecord markerRecord = (MarkerRecord) mRecord;
+ for (IMarker marker : markerRecord.findMarkers()) {
+ Rule rule = ruleFrom(marker);
+ if (rule == null) continue;
+ files.add((IFile)fileRecord.getResource());
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ return files;
+ }
}
Modified: trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.eclipse.plugin/src/net/sourceforge/pmd/eclipse/runtime/cmd/BaseVisitor.java
===================================================================
--- trunk/pmd-eclipse-plugin/plugins/net.sourceforge.pmd.e...
[truncated message content] |