diff options
Diffstat (limited to 'eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/eclipse/adt/internal/editors/layout/gre/MockNodeProxy.java')
-rwxr-xr-x | eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/eclipse/adt/internal/editors/layout/gre/MockNodeProxy.java | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/eclipse/adt/internal/editors/layout/gre/MockNodeProxy.java b/eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/eclipse/adt/internal/editors/layout/gre/MockNodeProxy.java new file mode 100755 index 000000000..433d3903d --- /dev/null +++ b/eclipse/plugins/com.android.ide.eclipse.tests/unittests/com/android/ide/eclipse/adt/internal/editors/layout/gre/MockNodeProxy.java @@ -0,0 +1,68 @@ +/* + * Copyright (C) 2010 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.eclipse.adt.internal.editors.layout.gre; + +import com.android.ide.eclipse.adt.internal.editors.layout.descriptors.ViewElementDescriptor; +import com.android.ide.eclipse.adt.internal.editors.layout.uimodel.UiViewElementNode; + +import org.eclipse.swt.graphics.Rectangle; +import org.eclipse.ui.internal.registry.ViewDescriptor; + +/** + * Mocks a {@link NodeProxy}, creating it using an XML local name and generating + * a made-up {@link UiViewElementNode} and a {@link ViewDescriptor} on the fly. + */ +public class MockNodeProxy extends NodeProxy { + + /** + * Generates a {@link NodeProxy} using an FQCN (e.g. android.view.View) + * and making the last segment of the FQCN the XML name of the view (e.g. "View") + * and wraps it as a {@link NodeProxy}. + * + * @param fqcn The fully qualified name of the class to wrap, e.g. "android.view.Button". + * @param bounds The bounds of a the view in the canvas. Must be either: <br/> + * - a valid rect for a view that is actually in the canvas <br/> + * - <b>*or*</b> null (or an invalid rect) for a view that has just been added dynamically + * to the model. We never store a null bounds rectangle in the node, a null rectangle + * will be converted to an invalid rectangle. + * @param factory A {@link NodeFactory} to create unique children nodes. + */ + public MockNodeProxy(String fqcn, Rectangle bounds, NodeFactory factory) { + super(makeUiViewNode(fqcn), bounds, factory); + } + + /** + * Generates a {@link ViewElementDescriptor} using an FQCN (e.g. android.view.View) + * and making the last segment of the FQCN the XML name of the view (e.g. "View"). + * + * @param fqcn The fully qualified name of the class to wrap, e.g. "android.view.Button" + * @return A new view element node with a new descriptor for the FQCN and an XML name + * matching the last FQCN segment (e.g. "Button") + */ + private static UiViewElementNode makeUiViewNode(String fqcn) { + String xmlName = fqcn; + int pos = xmlName.lastIndexOf('.'); + if (pos > 0) { + xmlName = xmlName.substring(pos + 1); + } + + ViewElementDescriptor desc = new ViewElementDescriptor(xmlName, fqcn); + UiViewElementNode uiNode = new UiViewElementNode(desc); + return uiNode; + } + +} |