/******************************************************************************* * Copyright (c) 2000, 2012 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.swt.examples.layoutexample; import org.eclipse.swt.*; import org.eclipse.swt.custom.*; import org.eclipse.swt.events.*; import org.eclipse.swt.layout.*; import org.eclipse.swt.widgets.*; class FillLayoutTab extends Tab { /* Controls for setting layout parameters */ Button horizontal, vertical; /* The example layout instance */ FillLayout fillLayout; /* TableEditors and related controls*/ TableEditor comboEditor; CCombo combo; /** * Creates the Tab within a given instance of LayoutExample. */ FillLayoutTab(LayoutExample instance) { super(instance); } /** * Creates the widgets in the "child" group. */ void createChildWidgets () { /* Add common controls */ super.createChildWidgets (); /* Add TableEditors */ comboEditor = new TableEditor (table); table.addSelectionListener (new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { resetEditors (); index = table.getSelectionIndex (); if (index == -1) return; TableItem oldItem = comboEditor.getItem (); newItem = table.getItem (index); if (newItem == oldItem || newItem != lastSelected) { lastSelected = newItem; return; } table.showSelection (); combo = new CCombo (table, SWT.READ_ONLY); createComboEditor (combo, comboEditor); } }); /* Add listener to add an element to the table */ add.addSelectionListener(new SelectionAdapter () { public void widgetSelected(SelectionEvent e) { TableItem item = new TableItem (table, 0); item.setText (0, String.valueOf (table.indexOf (item))); item.setText (1, "Button"); data.addElement ("Button"); resetEditors (); } }); } /** * Creates the control widgets. */ void createControlWidgets () { /* Controls the type of FillLayout */ Group typeGroup = new Group (controlGroup, SWT.NONE); typeGroup.setText (LayoutExample.getResourceString ("Type")); typeGroup.setLayout (new GridLayout ()); typeGroup.setLayoutData (new GridData (GridData.FILL_HORIZONTAL)); horizontal = new Button (typeGroup, SWT.RADIO); horizontal.setText ("SWT.HORIZONTAL"); horizontal.setLayoutData(new GridData (GridData.FILL_HORIZONTAL)); horizontal.setSelection(true); horizontal.addSelectionListener (selectionListener); vertical = new Button (typeGroup, SWT.RADIO); vertical.setText ("SWT.VERTICAL"); vertical.setLayoutData(new GridData (GridData.FILL_HORIZONTAL)); vertical.addSelectionListener (selectionListener); /* Add common controls */ super.createControlWidgets (); /* Position the sash */ sash.setWeights (new int [] {4,1}); } /** * Creates the example layout. */ void createLayout () { fillLayout = new FillLayout (); layoutComposite.setLayout (fillLayout); } /** * Disposes the editors without placing their contents * into the table. */ void disposeEditors () { comboEditor.setEditor (null, null, -1); combo.dispose (); } /** * Generates code for the example layout. */ StringBuffer generateLayoutCode () { StringBuffer code = new StringBuffer (); code.append ("\t\tFillLayout fillLayout = new FillLayout ();\n"); if (fillLayout.type == SWT.VERTICAL) { code.append ("\t\tfillLayout.type = SWT.VERTICAL;\n"); } code.append ("\t\tshell.setLayout (fillLayout);\n"); for (int i = 0; i < children.length; i++) { Control control = children [i]; code.append (getChildCode (control, i)); } return code; } /** * Returns the layout data field names. */ String [] getLayoutDataFieldNames() { return new String [] {"","Control"}; } /** * Gets the text for the tab folder item. */ String getTabText () { return "FillLayout"; } /** * Takes information from TableEditors and stores it. */ void resetEditors () { TableItem oldItem = comboEditor.getItem (); comboEditor.setEditor (null, null, -1); if (oldItem != null) { int row = table.indexOf (oldItem); data.insertElementAt (combo.getText (), row); oldItem.setText (1, data.elementAt (row).toString ()); combo.dispose (); } setLayoutState (); refreshLayoutComposite (); layoutComposite.layout (true); layoutGroup.layout (true); } /** * Sets the state of the layout. */ void setLayoutState () { if (vertical.getSelection()) { fillLayout.type = SWT.VERTICAL; } else { fillLayout.type = SWT.HORIZONTAL; } } }