• Home
  • History
  • Annotate
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*******************************************************************************
2  * Copyright (c) 2011 Google, Inc.
3  * All rights reserved. This program and the accompanying materials
4  * are made available under the terms of the Eclipse Public License v1.0
5  * which accompanies this distribution, and is available at
6  * http://www.eclipse.org/legal/epl-v10.html
7  *
8  * Contributors:
9  *    Google, Inc. - initial API and implementation
10  *******************************************************************************/
11 package org.eclipse.wb.internal.core.utils.ui;
12 
13 import org.eclipse.swt.layout.GridLayout;
14 import org.eclipse.swt.widgets.Composite;
15 import org.eclipse.swt.widgets.Layout;
16 
17 /**
18  * GridLayoutFactory provides a convenient shorthand for creating and initializing GridLayout.
19  *
20  * @author scheglov_ke
21  */
22 public final class GridLayoutFactory {
23   private final GridLayout m_layout;
24 
25   ////////////////////////////////////////////////////////////////////////////
26   //
27   // Constructor
28   //
29   ////////////////////////////////////////////////////////////////////////////
GridLayoutFactory(Composite composite, GridLayout layout)30   private GridLayoutFactory(Composite composite, GridLayout layout) {
31     m_layout = layout;
32     composite.setLayout(m_layout);
33   }
34 
create(Composite composite)35   public static GridLayoutFactory create(Composite composite) {
36     return new GridLayoutFactory(composite, new GridLayout());
37   }
38 
modify(Composite composite)39   public static GridLayoutFactory modify(Composite composite) {
40     Layout layout = composite.getLayout();
41     if (layout instanceof GridLayout) {
42       return new GridLayoutFactory(composite, (GridLayout) layout);
43     }
44     return create(composite);
45   }
46 
47   ////////////////////////////////////////////////////////////////////////////
48   //
49   // Access
50   //
51   ////////////////////////////////////////////////////////////////////////////
52   /**
53    * Sets number of columns in {@link GridLayout}.
54    */
columns(int numColumns)55   public GridLayoutFactory columns(int numColumns) {
56     m_layout.numColumns = numColumns;
57     return this;
58   }
59 
60   /**
61    * Specifies whether all columns in the layout will be forced to have the same width.
62    */
equalColumns()63   public GridLayoutFactory equalColumns() {
64     m_layout.makeColumnsEqualWidth = true;
65     return this;
66   }
67 
68   /**
69    * Sets the horizontal margins.
70    */
marginsH(int margins)71   public GridLayoutFactory marginsH(int margins) {
72     m_layout.marginWidth = margins;
73     return this;
74   }
75 
76   /**
77    * Sets the vertical margins.
78    */
marginsV(int margins)79   public GridLayoutFactory marginsV(int margins) {
80     m_layout.marginHeight = margins;
81     return this;
82   }
83 
84   /**
85    * Sets the horizontal/vertical margins.
86    */
margins(int margins)87   public GridLayoutFactory margins(int margins) {
88     m_layout.marginWidth = m_layout.marginHeight = margins;
89     return this;
90   }
91 
92   /**
93    * Sets zero horizontal and vertical margins.
94    */
noMargins()95   public GridLayoutFactory noMargins() {
96     m_layout.marginWidth = m_layout.marginHeight = 0;
97     return this;
98   }
99 
100   /**
101    * Sets zero horizontal and vertical spacing.
102    */
noSpacing()103   public GridLayoutFactory noSpacing() {
104     m_layout.horizontalSpacing = m_layout.verticalSpacing = 0;
105     return this;
106   }
107 
108   /**
109    * Sets horizontal spacing.
110    */
spacingH(int spacing)111   public GridLayoutFactory spacingH(int spacing) {
112     m_layout.horizontalSpacing = spacing;
113     return this;
114   }
115 
116   /**
117    * Sets vertical spacing.
118    */
spacingV(int spacing)119   public GridLayoutFactory spacingV(int spacing) {
120     m_layout.verticalSpacing = spacing;
121     return this;
122   }
123 }
124