#30: Adaptives Layout (https://polymap.org/mosaic/ticket/30)
[polymap3:falkos-polymap3-rhei.git] / plugins / org.polymap.rhei.batik / src / org / polymap / rhei / batik / IPanel.java
1 /*
2  * polymap.org
3  * Copyright 2013, Falko Bräutigam. All rights reserved.
4  *
5  * This is free software; you can redistribute it and/or modify it
6  * under the terms of the GNU Lesser General Public License as
7  * published by the Free Software Foundation; either version 3.0 of
8  * the License, or (at your option) any later version.
9  *
10  * This software is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13  * Lesser General Public License for more details.
14  */
15 package org.polymap.rhei.batik;
16
17 import org.eclipse.swt.widgets.Composite;
18
19 import org.polymap.rhei.batik.toolkit.ConstraintLayout;
20
21 /**
22  * The panel is the main visual component of the Atlas UI. It typically provides a
23  * map view, an editor, wizard or a dashboard.
24  * <p/>
25  * A panel is identified by its path and name. The path defines the place in the
26  * hierarchy of panel.
27  *
28  * @see Context
29  * @author <a href="http://www.polymap.de">Falko Bräutigam</a>
30  */
31 public interface IPanel {
32
33     /** See {@link IPanelSite#LAYOUT_SPACING_KEY}. */
34     public static final String      LAYOUT_SPACING_KEY = IPanelSite.LAYOUT_SPACING_KEY;
35     /** See {@link IPanelSite#LAYOUT_MARGINS_KEY}. */
36     public static final String      LAYOUT_MARGINS_KEY = IPanelSite.LAYOUT_MARGINS_KEY;
37
38     /**
39      * Initializes the panel and checks if it is valid for the given site and
40      * context.
41      *
42      * @param site
43      * @param context
44      * @return True if the panel is valid for the given site and context.
45      */
46     public boolean init( IPanelSite site, IAppContext context );
47
48     public void dispose();
49
50     public PanelIdentifier id();
51
52     
53     /**
54      * Creates the UI elements of this panel.
55      * <p/>
56      * {@link ConstraintLayout} is set for the <code>panelBody</code> by default.
57      * Margin width/height are set according the space available in the panel. This
58      * can be changed as needed.
59      * 
60      * @param panelBody The parent of the UI elements to create.
61      */
62     public void createContents( Composite panelBody );
63
64     public IPanelSite getSite();
65 }