AbstractViewRule.java revision 5d7dc30638953195ed55d32bc9dc37102a613ff8
1/*
2 * Copyright (C) 2011 The Android Open Source Project
3 *
4 * Licensed under the Eclipse Public License, Version 1.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.eclipse.org/org/documents/epl-v10.php
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16package com.android.ide.common.api;
17
18import com.android.annotations.Nullable;
19import com.google.common.annotations.Beta;
20
21import java.util.List;
22
23/**
24 * Default implementation of an {@link IViewRule}. This is a convenience
25 * implementation which makes it easier to supply designtime behavior for a
26 * custom view and just override the methods you are interested in.
27 * <p>
28 * <b>NOTE: This is not a public or final API; if you rely on this be prepared
29 * to adjust your code for the next tools release.</b>
30 */
31@Beta
32public class AbstractViewRule implements IViewRule {
33    @Override
34    public boolean onInitialize(String fqcn, IClientRulesEngine engine) {
35        return true;
36    }
37
38    @Override
39    public void onDispose() {
40    }
41
42    @Override
43    @Nullable
44    public String getDisplayName() {
45        // Default is to not override the selection display name.
46        return null;
47    }
48
49    // ==== Selection ====
50
51    @Override
52    @Nullable
53    public List<String> getSelectionHint(INode parentNode, INode childNode) {
54        return null;
55    }
56
57    @Override
58    public void addLayoutActions(List<RuleAction> actions, INode parentNode,
59            List<? extends INode> children) {
60    }
61
62    @Override
63    public void addContextMenuActions(List<RuleAction> actions, INode node) {
64    }
65
66    @Override
67    public void paintSelectionFeedback(IGraphics graphics, INode parentNode,
68            List<? extends INode> childNodes, Object view) {
69    }
70
71    // ==== Drag & drop support ====
72
73    // By default Views do not accept drag'n'drop.
74    @Override
75    @Nullable
76    public DropFeedback onDropEnter(INode targetNode, Object targetView, IDragElement[] elements) {
77        return null;
78    }
79
80    @Override
81    @Nullable
82    public DropFeedback onDropMove(INode targetNode, IDragElement[] elements,
83            DropFeedback feedback, Point p) {
84        return null;
85    }
86
87    @Override
88    public void onDropLeave(INode targetNode, IDragElement[] elements, DropFeedback feedback) {
89        // ignore
90    }
91
92    @Override
93    public void onDropped(
94            INode targetNode,
95            IDragElement[] elements,
96            DropFeedback feedback,
97            Point p) {
98        // ignore
99    }
100
101
102    @Override
103    public void onPaste(INode targetNode, Object targetView, IDragElement[] pastedElements) {
104    }
105
106    // ==== Create/Remove hooks ====
107
108    @Override
109    public void onCreate(INode node, INode parent, InsertType insertType) {
110    }
111
112    @Override
113    public void onChildInserted(INode child, INode parent, InsertType insertType) {
114    }
115
116    @Override
117    public void onRemovingChildren(List<INode> deleted, INode parent) {
118    }
119
120    // ==== Resizing ====
121
122    @Override
123    @Nullable
124    public DropFeedback onResizeBegin(INode child, INode parent, SegmentType horizontalEdge,
125            SegmentType verticalEdge, Object childView, Object parentView) {
126        return null;
127    }
128
129    @Override
130    public void onResizeUpdate(DropFeedback feedback, INode child, INode parent, Rect newBounds,
131            int modifierMask) {
132    }
133
134    @Override
135    public void onResizeEnd(DropFeedback feedback, INode child, final INode parent,
136            final Rect newBounds) {
137    }
138}
139