Index: trunk/src/org/openstreetmap/josm/data/validation/tests/PowerLines.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/validation/tests/PowerLines.java	(revision 10362)
+++ trunk/src/org/openstreetmap/josm/data/validation/tests/PowerLines.java	(revision 10363)
@@ -42,4 +42,6 @@
     /** Values for {@code power} key interpreted as power stations */
     protected static final Collection<String> POWER_STATION_TAGS = Arrays.asList("station", "sub_station", "substation", "plant", "generator");
+    /** Values for {@code building} key interpreted as power stations */
+    protected static final Collection<String> BUILDING_STATION_TAGS = Arrays.asList("transformer_tower");
     /** Values for {@code power} key interpreted as allowed power items */
     protected static final Collection<String> POWER_ALLOWED_TAGS = Arrays.asList("switch", "transformer", "busbar", "generator", "switchgear",
@@ -174,5 +176,5 @@
      */
     protected static final boolean isPowerStation(OsmPrimitive p) {
-        return isPowerIn(p, POWER_STATION_TAGS);
+        return isPowerIn(p, POWER_STATION_TAGS) || isBuildingIn(p, BUILDING_STATION_TAGS);
     }
 
@@ -196,5 +198,5 @@
 
     /**
-     * Helper function to check if power tags is a certain value.
+     * Helper function to check if power tag is a certain value.
      * @param p The primitive to be tested
      * @param values List of possible values
@@ -203,4 +205,15 @@
     private static boolean isPowerIn(OsmPrimitive p, Collection<String> values) {
         String v = p.get("power");
+        return v != null && values != null && values.contains(v);
+    }
+
+    /**
+     * Helper function to check if building tag is a certain value.
+     * @param p The primitive to be tested
+     * @param values List of possible values
+     * @return {@code true} if power key is set and equal to possible values
+     */
+    private static boolean isBuildingIn(OsmPrimitive p, Collection<String> values) {
+        String v = p.get("building");
         return v != null && values != null && values.contains(v);
     }
Index: trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPreset.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPreset.java	(revision 10362)
+++ trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPreset.java	(revision 10363)
@@ -43,8 +43,8 @@
 import org.openstreetmap.josm.data.osm.Tag;
 import org.openstreetmap.josm.gui.ExtendedDialog;
-import org.openstreetmap.josm.gui.MapView;
 import org.openstreetmap.josm.gui.Notification;
 import org.openstreetmap.josm.gui.dialogs.relation.RelationEditor;
-import org.openstreetmap.josm.gui.layer.Layer;
+import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeEvent;
+import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeListener;
 import org.openstreetmap.josm.gui.preferences.ToolbarPreferences;
 import org.openstreetmap.josm.gui.tagging.presets.items.Key;
@@ -75,5 +75,5 @@
  * @since 294
  */
-public class TaggingPreset extends AbstractAction implements MapView.LayerChangeListener, Predicate<OsmPrimitive> {
+public class TaggingPreset extends AbstractAction implements ActiveLayerChangeListener, Predicate<OsmPrimitive> {
 
     public static final int DIALOG_ANSWER_APPLY = 1;
@@ -113,5 +113,5 @@
      */
     public TaggingPreset() {
-        MapView.addLayerChangeListener(this);
+        Main.getLayerManager().addActiveLayerChangeListener(this);
         updateEnabledState();
     }
@@ -480,4 +480,8 @@
     }
 
+    /**
+     * Gets a list of tags that are set by this preset.
+     * @return The list of tags.
+     */
     public List<Tag> getChangedTags() {
         List<Tag> result = new ArrayList<>();
@@ -488,4 +492,10 @@
     }
 
+    /**
+     * Create a command to change the given list of tags.
+     * @param sel The primitives to change the tags for
+     * @param changedTags The tags to change
+     * @return A command that changes the tags.
+     */
     public static Command createCommand(Collection<OsmPrimitive> sel, List<Tag> changedTags) {
         List<Command> cmds = new ArrayList<>();
@@ -514,15 +524,5 @@
 
     @Override
-    public void activeLayerChange(Layer oldLayer, Layer newLayer) {
-        updateEnabledState();
-    }
-
-    @Override
-    public void layerAdded(Layer newLayer) {
-        updateEnabledState();
-    }
-
-    @Override
-    public void layerRemoved(Layer oldLayer) {
+    public void activeOrEditLayerChanged(ActiveLayerChangeEvent e) {
         updateEnabledState();
     }
@@ -533,4 +533,9 @@
     }
 
+    /**
+     * Determines whether this preset matches the types.
+     * @param t The types that must match
+     * @return <code>true</code> if all types match.
+     */
     public boolean typeMatches(Collection<TaggingPresetType> t) {
         return t == null || types == null || types.containsAll(t);
@@ -558,10 +563,9 @@
      */
     public boolean matches(Collection<TaggingPresetType> t, Map<String, String> tags, boolean onlyShowable) {
-        if (onlyShowable && !isShowable())
+        if ((onlyShowable && !isShowable()) || !typeMatches(t)) {
             return false;
-        else if (!typeMatches(t))
-            return false;
-        else
+        } else {
             return TaggingPresetItem.matches(data, tags);
+        }
     }
 
@@ -590,4 +594,9 @@
     }
 
+    /**
+     * Gets a string describing this preset that can be used for the toolbar
+     * @return A String that can be passed on to the toolbar
+     * @see ToolbarPreferences#addCustomButton(String, int, boolean)
+     */
     public String getToolbarString() {
         ToolbarPreferences.ActionParser actionParser = new ToolbarPreferences.ActionParser(null);
