1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 #ifndef LAYOUT_CORE_DIALOGBUTTONHBOX_HXX
25 #define LAYOUT_CORE_DIALOGBUTTONHBOX_HXX
26 
27 #include <layout/core/box.hxx>
28 #include <layout/core/flow.hxx>
29 
30 namespace layoutimpl
31 {
32 
33 class DialogButtonHBox : public HBox
34 {
35 public:
36     DialogButtonHBox();
37 
38     void setOrdering( rtl::OUString const& ordering );
39     void SAL_CALL addChild( css::uno::Reference< css::awt::XLayoutConstrains > const& xChild ) throw ( css::uno::RuntimeException, css::awt::MaxChildrenException );
40     void SAL_CALL removeChild( css::uno::Reference< css::awt::XLayoutConstrains > const& xChild ) throw ( css::uno::RuntimeException );
41 
42 private:
43     enum Ordering { PLATFORM, GNOME, KDE, MACOS, WINDOWS };
44 
45     void orderChildren();
46     void gnomeOrdering();
47     void kdeOrdering();
48     void macosOrdering();
49     void windowsOrdering();
50 
51     static Ordering const DEFAULT_ORDERING;
52     Ordering mnOrdering;
53     Flow mFlow;
54 
55     ChildData *mpAction; /* [..]?, [Retry?] */
56     ChildData *mpAffirmative; /* OK, Yes, Save */
57     ChildData *mpAlternate; /* NO, [Ignore?], Don't save, Quit without saving */
58     ChildData *mpApply; /* Deprecated? */
59     ChildData *mpCancel; /* Cancel, Close */
60     ChildData *mpFlow;
61     ChildData *mpHelp;
62     ChildData *mpReset;
63 
64     std::list< Box_Base::ChildData *> maOther;
65 };
66 
67 } // namespace layoutimpl
68 
69 #endif /* LAYOUT_CORE_DIALOGBUTTONHBOX_HXX */
70