/******************************************************************************* * Copyright (c) 2000, 2003 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.SWT; import org.eclipse.swt.custom.CCombo; import org.eclipse.swt.custom.TableEditor; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Group; import org.eclipse.swt.widgets.TableItem; class FillLayoutTab extends Tab { CCombo combo; /* TableEditors and related controls */ TableEditor comboEditor; /* The example layout instance */ FillLayout fillLayout; /* Controls for setting layout parameters */ Button horizontal, vertical; /** * 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; } }