Home | History | Annotate | Download | only in api
      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  */
     16 package com.android.ide.common.api;
     17 
     18 import com.android.annotations.Nullable;
     19 import com.google.common.annotations.Beta;
     20 
     21 import 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
     32 public 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