1765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye/******************************************************************************* 2765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * Copyright (c) 2011 Google, Inc. 3765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * All rights reserved. This program and the accompanying materials 4765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * are made available under the terms of the Eclipse Public License v1.0 5765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * which accompanies this distribution, and is available at 6765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * http://www.eclipse.org/legal/epl-v10.html 7765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * 8765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * Contributors: 9765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * Google, Inc. - initial API and implementation 10765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye *******************************************************************************/ 11765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbyepackage org.eclipse.wb.internal.core.utils.ui; 12765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 13765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbyeimport org.eclipse.swt.layout.GridLayout; 14765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbyeimport org.eclipse.swt.widgets.Composite; 15765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbyeimport org.eclipse.swt.widgets.Layout; 16765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 17765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye/** 18765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * GridLayoutFactory provides a convenient shorthand for creating and initializing GridLayout. 19765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * 20765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * @author scheglov_ke 21765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye */ 22765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbyepublic final class GridLayoutFactory { 23765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye private final GridLayout m_layout; 24765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 25765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye //////////////////////////////////////////////////////////////////////////// 26765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // 27765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // Constructor 28765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // 29765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye //////////////////////////////////////////////////////////////////////////// 30765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye private GridLayoutFactory(Composite composite, GridLayout layout) { 31765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye m_layout = layout; 32765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye composite.setLayout(m_layout); 33765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye } 34765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 35765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye public static GridLayoutFactory create(Composite composite) { 36765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye return new GridLayoutFactory(composite, new GridLayout()); 37765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye } 38765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 39765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye public static GridLayoutFactory modify(Composite composite) { 40765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye Layout layout = composite.getLayout(); 41765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye if (layout instanceof GridLayout) { 42765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye return new GridLayoutFactory(composite, (GridLayout) layout); 43765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye } 44765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye return create(composite); 45765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye } 46765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 47765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye //////////////////////////////////////////////////////////////////////////// 48765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // 49765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // Access 50765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // 51765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye //////////////////////////////////////////////////////////////////////////// 52765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye /** 53765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * Sets number of columns in {@link GridLayout}. 54765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye */ 55765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye public GridLayoutFactory columns(int numColumns) { 56765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye m_layout.numColumns = numColumns; 57765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye return this; 58765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye } 59765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 60765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye /** 61765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * Specifies whether all columns in the layout will be forced to have the same width. 62765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye */ 63765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye public GridLayoutFactory equalColumns() { 64765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye m_layout.makeColumnsEqualWidth = true; 65765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye return this; 66765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye } 67765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 68765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye /** 69765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * Sets the horizontal margins. 70765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye */ 71765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye public GridLayoutFactory marginsH(int margins) { 72765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye m_layout.marginWidth = margins; 73765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye return this; 74765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye } 75765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 76765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye /** 77765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * Sets the vertical margins. 78765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye */ 79765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye public GridLayoutFactory marginsV(int margins) { 80765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye m_layout.marginHeight = margins; 81765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye return this; 82765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye } 83765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 84765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye /** 85765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * Sets the horizontal/vertical margins. 86765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye */ 87765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye public GridLayoutFactory margins(int margins) { 88765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye m_layout.marginWidth = m_layout.marginHeight = margins; 89765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye return this; 90765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye } 91765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 92765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye /** 93765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * Sets zero horizontal and vertical margins. 94765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye */ 95765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye public GridLayoutFactory noMargins() { 96765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye m_layout.marginWidth = m_layout.marginHeight = 0; 97765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye return this; 98765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye } 99765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 100765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye /** 101765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * Sets zero horizontal and vertical spacing. 102765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye */ 103765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye public GridLayoutFactory noSpacing() { 104765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye m_layout.horizontalSpacing = m_layout.verticalSpacing = 0; 105765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye return this; 106765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye } 107765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 108765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye /** 109765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * Sets horizontal spacing. 110765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye */ 111765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye public GridLayoutFactory spacingH(int spacing) { 112765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye m_layout.horizontalSpacing = spacing; 113765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye return this; 114765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye } 115765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 116765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye /** 117765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * Sets vertical spacing. 118765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye */ 119765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye public GridLayoutFactory spacingV(int spacing) { 120765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye m_layout.verticalSpacing = spacing; 121765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye return this; 122765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye } 123765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye} 124