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
|
/*
* 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.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
public String getDisplayName() {
// Default is to not override the selection display name.
return null;
}
// ==== Selection ====
@Override
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
public DropFeedback onDropEnter(INode targetNode, Object targetView, IDragElement[] elements) {
return null;
}
@Override
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
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) {
}
}
|