155a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project/* 255a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * Copyright (C) 2007 The Android Open Source Project 355a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * 455a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * Licensed under the Eclipse Public License, Version 1.0 (the "License"); 555a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * you may not use this file except in compliance with the License. 655a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * You may obtain a copy of the License at 755a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * 855a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * http://www.eclipse.org/org/documents/epl-v10.php 955a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * 1055a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 1155a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 1255a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1355a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * See the License for the specific language governing permissions and 1455a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * limitations under the License. 1555a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project */ 1655a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project 1769425d803b34589309a69eddc53a338e1409b30cXavier Ducrohetpackage com.android.ide.eclipse.adt.internal.editors.manifest.descriptors; 1855a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project 1969425d803b34589309a69eddc53a338e1409b30cXavier Ducrohetimport com.android.ide.eclipse.adt.internal.editors.descriptors.AttributeDescriptor; 2069425d803b34589309a69eddc53a338e1409b30cXavier Ducrohetimport com.android.ide.eclipse.adt.internal.editors.descriptors.ElementDescriptor; 2169425d803b34589309a69eddc53a338e1409b30cXavier Ducrohetimport com.android.ide.eclipse.adt.internal.editors.manifest.model.UiManifestElementNode; 2269425d803b34589309a69eddc53a338e1409b30cXavier Ducrohetimport com.android.ide.eclipse.adt.internal.editors.uimodel.UiElementNode; 2355a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project 2455a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project/** 2555a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * {@link ManifestElementDescriptor} describes an XML element node, with its 2655a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * element name, its possible attributes, its possible child elements but also 2755a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * its display name and tooltip. 283dfd8112f7137821ef9191bfdd82a7f30ae52dc6Raphael Moll * 2955a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * This {@link ElementDescriptor} is specialized to create {@link UiManifestElementNode} UI nodes. 3055a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project */ 3155a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Projectpublic class ManifestElementDescriptor extends ElementDescriptor { 3255a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project 3355a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project /** 3455a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * Constructs a new {@link ManifestElementDescriptor}. 353dfd8112f7137821ef9191bfdd82a7f30ae52dc6Raphael Moll * 363dfd8112f7137821ef9191bfdd82a7f30ae52dc6Raphael Moll * @param xml_name The XML element node name. Case sensitive. 373dfd8112f7137821ef9191bfdd82a7f30ae52dc6Raphael Moll * @param ui_name The XML element name for the user interface, typically capitalized. 383dfd8112f7137821ef9191bfdd82a7f30ae52dc6Raphael Moll * @param tooltip An optional tooltip. Can be null or empty. 393dfd8112f7137821ef9191bfdd82a7f30ae52dc6Raphael Moll * @param sdk_url An optional SKD URL. Can be null or empty. 403dfd8112f7137821ef9191bfdd82a7f30ae52dc6Raphael Moll * @param attributes The list of allowed attributes. Can be null or empty. 413dfd8112f7137821ef9191bfdd82a7f30ae52dc6Raphael Moll * @param children The list of allowed children. Can be null or empty. 423dfd8112f7137821ef9191bfdd82a7f30ae52dc6Raphael Moll * @param mandatory Whether this node must always exist (even for empty models). 433dfd8112f7137821ef9191bfdd82a7f30ae52dc6Raphael Moll */ 443dfd8112f7137821ef9191bfdd82a7f30ae52dc6Raphael Moll public ManifestElementDescriptor(String xml_name, 453dfd8112f7137821ef9191bfdd82a7f30ae52dc6Raphael Moll String ui_name, 463dfd8112f7137821ef9191bfdd82a7f30ae52dc6Raphael Moll String tooltip, 473dfd8112f7137821ef9191bfdd82a7f30ae52dc6Raphael Moll String sdk_url, 483dfd8112f7137821ef9191bfdd82a7f30ae52dc6Raphael Moll AttributeDescriptor[] attributes, 493dfd8112f7137821ef9191bfdd82a7f30ae52dc6Raphael Moll ElementDescriptor[] children, 503dfd8112f7137821ef9191bfdd82a7f30ae52dc6Raphael Moll Mandatory mandatory) { 513dfd8112f7137821ef9191bfdd82a7f30ae52dc6Raphael Moll super(xml_name, ui_name, tooltip, sdk_url, attributes, children, mandatory); 523dfd8112f7137821ef9191bfdd82a7f30ae52dc6Raphael Moll } 533dfd8112f7137821ef9191bfdd82a7f30ae52dc6Raphael Moll 543dfd8112f7137821ef9191bfdd82a7f30ae52dc6Raphael Moll /** 553dfd8112f7137821ef9191bfdd82a7f30ae52dc6Raphael Moll * Constructs a new {@link ManifestElementDescriptor}. 563dfd8112f7137821ef9191bfdd82a7f30ae52dc6Raphael Moll * 5755a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * @param xml_name The XML element node name. Case sensitive. 5855a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * @param ui_name The XML element name for the user interface, typically capitalized. 5955a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * @param tooltip An optional tooltip. Can be null or empty. 6055a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * @param sdk_url An optional SKD URL. Can be null or empty. 6155a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * @param attributes The list of allowed attributes. Can be null or empty. 6255a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * @param children The list of allowed children. Can be null or empty. 6355a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * @param mandatory Whether this node must always exist (even for empty models). 6455a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project */ 653dfd8112f7137821ef9191bfdd82a7f30ae52dc6Raphael Moll public ManifestElementDescriptor(String xml_name, 663dfd8112f7137821ef9191bfdd82a7f30ae52dc6Raphael Moll String ui_name, 673dfd8112f7137821ef9191bfdd82a7f30ae52dc6Raphael Moll String tooltip, 683dfd8112f7137821ef9191bfdd82a7f30ae52dc6Raphael Moll String sdk_url, 6955a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project AttributeDescriptor[] attributes, 7055a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project ElementDescriptor[] children, 7155a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project boolean mandatory) { 7255a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project super(xml_name, ui_name, tooltip, sdk_url, attributes, children, mandatory); 7355a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project } 7455a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project 7555a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project /** 7655a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * Constructs a new {@link ManifestElementDescriptor}. 773dfd8112f7137821ef9191bfdd82a7f30ae52dc6Raphael Moll * 7855a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * @param xml_name The XML element node name. Case sensitive. 7955a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * @param ui_name The XML element name for the user interface, typically capitalized. 8055a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * @param tooltip An optional tooltip. Can be null or empty. 8155a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * @param sdk_url An optional SKD URL. Can be null or empty. 8255a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * @param attributes The list of allowed attributes. Can be null or empty. 8355a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * @param children The list of allowed children. Can be null or empty. 8455a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project */ 853dfd8112f7137821ef9191bfdd82a7f30ae52dc6Raphael Moll public ManifestElementDescriptor(String xml_name, 863dfd8112f7137821ef9191bfdd82a7f30ae52dc6Raphael Moll String ui_name, 873dfd8112f7137821ef9191bfdd82a7f30ae52dc6Raphael Moll String tooltip, 883dfd8112f7137821ef9191bfdd82a7f30ae52dc6Raphael Moll String sdk_url, 8955a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project AttributeDescriptor[] attributes, 9055a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project ElementDescriptor[] children) { 9155a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project super(xml_name, ui_name, tooltip, sdk_url, attributes, children, false); 9255a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project } 9355a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project 9455a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project /** 9555a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * This is a shortcut for 9655a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * ManifestElementDescriptor(xml_name, xml_name.capitalize(), null, null, null, children). 9755a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * This constructor is mostly used for unit tests. 983dfd8112f7137821ef9191bfdd82a7f30ae52dc6Raphael Moll * 9955a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * @param xml_name The XML element node name. Case sensitive. 10055a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project */ 10155a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project public ManifestElementDescriptor(String xml_name, ElementDescriptor[] children) { 10255a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project super(xml_name, children); 10355a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project } 10455a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project 10555a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project /** 10655a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * This is a shortcut for 10755a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * ManifestElementDescriptor(xml_name, xml_name.capitalize(), null, null, null, null). 10855a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * This constructor is mostly used for unit tests. 1093dfd8112f7137821ef9191bfdd82a7f30ae52dc6Raphael Moll * 11055a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * @param xml_name The XML element node name. Case sensitive. 11155a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project */ 11255a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project public ManifestElementDescriptor(String xml_name) { 11355a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project super(xml_name, null); 11455a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project } 11555a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project 11655a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project /** 11755a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project * @return A new {@link UiElementNode} linked to this descriptor. 11855a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project */ 11955a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project @Override 12055a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project public UiElementNode createUiNode() { 12155a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project return new UiManifestElementNode(this); 12255a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project } 12355a2c71f27d3e0b8344597c7f281e687cb7aeb1bThe Android Open Source Project} 124