/**************************************************************
 * 
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you 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 testlib.gui;

import java.io.File;

import org.openoffice.test.OpenOffice;
import org.openoffice.test.vcl.IDList;
import org.openoffice.test.vcl.client.Constant;
import org.openoffice.test.vcl.widgets.VclApp;
import org.openoffice.test.vcl.widgets.VclButton;
import org.openoffice.test.vcl.widgets.VclComboBox;
import org.openoffice.test.vcl.widgets.VclControl;
import org.openoffice.test.vcl.widgets.VclDialog;
import org.openoffice.test.vcl.widgets.VclDockingWin;
import org.openoffice.test.vcl.widgets.VclEditBox;
import org.openoffice.test.vcl.widgets.VclField;
import org.openoffice.test.vcl.widgets.VclListBox;
import org.openoffice.test.vcl.widgets.VclMenuItem;
import org.openoffice.test.vcl.widgets.VclMessageBox;
import org.openoffice.test.vcl.widgets.VclStatusBar;
import org.openoffice.test.vcl.widgets.VclTabControl;
import org.openoffice.test.vcl.widgets.VclTabPage;
import org.openoffice.test.vcl.widgets.VclToolBox;
import org.openoffice.test.vcl.widgets.VclTreeListBox;
import org.openoffice.test.vcl.widgets.VclWindow;

/**
 * Define all UI controls in the class. One control should be defined once and
 * only once.
 * 
 */
public class UIMap {
	private static IDList idList = new IDList(new File("./hid"));
	
	public static final OpenOffice aoo = new OpenOffice();
	
	static {
		aoo.setAutomationPort(OpenOffice.DEFAULT_AUTOMATION_PORT);
		aoo.addArgs("-nofirststartwizard", "-norestore", "-quickstart=no");
		aoo.addRegistryModifications("<item oor:path=\"/org.openoffice.Office.Common/Misc\"><prop oor:name=\"UseSystemFileDialog\" oor:op=\"fuse\"><value>false</value></prop></item>",
				"<item oor:path=\"/org.openoffice.Office.Common/Security/Scripting\"><prop oor:name=\"MacroSecurityLevel\" oor:op=\"fuse\"><value>0</value></prop></item>");
	}
	
	public static final VclApp app = new VclApp(aoo);
	
	public static VclEditBox editbox(String id) {
		return new VclEditBox(app, idList.getId(id));
	}

	public static VclControl control(String id) {
		return new VclControl(app, idList.getId(id));
	}

	public static VclWindow window(String id) {
		return new VclWindow(app, idList.getId(id));
	}

	public static VclDialog dialog(String id) {
		return new VclDialog(app, idList.getId(id));
	}

	public static VclTabPage tabpage(String id) {
		return new VclTabPage(app, idList.getId(id));
	}

	public static VclListBox listbox(String id) {
		return new VclListBox(app, idList.getId(id));
	}

	public static VclComboBox combobox(String id) {
		return new VclComboBox(app, idList.getId(id));
	}

	public static VclToolBox toolbox(String id) {
		return new VclToolBox(app, idList.getId(id));
	}

	public static VclButton button(String id) {
		return new VclButton(app, idList.getId(id));
	}

	public static VclMessageBox msgbox(String text) {
		return new VclMessageBox(app, idList.getId("UID_ACTIVE"), text);
	}

	public static VclMenuItem menuItem(String text) {
		return new VclMenuItem(app, text);
	}

	public static VclStatusBar statusbar(String id) {
		return new VclStatusBar(app, idList.getId(id));
	}

	public static VclField field(String id) {
		return new VclField(app, idList.getId(id));
	}

	public static VclDockingWin dockingwin(String id) {
		return new VclDockingWin(app, idList.getId(id));
	}

	public static VclTreeListBox tree(String id) {
		return new VclTreeListBox(app, idList.getId(id));
	}

	public static final VclMessageBox activeMsgBox = new VclMessageBox(app, Constant.UID_ACTIVE);
	public static final VclMessageBox msgBox_AdditionalRowsNotSaved = new VclMessageBox(app, Constant.UID_ACTIVE, "Additional rows were not saved.");
	public static final VclTabControl activeTabControl = new VclTabControl(app, Constant.UID_ACTIVE);
	public static final VclWindow writer = window("SW_HID_EDIT_WIN");
	public static final VclWindow startcenter = window("FWK_HID_BACKINGWINDOW");
	public static final VclWindow calc = window("SC_HID_SC_WIN_GRIDWIN");
	public static final VclWindow impress = window("SD_HID_SDDRAWVIEWSHELL");
	public static final VclWindow draw = window("SD_HID_SDGRAPHICVIEWSHELL");
	public static final VclDialog filePicker = dialog("SVT_HID_EXPLORERDLG_FILE");
	public static final VclListBox filePickerFileType = listbox("fpicker:ListBox:DLG_SVT_EXPLORERFILE:LB_EXPLORERFILE_FILETYPE");
	public static final VclButton filePickerOpen = button("fpicker:PushButton:DLG_SVT_EXPLORERFILE:BTN_EXPLORERFILE_OPEN");
	public static final VclComboBox filePickerPath = combobox("SVT_HID_FILEDLG_AUTOCOMPLETEBOX");
	public static final VclDialog fileSave = dialog("SVT_HID_FILESAVE_DIALOG");
	public static final VclListBox fileSaveFileType = listbox("SVT_HID_FILESAVE_FILETYPE");
	public static final VclButton fileSaveSave = button("SVT_HID_FILESAVE_DOSAVE");
	public static final VclComboBox fileSavePath = combobox("SVT_HID_FILESAVE_FILEURL");
	public static final VclButton scInputBarFunctionWizard = button("SC_HID_INSWIN_CALC");
	public static final VclButton scInputBarSum = button("SC_HID_INSWIN_SUMME");
	public static final VclButton scInputBarFunction = button("SC_HID_INSWIN_FUNC");
	public static final VclToolBox scInputBar = toolbox("SC_HID_SC_INPUTWIN");
	public static final VclComboBox scInputBarPosition = combobox("SC_HID_INSWIN_POS");
	public static final VclWindow scInputBarInput = window("SC_HID_INSWIN_INPUT");
	public static final VclTabPage effectsPage = tabpage("CUI_HID_SVXPAGE_CHAR_EFFECTS");
	public static final VclListBox effectsPageColor = listbox("cui:ListBox:RID_SVXPAGE_CHAR_EFFECTS:LB_FONTCOLOR");
	public static final VclDialog alienFormatDlg = dialog("SFX2_HID_WARNING_ALIENFORMAT");
	public static final VclTabPage sortPage = tabpage("SC_HID_SCPAGE_SORT_FIELDS");
	public static final VclListBox sortPageBy1 = listbox("sc:ListBox:RID_SCPAGE_SORT_FIELDS:LB_SORT1");
	public static final VclButton sortPageAscending1 = button("sc:RadioButton:RID_SCPAGE_SORT_FIELDS:BTN_UP1");
	public static final VclButton sortPageDescending1 = button("sc:RadioButton:RID_SCPAGE_SORT_FIELDS:BTN_DOWN1");
	public static final VclListBox sortPageBy2 = listbox("sc:ListBox:RID_SCPAGE_SORT_FIELDS:LB_SORT2");
	public static final VclButton sortPageAscending2 = button("sc:RadioButton:RID_SCPAGE_SORT_FIELDS:BTN_UP2");
	public static final VclButton sortPageDescending2 = button("sc:RadioButton:RID_SCPAGE_SORT_FIELDS:BTN_DOWN2");
	public static final VclListBox sortPageBy3 = listbox("sc:ListBox:RID_SCPAGE_SORT_FIELDS:LB_SORT3");
	public static final VclButton sortPageAscending3 = button("sc:RadioButton:RID_SCPAGE_SORT_FIELDS:BTN_UP3");
	public static final VclButton sortPageDescending3 = button("sc:RadioButton:RID_SCPAGE_SORT_FIELDS:BTN_DOWN3");
	public static final VclTabPage pdfGeneralPage = tabpage("HID_FILTER_PDF_OPTIONS");
	public static final VclButton startCenterCalcButton = button(".HelpId:StartCenter:CalcButton");
	public static final VclButton startCenterImpressButton = button(".HelpId:StartCenter:ImpressButton");
	public static final VclButton startCenterWriterButton = button(".HelpId:StartCenter:WriterButton");
	public static final VclButton startCenterOpenButton = button(".HelpId:StartCenter:OpenButton");
	public static final VclButton startCenterDrawButton = button(".HelpId:StartCenter:DrawButton");
	public static final VclButton startCenterDBButton = button(".HelpId:StartCenter:DBButton");
	public static final VclButton startCenterMathButton = button(".HelpId:StartCenter:MathButton");
	public static final VclButton startCenterTemplateButton = button(".HelpId:StartCenter:TemplateButton");
	public static final VclButton startCenterTemplateRepository = button(".HelpId:StartCenter:TemplateRepository");
	public static final VclButton startCenterExtensions = button(".HelpId:StartCenter:Extensions");
	public static final VclButton startCenterInfo = button(".HelpId:StartCenter:Info");
	public static final VclWindow slideShow = window("SD_HID_SD_WIN_PRESENTATION");
	public static final VclDialog findDlg = dialog(".uno:SearchDialog");
	public static final VclComboBox findDlgFor = combobox("svx:ComboBox:RID_SVXDLG_SEARCH:ED_SEARCH");
	public static final VclComboBox findDlgReplaceWith = combobox("svx:ComboBox:RID_SVXDLG_SEARCH:ED_REPLACE");
	public static final VclButton findDlgFind = button("svx:PushButton:RID_SVXDLG_SEARCH:BTN_SEARCH");
	public static final VclButton findDlgFindAll = button("svx:PushButton:RID_SVXDLG_SEARCH:BTN_SEARCH_ALL");
	public static final VclButton findDlgReplace = button("svx:PushButton:RID_SVXDLG_SEARCH:BTN_REPLACE");
	public static final VclButton findDlgReplaceAll = button("svx:PushButton:RID_SVXDLG_SEARCH:BTN_REPLACE_ALL");
	public static final VclButton findDlgMatchCase = button("svx:CheckBox:RID_SVXDLG_SEARCH:CB_MATCH_CASE");
	public static final VclButton findDlgWholeWord = button("svx:CheckBox:RID_SVXDLG_SEARCH:CB_WHOLE_WORDS");
	public static final VclButton findDlgMore = button("svx:MoreButton:RID_SVXDLG_SEARCH:BTN_MORE");
	public static final VclListBox findDlgCalcSearchIn = listbox("svx:ListBox:RID_SVXDLG_SEARCH:LB_CALC_SEARCHIN");
	public static final VclWindow chart = window("CHART2_HID_SCH_WIN_DOCUMENT");
	public static final VclDialog chartWizard = dialog("CHART2_HID_SCH_CHART_AUTO_FORMAT");
	public static final VclDialog filePrintDlg = dialog(".HelpID:vcl:PrintDialog:Dialog");
	public static final VclWindow impressOutline = window("SD_HID_SDOUTLINEVIEWSHELL");
	public static final VclWindow impressSlideSorter = window("SD_HID_SD_WIN_DOCUMENT");
	public static final VclWindow impressHandout = window(".uno:HandoutMode");
	public static final VclDialog insertTable = dialog("cui:ModalDialog:RID_SVX_NEWTABLE_DLG");
	public static final VclToolBox tableToolbar = toolbox(".HelpId:tableobjectbar");
	public static final VclStatusBar statusBar = statusbar("FWK_HID_STATUSBAR");
	public static final VclDialog writerInsertTable = dialog(".uno:InsertTable");
	public static final VclWindow mathPreviewWindow = window("STARMATH_HID_SMA_WIN_DOCUMENT");
	public static final VclWindow mathEditWindow = window("STARMATH_HID_SMA_COMMAND_WIN_EDIT");
	public static final VclControl mathElementsWindow = control("STARMATH_HID_SMA_OPERATOR_WIN");
	public static final VclEditBox scFunctionWizardDlgMultiLineEdit = editbox("FORMULA_HID_FORMULA_FAP_FORMULA");
	public static final VclDialog scFunctionWizardDlg = dialog("FORMULA_HID_FORMULADLG_FORMULA");
	public static final VclListBox scFunctionWizardDlgFunctionList = listbox("FORMULA_HID_FORMULA_LB_FUNCTION");
	public static final VclEditBox scFunctionWizardDlgEdit1 = editbox("FORMULA_HID_FORMULA_FAP_EDIT1");
	public static final VclButton mathCatalogButton = button(".uno:SymbolCatalogue");
	public static final VclDialog mathSymbolsDlg = dialog("starmath:ModalDialog:RID_SYMBOLDIALOG");
	public static final VclListBox mathSymbolsDlgListbox = listbox("starmath:ListBox:RID_SYMBOLDIALOG:1");
	public static final VclButton mathSymbolsDlgEditButton = button("starmath:PushButton:RID_SYMBOLDIALOG:1");
	public static final VclButton mathSymbolsDlgInsertButton = button("starmath:PushButton:RID_SYMBOLDIALOG:2");
	public static final VclButton mathSymbolsDlgCloseButton = button("starmath:PushButton:RID_SYMBOLDIALOG:3");
	public static final VclDialog mathEditSymbolsDlg = dialog("starmath:ModalDialog:RID_SYMDEFINEDIALOG");
	public static final VclButton mathEditSymbolsDlgAdd = button("starmath:PushButton:RID_SYMDEFINEDIALOG:1");
	public static final VclButton mathEditSymbolsDlgModify = button("starmath:PushButton:RID_SYMDEFINEDIALOG:2");
	public static final VclButton mathEditSymbolsDlgDelete = button("starmath:PushButton:RID_SYMDEFINEDIALOG:3");
	public static final VclControl mathEditSymbolsDlgViewControl = control("STARMATH_HID_SMA_CONTROL_FONTCHAR_VIEW");
	public static final VclComboBox mathEditSymbolsDlgSymbol = combobox("starmath:ComboBox:RID_SYMDEFINEDIALOG:4");
	public static final VclListBox mathEditSymbolsDlgFont = listbox("starmath:ListBox:RID_SYMDEFINEDIALOG:1");
	public static final VclComboBox mathEditSymbolsDlgTypeface = combobox("starmath:ComboBox:RID_SYMDEFINEDIALOG:3");
	public static final VclDialog wizardsAgendaDialog = dialog("WIZARDS_HID_AGWIZ");
	public static final VclButton wizardsAgendaDialogFinishButton = button("WIZARDS_HID_AGWIZ_CREATE");
	public static final VclTabPage macroDialogsPage = tabpage("basctl:TabPage:RID_TP_DLGS");
	public static final VclDialog aboutDialog = dialog(".uno:About");
	public static final VclButton mathElementsRelations = button("STARMATH_HID_SMA_RELATIONS_CAT");
	public static final VclButton mathElementsRelationsNotEqual = button("STARMATH_HID_SMA_XNEQY");
	public static final VclButton mathElementsUnaryBinary = button("STARMATH_HID_SMA_UNBINOPS_CAT");
	public static final VclButton mathElementsUnaryBinaryPlus = button("STARMATH_HID_SMA_PLUSX");
	public static final VclControl macroWarningOK = control("Ok");
	public static final VclTreeListBox optionsDlgList = tree("CUI_HID_OFADLG_TREELISTBOX");
	// public static final VclListBox OptionsDlgList =
	// listbox("CUI_HID_OFADLG_TREELISTBOX");
	public static final VclDialog optionsDlg = dialog("CUI_HID_OFADLG_OPTIONS_TREE");
	public static final VclButton optionsDlgMacroSecurityButton = button("cui:PushButton:RID_SVXPAGE_INET_SECURITY:PB_SEC_MACROSEC");
	public static final VclControl macroSecurityDlg = control("XMLSECURITY_HID_XMLSEC_TP_SECLEVEL");
	public static final VclButton macroSecurityDlgLow = button("xmlsecurity:RadioButton:RID_XMLSECTP_SECLEVEL:RB_LOW");
	public static final VclWindow basicEditWindow = window("BASCTL_HID_BASICIDE_EDITORWINDOW");
	public static final VclDialog writerConvertTableToTextDlg = dialog(".uno:ConvertTableText");
	public static final VclWindow writerNavigator = window("SW_HID_NAVIGATION_PI");
	public static final VclListBox writerNavigatorList = listbox("SW_HID_NAVIGATOR_TREELIST");
	// public static final VclControl writer_FrameDlg =
	// control("SW_HID_FRM_STD");
	public static final VclDialog writerFrameDlg = dialog("SW_HID_FRM_STD");
	public static final VclField scNumberOfColumnsRowsToInsert = field("1502452023");
	public static final VclDialog scInsertColumnsRowsdialog = dialog("26166");
	public static final VclButton scInsertColumnsRowsAfterSelectColumn = button("1502446395");
	public static final VclButton wizardNextButton = button("SVT_HID_WIZARD_NEXT");
	public static final VclTabPage chartRangeChooseTabPage = tabpage("chart2:TabPage:TP_RANGECHOOSER");
	public static final VclButton wizardBackButton = button("SVT_HID_WIZARD_PREVIOUS");
	public static final VclTabPage chartTypeChooseTabPage = tabpage("CHART2_HID_DIAGRAM_TYPE");
	public static final VclControl chartWizardRoadMap = control("CHART2_HID_SCH_WIZARD_ROADMAP");
	public static final VclButton dataPilotTableToExistPlaceRadioButton = button("2569093658");
	public static final VclEditBox dataPilotTableToExistPlaceEditBox = editbox("2569095195");
	public static final VclDialog createDataPilotTableDialog = dialog("26151");
	public static final VclControl dataPilotFieldSelect = control("59030");
	public static final VclButton dataPilotAutomaticallyUpdateCheckBox = button("3643262003");
	public static final VclButton dataPilotTableUpdateButton = button("3643265586");
	public static final VclButton sdDateAndTimeFooterOnSlide = button("sd:CheckBox:RID_SD_TABPAGE_HEADERFOOTER:CB_DATETIME");
	public static final VclButton sdFixedDateAndTimeFooterOnSlide = button("sd:RadioButton:RID_SD_TABPAGE_HEADERFOOTER:RB_DATETIME_FIXED");
	public static final VclEditBox sdFixedDateAndTimeOnSlideInput = editbox("sd:Edit:RID_SD_TABPAGE_HEADERFOOTER:TB_DATETIME_FIXED");
	public static final VclButton sdFooterTextOnSlide = button("sd:CheckBox:RID_SD_TABPAGE_HEADERFOOTER:CB_FOOTER");
	public static final VclEditBox sdFooterTextOnSlideInput = editbox("sd:Edit:RID_SD_TABPAGE_HEADERFOOTER:TB_FOOTER_FIXED");
	public static final VclButton sdSlideNumAsFooterOnSlide = button("sd:CheckBox:RID_SD_TABPAGE_HEADERFOOTER:CB_SLIDENUMBER");
	public static final VclButton sdApplyToAllButtonOnSlideFooter = button("sd:PushButton:RID_SD_TABPAGE_HEADERFOOTER:BT_APPLYTOALL");
	public static final VclControl sdSlidelistInNaviagtor = control("HID_SD_NAVIGATOR_TLB");
	public static final VclControl sdHeaderAndFooterDialog = control("HID_SD_TABPAGE_HEADERFOOTER_SLIDE");
	public static final VclButton sdApplyButtonOnSlideFooter = button("sd:PushButton:RID_SD_TABPAGE_HEADERFOOTER:BT_APPLY");
	public static final VclButton sdInsertPageButtonOnToolbar = button(".uno:InsertPage");
	public static final VclControl dataPilotPaneRowArea = control("59036");
	public static final VclEditBox dataPilotFieldDisplayNameEditBox = editbox("971868166");
	public static final VclButton dataPilotFieldShowItemWithoutDataCheckBox = button("971867238");
	public static final VclTabPage dataPilotFieldOptionFieldTabPageDialog = tabpage("26550");
	public static final VclTabPage dataPilotFieldOptionSubTotalsTabPageDialog = tabpage("25760");
	public static final VclTabPage dataPilotFieldOptionSortTabPageDialog = tabpage("25763");
	public static final VclButton dataPilotFieldOptionSubTotalsManuallyRadioButton = button("958956137");
	public static final VclButton dataPilotFieldOptionSortDescendingRadioButton = button("958972620");
	public static final VclControl dataPiloPaneDataArea = control("59038");
	public static final VclControl dataPilotColumnArea = control("59034");
	public static final VclButton sdHeaderTextOnNotes = button("sd:CheckBox:RID_SD_TABPAGE_HEADERFOOTER:CB_HEADER");
	public static final VclEditBox sdHeaderTextOnNotesInput = editbox("sd:Edit:RID_SD_TABPAGE_HEADERFOOTER:TB_HEADER_FIXED");
	public static final VclTabPage sdHeaderAndFooterOnNotesTabPage = tabpage("SD_HID_SD_TABPAGE_HEADERFOOTER_NOTESHANDOUT");
	public static final VclButton sdFooterNotShowOn1stSlide = button("sd:CheckBox:RID_SD_TABPAGE_HEADERFOOTER:CB_NOTONTITLE");
	public static final VclTabPage sortOptionsPage = tabpage("SC_HID_SCPAGE_SORT_OPTIONS");
	public static final VclButton sortOptionsPageCaseSensitive = button("sc:CheckBox:RID_SCPAGE_SORT_OPTIONS:BTN_CASESENSITIVE");
	public static final VclButton sortOptionsPageCopyResultTo = button("sc:CheckBox:RID_SCPAGE_SORT_OPTIONS:BTN_COPYRESULT");
	public static final VclEditBox sortOptionsPageCopyResultToEdit = editbox("sc:Edit:RID_SCPAGE_SORT_OPTIONS:ED_OUTAREA");
	public static final VclDialog defineNamesDlg = dialog(".uno:DefineName");
	public static final VclEditBox defineNamesDlgNameEdit = editbox("sc:Edit:RID_SCDLG_NAMES:ED_ASSIGN");
	public static final VclListBox sortOptionsPageCopyResultToCellRange = listbox("sc:ListBox:RID_SCPAGE_SORT_OPTIONS:LB_OUTAREA");
	public static final VclWindow spreadSheetCells = window("58818");
	public static final VclButton dataPilotFieldOptionSubTotalsNeverRadioButton = button("958956135");
	public static final VclButton dataPilotFieldOptionSortAscendingRadioButton = button("958972619");
	public static final VclControl dataPilotPanePageArea = control("59032");
	public static final VclButton onlyDisplayTopNItemCheckBox = button("1495745540");
	public static final VclField numberOfItemShowInTopNEditBox = field("1495750661");
	public static final VclDialog fieldTopNSettingDialog = dialog("59039");
	public static final VclButton sdAutoUpdateTimeFooter = button("sd:RadioButton:RID_SD_TABPAGE_HEADERFOOTER:RB_DATETIME_AUTOMATIC");
	public static final VclListBox sdAutoUpdateTimeFooterType = listbox("sd:ListBox:RID_SD_TABPAGE_HEADERFOOTER:CB_DATETIME_FORMAT");
	public static final VclButton dataPilotButton = button("59270");
	public static final VclDockingWin dataPilotPanel = dockingwin("3643260928");
	public static final VclListBox scSubTotalsGroupByListBox = listbox("SC_HID_SC_SUBT_GROUP");
	public static final VclTreeListBox scCalcSubTotalForColumns = tree("SC_HID_SC_SUBT_COLS");
	public static final VclTabPage scSubTotalsGroup1Dialog = tabpage("SC_HID_SCPAGE_SUBT_GROUP1");
	public static final VclButton scSubtotalsInsertPageBreakCheckBox = button("sc:CheckBox:RID_SCPAGE_SUBT_OPTIONS:BTN_PAGEBREAK");
	public static final VclButton scSubtotalsCaseSensitiveCheckBox = button("sc:CheckBox:RID_SCPAGE_SUBT_OPTIONS:BTN_CASE");
	public static final VclButton scSubtotalsPreSortToGroupCheckBox = button("sc:CheckBox:RID_SCPAGE_SUBT_OPTIONS:BTN_SORT");
	public static final VclButton scSubtotalSortAscendingRadioButton = button("sc:RadioButton:RID_SCPAGE_SUBT_OPTIONS:BTN_ASCENDING");
	public static final VclButton scSubtotalSortDescendingRadioButton = button("sc:RadioButton:RID_SCPAGE_SUBT_OPTIONS:BTN_DESCENDING");
	public static final VclButton scSubtotalsIncludeFormatsCheckBox = button("sc:CheckBox:RID_SCPAGE_SUBT_OPTIONS:BTN_FORMATS");
	public static final VclButton scSubtotalsCustomSortOrderCheckBox = button("sc:CheckBox:RID_SCPAGE_SUBT_OPTIONS:BTN_USERDEF");
	public static final VclListBox scSubtotalsCustomSortListBox = listbox("sc:ListBox:RID_SCPAGE_SUBT_OPTIONS:LB_USERDEF");
	public static final VclListBox scValidityCriteriaAllowList = listbox("sc:ListBox:TP_VALIDATION_VALUES:LB_ALLOW");
	public static final VclTabPage scValidityCriteriaTabpage = tabpage("sc:TabPage:TP_VALIDATION_VALUES");
	public static final VclButton scValidityAllowBlankCells = button("sc:CheckBox:TP_VALIDATION_VALUES:TSB_ALLOW_BLANKS");
	public static final VclButton scValidityShowSelectionList = button("sc:CheckBox:TP_VALIDATION_VALUES:CB_SHOWLIST");
	public static final VclButton scValiditySortEntriesAscending = button("sc:CheckBox:TP_VALIDATION_VALUES:CB_SORTLIST");
	public static final VclButton scValiditySourcePicker = button("sc:ImageButton:TP_VALIDATION_VALUES:RB_VALIDITY_REF");
	public static final VclTabPage scValidityErrorAlertTabPage = tabpage("sc:TabPage:TP_VALIDATION_ERROR");
	public static final VclButton scValidityShowErrorMessage = button("sc:TriStateBox:TP_VALIDATION_ERROR:TSB_SHOW");
	public static final VclListBox scValidityErrorAlertActionList = listbox("sc:ListBox:TP_VALIDATION_ERROR:LB_ACTION");
	public static final VclEditBox scValidityErrorMessageTitle = editbox("sc:Edit:TP_VALIDATION_ERROR:EDT_TITLE");
	public static final VclEditBox scValidityErrorMessage = editbox("sc:MultiLineEdit:TP_VALIDATION_ERROR:EDT_ERROR");
	public static final VclButton scValidityErrorBrowseButton = button("sc:PushButton:TP_VALIDATION_ERROR:BTN_SEARCH");
	public static final VclTabPage scSubTotalsOptionsTabPage = tabpage("SC_HID_SCPAGE_SUBT_OPTIONS");
	public static final VclButton scDeleteCellsDeleteRowsRadioButton = button("sc:RadioButton:RID_SCDLG_DELCELL:BTN_DELROWS");
	public static final VclDialog scDeleteCellsDialog = dialog(".uno:DeleteCell");
	public static final VclTabPage scSubTotalsGroup2Dialog = tabpage("SC_HID_SCPAGE_SUBT_GROUP2");
	public static final VclTabPage scSubTotalsGroup3Dialog = tabpage("SC_HID_SCPAGE_SUBT_GROUP3");
	public static final VclListBox scCalcSubTotolsFuncionList = listbox("SC_HID_SC_SUBT_FUNC");
	public static final VclEditBox scValiditySourceInput = editbox("sc:Edit:TP_VALIDATION_VALUES:EDT_MIN");
	public static final VclListBox scValidityDecimalCompareOperator = listbox("sc:ListBox:TP_VALIDATION_VALUES:LB_VALUE");
	public static final VclEditBox scValidityMaxValueInput = editbox("sc:Edit:TP_VALIDATION_VALUES:EDT_MAX");
	public static final VclEditBox scValidityEntries = editbox("sc:MultiLineEdit:TP_VALIDATION_VALUES:EDT_LIST");
	public static final VclTabPage scValidityInputHelpTabPage = tabpage("sc:TabPage:TP_VALIDATION_INPUTHELP");
	public static final VclButton scValidityInputHelpCheckbox = button("sc:TriStateBox:TP_VALIDATION_INPUTHELP:TSB_HELP");
	public static final VclEditBox scValidityInputHelpTitle = editbox("sc:Edit:TP_VALIDATION_INPUTHELP:EDT_TITLE");
	public static final VclEditBox scValidityHelpMessage = editbox("sc:MultiLineEdit:TP_VALIDATION_INPUTHELP:EDT_INPUTHELP");
	public static final VclButton optionsDlgSortListsTabCopy = button("sc:PushButton:RID_SCPAGE_USERLISTS:BTN_COPY");
	public static final VclButton sortOptionsPageRangeContainsColumnLabels = button("sc:CheckBox:RID_SCPAGE_SORT_OPTIONS:BTN_LABEL");
	public static final VclButton sortOptionsPageCustomSortOrder = button("sc:CheckBox:RID_SCPAGE_SORT_OPTIONS:BTN_SORT_USER");
	public static final VclButton sortOptionsPageIncludeFormats = button("sc:CheckBox:RID_SCPAGE_SORT_OPTIONS:BTN_FORMATS");
	public static final VclListBox sortOptionsPageCustomSortOrderList = listbox("sc:ListBox:RID_SCPAGE_SORT_OPTIONS:LB_SORT_USER");
	public static final VclButton sortOptionsPageTopToBottom = button("sc:RadioButton:RID_SCPAGE_SORT_OPTIONS:BTN_TOP_DOWN");
	public static final VclButton sortOptionsPageLeftToRight = button("sc:RadioButton:RID_SCPAGE_SORT_OPTIONS:BTN_LEFT_RIGHT");
	public static final VclButton optionsDlgSortListsTabNew = button("sc:PushButton:RID_SCPAGE_USERLISTS:BTN_NEW");
	public static final VclButton optionsDlgSortListsTabAdd = button("sc:PushButton:RID_SCPAGE_USERLISTS:BTN_ADD");
	public static final VclTabPage formatCellsDlgNumbersPage = tabpage("CUI_HID_NUMBERFORMAT");
	public static final VclListBox formatCellsDlgNumbersPageCategory = listbox("cui:ListBox:RID_SVXPAGE_NUMBERFORMAT:LB_CATEGORY");
	public static final VclListBox formatCellsDlgNumbersPageCurrencyFormat = listbox("cui:ListBox:RID_SVXPAGE_NUMBERFORMAT:LB_CURRENCY");
	public static final VclTabPage dataPilotFieldOptionFiledSubtotalsPage = tabpage("25762");
	public static final VclControl scDataPilotOptionSubtotalFunctionList = control("59029");
	public static final VclDialog presentationWizard = dialog("SD_HID_SD_AUTOPILOT_PAGE1");
	public static final VclDialog fillSeriesDlg = dialog(".uno:FillSeries");
	public static final VclDialog sortWarningDlg = dialog("sc:ModalDialog:RID_SCDLG_SORT_WARNING");
	public static final VclButton sortWarningDlgExtend = button("sc:PushButton:RID_SCDLG_SORT_WARNING:BTN_EXTSORT");
	public static final VclButton sortWarningDlgCurrent = button("sc:PushButton:RID_SCDLG_SORT_WARNING:BTN_CURSORT");
	// Spreadsheet: "Sheet" dialog
	public static final VclDialog scInsertSheetDlg = dialog("sc:ModalDialog:RID_SCDLG_INSERT_TABLE");
	public static final VclButton scBeforeCurrentSheet = button("sc:RadioButton:RID_SCDLG_INSERT_TABLE:RB_BEFORE");
	public static final VclButton scAfterCurrentSheet = button("sc:RadioButton:RID_SCDLG_INSERT_TABLE:RB_BEHIND");
	public static final VclButton scNewSheet = button("sc:RadioButton:RID_SCDLG_INSERT_TABLE:RB_NEW");
	public static final VclButton scNewSheetFromFile = button("sc:RadioButton:RID_SCDLG_INSERT_TABLE:RB_FROMFILE");
	public static final VclEditBox scNewSheetName = editbox("sc:Edit:RID_SCDLG_INSERT_TABLE:ED_TABNAME");
	public static final VclField scSheetNumber = field("sc:NumericField:RID_SCDLG_INSERT_TABLE:NF_COUNT");
	public static final VclListBox scFromFileSheetList = listbox("sc:MultiListBox:RID_SCDLG_INSERT_TABLE:LB_TABLES");
	public static final VclButton scFromFileBrowse = button("sc:PushButton:RID_SCDLG_INSERT_TABLE:BTN_BROWSE");
	public static final VclButton scFromFileLink = button("sc:CheckBox:RID_SCDLG_INSERT_TABLE:CB_LINK");
	// Spreadsheet: "Select Sheets" dialog
	public static final VclDialog scSelectSheetsDlg = dialog(".uno:SelectTables");
	public static final VclListBox scSheetsList = listbox("SC_HID_SELECTTABLES");
	public static final VclWindow sdNavigatorDlg = window("SD_HID_SD_NAVIGATOR");
	public static final VclTabPage sdHeaderAndFooterDlgSlideTab = tabpage("SD_HID_SD_TABPAGE_HEADERFOOTER_SLIDE");
	public static final VclButton scFunctionWizardDlgNext = button("formula:PushButton:RID_FORMULADLG_FORMULA:BTN_FORWARD");
	public static final VclTreeListBox optionsDlgPathTabTree = tree("CUI_HID_OPTPATH_CTL_PATH");
	public static final VclTreeListBox optionsDlgMicorOfficeTree = tree("CUI_HID_OFAPAGE_MSFLTR2_CLB");
	public static final VclTabPage bulletPage = tabpage("CUI_HID_SVXPAGE_PICK_BULLET");
	// Writer: "Spell check" dialog
	public static final VclDialog spellcheckDlg = dialog("CUI_HID_SPELLCHECK");
	public static final VclListBox spellcheckDlgLanguageList = listbox("cui:ListBox:RID_SVXDLG_SPELLCHECK:LB_LANGUAGE");
	public static final VclEditBox spellcheckDlgMisspelledWords = editbox("cui:MultiLineEdit:RID_SVXDLG_SPELLCHECK:ED_NEWWORD");
	public static final VclListBox spellcheckDlgSuggestionList = listbox("cui:ListBox:RID_SVXDLG_SPELLCHECK:LB_SUGGESTION");
	public static final VclButton spellcheckDlgIgnoreOnce = button("CUI_HID_SPLDLG_BUTTON_IGNORE");
	public static final VclButton spellcheckDlgIgnoreAll = button("CUI_HID_SPLDLG_BUTTON_IGNOREALL");
	public static final VclButton spellcheckDlgAdd = button("cui:MenuButton:RID_SVXDLG_SPELLCHECK:MB_ADDTODICT");
	public static final VclButton spellcheckDlgChange = button("CUI_HID_SPLDLG_BUTTON_CHANGE");
	public static final VclButton spellcheckDlgChangeAll = button("CUI_HID_SPLDLG_BUTTON_CHANGEALL");
	public static final VclButton spellcheckDlgAutoCorrect = button("cui:PushButton:RID_SVXDLG_SPELLCHECK:PB_AUTOCORR");
	public static final VclButton spellcheckDlgClose = button("CUI_HID_SPLDLG_BUTTON_CLOSE");

	// Presentation:"Table Property" dialog
	public static final VclButton impressWizardDlgNext = button("sd:PushButton:DLG_ASS:BUT_NEXT");
	public static final VclListBox areaFillColor = listbox("cui:ListBox:RID_SVXPAGE_AREA:LB_COLOR");
	public static final VclTabPage areaAreapage = tabpage("CUI_HID_AREA_AREA");
	public static final VclListBox areaFillType = listbox("cui:ListBox:RID_SVXPAGE_AREA:LB_AREA_TYPE");
	public static final VclListBox areaFillGradient = listbox("cui:ListBox:RID_SVXPAGE_AREA:LB_GRADIENT");
	public static final VclListBox areaFillHatching = listbox("cui:ListBox:RID_SVXPAGE_AREA:LB_HATCHING");
	public static final VclListBox areaFillBitmap = listbox("cui:ListBox:RID_SVXPAGE_AREA:LB_BITMAP");
	public static final VclTabPage areaBorderpage = tabpage("CUI_HID_BORDER");
	public static final VclTabPage areaFontpage = tabpage("CUI_HID_SVXPAGE_CHAR_NAME");
	public static final VclComboBox areaFontWesternFontName = combobox("cui:ComboBox:RID_SVXPAGE_CHAR_NAME:LB_WEST_NAME");
	public static final VclComboBox areaFontWesternStyle = combobox("cui:ComboBox:RID_SVXPAGE_CHAR_NAME:LB_WEST_STYLE");
	public static final VclListBox areaFontWesternSize = listbox("cui:MetricBox:RID_SVXPAGE_CHAR_NAME:LB_WEST_SIZE");
	public static final VclListBox areaFontWesternLang = listbox("cui:ListBox:RID_SVXPAGE_CHAR_NAME:LB_WEST_LANG");
	public static final VclComboBox areaFontEasternFontName = combobox("cui:ComboBox:RID_SVXPAGE_CHAR_NAME:LB_EAST_NAME");
	public static final VclComboBox areaFontEasternStyle = combobox("cui:ComboBox:RID_SVXPAGE_CHAR_NAME:LB_EAST_STYLE");
	public static final VclListBox areaFontEasternSize = listbox("cui:MetricBox:RID_SVXPAGE_CHAR_NAME:LB_EAST_SIZE");
	public static final VclListBox areaFontEasternLang = listbox("cui:ListBox:RID_SVXPAGE_CHAR_NAME:LB_EAST_LANG");
	public static final VclListBox effectsPageRelief = listbox("cui:ListBox:RID_SVXPAGE_CHAR_EFFECTS:LB_RELIEF");
	public static final VclButton effectsPageOutline = button("cui:TriStateBox:RID_SVXPAGE_CHAR_EFFECTS:CB_OUTLINE");
	public static final VclButton effectsPageShadow = button("cui:TriStateBox:RID_SVXPAGE_CHAR_EFFECTS:CB_SHADOW");
	public static final VclListBox effectsPageOverline = listbox("cui:ListBox:RID_SVXPAGE_CHAR_EFFECTS:LB_OVERLINE");
	public static final VclListBox effectsPageOverlineColor = listbox("cui:ListBox:RID_SVXPAGE_CHAR_EFFECTS:LB_OVERLINE_COLOR");
	public static final VclListBox effectsPageStrikeout = listbox("cui:ListBox:RID_SVXPAGE_CHAR_EFFECTS:LB_STRIKEOUT");
	public static final VclListBox effectsPageUnderline = listbox("cui:ListBox:RID_SVXPAGE_CHAR_EFFECTS:LB_UNDERLINE");
	public static final VclListBox effectsPageUnderlineColor = listbox("cui:ListBox:RID_SVXPAGE_CHAR_EFFECTS:LB_UNDERLINE_COLOR");
	public static final VclButton effectsPageInvidiualWords = button("cui:CheckBox:RID_SVXPAGE_CHAR_EFFECTS:CB_INDIVIDUALWORDS");
	public static final VclListBox effectsPageEmphasis = listbox("cui:ListBox:RID_SVXPAGE_CHAR_EFFECTS:LB_EMPHASIS");
	public static final VclListBox effectsPagePosition = listbox("cui:ListBox:RID_SVXPAGE_CHAR_EFFECTS:LB_POSITION");
	public static final VclControl areaBorderPresets = control("CUI_HID_BORDER_CTL_PRESETS");
	public static final VclListBox areaBorderLineStyle = listbox("cui:ListBox:RID_SVXPAGE_BORDER:LB_LINESTYLE");
	public static final VclListBox areaBorderLineColor = listbox("cui:ListBox:RID_SVXPAGE_BORDER:LB_LINECOLOR");
	public static final VclField areaBorderMfLeft = field("cui:MetricField:RID_SVXPAGE_BORDER:MF_LEFT");
	public static final VclField areaBorderMfRight = field("cui:MetricField:RID_SVXPAGE_BORDER:MF_RIGHT");
	public static final VclField areaBorderMfTop = field("cui:MetricField:RID_SVXPAGE_BORDER:MF_TOP");
	public static final VclField areaBorderMfBottom = field("cui:MetricField:RID_SVXPAGE_BORDER:MF_BOTTOM");
	public static final VclButton areaBorderSync = button("cui:CheckBox:RID_SVXPAGE_BORDER:CB_SYNC");
	// Presentation:"Textbox Property" dialog
	public static final VclToolBox textboxToolbar = toolbox(".HelpId:textbar");
	public static final VclButton sdInsertTextboxButtonOnToolbar = button(".uno:Text");
	public static final VclButton sdFormatArea = button(".uno:FormatArea");

	// Writer:Style and Formatting List
	public static final VclControl styleAndFormattingList = control("SFX2_HID_TEMPLATE_FMT");
	public static final VclListBox styleFilterList = listbox("SFX2_HID_TEMPLATE_FILTER");
	public static final VclDockingWin styleAndFormattingDlg = dockingwin(".uno:DesignerDialog");

	// Writer:Insert Index and Table Dialog
	public static final VclDialog insertIndexDlg = dialog("SW_HID_TP_TOX_SELECT");

	// Writer:Split Cell Dialog
	public static final VclDialog writerSplitCellDlg = dialog("cui:ModalDialog:RID_SVX_SPLITCELLDLG");

	// Writer:Insert Rows/Columns Dialog
	public static final VclDialog writerInsertRowsDlg = dialog(".uno:InsertRowDialog");
	public static final VclField writerInsertNum = field("cui:NumericField:DLG_INS_ROW_COL:ED_COUNT");
	public static final VclButton writerInsertBefore = button("cui:RadioButton:DLG_INS_ROW_COL:CB_POS_BEFORE");
	public static final VclButton writerInsertAfter = button("cui:RadioButton:DLG_INS_ROW_COL:CB_POS_AFTER");
	public static final VclDialog writerInsertColumnsDlg = dialog(".uno:InsertColumnDialog");

	// Writer:Alignment TabPage of Paragraph format
	public static final VclTabPage alignPage = tabpage("CUI_HID_FORMAT_PARAGRAPH_ALIGN");
	public static final VclButton alignPageLeft = button("cui:RadioButton:RID_SVXPAGE_ALIGN_PARAGRAPH:BTN_LEFTALIGN");
	public static final VclButton alignPageRight = button("cui:RadioButton:RID_SVXPAGE_ALIGN_PARAGRAPH:BTN_RIGHTALIGN");
	public static final VclButton alignPageCenter = button("cui:RadioButton:RID_SVXPAGE_ALIGN_PARAGRAPH:BTN_CENTERALIGN");
	public static final VclButton alignPageJustified = button("cui:RadioButton:RID_SVXPAGE_ALIGN_PARAGRAPH:BTN_JUSTIFYALIGN");
	public static final VclListBox alignPageLastline = listbox("cui:ListBox:RID_SVXPAGE_ALIGN_PARAGRAPH:LB_LASTLINE");
	public static final VclButton alignPageExpandSingleWord = button("cui:CheckBox:RID_SVXPAGE_ALIGN_PARAGRAPH:CB_EXPAND");
	public static final VclButton alignPageSnapToTextGrid = button("cui:CheckBox:RID_SVXPAGE_ALIGN_PARAGRAPH:CB_SNAP");
	public static final VclListBox alignPageVerticalAlign = listbox("cui:ListBox:RID_SVXPAGE_ALIGN_PARAGRAPH:LB_VERTALIGN");

	// Writer: Insert Object Dialog
	public static final VclDialog insertObject = dialog(".uno:InsertObject");
	public static final VclButton newObject = button("cui:RadioButton:MD_INSERT_OLEOBJECT:RB_NEW_OBJECT");
	public static final VclButton objectFromFile = button("cui:RadioButton:MD_INSERT_OLEOBJECT:RB_OBJECT_FROMFILE");
	public static final VclListBox objectType = listbox("cui:ListBox:MD_INSERT_OLEOBJECT:LB_OBJECTTYPE");
	public static final VclEditBox objectFilePath = editbox("cui:Edit:MD_INSERT_OLEOBJECT:ED_FILEPATH");
	public static final VclButton objectFileSearch = button("cui:PushButton:MD_INSERT_OLEOBJECT:BTN_FILEPATH");
	public static final VclButton objectFileLink = button("cui:CheckBox:MD_INSERT_OLEOBJECT:CB_FILELINK");
	public static final VclField numberofCol = field("cui:NumericField:RID_SVX_NEWTABLE_DLG:NF_COLUMNS");

	// Presentation: Insert Table
	public static final VclField numberofRow = field("cui:NumericField:RID_SVX_NEWTABLE_DLG:NF_ROWS");
	public static final VclDialog insertSlideObjects = dialog("SD_HID_DLG_INSERT_PAGES_OBJS");

	// Presentation: Slide Transition Settings
	public static final VclListBox impressSlideTransitions = listbox("SD_HID_SD_SLIDETRANSITIONPANE_LB_SLIDE_TRANSITIONS");
	public static final VclListBox slideShowSpeed = listbox("SD_HID_SD_SLIDETRANSITIONPANE_LB_SPEED");
	public static final VclButton slideAutoAfter = button("SD_HID_SD_SLIDETRANSITIONPANE_RB_ADVANCE_AUTO");
	public static final VclButton applyToAllSlides = button("SD_HID_SD_SLIDETRANSITIONPANE_PB_APPLY_TO_ALL");

	// Spreadsheet: Standard Filter Dialog
	public static final VclComboBox filterValue1 = combobox("sc:ComboBox:RID_SCDLG_FILTER:ED_VAL1");
	public static final VclDialog standardFilterDlg = dialog(".uno:DataFilterStandardFilter");

	// Fontwork
	public static final VclDialog fontworkGalleryDlg = dialog("svx:ModalDialog:RID_SVX_MDLG_FONTWORK_GALLERY");
	
	public static final VclEditBox swTableSizeColBox=editbox("sw:NumericField:DLG_INSERT_TABLE:ED_COL");
	public static final VclEditBox swTableSizeRowBox=editbox("sw:NumericField:DLG_INSERT_TABLE:ED_ROW");
	public static final VclControl swTableBackgroundColor=control("CUI_HID_BACKGROUND_CTL_BGDCOLORSET");
	public static final VclTabPage swTableBackground = tabpage("CUI_HID_BACKGROUND");
	public static final VclTabPage swTableBorder = tabpage("CUI_HID_BORDER");
	public static final VclControl swTableBorderLineArrange = control("CUI_HID_BORDER_CTL_PRESETS");
	public static final VclControl swTableProperties = control("SW_HID_FORMAT_TABLE");
	public static final VclListBox swTableBorderLineStyle = listbox("cui:ListBox:RID_SVXPAGE_BORDER:LB_LINESTYLE");
	public static final VclListBox swTableBorderLineColor = listbox("cui:ListBox:RID_SVXPAGE_BORDER:LB_LINECOLOR");
	public static final VclEditBox swTableSTCLeft = editbox("cui:MetricField:RID_SVXPAGE_BORDER:MF_LEFT");
	public static final VclEditBox swTableSTCRight = editbox("cui:MetricField:RID_SVXPAGE_BORDER:MF_RIGHT");
	public static final VclEditBox swTableSTCTop = editbox("cui:MetricField:RID_SVXPAGE_BORDER:MF_TOP");
	public static final VclEditBox swTableSTCBottom = editbox("cui:MetricField:RID_SVXPAGE_BORDER:MF_BOTTOM");
	public static final VclButton swTableSTCSYNC = button("cui:CheckBox:RID_SVXPAGE_BORDER:CB_SYNC");
	public static final VclControl swTableShadow = control("CUI_HID_BORDER_CTL_SHADOWS");
	public static final VclEditBox swTableShadowSize = editbox("cui:MetricField:RID_SVXPAGE_BORDER:ED_SHADOWSIZE");
	public static final VclListBox swTableShadowColor = listbox("cui:ListBox:RID_SVXPAGE_BORDER:LB_SHADOWCOLOR");
	public static final VclButton swInsertTableAutoFormat = button("sw:PushButton:DLG_INSERT_TABLE:BT_AUTOFORMAT");
	public static final VclListBox swTableAutoFormatListbox = listbox("sw:ListBox:DLG_AUTOFMT_TABLE:LB_FORMAT");
	public static final VclDialog swTableAutoFMT = dialog("SW_HID_AUTOFMT_TABLE");
	public static final VclDialog swTableSetRowHeightDialog = dialog(".uno:SetRowHeight");
	public static final VclField swTableSetRowHeight = field("sw:MetricField:DLG_ROW_HEIGHT:ED_HEIGHT");
	public static final VclDialog swTableInsertRow = dialog(".uno:InsertRowDialog");
	public static final VclEditBox swTableInsertRowColumnSetNumber = editbox("cui:NumericField:DLG_INS_ROW_COL:ED_COUNT");
	public static final VclField swTableSetColumnNumber = field("sw:NumericField:DLG_COL_WIDTH:ED_COL");
	public static final VclField swTableSetColumnWidth = field("sw:MetricField:DLG_COL_WIDTH:ED_WIDTH");
	public static final VclDialog swTableInsertColumn = dialog(".uno:InsertColumnDialog");
	public static final VclDialog swTableSetColumnDialog = dialog(".uno:SetColumnWidth");
	public static final VclDialog swTableCellSplitDialog = dialog("cui:ModalDialog:RID_SVX_SPLITCELLDLG");
	public static final VclField swTableCellSplitNumber = field("cui:NumericField:RID_SVX_SPLITCELLDLG:ED_COUNT");
	public static final VclButton swTableCellSplitHORZButton = button("cui:ImageRadioButton:RID_SVX_SPLITCELLDLG:RB_HORZ");
	public static final VclButton swTableCellSplitVERTButton = button("cui:ImageRadioButton:RID_SVX_SPLITCELLDLG:RB_VERT");
	public static final VclMenuItem swTableSelectRowMenu=menuItem("Row->Select");
	public static final VclMenuItem swTableInsertRowMenu=menuItem("Row->Insert...");
	public static final VclMenuItem swTableRowHeightMenu=menuItem("Row->Height...");
	public static final VclMenuItem swTableRowDleteMenu=menuItem("Row->Delete");
	public static final VclMenuItem swTableColumnWidthMenu=menuItem("Column->Width...");
	public static final VclMenuItem swTableColumnSelectMenu=menuItem("Column->Select");
	public static final VclMenuItem swTableColumnDeleteMenu=menuItem("Column->Delete");
	public static final VclMenuItem swTableColumnInsertMenu=menuItem("Column->Insert...");
	public static final VclMenuItem swTableCellSplitMenu=menuItem("Cell->Split...");
	public static final VclListBox sdTableBACGColorListbox = listbox("cui:ListBox:RID_SVXPAGE_AREA:LB_COLOR");
	public static final VclTabPage sdTableBACGColorArea = tabpage("CUI_HID_AREA_AREA");
	public static final VclTabPage sdTableBACGColorsOption = tabpage("CUI_HID_OPTIONS_COLOR");
	public static final VclEditBox sdTableBACGColorsOptionName = editbox("cui:Edit:RID_SVXPAGE_COLOR:EDT_NAME");
	
	public static final VclTreeListBox sdNavigator = tree("SD_HID_SD_NAVIGATOR_TLB");
	public static final VclButton sdNavigatorShapeFilter = button("SD_HID_SD_NAVIGATOR_TBI_SHAPE_FILTER");
	public static final VclButton sdCalloutShapes = button(".uno:CalloutShapes");
	public static final VclButton sdStarShapes = button(".uno:StarShapes");
	public static final VclToolBox sdDrawingToolbar = toolbox(".HelpId:toolbar");
	
	public static final VclWindow impressHandoutView = window(".uno:NotesMode");
	public static final VclWindow helpWindow = window("SFX2_HID_HELP_ONHELP");
	public static final VclDialog printerSetUpDlg = dialog("svtools:ModalDialog:DLG_SVT_PRNDLG_PRNSETUPDLG");
	public static final VclListBox printerSetUpDlgPrinterNames = listbox("svtools:ListBox:DLG_SVT_PRNDLG_PRNSETUPDLG:LB_NAMES");
	public static final VclDialog runMacroDlg = dialog("CUI_HID_SELECTOR_DIALOG");
	public static final VclTreeListBox runMacroDlgCategories = tree("CUI_HID_SELECTOR_CATEGORIES");
	public static final VclTreeListBox runMacroDlgCommands = tree("CUI_HID_SELECTOR_COMMANDS");
	public static final VclButton optionUseOOdialog = button("cui:CheckBox:OFA_TP_MISC:CB_FILEDLG");
	
	public static final VclButton standardBarSave = button(".uno:Save");

	public static final VclControl swFormatParagragh = control("CUI_HID_FORMAT_PARAGRAPH_STD");

	public static final VclButton sdAddAnimation = button("SD_HID_SD_CUSTOMANIMATIONPANE_PB_ADD_EFFECT");

	public static final VclListBox sdEntranceAnimationTab = listbox("sd:ListBox:RID_TP_CUSTOMANIMATION_ENTRANCE:LB_EFFECTS");

	public static final VclControl sdAnimationList = control("SD_HID_SD_CUSTOMANIMATIONPANE_CT_CUSTOM_ANIMATION_LIST");

	public static final VclWindow sdCurrentMastersList = window("SD_HID_SD_CURRENT_MASTERS");

	public static final VclButton swInsertLineButtonOnToolbar = button(".uno:Line");

	public static final VclToolBox swDrawingToolbar = toolbox(".HelpId:drawbar");

	public static final VclListBox scPrintAreaType = listbox("sc:ListBox:RID_SCDLG_AREAS:LB_PRINTAREA");

	public static final VclEditBox scPrintArea = editbox("sc:Edit:RID_SCDLG_AREAS:ED_PRINTAREA");

	public static final VclEditBox scFormatCode = editbox("cui:Edit:RID_SVXPAGE_NUMBERFORMAT:ED_FORMAT");

	// hyperlink dialog
	public static final VclComboBox hyperlinkInetPathComboBox = combobox("CUI_HID_HYPERDLG_INET_PATH"); // target
	public static final VclEditBox hyperlinkInetName = editbox("cui:Edit:RID_SVXPAGE_HYPERLINK_INTERNET:ED_TEXT"); // text
	public static final VclEditBox hyperlinkInetText = editbox("cui:Edit:RID_SVXPAGE_HYPERLINK_INTERNET:ED_INDICATION"); // name
	public static final VclControl hyperlinkDialogOkBtn = control("CUI_HID_ICCDIALOG_OK_BTN"); // apply
	public static final VclControl hyperlinkDialogCancelBtn = control("CUI_HID_ICCDIALOG_CANCEL_BTN"); // close
}
