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

#ifndef SVX_SIDEBAR_LINE_STYLE_VALUE_SET_HXX
#define SVX_SIDEBAR_LINE_STYLE_VALUE_SET_HXX

#include <svtools/valueset.hxx>

namespace svx { namespace sidebar {

class LineStyleValueSet
    : public ValueSet
{
public:
    LineStyleValueSet (Window* pParent, const ResId& rResId);
    virtual ~LineStyleValueSet (void);

    void SetFirstSelect(bool bSel);
    void SetFirstString(XubString str);

	virtual void	UserDraw( const UserDrawEvent& rUDEvt );

private:
    VirtualDevice* 	pVDev;
	bool			mbSelectFirst;
	XubString		strNone;
};

} } // end of namespace svx::sidebar

#endif

// eof
