blob: d0c1fa368fb4c1e2471e2ad26501d2bcb5cc7d5a [file] [log] [blame]
/*******************************************************************************
* 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 Common Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-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;
}
}
}