X-Git-Url: http://git.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/wizards/html/TableElementWizardPage.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/wizards/html/TableElementWizardPage.java index cce7813..93b35ec 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/wizards/html/TableElementWizardPage.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/wizards/html/TableElementWizardPage.java @@ -1,5 +1,5 @@ /* - * $Id: TableElementWizardPage.java,v 1.1 2004-10-05 20:51:57 jsurfer Exp $ + * $Id: TableElementWizardPage.java,v 1.2 2006-10-21 23:18:43 pombredanne Exp $ * Copyright Narushima Hironori. All rights reserved. */ package net.sourceforge.phpeclipse.wizards.html; @@ -40,246 +40,251 @@ import org.xml.sax.SAXException; */ public class TableElementWizardPage extends EditElementWizardPage { - final public static int COLUMNS_MAX = 32, ROWS_MAX = 256; - - final static String[] expandStyleLabels = { "Flat", "Table", "Enumerate", }; - - TableElementModel model; - - TableViewer viewer; - - CellEditor[] editors; - - Combo expandStyleCombo = null; - - Text colsText, rowsText; - - Button addButton, removeButton, upButton, downButton; - - SelectionListener buttonListener = new SelectionListener() { - public void widgetSelected(SelectionEvent ev) { - Element e = getCurrentSelection(); - if (ev.widget == addButton) { - model.insertNewRowBefore(e); - } else if (ev.widget == removeButton) { - model.removeRow(e); - } else if (ev.widget == upButton) { - model.move(e, -1); - } else if (ev.widget == downButton) { - model.move(e, 1); - } - refreshAll(); - } - - public void widgetDefaultSelected(SelectionEvent e) { - } - }; - - ModifyListener cellCountChangeListener = new ModifyListener() { - public void modifyText(ModifyEvent e) { - try { - if (e.widget == colsText) { - int cols = Integer.parseInt(colsText.getText()); - if (cols < 1) - cols = 1; - if (cols > COLUMNS_MAX) - cols = COLUMNS_MAX; - model.setColumnCount(cols); - } else if (e.widget == rowsText) { - int rows = Integer.parseInt(rowsText.getText()); - if (rows < 1) - rows = 1; - if (rows > ROWS_MAX) - rows = ROWS_MAX; - model.setRowCount(rows); - } - refreshAll(); - } catch (NumberFormatException x) { - } - } - }; - - public TableElementWizardPage() { - super("TableElementWizardPage"); - setTitle("Table"); - setDescription("Edit table element and cells modifier."); - } - - public String getPreviewText() { - if (model == null) { - initModel(); - } - return (model != null) ? model.expandCodes() : null; - } - - void initModel() { - String content = ((EditElementWizard) getWizard()).getSelection().getText().trim(); - try { - model = new TableElementModel(content, getEditType() == NEW); - } catch (ParserConfigurationException e) { - PHPeclipsePlugin.log(e); - } catch (SAXException e) { - PHPeclipsePlugin.log(e); - } catch (IOException e) { - PHPeclipsePlugin.log(e); - } - } - - protected void createChildControl(Composite parent) { - parent.setLayout(new GridLayout(2, false)); - - // table settings - viewer = new TableViewer(parent, SWT.SINGLE | SWT.FULL_SELECTION | SWT.BORDER); - refreshTableHeaderColumns(); - - viewer.setContentProvider(new TableElementContentProvider()); - viewer.setLabelProvider(new TableElementLabelProvider()); - viewer.setCellModifier(new TableElementCellModifier(new IPropertyChangeListener() { - public void propertyChange(PropertyChangeEvent event) { - refreshAll(); - } - })); - - viewer.setInput(model); - viewer.addSelectionChangedListener(new ISelectionChangedListener() { - public void selectionChanged(SelectionChangedEvent event) { - refreshButtonState(); - refreshPreview(); - } - }); - - Table table = viewer.getTable(); - table.setLinesVisible(true); - table.setHeaderVisible(true); - - GridData gd = new GridData(GridData.FILL_BOTH); - gd.verticalSpan = 2; - table.setLayoutData(gd); - - // text input area setting - Composite textInputArea = new Composite(parent, SWT.NONE); - textInputArea.setLayout(new GridLayout(1, false)); - textInputArea.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_BEGINNING)); - rowsText = createNumInputText(textInputArea, "&Rows:"); - colsText = createNumInputText(textInputArea, "&Columns:"); - - // button area. - Composite buttonArea = new Composite(parent, SWT.NONE); - buttonArea.setLayout(new GridLayout(1, false)); - buttonArea.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_END)); - addButton = createButton(buttonArea, "&Add"); - removeButton = createButton(buttonArea, "&Remove"); - upButton = createButton(buttonArea, "&Up"); - downButton = createButton(buttonArea, "&Down"); - - // init state - TableColumn[] cols = table.getColumns(); - for (int i = 0; i < cols.length; i++) { - cols[i].pack(); - } - refreshTableLengthText(); - refreshButtonState(); - } - - Button createButton(Composite parent, String text) { - Button button = new Button(parent, SWT.NONE); - button.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL)); - button.setText(text); - button.addSelectionListener(buttonListener); - return button; - } - - Text createNumInputText(Composite parent, String label) { - Label labe = new Label(parent, SWT.NONE); - labe.setText(label); - - Text text = new Text(parent, SWT.BORDER); - text.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL)); - text.setTextLimit(2); - text.addVerifyListener(new NumVerifyListener()); - text.addModifyListener(cellCountChangeListener); - return text; - } - - void refreshAll() { - refreshTableHeaderColumns(); - refreshTableLengthText(); - refreshButtonState(); - refreshPreview(); - viewer.refresh(); - } - - void refreshTableHeaderColumns() { - if (model == null) { - initModel(); - } - - Table table = viewer.getTable(); - TableColumn[] cols = table.getColumns(); - CellEditor[] editors = viewer.getCellEditors(); - - String[] props = model.getColumnProperties(); - viewer.setColumnProperties(props); - // modify cell length - if (props.length > cols.length) { - CellEditor[] newEditors = new CellEditor[props.length]; - if (editors != null) { - System.arraycopy(editors, 0, newEditors, 0, editors.length); - } - for (int i = cols.length; i < props.length; i++) { - TableColumn col = new TableColumn(table, SWT.LEFT); - col.setText(TableElementModel.toColumnName(i)); - newEditors[i] = new TextCellEditor(table); - } - viewer.setCellEditors(newEditors); - } else if (props.length < cols.length) { - for (int i = props.length; i < cols.length; i++) { - cols[i].dispose(); - editors[i].dispose(); - } - CellEditor[] newEditors = new CellEditor[props.length]; - System.arraycopy(editors, 0, newEditors, 0, props.length); - viewer.setCellEditors(newEditors); - } - - // adjust table fields. - viewer.refresh(); - cols = table.getColumns(); - for (int i = 0; i < cols.length; i++) { - cols[i].pack(); - } - } - - void refreshTableLengthText() { - String cols = String.valueOf(model.getColumnCount()); - if (!cols.equals(colsText.getText())) { - colsText.setText(cols); - } - String rows = String.valueOf(model.getRowCount()); - if (!rows.equals(rowsText.getText())) { - rowsText.setText(rows); - } - } - - void refreshButtonState() { - Element e = getCurrentSelection(); - boolean enable = (e != null); - - removeButton.setEnabled(enable); - int currentIndex = -1; - Element[] rows = model.getRows(); - for (int i = 0; i < rows.length; i++) { - if (rows[i].equals(e)) { - currentIndex = i; - } - } - upButton.setEnabled(enable && currentIndex > 0); - downButton.setEnabled(enable && currentIndex < rows.length - 1); - } - - Element getCurrentSelection() { - IStructuredSelection sel = (IStructuredSelection) viewer.getSelection(); - return (sel != null) ? (Element) sel.getFirstElement() : null; - } + final public static int COLUMNS_MAX = 32, ROWS_MAX = 256; + + final static String[] expandStyleLabels = { "Flat", "Table", "Enumerate", }; + + TableElementModel model; + + TableViewer viewer; + + CellEditor[] editors; + + Combo expandStyleCombo = null; + + Text colsText, rowsText; + + Button addButton, removeButton, upButton, downButton; + + SelectionListener buttonListener = new SelectionListener() { + public void widgetSelected(SelectionEvent ev) { + Element e = getCurrentSelection(); + if (ev.widget == addButton) { + model.insertNewRowBefore(e); + } else if (ev.widget == removeButton) { + model.removeRow(e); + } else if (ev.widget == upButton) { + model.move(e, -1); + } else if (ev.widget == downButton) { + model.move(e, 1); + } + refreshAll(); + } + + public void widgetDefaultSelected(SelectionEvent e) { + } + }; + + ModifyListener cellCountChangeListener = new ModifyListener() { + public void modifyText(ModifyEvent e) { + try { + if (e.widget == colsText) { + int cols = Integer.parseInt(colsText.getText()); + if (cols < 1) + cols = 1; + if (cols > COLUMNS_MAX) + cols = COLUMNS_MAX; + model.setColumnCount(cols); + } else if (e.widget == rowsText) { + int rows = Integer.parseInt(rowsText.getText()); + if (rows < 1) + rows = 1; + if (rows > ROWS_MAX) + rows = ROWS_MAX; + model.setRowCount(rows); + } + refreshAll(); + } catch (NumberFormatException x) { + } + } + }; + + public TableElementWizardPage() { + super("TableElementWizardPage"); + setTitle("Table"); + setDescription("Edit table element and cells modifier."); + } + + public String getPreviewText() { + if (model == null) { + initModel(); + } + return (model != null) ? model.expandCodes() : null; + } + + void initModel() { + String content = ((EditElementWizard) getWizard()).getSelection() + .getText().trim(); + try { + model = new TableElementModel(content, getEditType() == NEW); + } catch (ParserConfigurationException e) { + PHPeclipsePlugin.log(e); + } catch (SAXException e) { + PHPeclipsePlugin.log(e); + } catch (IOException e) { + PHPeclipsePlugin.log(e); + } + } + + protected void createChildControl(Composite parent) { + parent.setLayout(new GridLayout(2, false)); + + // table settings + viewer = new TableViewer(parent, SWT.SINGLE | SWT.FULL_SELECTION + | SWT.BORDER); + refreshTableHeaderColumns(); + + viewer.setContentProvider(new TableElementContentProvider()); + viewer.setLabelProvider(new TableElementLabelProvider()); + viewer.setCellModifier(new TableElementCellModifier( + new IPropertyChangeListener() { + public void propertyChange(PropertyChangeEvent event) { + refreshAll(); + } + })); + + viewer.setInput(model); + viewer.addSelectionChangedListener(new ISelectionChangedListener() { + public void selectionChanged(SelectionChangedEvent event) { + refreshButtonState(); + refreshPreview(); + } + }); + + Table table = viewer.getTable(); + table.setLinesVisible(true); + table.setHeaderVisible(true); + + GridData gd = new GridData(GridData.FILL_BOTH); + gd.verticalSpan = 2; + table.setLayoutData(gd); + + // text input area setting + Composite textInputArea = new Composite(parent, SWT.NONE); + textInputArea.setLayout(new GridLayout(1, false)); + textInputArea.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL + | GridData.VERTICAL_ALIGN_BEGINNING)); + rowsText = createNumInputText(textInputArea, "&Rows:"); + colsText = createNumInputText(textInputArea, "&Columns:"); + + // button area. + Composite buttonArea = new Composite(parent, SWT.NONE); + buttonArea.setLayout(new GridLayout(1, false)); + buttonArea.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL + | GridData.VERTICAL_ALIGN_END)); + addButton = createButton(buttonArea, "&Add"); + removeButton = createButton(buttonArea, "&Remove"); + upButton = createButton(buttonArea, "&Up"); + downButton = createButton(buttonArea, "&Down"); + + // init state + TableColumn[] cols = table.getColumns(); + for (int i = 0; i < cols.length; i++) { + cols[i].pack(); + } + refreshTableLengthText(); + refreshButtonState(); + } + + Button createButton(Composite parent, String text) { + Button button = new Button(parent, SWT.NONE); + button.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL)); + button.setText(text); + button.addSelectionListener(buttonListener); + return button; + } + + Text createNumInputText(Composite parent, String label) { + Label labe = new Label(parent, SWT.NONE); + labe.setText(label); + + Text text = new Text(parent, SWT.BORDER); + text.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL)); + text.setTextLimit(2); + text.addVerifyListener(new NumVerifyListener()); + text.addModifyListener(cellCountChangeListener); + return text; + } + + void refreshAll() { + refreshTableHeaderColumns(); + refreshTableLengthText(); + refreshButtonState(); + refreshPreview(); + viewer.refresh(); + } + + void refreshTableHeaderColumns() { + if (model == null) { + initModel(); + } + + Table table = viewer.getTable(); + TableColumn[] cols = table.getColumns(); + CellEditor[] editors = viewer.getCellEditors(); + + String[] props = model.getColumnProperties(); + viewer.setColumnProperties(props); + // modify cell length + if (props.length > cols.length) { + CellEditor[] newEditors = new CellEditor[props.length]; + if (editors != null) { + System.arraycopy(editors, 0, newEditors, 0, editors.length); + } + for (int i = cols.length; i < props.length; i++) { + TableColumn col = new TableColumn(table, SWT.LEFT); + col.setText(TableElementModel.toColumnName(i)); + newEditors[i] = new TextCellEditor(table); + } + viewer.setCellEditors(newEditors); + } else if (props.length < cols.length) { + for (int i = props.length; i < cols.length; i++) { + cols[i].dispose(); + editors[i].dispose(); + } + CellEditor[] newEditors = new CellEditor[props.length]; + System.arraycopy(editors, 0, newEditors, 0, props.length); + viewer.setCellEditors(newEditors); + } + + // adjust table fields. + viewer.refresh(); + cols = table.getColumns(); + for (int i = 0; i < cols.length; i++) { + cols[i].pack(); + } + } + + void refreshTableLengthText() { + String cols = String.valueOf(model.getColumnCount()); + if (!cols.equals(colsText.getText())) { + colsText.setText(cols); + } + String rows = String.valueOf(model.getRowCount()); + if (!rows.equals(rowsText.getText())) { + rowsText.setText(rows); + } + } + + void refreshButtonState() { + Element e = getCurrentSelection(); + boolean enable = (e != null); + + removeButton.setEnabled(enable); + int currentIndex = -1; + Element[] rows = model.getRows(); + for (int i = 0; i < rows.length; i++) { + if (rows[i].equals(e)) { + currentIndex = i; + } + } + upButton.setEnabled(enable && currentIndex > 0); + downButton.setEnabled(enable && currentIndex < rows.length - 1); + } + + Element getCurrentSelection() { + IStructuredSelection sel = (IStructuredSelection) viewer.getSelection(); + return (sel != null) ? (Element) sel.getFirstElement() : null; + } } \ No newline at end of file