com.android.tools.lint.checks
Class ButtonDetector

java.lang.Object
  extended by com.android.tools.lint.detector.api.Detector
      extended by com.android.tools.lint.detector.api.ResourceXmlDetector
          extended by com.android.tools.lint.checks.ButtonDetector
All Implemented Interfaces:
com.android.tools.lint.detector.api.Detector.XmlScanner

public class ButtonDetector
extends com.android.tools.lint.detector.api.ResourceXmlDetector

Check which looks at the order of buttons in dialogs and makes sure that "the dismissive action of a dialog is always on the left whereas the affirmative actions are on the right."

This only looks for the affirmative and dismissive actions named "OK" and "Cancel"; "Cancel" usually works, but the affirmative action often has many other names -- "Done", "Send", "Go", etc.

TODO: Perhaps we should look for Yes/No dialogs and suggested they be rephrased as Cancel/OK dialogs? Similarly, consider "Abort" a synonym for "Cancel" ?


Nested Class Summary
 
Nested classes/interfaces inherited from class com.android.tools.lint.detector.api.Detector
com.android.tools.lint.detector.api.Detector.BinaryResourceScanner, com.android.tools.lint.detector.api.Detector.ClassScanner, com.android.tools.lint.detector.api.Detector.GradleScanner, com.android.tools.lint.detector.api.Detector.JavaScanner, com.android.tools.lint.detector.api.Detector.OtherFileScanner, com.android.tools.lint.detector.api.Detector.ResourceFolderScanner, com.android.tools.lint.detector.api.Detector.XmlScanner
 
Field Summary
static com.android.tools.lint.detector.api.Issue BACK_BUTTON
          The main issue discovered by this detector
static com.android.tools.lint.detector.api.Issue CASE
          The main issue discovered by this detector
static com.android.tools.lint.detector.api.Issue ORDER
          The main issue discovered by this detector
static com.android.tools.lint.detector.api.Issue STYLE
          The main issue discovered by this detector
 
Fields inherited from interface com.android.tools.lint.detector.api.Detector.XmlScanner
ALL
 
Constructor Summary
ButtonDetector()
          Constructs a new ButtonDetector
 
Method Summary
 void afterCheckProject(com.android.tools.lint.detector.api.Context context)
           
 boolean appliesTo(com.android.resources.ResourceFolderType folderType)
           
 java.util.Collection<java.lang.String> getApplicableElements()
           
 com.android.tools.lint.detector.api.Speed getSpeed()
           
 void visitElement(com.android.tools.lint.detector.api.XmlContext context, org.w3c.dom.Element element)
           
 
Methods inherited from class com.android.tools.lint.detector.api.ResourceXmlDetector
appliesTo, run
 
Methods inherited from class com.android.tools.lint.detector.api.Detector
afterCheckFile, afterCheckLibraryProject, applicableSuperClasses, appliesToFolder, appliesToResourceRefs, beforeCheckFile, beforeCheckLibraryProject, beforeCheckProject, checkBinaryResource, checkCall, checkClass, checkClass, checkFolder, checkInstruction, createJavaVisitor, getApplicableAsmNodeTypes, getApplicableAttributes, getApplicableCallNames, getApplicableCallOwners, getApplicableConstructorTypes, getApplicableFiles, getApplicableMethodNames, getApplicableNodeTypes, getSpeed, visitAttribute, visitBuildScript, visitConstructor, visitDocument, visitElementAfter, visitMethod, visitResourceReference
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface com.android.tools.lint.detector.api.Detector.XmlScanner
getApplicableAttributes, visitAttribute, visitDocument, visitElementAfter
 

Field Detail

ORDER

public static final com.android.tools.lint.detector.api.Issue ORDER
The main issue discovered by this detector


STYLE

public static final com.android.tools.lint.detector.api.Issue STYLE
The main issue discovered by this detector


BACK_BUTTON

public static final com.android.tools.lint.detector.api.Issue BACK_BUTTON
The main issue discovered by this detector


CASE

public static final com.android.tools.lint.detector.api.Issue CASE
The main issue discovered by this detector

Constructor Detail

ButtonDetector

public ButtonDetector()
Constructs a new ButtonDetector

Method Detail

getSpeed

@NonNull
public com.android.tools.lint.detector.api.Speed getSpeed()
Overrides:
getSpeed in class com.android.tools.lint.detector.api.Detector

getApplicableElements

public java.util.Collection<java.lang.String> getApplicableElements()
Specified by:
getApplicableElements in interface com.android.tools.lint.detector.api.Detector.XmlScanner
Overrides:
getApplicableElements in class com.android.tools.lint.detector.api.Detector

appliesTo

public boolean appliesTo(@NonNull
                         com.android.resources.ResourceFolderType folderType)
Overrides:
appliesTo in class com.android.tools.lint.detector.api.ResourceXmlDetector

afterCheckProject

public void afterCheckProject(@NonNull
                              com.android.tools.lint.detector.api.Context context)
Overrides:
afterCheckProject in class com.android.tools.lint.detector.api.Detector

visitElement

public void visitElement(@NonNull
                         com.android.tools.lint.detector.api.XmlContext context,
                         @NonNull
                         org.w3c.dom.Element element)
Specified by:
visitElement in interface com.android.tools.lint.detector.api.Detector.XmlScanner
Overrides:
visitElement in class com.android.tools.lint.detector.api.Detector