aboutsummaryrefslogtreecommitdiffstats
path: root/rule_api/src/com/android/ide/common/api/AbstractViewRule.java
blob: 3bbf8e7196554a67b5483dae8e46ecc456f6f420 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
/*
 * Copyright (C) 2011 The Android Open Source Project
 *
 * Licensed under the Eclipse Public License, Version 1.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.eclipse.org/org/documents/epl-v10.php
 *
 * 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.android.ide.common.api;

import com.android.annotations.Nullable;
import com.google.common.annotations.Beta;

import java.util.List;

/**
 * Default implementation of an {@link IViewRule}. This is a convenience
 * implementation which makes it easier to supply designtime behavior for a
 * custom view and just override the methods you are interested in.
 * <p>
 * <b>NOTE: This is not a public or final API; if you rely on this be prepared
 * to adjust your code for the next tools release.</b>
 */
@Beta
public class AbstractViewRule implements IViewRule {
    @Override
    public boolean onInitialize(String fqcn, IClientRulesEngine engine) {
        return true;
    }

    @Override
    public void onDispose() {
    }

    @Override
    @Nullable
    public String getDisplayName() {
        // Default is to not override the selection display name.
        return null;
    }

    // ==== Selection ====

    @Override
    @Nullable
    public List<String> getSelectionHint(INode parentNode, INode childNode) {
        return null;
    }

    @Override
    public void addLayoutActions(List<RuleAction> actions, INode parentNode,
            List<? extends INode> children) {
    }

    @Override
    public void addContextMenuActions(List<RuleAction> actions, INode node) {
    }

    @Override
    public void paintSelectionFeedback(IGraphics graphics, INode parentNode,
            List<? extends INode> childNodes, Object view) {
    }

    // ==== Drag & drop support ====

    // By default Views do not accept drag'n'drop.
    @Override
    @Nullable
    public DropFeedback onDropEnter(INode targetNode, Object targetView, IDragElement[] elements) {
        return null;
    }

    @Override
    @Nullable
    public DropFeedback onDropMove(INode targetNode, IDragElement[] elements,
            DropFeedback feedback, Point p) {
        return null;
    }

    @Override
    public void onDropLeave(INode targetNode, IDragElement[] elements, DropFeedback feedback) {
        // ignore
    }

    @Override
    public void onDropped(
            INode targetNode,
            IDragElement[] elements,
            DropFeedback feedback,
            Point p) {
        // ignore
    }


    @Override
    public void onPaste(INode targetNode, Object targetView, IDragElement[] pastedElements) {
    }

    // ==== Create/Remove hooks ====

    @Override
    public void onCreate(INode node, INode parent, InsertType insertType) {
    }

    @Override
    public void onChildInserted(INode child, INode parent, InsertType insertType) {
    }

    @Override
    public void onRemovingChildren(List<INode> deleted, INode parent) {
    }

    // ==== Resizing ====

    @Override
    @Nullable
    public DropFeedback onResizeBegin(INode child, INode parent, SegmentType horizontalEdge,
            SegmentType verticalEdge, Object childView, Object parentView) {
        return null;
    }

    @Override
    public void onResizeUpdate(DropFeedback feedback, INode child, INode parent, Rect newBounds,
            int modifierMask) {
    }

    @Override
    public void onResizeEnd(DropFeedback feedback, INode child, final INode parent,
            final Rect newBounds) {
    }
}