From 302e025a5bcbc38933a054ecbeb49f35f13a4089 Mon Sep 17 00:00:00 2001 From: Alexander Lobas Date: Mon, 28 May 2012 12:41:14 +0400 Subject: [PATCH] Inspections --- .../designer/AndroidDesignerEditor.java | 4 +- .../AndroidDesignerEditorPanel.java | 41 ++++++++++-------- .../designer/inspection/ErrorAnalyzer.java | 43 +++++++++++++++++++ .../designer/DesignerToolWindowManager.java | 6 --- .../designSurface/DesignerEditorPanel.java | 23 +++++++--- .../DesignerBackgroundEditorHighlighter.java} | 10 ++--- .../inspection/DesignerHighlightingPass.java} | 15 +++---- 7 files changed, 95 insertions(+), 47 deletions(-) create mode 100644 plugins/android-designer/src/com/intellij/android/designer/inspection/ErrorAnalyzer.java rename plugins/{android-designer/src/com/intellij/android/designer/inspection/AndroidBackgroundEditorHighlighter.java => ui-designer/ui-designer-new/src/com/intellij/designer/inspection/DesignerBackgroundEditorHighlighter.java} (73%) rename plugins/{android-designer/src/com/intellij/android/designer/inspection/AndroidHighlightingPass.java => ui-designer/ui-designer-new/src/com/intellij/designer/inspection/DesignerHighlightingPass.java} (67%) diff --git a/plugins/android-designer/src/com/intellij/android/designer/AndroidDesignerEditor.java b/plugins/android-designer/src/com/intellij/android/designer/AndroidDesignerEditor.java index 4d8e19066cbe..246ed81854ac 100644 --- a/plugins/android-designer/src/com/intellij/android/designer/AndroidDesignerEditor.java +++ b/plugins/android-designer/src/com/intellij/android/designer/AndroidDesignerEditor.java @@ -16,7 +16,7 @@ package com.intellij.android.designer; import com.intellij.android.designer.designSurface.AndroidDesignerEditorPanel; -import com.intellij.android.designer.inspection.AndroidBackgroundEditorHighlighter; +import com.intellij.designer.inspection.DesignerBackgroundEditorHighlighter; import com.intellij.codeHighlighting.BackgroundEditorHighlighter; import com.intellij.designer.DesignerEditor; import com.intellij.designer.designSurface.DesignerEditorPanel; @@ -50,7 +50,7 @@ public final class AndroidDesignerEditor extends DesignerEditor { @Override public BackgroundEditorHighlighter getBackgroundHighlighter() { if (myHighlighter == null) { - myHighlighter = new AndroidBackgroundEditorHighlighter((AndroidDesignerEditorPanel)getDesignerPanel()); + myHighlighter = new DesignerBackgroundEditorHighlighter(getDesignerPanel()); } return myHighlighter; } diff --git a/plugins/android-designer/src/com/intellij/android/designer/designSurface/AndroidDesignerEditorPanel.java b/plugins/android-designer/src/com/intellij/android/designer/designSurface/AndroidDesignerEditorPanel.java index 29a9abb11c4e..270f999da88f 100644 --- a/plugins/android-designer/src/com/intellij/android/designer/designSurface/AndroidDesignerEditorPanel.java +++ b/plugins/android-designer/src/com/intellij/android/designer/designSurface/AndroidDesignerEditorPanel.java @@ -20,7 +20,11 @@ import com.android.ide.common.resources.configuration.*; import com.android.sdklib.IAndroidTarget; import com.intellij.android.designer.actions.ProfileAction; import com.intellij.android.designer.componentTree.AndroidTreeDecorator; -import com.intellij.android.designer.model.*; +import com.intellij.android.designer.inspection.ErrorAnalyzer; +import com.intellij.android.designer.model.IConfigurableComponent; +import com.intellij.android.designer.model.ModelParser; +import com.intellij.android.designer.model.PropertyParser; +import com.intellij.android.designer.model.RadViewComponent; import com.intellij.android.designer.profile.ProfileManager; import com.intellij.designer.DesignerToolWindowManager; import com.intellij.designer.componentTree.TreeComponentDecorator; @@ -36,6 +40,7 @@ import com.intellij.designer.palette.Item; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.application.ex.ApplicationManagerEx; import com.intellij.openapi.module.Module; +import com.intellij.openapi.progress.ProgressIndicator; import com.intellij.openapi.util.Computable; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VirtualFile; @@ -45,9 +50,6 @@ import com.intellij.psi.xml.XmlFile; import com.intellij.util.Alarm; import com.intellij.util.ThrowableRunnable; import org.jetbrains.android.facet.AndroidFacet; -import org.jetbrains.android.inspections.lint.AndroidLintExternalAnnotator; -import org.jetbrains.android.inspections.lint.ProblemData; -import org.jetbrains.android.inspections.lint.State; import org.jetbrains.android.maven.AndroidMavenUtil; import org.jetbrains.android.sdk.AndroidPlatform; import org.jetbrains.android.sdk.AndroidSdkUtils; @@ -115,21 +117,6 @@ public final class AndroidDesignerEditorPanel extends DesignerEditorPanel { }); } - public void loadInspections() { - AndroidLintExternalAnnotator annotator = new AndroidLintExternalAnnotator(); - State state = annotator.collectionInformation(myXmlFile); - if (state == null) { - System.out.println("No inspections"); - } - else { - state = annotator.doAnnotate(state); - System.out.println("==== Problems ===="); - for (ProblemData problem : state.getProblems()) { - System.out.println(problem.getIssue() + " | " + problem.getMessage() + " | " + problem.getTextRange()); - } - } - } - private void reparseFile() { try { storeState(); @@ -518,4 +505,20 @@ public final class AndroidDesignerEditorPanel extends DesignerEditorPanel { myPSIChangeListener.start(); } } + + ////////////////////////////////////////////////////////////////////////////////////////// + // + // Inspections + // + ////////////////////////////////////////////////////////////////////////////////////////// + + @Override + public void loadInspections(ProgressIndicator progress) { + ErrorAnalyzer.load(myXmlFile, myRootComponent, progress); + } + + @Override + public void updateInspections() { + // TODO: Auto-generated method stub + } } \ No newline at end of file diff --git a/plugins/android-designer/src/com/intellij/android/designer/inspection/ErrorAnalyzer.java b/plugins/android-designer/src/com/intellij/android/designer/inspection/ErrorAnalyzer.java new file mode 100644 index 000000000000..5c29c2a1c2e5 --- /dev/null +++ b/plugins/android-designer/src/com/intellij/android/designer/inspection/ErrorAnalyzer.java @@ -0,0 +1,43 @@ +/* + * Copyright 2000-2012 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.android.designer.inspection; + +import com.intellij.designer.model.RadComponent; +import com.intellij.openapi.progress.ProgressIndicator; +import com.intellij.psi.xml.XmlFile; +import org.jetbrains.android.inspections.lint.AndroidLintExternalAnnotator; +import org.jetbrains.android.inspections.lint.ProblemData; +import org.jetbrains.android.inspections.lint.State; + +/** + * @author Alexander Lobas + */ +public class ErrorAnalyzer { + public static void load(XmlFile xmlFile, RadComponent rootComponent, ProgressIndicator progress) { + AndroidLintExternalAnnotator annotator = new AndroidLintExternalAnnotator(); + State state = annotator.collectionInformation(xmlFile); + if (state == null) { + System.out.println("==== No inspections(" + rootComponent + ") ===="); + } + else { + state = annotator.doAnnotate(state); + System.out.println("==== Problems(" + rootComponent + ") ===="); + for (ProblemData problem : state.getProblems()) { + System.out.println(problem.getIssue() + " | " + problem.getMessage() + " | " + problem.getTextRange()); + } + } + } +} \ No newline at end of file diff --git a/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/DesignerToolWindowManager.java b/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/DesignerToolWindowManager.java index 926e87fb7dc5..1a8bb56b79b5 100644 --- a/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/DesignerToolWindowManager.java +++ b/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/DesignerToolWindowManager.java @@ -17,7 +17,6 @@ package com.intellij.designer; import com.intellij.designer.componentTree.ComponentTree; import com.intellij.designer.componentTree.ComponentTreeBuilder; -import com.intellij.designer.componentTree.TreeEditableArea; import com.intellij.designer.designSurface.DesignerEditorPanel; import com.intellij.designer.propertyTable.PropertyTablePanel; import com.intellij.openapi.actionSystem.AnAction; @@ -135,11 +134,6 @@ public final class DesignerToolWindowManager implements ProjectComponent { } } - @Nullable - public TreeEditableArea getTreeArea() { - return myTreeBuilder == null ? null : myTreeBuilder.getTreeArea(); - } - @Nullable private static DesignerEditorPanel getDesigner(FileEditor editor) { if (editor instanceof DesignerEditor) { diff --git a/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/designSurface/DesignerEditorPanel.java b/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/designSurface/DesignerEditorPanel.java index 2ee177594ddf..6ee5919f45ed 100644 --- a/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/designSurface/DesignerEditorPanel.java +++ b/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/designSurface/DesignerEditorPanel.java @@ -19,7 +19,6 @@ import com.intellij.designer.DesignerEditorState; import com.intellij.designer.DesignerToolWindowManager; import com.intellij.designer.actions.DesignerActionPanel; import com.intellij.designer.componentTree.TreeComponentDecorator; -import com.intellij.designer.componentTree.TreeEditableArea; import com.intellij.designer.designSurface.tools.*; import com.intellij.designer.model.FindComponentVisitor; import com.intellij.designer.model.RadComponent; @@ -29,10 +28,13 @@ import com.intellij.designer.propertyTable.Property; import com.intellij.diagnostic.LogMessageEx; import com.intellij.diagnostic.errordialog.Attachment; import com.intellij.ide.palette.impl.PaletteManager; -import com.intellij.openapi.actionSystem.*; +import com.intellij.openapi.actionSystem.ActionGroup; +import com.intellij.openapi.actionSystem.ActionPlaces; +import com.intellij.openapi.actionSystem.DataProvider; import com.intellij.openapi.command.CommandProcessor; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.module.Module; +import com.intellij.openapi.progress.ProgressIndicator; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.Messages; import com.intellij.openapi.ui.VerticalFlowLayout; @@ -510,11 +512,6 @@ public abstract class DesignerEditorPanel extends JPanel implements DataProvider return mySurfaceArea; } - public EditableArea getActionsArea() { - TreeEditableArea treeArea = DesignerToolWindowManager.getInstance(getProject()).getTreeArea(); - return treeArea == null ? mySurfaceArea : treeArea; - } - public ToolProvider getToolProvider() { return myToolProvider; } @@ -713,6 +710,18 @@ public abstract class DesignerEditorPanel extends JPanel implements DataProvider public abstract TreeComponentDecorator getTreeDecorator(); + ////////////////////////////////////////////////////////////////////////////////////////// + // + // Inspection + // + ////////////////////////////////////////////////////////////////////////////////////////// + + public void loadInspections(ProgressIndicator progress) { + } + + public void updateInspections() { + } + ////////////////////////////////////////////////////////////////////////////////////////// // // diff --git a/plugins/android-designer/src/com/intellij/android/designer/inspection/AndroidBackgroundEditorHighlighter.java b/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/inspection/DesignerBackgroundEditorHighlighter.java similarity index 73% rename from plugins/android-designer/src/com/intellij/android/designer/inspection/AndroidBackgroundEditorHighlighter.java rename to plugins/ui-designer/ui-designer-new/src/com/intellij/designer/inspection/DesignerBackgroundEditorHighlighter.java index 37b8cfdb9ade..3c74b71eaa22 100644 --- a/plugins/android-designer/src/com/intellij/android/designer/inspection/AndroidBackgroundEditorHighlighter.java +++ b/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/inspection/DesignerBackgroundEditorHighlighter.java @@ -13,21 +13,21 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.intellij.android.designer.inspection; +package com.intellij.designer.inspection; -import com.intellij.android.designer.designSurface.AndroidDesignerEditorPanel; import com.intellij.codeHighlighting.BackgroundEditorHighlighter; import com.intellij.codeHighlighting.HighlightingPass; +import com.intellij.designer.designSurface.DesignerEditorPanel; import org.jetbrains.annotations.NotNull; /** * @author Alexander Lobas */ -public class AndroidBackgroundEditorHighlighter implements BackgroundEditorHighlighter { +public final class DesignerBackgroundEditorHighlighter implements BackgroundEditorHighlighter { private final HighlightingPass[] myHighlightingPasses; - public AndroidBackgroundEditorHighlighter(AndroidDesignerEditorPanel designer) { - myHighlightingPasses = new HighlightingPass[]{new AndroidHighlightingPass(designer)}; + public DesignerBackgroundEditorHighlighter(DesignerEditorPanel designer) { + myHighlightingPasses = new HighlightingPass[]{new DesignerHighlightingPass(designer)}; } @NotNull diff --git a/plugins/android-designer/src/com/intellij/android/designer/inspection/AndroidHighlightingPass.java b/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/inspection/DesignerHighlightingPass.java similarity index 67% rename from plugins/android-designer/src/com/intellij/android/designer/inspection/AndroidHighlightingPass.java rename to plugins/ui-designer/ui-designer-new/src/com/intellij/designer/inspection/DesignerHighlightingPass.java index b08c9da07dfc..dc6d6a554dbf 100644 --- a/plugins/android-designer/src/com/intellij/android/designer/inspection/AndroidHighlightingPass.java +++ b/plugins/ui-designer/ui-designer-new/src/com/intellij/designer/inspection/DesignerHighlightingPass.java @@ -13,30 +13,29 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.intellij.android.designer.inspection; +package com.intellij.designer.inspection; -import com.intellij.android.designer.designSurface.AndroidDesignerEditorPanel; import com.intellij.codeHighlighting.HighlightingPass; +import com.intellij.designer.designSurface.DesignerEditorPanel; import com.intellij.openapi.progress.ProgressIndicator; /** * @author Alexander Lobas */ -public class AndroidHighlightingPass implements HighlightingPass { - private final AndroidDesignerEditorPanel myDesigner; +public final class DesignerHighlightingPass implements HighlightingPass { + private final DesignerEditorPanel myDesigner; - public AndroidHighlightingPass(AndroidDesignerEditorPanel designer) { + public DesignerHighlightingPass(DesignerEditorPanel designer) { myDesigner = designer; } @Override public void collectInformation(ProgressIndicator progress) { - myDesigner.loadInspections(); - // TODO: Auto-generated method stub + myDesigner.loadInspections(progress); } @Override public void applyInformationToEditor() { - // TODO: Auto-generated method stub + myDesigner.updateInspections(); } } \ No newline at end of file