1d6124a176326169bc87cb29823ca2dc906689680Tor Norbye/*
2d6124a176326169bc87cb29823ca2dc906689680Tor Norbye * Copyright (C) 2012 The Android Open Source Project
3d6124a176326169bc87cb29823ca2dc906689680Tor Norbye *
4d6124a176326169bc87cb29823ca2dc906689680Tor Norbye * Licensed under the Eclipse Public License, Version 1.0 (the "License");
5d6124a176326169bc87cb29823ca2dc906689680Tor Norbye * you may not use this file except in compliance with the License.
6d6124a176326169bc87cb29823ca2dc906689680Tor Norbye * You may obtain a copy of the License at
7d6124a176326169bc87cb29823ca2dc906689680Tor Norbye *
8d6124a176326169bc87cb29823ca2dc906689680Tor Norbye *      http://www.eclipse.org/org/documents/epl-v10.php
9d6124a176326169bc87cb29823ca2dc906689680Tor Norbye *
10d6124a176326169bc87cb29823ca2dc906689680Tor Norbye * Unless required by applicable law or agreed to in writing, software
11d6124a176326169bc87cb29823ca2dc906689680Tor Norbye * distributed under the License is distributed on an "AS IS" BASIS,
12d6124a176326169bc87cb29823ca2dc906689680Tor Norbye * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13d6124a176326169bc87cb29823ca2dc906689680Tor Norbye * See the License for the specific language governing permissions and
14d6124a176326169bc87cb29823ca2dc906689680Tor Norbye * limitations under the License.
15d6124a176326169bc87cb29823ca2dc906689680Tor Norbye */
16d6124a176326169bc87cb29823ca2dc906689680Tor Norbyepackage com.android.ide.eclipse.adt.internal.lint;
17d6124a176326169bc87cb29823ca2dc906689680Tor Norbye
1812d4581faa6438941e65a9dc83213be34c6ca970Tor Norbyeimport static com.android.SdkConstants.ANDROID_URI;
1912d4581faa6438941e65a9dc83213be34c6ca970Tor Norbyeimport static com.android.SdkConstants.ATTR_LAYOUT_HEIGHT;
2012d4581faa6438941e65a9dc83213be34c6ca970Tor Norbyeimport static com.android.SdkConstants.ATTR_LAYOUT_WIDTH;
2112d4581faa6438941e65a9dc83213be34c6ca970Tor Norbyeimport static com.android.SdkConstants.ATTR_ORIENTATION;
2212d4581faa6438941e65a9dc83213be34c6ca970Tor Norbyeimport static com.android.SdkConstants.VALUE_VERTICAL;
2312d4581faa6438941e65a9dc83213be34c6ca970Tor Norbyeimport static com.android.SdkConstants.VALUE_ZERO_DP;
24d6124a176326169bc87cb29823ca2dc906689680Tor Norbye
25d6124a176326169bc87cb29823ca2dc906689680Tor Norbyeimport org.eclipse.core.resources.IMarker;
26d6124a176326169bc87cb29823ca2dc906689680Tor Norbyeimport org.eclipse.jface.text.IDocument;
27d6124a176326169bc87cb29823ca2dc906689680Tor Norbyeimport org.eclipse.swt.graphics.Image;
28d6124a176326169bc87cb29823ca2dc906689680Tor Norbyeimport org.eclipse.ui.ISharedImages;
29d6124a176326169bc87cb29823ca2dc906689680Tor Norbyeimport org.eclipse.ui.PlatformUI;
30d6124a176326169bc87cb29823ca2dc906689680Tor Norbyeimport org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
31d6124a176326169bc87cb29823ca2dc906689680Tor Norbyeimport org.w3c.dom.Element;
32d6124a176326169bc87cb29823ca2dc906689680Tor Norbyeimport org.w3c.dom.Node;
33d6124a176326169bc87cb29823ca2dc906689680Tor Norbye
34d6124a176326169bc87cb29823ca2dc906689680Tor Norbye@SuppressWarnings("restriction") // DOM model
35d6124a176326169bc87cb29823ca2dc906689680Tor Norbyefinal class LinearLayoutWeightFix extends DocumentFix {
36d6124a176326169bc87cb29823ca2dc906689680Tor Norbye    private LinearLayoutWeightFix(String id, IMarker marker) {
37d6124a176326169bc87cb29823ca2dc906689680Tor Norbye        super(id, marker);
38d6124a176326169bc87cb29823ca2dc906689680Tor Norbye    }
39d6124a176326169bc87cb29823ca2dc906689680Tor Norbye
40d6124a176326169bc87cb29823ca2dc906689680Tor Norbye    @Override
41d6124a176326169bc87cb29823ca2dc906689680Tor Norbye    public boolean needsFocus() {
42d6124a176326169bc87cb29823ca2dc906689680Tor Norbye        return false;
43d6124a176326169bc87cb29823ca2dc906689680Tor Norbye    }
44d6124a176326169bc87cb29823ca2dc906689680Tor Norbye
45d6124a176326169bc87cb29823ca2dc906689680Tor Norbye    @Override
46d6124a176326169bc87cb29823ca2dc906689680Tor Norbye    public boolean isCancelable() {
47d6124a176326169bc87cb29823ca2dc906689680Tor Norbye        return false;
48d6124a176326169bc87cb29823ca2dc906689680Tor Norbye    }
49d6124a176326169bc87cb29823ca2dc906689680Tor Norbye
50d6124a176326169bc87cb29823ca2dc906689680Tor Norbye    @Override
51d6124a176326169bc87cb29823ca2dc906689680Tor Norbye    protected void apply(IDocument document, IStructuredModel model, Node node, int start,
52d6124a176326169bc87cb29823ca2dc906689680Tor Norbye            int end) {
53d6124a176326169bc87cb29823ca2dc906689680Tor Norbye        if (node instanceof Element && node.getParentNode() instanceof Element) {
54d6124a176326169bc87cb29823ca2dc906689680Tor Norbye            Element element = (Element) node;
55d6124a176326169bc87cb29823ca2dc906689680Tor Norbye            Element parent = (Element) node.getParentNode();
56d6124a176326169bc87cb29823ca2dc906689680Tor Norbye            String dimension;
57d6124a176326169bc87cb29823ca2dc906689680Tor Norbye            if (VALUE_VERTICAL.equals(parent.getAttributeNS(ANDROID_URI,
58d6124a176326169bc87cb29823ca2dc906689680Tor Norbye                    ATTR_ORIENTATION))) {
59d6124a176326169bc87cb29823ca2dc906689680Tor Norbye                dimension = ATTR_LAYOUT_HEIGHT;
60d6124a176326169bc87cb29823ca2dc906689680Tor Norbye            } else {
61d6124a176326169bc87cb29823ca2dc906689680Tor Norbye                dimension = ATTR_LAYOUT_WIDTH;
62d6124a176326169bc87cb29823ca2dc906689680Tor Norbye            }
63d6124a176326169bc87cb29823ca2dc906689680Tor Norbye            element.setAttributeNS(ANDROID_URI, dimension, VALUE_ZERO_DP);
64d6124a176326169bc87cb29823ca2dc906689680Tor Norbye        }
65d6124a176326169bc87cb29823ca2dc906689680Tor Norbye    }
66d6124a176326169bc87cb29823ca2dc906689680Tor Norbye
67d6124a176326169bc87cb29823ca2dc906689680Tor Norbye    @Override
68d6124a176326169bc87cb29823ca2dc906689680Tor Norbye    public String getDisplayString() {
69d6124a176326169bc87cb29823ca2dc906689680Tor Norbye        return "Replace size attribute with 0dp";
70d6124a176326169bc87cb29823ca2dc906689680Tor Norbye    }
71d6124a176326169bc87cb29823ca2dc906689680Tor Norbye
72d6124a176326169bc87cb29823ca2dc906689680Tor Norbye    @Override
73d6124a176326169bc87cb29823ca2dc906689680Tor Norbye    public Image getImage() {
74d6124a176326169bc87cb29823ca2dc906689680Tor Norbye        ISharedImages sharedImages = PlatformUI.getWorkbench().getSharedImages();
75d6124a176326169bc87cb29823ca2dc906689680Tor Norbye        // TODO: Need a better icon here
76d6124a176326169bc87cb29823ca2dc906689680Tor Norbye        return sharedImages.getImage(ISharedImages.IMG_OBJ_ELEMENT);
77d6124a176326169bc87cb29823ca2dc906689680Tor Norbye    }
78a881b0b34678ad76c9f5eba62fac7a00a22ac606Tor Norbye}
79