aboutsummaryrefslogtreecommitdiff
path: root/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/common/layout/TableRowRule.java
diff options
context:
space:
mode:
Diffstat (limited to 'eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/common/layout/TableRowRule.java')
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/common/layout/TableRowRule.java80
1 files changed, 80 insertions, 0 deletions
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/common/layout/TableRowRule.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/common/layout/TableRowRule.java
new file mode 100644
index 000000000..6e3f202ee
--- /dev/null
+++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/common/layout/TableRowRule.java
@@ -0,0 +1,80 @@
+/*
+ * 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.common.layout;
+
+import static com.android.SdkConstants.FQCN_TABLE_LAYOUT;
+
+import com.android.annotations.NonNull;
+import com.android.annotations.Nullable;
+import com.android.ide.common.api.DropFeedback;
+import com.android.ide.common.api.INode;
+import com.android.ide.common.api.IViewRule;
+import com.android.ide.common.api.InsertType;
+import com.android.ide.common.api.RuleAction;
+import com.android.ide.common.api.SegmentType;
+
+import java.util.List;
+
+/**
+ * An {@link IViewRule} for android.widget.TableRow.
+ */
+public class TableRowRule extends LinearLayoutRule {
+ @Override
+ protected boolean isVertical(INode node) {
+ return false;
+ }
+
+ @Override
+ protected boolean supportsOrientation() {
+ return false;
+ }
+
+ @Override
+ public void onChildInserted(@NonNull INode child, @NonNull INode parent,
+ @NonNull InsertType insertType) {
+ // Overridden to inhibit the setting of layout_width/layout_height since
+ // the table row will enforce match_parent and wrap_content for width and height
+ // respectively.
+ }
+
+ @Override
+ public void addLayoutActions(
+ @NonNull List<RuleAction> actions,
+ final @NonNull INode parentNode,
+ final @NonNull List<? extends INode> children) {
+ super.addLayoutActions(actions, parentNode, children);
+
+ // Also apply table-specific actions on the table row such that you can
+ // select something in a table row and still get offered actions on the surrounding
+ // table.
+ if (children != null) {
+ INode grandParent = parentNode.getParent();
+ if (grandParent != null && grandParent.getFqcn().equals(FQCN_TABLE_LAYOUT)) {
+ TableLayoutRule.addTableLayoutActions(mRulesEngine, actions, grandParent,
+ children);
+ }
+ }
+ }
+
+ @Override
+ public DropFeedback onResizeBegin(@NonNull INode child, @NonNull INode parent,
+ @Nullable SegmentType horizontalEdge, @Nullable SegmentType verticalEdge,
+ @Nullable Object childView, @Nullable Object parentView) {
+ // No resizing in TableRows; the width is *always* match_parent and the height is
+ // *always* wrap_content.
+ return null;
+ }
+}