/**************************************************************
 *
 * 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.
 *
 *************************************************************/



// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_forms.hxx"
#include "frm_strings.hxx"
#include "property.hxx"

#ifndef _FRM_PROPERTY_HRC_
#include "property.hrc"
#endif
#include <cppuhelper/queryinterface.hxx>
#include <tools/debug.hxx>
#include <com/sun/star/beans/PropertyAttribute.hpp>

#include <algorithm>

//... namespace frm .......................................................
namespace frm
{
//.........................................................................

//==================================================================
//= PropertyInfoService
//==================================================================
PropertyInfoService::PropertyMap PropertyInfoService::s_AllKnownProperties;
//------------------------------------------------------------------
sal_Int32 PropertyInfoService::getPropertyId(const ::rtl::OUString& _rName)
{
	initialize();

	PropertyAssignment aCompareName(_rName, -1);

	::std::pair<PropertyMapIterator,PropertyMapIterator> aPair = equal_range(
		s_AllKnownProperties.begin(),
		s_AllKnownProperties.end(),
		aCompareName,
		PropertyAssignmentNameCompareLess());

	sal_Int32 nHandle = -1;
	if (aPair.first != aPair.second)
	{	// we found something _and_ we have an identity
		nHandle = aPair.first->nHandle;
	}

	return nHandle;
}

//------------------------------------------------------------------
sal_Int32 ConcreteInfoService::getPreferedPropertyId(const ::rtl::OUString& _rName)
{
	return PropertyInfoService::getPropertyId(_rName);
}

//------------------------------------------------------------------
#define ADD_PROP_ASSIGNMENT(varname) \
	s_AllKnownProperties.push_back(PropertyAssignment(PROPERTY_##varname, PROPERTY_ID_##varname))
//..................................................................
void PropertyInfoService::initialize()
{
	if (!s_AllKnownProperties.empty())
		return;

	s_AllKnownProperties.reserve(220);

	ADD_PROP_ASSIGNMENT(NAME);
	ADD_PROP_ASSIGNMENT(TAG);
	ADD_PROP_ASSIGNMENT(TABINDEX);
	ADD_PROP_ASSIGNMENT(CLASSID);
	ADD_PROP_ASSIGNMENT(ALIGN);
	ADD_PROP_ASSIGNMENT(FETCHSIZE);
	ADD_PROP_ASSIGNMENT(VALUE);
	ADD_PROP_ASSIGNMENT(VALUEMIN);
	ADD_PROP_ASSIGNMENT(VALUEMAX);
	ADD_PROP_ASSIGNMENT(VALUESTEP);
	ADD_PROP_ASSIGNMENT(TEXT);
	ADD_PROP_ASSIGNMENT(LABEL);
	ADD_PROP_ASSIGNMENT(NAVIGATION);
	ADD_PROP_ASSIGNMENT(CYCLE);
	ADD_PROP_ASSIGNMENT(CONTROLSOURCE);
	ADD_PROP_ASSIGNMENT(ENABLED);
	ADD_PROP_ASSIGNMENT(ENABLEVISIBLE);
	ADD_PROP_ASSIGNMENT(SPIN);
	ADD_PROP_ASSIGNMENT(READONLY);
	ADD_PROP_ASSIGNMENT(FILTER);
	ADD_PROP_ASSIGNMENT(WIDTH);
	ADD_PROP_ASSIGNMENT(SEARCHABLE);
	ADD_PROP_ASSIGNMENT(MULTILINE);
	ADD_PROP_ASSIGNMENT(TARGET_URL);
	ADD_PROP_ASSIGNMENT(DEFAULTCONTROL);
	ADD_PROP_ASSIGNMENT(MAXTEXTLEN);
	ADD_PROP_ASSIGNMENT(SIZE);
	ADD_PROP_ASSIGNMENT(DATE);
	ADD_PROP_ASSIGNMENT(TIME);
	ADD_PROP_ASSIGNMENT(STATE);
	ADD_PROP_ASSIGNMENT(TRISTATE);
	ADD_PROP_ASSIGNMENT(HIDDEN_VALUE);
	ADD_PROP_ASSIGNMENT(TARGET_FRAME);
	ADD_PROP_ASSIGNMENT(BUTTONTYPE);
	ADD_PROP_ASSIGNMENT(STRINGITEMLIST);
	ADD_PROP_ASSIGNMENT(DEFAULT_TEXT);
	ADD_PROP_ASSIGNMENT(DEFAULT_STATE);
	ADD_PROP_ASSIGNMENT(DEFAULT_DATE);
	ADD_PROP_ASSIGNMENT(DEFAULT_TIME);
	ADD_PROP_ASSIGNMENT(DEFAULT_VALUE);
	ADD_PROP_ASSIGNMENT(FORMATKEY);
	ADD_PROP_ASSIGNMENT(FORMATSSUPPLIER);
	ADD_PROP_ASSIGNMENT(SUBMIT_ACTION);
	ADD_PROP_ASSIGNMENT(SUBMIT_TARGET);
	ADD_PROP_ASSIGNMENT(SUBMIT_METHOD);
	ADD_PROP_ASSIGNMENT(SUBMIT_ENCODING);
	ADD_PROP_ASSIGNMENT(IMAGE_URL);
	ADD_PROP_ASSIGNMENT(GRAPHIC);
	ADD_PROP_ASSIGNMENT(EMPTY_IS_NULL);
	ADD_PROP_ASSIGNMENT(LISTSOURCETYPE);
	ADD_PROP_ASSIGNMENT(LISTSOURCE);
	ADD_PROP_ASSIGNMENT(SELECT_SEQ);
	ADD_PROP_ASSIGNMENT(VALUE_SEQ);
	ADD_PROP_ASSIGNMENT(DEFAULT_SELECT_SEQ);
	ADD_PROP_ASSIGNMENT(MULTISELECTION);
	ADD_PROP_ASSIGNMENT(DECIMAL_ACCURACY);
	ADD_PROP_ASSIGNMENT(EDITMASK);
	ADD_PROP_ASSIGNMENT(ISREADONLY);
	ADD_PROP_ASSIGNMENT(FIELDTYPE);
	ADD_PROP_ASSIGNMENT(DECIMALS);
	ADD_PROP_ASSIGNMENT(REFVALUE);
	ADD_PROP_ASSIGNMENT(STRICTFORMAT);
	ADD_PROP_ASSIGNMENT(DATASOURCE);
	ADD_PROP_ASSIGNMENT(ALLOWADDITIONS);
	ADD_PROP_ASSIGNMENT(ALLOWEDITS);
	ADD_PROP_ASSIGNMENT(ALLOWDELETIONS);
	ADD_PROP_ASSIGNMENT(MASTERFIELDS);
	ADD_PROP_ASSIGNMENT(ISPASSTHROUGH);
	ADD_PROP_ASSIGNMENT(QUERY);
	ADD_PROP_ASSIGNMENT(LITERALMASK);
	ADD_PROP_ASSIGNMENT(SHOWTHOUSANDSEP);
	ADD_PROP_ASSIGNMENT(CURRENCYSYMBOL);
	ADD_PROP_ASSIGNMENT(DATEFORMAT);
	ADD_PROP_ASSIGNMENT(DATEMIN);
	ADD_PROP_ASSIGNMENT(DATEMAX);
	ADD_PROP_ASSIGNMENT(DATE_SHOW_CENTURY);
	ADD_PROP_ASSIGNMENT(TIMEFORMAT);
	ADD_PROP_ASSIGNMENT(TIMEMIN);
	ADD_PROP_ASSIGNMENT(TIMEMAX);
	ADD_PROP_ASSIGNMENT(LINECOUNT);
	ADD_PROP_ASSIGNMENT(BOUNDCOLUMN);
	ADD_PROP_ASSIGNMENT(HASNAVIGATION);
	ADD_PROP_ASSIGNMENT(FONT);
	ADD_PROP_ASSIGNMENT(BACKGROUNDCOLOR);
	ADD_PROP_ASSIGNMENT(FILLCOLOR);
	ADD_PROP_ASSIGNMENT(TEXTCOLOR);
	ADD_PROP_ASSIGNMENT(LINECOLOR);
	ADD_PROP_ASSIGNMENT(BORDER);
	ADD_PROP_ASSIGNMENT(DROPDOWN);
	ADD_PROP_ASSIGNMENT(HSCROLL);
	ADD_PROP_ASSIGNMENT(VSCROLL);
	ADD_PROP_ASSIGNMENT(TABSTOP);
	ADD_PROP_ASSIGNMENT(AUTOCOMPLETE);
	ADD_PROP_ASSIGNMENT(HARDLINEBREAKS);
	ADD_PROP_ASSIGNMENT(PRINTABLE);
	ADD_PROP_ASSIGNMENT(ECHO_CHAR);
	ADD_PROP_ASSIGNMENT(ROWHEIGHT);
	ADD_PROP_ASSIGNMENT(HELPTEXT);
	ADD_PROP_ASSIGNMENT(FONT_NAME);
	ADD_PROP_ASSIGNMENT(FONT_STYLENAME);
	ADD_PROP_ASSIGNMENT(FONT_FAMILY);
	ADD_PROP_ASSIGNMENT(FONT_CHARSET);
	ADD_PROP_ASSIGNMENT(FONT_HEIGHT);
	ADD_PROP_ASSIGNMENT(FONT_WEIGHT);
	ADD_PROP_ASSIGNMENT(FONT_SLANT);
	ADD_PROP_ASSIGNMENT(FONT_UNDERLINE);
	ADD_PROP_ASSIGNMENT(FONT_WORDLINEMODE);
	ADD_PROP_ASSIGNMENT(FONT_STRIKEOUT);
	ADD_PROP_ASSIGNMENT(TEXTLINECOLOR);
	ADD_PROP_ASSIGNMENT(FONTEMPHASISMARK);
	ADD_PROP_ASSIGNMENT(FONTRELIEF);
	ADD_PROP_ASSIGNMENT(HELPURL);
	ADD_PROP_ASSIGNMENT(RECORDMARKER);
	ADD_PROP_ASSIGNMENT(BOUNDFIELD);
    ADD_PROP_ASSIGNMENT(INPUT_REQUIRED);
	ADD_PROP_ASSIGNMENT(TREATASNUMERIC);
	ADD_PROP_ASSIGNMENT(EFFECTIVE_VALUE);
	ADD_PROP_ASSIGNMENT(EFFECTIVE_DEFAULT);
	ADD_PROP_ASSIGNMENT(EFFECTIVE_MIN);
	ADD_PROP_ASSIGNMENT(EFFECTIVE_MAX);
	ADD_PROP_ASSIGNMENT(HIDDEN);
	ADD_PROP_ASSIGNMENT(FILTERPROPOSAL);
	ADD_PROP_ASSIGNMENT(FIELDSOURCE);
	ADD_PROP_ASSIGNMENT(TABLENAME);
	ADD_PROP_ASSIGNMENT(CONTROLLABEL);
	ADD_PROP_ASSIGNMENT(CURRSYM_POSITION);
	ADD_PROP_ASSIGNMENT(CURSORCOLOR);
	ADD_PROP_ASSIGNMENT(ALWAYSSHOWCURSOR);
	ADD_PROP_ASSIGNMENT(DISPLAYSYNCHRON);
	ADD_PROP_ASSIGNMENT(ISMODIFIED);
	ADD_PROP_ASSIGNMENT(ISNEW);
	ADD_PROP_ASSIGNMENT(PRIVILEGES);
	ADD_PROP_ASSIGNMENT(DETAILFIELDS);
	ADD_PROP_ASSIGNMENT(COMMAND);
	ADD_PROP_ASSIGNMENT(COMMANDTYPE);
	ADD_PROP_ASSIGNMENT(RESULTSET_CONCURRENCY);
	ADD_PROP_ASSIGNMENT(INSERTONLY);
	ADD_PROP_ASSIGNMENT(RESULTSET_TYPE);
	ADD_PROP_ASSIGNMENT(ESCAPE_PROCESSING);
	ADD_PROP_ASSIGNMENT(APPLYFILTER);
	ADD_PROP_ASSIGNMENT(ISNULLABLE);
	ADD_PROP_ASSIGNMENT(ACTIVECOMMAND);
	ADD_PROP_ASSIGNMENT(ISCURRENCY);
	ADD_PROP_ASSIGNMENT(URL);
	ADD_PROP_ASSIGNMENT(TITLE);
	ADD_PROP_ASSIGNMENT(ACTIVE_CONNECTION);
	ADD_PROP_ASSIGNMENT(SCALE);
	ADD_PROP_ASSIGNMENT(SORT);
	ADD_PROP_ASSIGNMENT(PERSISTENCE_MAXTEXTLENGTH);
	ADD_PROP_ASSIGNMENT(SCROLL_VALUE);
	ADD_PROP_ASSIGNMENT(SPIN_VALUE);
	ADD_PROP_ASSIGNMENT(DEFAULT_SCROLL_VALUE);
	ADD_PROP_ASSIGNMENT(DEFAULT_SPIN_VALUE);
	ADD_PROP_ASSIGNMENT( WRITING_MODE );
	ADD_PROP_ASSIGNMENT( CONTEXT_WRITING_MODE );

	// now sort the array by name

	std::sort(
		s_AllKnownProperties.begin(),
		s_AllKnownProperties.end(),
		PropertyAssignmentNameCompareLess()
	);
}

//.........................................................................
}
//... namespace frm .......................................................
