/******************************************************************************* * Copyright (c) 2009 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 *******************************************************************************/ //------------------------------------------------------------------------------ // Copyright (c) 2005, 2007 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 implementation //------------------------------------------------------------------------------ package org.eclipse.epf.richtext.dialogs; import org.eclipse.epf.richtext.RichTextResources; import org.eclipse.epf.richtext.html.Table; import org.eclipse.swt.SWT; import org.eclipse.swt.events.ModifyEvent; import org.eclipse.swt.events.ModifyListener; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Combo; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; /** * Prompts the user to specify the attributes that will be used to create a HTML * <table> tag in the rich text editor. * * @author Kelvin Low * @since 1.0 */ public class AddTableDialog extends BaseDialog { private static final int DEFAULT_ROWS = 2; private static final int DEFAULT_COLUMNS = 2; private static final String DEFAULT_WIDTH = "85%"; //$NON-NLS-1$ private static final String[] TABLE_STYLE_LABELS = { RichTextResources.tableHeaderNone_text, RichTextResources.tableHeaderCols_text, RichTextResources.tableHeaderRows_text, RichTextResources.tableHeaderBoth_text, }; private Table table = new Table(); private Text rowsText; private Text colsText; private Text widthText; private Combo tableTypeCombo; private Text summaryText; private Text captionText; private ModifyListener modifyListener = new ModifyListener() { public void modifyText(ModifyEvent event) { if (okButton != null) { try { int rows = Integer.parseInt(rowsText.getText().trim()); int cols = Integer.parseInt(colsText.getText().trim()); String width = widthText.getText().trim(); okButton.setEnabled(rows > 0 && cols > 0 && width.length() > 0); } catch (Exception e) { okButton.setEnabled(false); } } } }; /** * Creates a new instance. * * @param parent * the parent shell */ public AddTableDialog(Shell parent) { super(parent); } @Override protected Control createDialogArea(Composite parent) { Composite composite = (Composite) super.createDialogArea(parent); Label rowsLabel = new Label(composite, SWT.NONE); rowsLabel.setText(RichTextResources.rowsLabel_text); rowsText = new Text(composite, SWT.BORDER); rowsText.setTextLimit(2); rowsText.setText("" + DEFAULT_ROWS); //$NON-NLS-1$ { GridData gridData = new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL); rowsText.setLayoutData(gridData); } rowsText.addModifyListener(modifyListener); Label colsLabel = new Label(composite, SWT.NONE); colsLabel.setText(RichTextResources.columnsLabel_text); colsText = new Text(composite, SWT.BORDER); colsText.setTextLimit(2); colsText.setText("" + DEFAULT_COLUMNS); //$NON-NLS-1$ { GridData gridData = new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL); colsText.setLayoutData(gridData); } colsText.addModifyListener(modifyListener); Label widthLabel = new Label(composite, SWT.NONE); widthLabel.setText(RichTextResources.widthLabel_text); widthText = new Text(composite, SWT.BORDER); widthText.setText("" + DEFAULT_WIDTH); //$NON-NLS-1$ { GridData gridData = new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL); widthText.setLayoutData(gridData); } widthText.addModifyListener(modifyListener); Label headerTypeLabel = new Label(composite, SWT.NONE); headerTypeLabel.setText(RichTextResources.tableStyleLabel_text); tableTypeCombo = new Combo(composite, SWT.BORDER | SWT.READ_ONLY); tableTypeCombo.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); tableTypeCombo.setItems(TABLE_STYLE_LABELS); tableTypeCombo.setText(TABLE_STYLE_LABELS[0]); Label summaryLabel = new Label(composite, SWT.NONE); summaryLabel.setText(RichTextResources.summaryLabel_text); summaryText = new Text(composite, SWT.BORDER); { GridData gridData = new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL); summaryText.setLayoutData(gridData); } Label captionLabel = new Label(composite, SWT.NONE); captionLabel.setText(RichTextResources.captionLabel_text); captionText = new Text(composite, SWT.BORDER); { GridData gridData = new GridData(GridData.FILL_HORIZONTAL | GridData.GRAB_HORIZONTAL); captionText.setLayoutData(gridData); } super.getShell().setText(RichTextResources.addTableDialog_title); return composite; } @Override protected void createButtonsForButtonBar(Composite parent) { super.createButtonsForButtonBar(parent); } @Override protected void okPressed() { String rowsValue = rowsText.getText(); if (rowsValue != null && rowsValue.length() > 0) { try { int rows = Integer.parseInt(rowsValue); table.setRows(rows); } catch (Exception e) { table.setRows(DEFAULT_ROWS); } } String colsValue = colsText.getText(); if (colsValue != null && colsValue.length() > 0) { try { int cols = Integer.parseInt(colsValue); table.setColumns(cols); } catch (Exception e) { table.setColumns(DEFAULT_COLUMNS); } } String widthValue = widthText.getText(); if (widthValue != null && widthValue.length() > 0) { table.setWidth(widthValue); } else { table.setWidth(DEFAULT_WIDTH); } table.setSummary(summaryText.getText().trim()); table.setCaption(captionText.getText().trim()); table.setTableHeaders(tableTypeCombo.getSelectionIndex()); super.okPressed(); } /** * Gets the user specified table. * * @return an <code>Table</code> object */ public Table getTable() { return table; } }