<!--
  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.
  
-->
<library>
	
<class name="hidePropertyView" extends="view"
	   width="$once{ parent.width }" height="$once{ parent.height }"
	   opacity="0.7" bgcolor="0xFFFFFF" />

<class name="basePropertySelector" extends="view">
	
	<!--- position of the SliderWin or ColorPicker -->
	<attribute name="boxPosition" value="down" type="string" />
	
	<attribute name="isEnabled" value="true" type="boolean" />
	<attribute name="enabledView" value="null" />
	
	<method name="setEnabled" args="b">
		this.setAttribute('isEnabled',b);
		if (this.enabledView != null) {
			this.enabledView.destroy();
			this.enabledView = null;
		}
		if (!b) {
			this.enabledView = new lz.hidePropertyView(this);
		} 
	</method>
    
    
</class>

</library>
