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
139
|
/*
* 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.NonNull;
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(@NonNull String fqcn, @NonNull 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(@NonNull INode parentNode, @NonNull INode childNode) {
return null;
}
@Override
public void addLayoutActions(@NonNull List<RuleAction> actions, @NonNull INode parentNode,
@NonNull List<? extends INode> children) {
}
@Override
public void addContextMenuActions(@NonNull List<RuleAction> actions, @NonNull INode node) {
}
@Override
public void paintSelectionFeedback(@NonNull IGraphics graphics, @NonNull INode parentNode,
@NonNull List<? extends INode> childNodes, @Nullable Object view) {
}
// ==== Drag & drop support ====
// By default Views do not accept drag'n'drop.
@Override
@Nullable
public DropFeedback onDropEnter(@NonNull INode targetNode, @Nullable Object targetView, @Nullable IDragElement[] elements) {
return null;
}
@Override
@Nullable
public DropFeedback onDropMove(@NonNull INode targetNode, @NonNull IDragElement[] elements,
@Nullable DropFeedback feedback, @NonNull Point p) {
return null;
}
@Override
public void onDropLeave(@NonNull INode targetNode, @NonNull IDragElement[] elements, @Nullable DropFeedback feedback) {
// ignore
}
@Override
public void onDropped(
@NonNull INode targetNode,
@NonNull IDragElement[] elements,
@Nullable DropFeedback feedback,
@NonNull Point p) {
// ignore
}
@Override
public void onPaste(@NonNull INode targetNode, @Nullable Object targetView, @NonNull IDragElement[] pastedElements) {
}
// ==== Create/Remove hooks ====
@Override
public void onCreate(@NonNull INode node, @NonNull INode parent, @NonNull InsertType insertType) {
}
@Override
public void onChildInserted(@NonNull INode child, @NonNull INode parent, @NonNull InsertType insertType) {
}
@Override
public void onRemovingChildren(@NonNull List<INode> deleted, @NonNull INode parent) {
}
// ==== Resizing ====
@Override
@Nullable
public DropFeedback onResizeBegin(@NonNull INode child, @NonNull INode parent, @Nullable SegmentType horizontalEdge,
@Nullable SegmentType verticalEdge, @Nullable Object childView, @Nullable Object parentView) {
return null;
}
@Override
public void onResizeUpdate(@Nullable DropFeedback feedback, @NonNull INode child, @NonNull INode parent, @NonNull Rect newBounds,
int modifierMask) {
}
@Override
public void onResizeEnd(@Nullable DropFeedback feedback, @NonNull INode child, final @NonNull INode parent,
final @NonNull Rect newBounds) {
}
}
|