/*
 * Copyright 2000-2009 JetBrains s.r.o.
 *
 * Licensed under the Apache License, Version 2.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.apache.org/licenses/LICENSE-2.0
 *
 * 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.intellij.uiDesigner;

/**
 * @author yole
 * @noinspection HardCodedStringLiteral
 */
public class UIFormXmlConstants {
  public static final String ATTRIBUTE_BIND_TO_CLASS = "bind-to-class";
  public static final String ATTRIBUTE_VALUE = "value";
  public static final String ATTRIBUTE_CLASS = "class";
  public static final String ATTRIBUTE_NOI18N = "noi18n";
  public static final String ATTRIBUTE_RESOURCE_BUNDLE = "resource-bundle";
  public static final String ATTRIBUTE_KEY = "key";
  public static final String ATTRIBUTE_TITLE = "title";
  public static final String ATTRIBUTE_TITLE_RESOURCE_BUNDLE = "title-resource-bundle";
  public static final String ATTRIBUTE_TITLE_KEY = "title-key";
  public static final String ATTRIBUTE_COLOR = "color";
  public static final String ATTRIBUTE_SWING_COLOR = "swing-color";
  public static final String ATTRIBUTE_SYSTEM_COLOR = "system-color";
  public static final String ATTRIBUTE_AWT_COLOR = "awt-color";
  public static final String ATTRIBUTE_NAME = "name";
  public static final String ATTRIBUTE_SIZE = "size";
  public static final String ATTRIBUTE_STYLE = "style";
  public static final String ATTRIBUTE_SWING_FONT = "swing-font";
  public static final String ATTRIBUTE_INDENT = "indent";
  public static final String ATTRIBUTE_ID = "id";
  public static final String ATTRIBUTE_BINDING = "binding";
  public static final String ATTRIBUTE_CUSTOM_CREATE = "custom-create";
  public static final String ATTRIBUTE_FORM_FILE = "form-file";
  public static final String ATTRIBUTE_SAME_SIZE_HORIZONTALLY = "same-size-horizontally";
  public static final String ATTRIBUTE_SAME_SIZE_VERTICALLY = "same-size-vertically";
  public static final String ATTRIBUTE_USE_PARENT_LAYOUT = "use-parent-layout";
  public static final String ATTRIBUTE_SHOW = "show";
  public static final String ATTRIBUTE_HGAP = "hgap";
  public static final String ATTRIBUTE_VGAP = "vgap";
  public static final String ATTRIBUTE_BORDER_CONSTRAINT = "border-constraint";
  public static final String ATTRIBUTE_FLOW_ALIGN = "flow-align";
  public static final String ATTRIBUTE_TITLE_JUSTIFICATION = "title-justification";
  public static final String ATTRIBUTE_TITLE_POSITION = "title-position";
  public static final String ATTRIBUTE_TYPE = "type";
  public static final String ATTRIBUTE_ICON = "icon";
  public static final String ATTRIBUTE_DISABLED_ICON = "disabled-icon";
  public static final String ATTRIBUTE_ENABLED = "enabled";
  public static final String ATTRIBUTE_ROW_COUNT = "row-count";
  public static final String ATTRIBUTE_COLUMN_COUNT = "column-count";
  public static final String ATTRIBUTE_TOP = "top";
  public static final String ATTRIBUTE_LEFT = "left";
  public static final String ATTRIBUTE_BOTTOM = "bottom";
  public static final String ATTRIBUTE_RIGHT = "right";
  public static final String ATTRIBUTE_INDEX = "index";
  public static final String ATTRIBUTE_DEFAULTALIGN_HORZ = "defaultalign-horz";
  public static final String ATTRIBUTE_DEFAULTALIGN_VERT = "defaultalign-vert";
  public static final String ATTRIBUTE_INSPECTION = "inspection";
  public static final String ATTRIBUTE_BOUND = "bound";
  public static final String ATTRIBUTE_LAYOUT_MANAGER = "layout-manager";
  public static final String ATTRIBUTE_DEFAULT_BINDING = "default-binding";
  public static final String ATTRIBUTE_WEIGHTX = "weightx";
  public static final String ATTRIBUTE_WEIGHTY = "weighty";
  public static final String ATTRIBUTE_IPADX = "ipadx";
  public static final String ATTRIBUTE_IPADY = "ipady";

  public static final String ELEMENT_BUTTON_GROUPS = "buttonGroups";
  public static final String ELEMENT_GROUP = "group";
  public static final String ELEMENT_MEMBER = "member";
  public static final String ELEMENT_NESTED_FORM = "nested-form";
  public static final String ELEMENT_TOOLBAR = "toolbar";
  public static final String ELEMENT_CARD = "card";
  public static final String ELEMENT_CLIENT_PROPERTIES = "clientProperties";
  public static final String ELEMENT_BORDER = "border";
  public static final String ELEMENT_FONT = "font";
  public static final String ELEMENT_COLOR = "color";
  public static final String ELEMENT_TITLE_COLOR = "title-color";
  public static final String ELEMENT_SIZE = "size";
  public static final String ELEMENT_ITEM = "item";
  public static final String ELEMENT_CONSTRAINTS = "constraints";
  public static final String ELEMENT_TABBEDPANE = "tabbedpane";
  public static final String ELEMENT_SPLITPANE = "splitpane";
  public static final String ELEMENT_SCROLLPANE = "scrollpane";
  public static final String ELEMENT_TOOLTIP = "tooltip";
  public static final String ELEMENT_ROWSPEC = "rowspec";
  public static final String ELEMENT_COLSPEC = "colspec";
  public static final String ELEMENT_ROWGROUP = "rowgroup";
  public static final String ELEMENT_COLGROUP = "colgroup";
  public static final String ELEMENT_FORMS = "forms";
  public static final String ELEMENT_INSPECTION_SUPPRESSIONS = "inspectionSuppressions";
  public static final String ELEMENT_SUPPRESS = "suppress";
  public static final String ELEMENT_GRIDBAG = "gridbag";
  public static final String ELEMENT_PROPERTIES = "properties";

  public static final String LAYOUT_INTELLIJ = "GridLayoutManager";
  public static final String LAYOUT_GRIDBAG = "GridBagLayout";
  public static final String LAYOUT_BORDER = "BorderLayout";
  public static final String LAYOUT_FLOW = "FlowLayout";
  public static final String LAYOUT_XY = "XYLayout";
  public static final String LAYOUT_CARD = "CardLayout";
  public static final String LAYOUT_FORM = "FormLayout";

  private UIFormXmlConstants() {
  }
}
