+++ /dev/null
-/*
- * $Id: UnknownElementWizardPage.java,v 1.2 2006-10-21 23:18:43 pombredanne Exp $
- * Copyright Narushima Hironori. All rights reserved.
- */
-package net.sourceforge.phpeclipse.wizards.html;
-
-import java.util.ArrayList;
-
-import org.eclipse.jface.dialogs.IInputValidator;
-import org.eclipse.jface.viewers.ArrayContentProvider;
-import org.eclipse.jface.viewers.CellEditor;
-import org.eclipse.jface.viewers.ICellModifier;
-import org.eclipse.jface.viewers.ILabelProviderListener;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.ITableLabelProvider;
-import org.eclipse.jface.viewers.TableViewer;
-import org.eclipse.jface.viewers.TextCellEditor;
-import org.eclipse.jface.window.Window;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Item;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Table;
-import org.eclipse.swt.widgets.TableColumn;
-import org.w3c.dom.Element;
-import org.w3c.dom.NamedNodeMap;
-import org.w3c.dom.Node;
-
-/**
- *
- *
- */
-public class UnknownElementWizardPage extends EditElementWizardPage {
-
- // key of TableCell for attribute editor.
- final static String NAME = "ColumnProperty-name",
- VALUE = "ColumnProperty-value";
-
- Button emptyElementCheck, addButton, removeButton, upButton, downButton;
-
- TableViewer unknownElementAttrs;
-
- ArrayList attrs = new ArrayList(), listeners = new ArrayList();
-
- SelectionListener elemTypeChangeListener = new SelectionListener() {
- public void widgetSelected(SelectionEvent e) {
- refreshPreview();
- }
-
- public void widgetDefaultSelected(SelectionEvent e) {
- }
- };
-
- public UnknownElementWizardPage() {
- super("UnknownElementEditPage");
- setTitle("Unknown");
- setDescription("Editor for any HTML element.");
- }
-
- static IInputValidator attrValidator = new IInputValidator() {
- public String isValid(String newText) {
- if (newText.length() == 0) {
- return "Need to specify name";
- }
- if (newText.indexOf(' ') != -1 || newText.indexOf('\n') != -1
- || newText.indexOf('\t') != -1) {
- return "Not contain blank";
- }
- return null;
- }
- };
-
- protected void createChildControl(Composite parent) {
- // empty eleemnt
- parent.setLayout(new GridLayout(2, false));
-
- // // attribute editor
- Label labe = new Label(parent, SWT.NONE);
- labe.setText("Element &Attribute:");
- GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
- labe.setLayoutData(gd);
- new Label(parent, SWT.NONE);
-
- // attribute display table setting
- unknownElementAttrs = new TableViewer(parent, SWT.BORDER | SWT.SINGLE
- | SWT.FULL_SELECTION);
- gd = new GridData(GridData.FILL_BOTH);
- gd.horizontalSpan = 1;
- gd.verticalSpan = 4;
- unknownElementAttrs.getControl().setLayoutData(gd);
-
- final Table table = unknownElementAttrs.getTable();
- new TableColumn(table, SWT.LEFT).setText("Name");
- new TableColumn(table, SWT.LEFT).setText("Value");
-
- table.setLinesVisible(true);
- table.setHeaderVisible(true);
- // modifier setting
- unknownElementAttrs.setColumnProperties(new String[] { NAME, VALUE });
- unknownElementAttrs.setContentProvider(new ArrayContentProvider());
-
- unknownElementAttrs.setCellEditors(new CellEditor[] {
- new TextCellEditor(table), new TextCellEditor(table) });
- unknownElementAttrs.setCellModifier(new ICellModifier() {
- public boolean canModify(Object element, String property) {
- return true;
- }
-
- public Object getValue(Object element, String property) {
- return ((String[]) element)[property.equals(NAME) ? 0 : 1];
- }
-
- public void modify(Object element, String property, Object value) {
- if (element instanceof Item) {
- ((String[]) ((Item) element).getData())[property
- .equals(NAME) ? 0 : 1] = HTMLUtilities
- .unescape((String) value);
- refreshPreview();
- }
- }
- });
-
- unknownElementAttrs.setLabelProvider(new ITableLabelProvider() {
- public Image getColumnImage(Object element, int columnIndex) {
- return null;
- }
-
- public String getColumnText(Object element, int columnIndex) {
- return ((String[]) element)[columnIndex];
- }
-
- public void addListener(ILabelProviderListener listener) {
- }
-
- public void removeListener(ILabelProviderListener listener) {
- }
-
- public void dispose() {
- }
-
- public boolean isLabelProperty(Object element, String property) {
- return property.equals(NAME) || property.equals(VALUE);
- }
- });
-
- resetAttributes();
- unknownElementAttrs.setInput(attrs);
-
- TableColumn[] columns = table.getColumns();
- for (int i = 0; i < columns.length; i++) {
- columns[i].pack();
- }
-
- // buttonss
- upButton = createButton(parent, "&Up");
- upButton.addSelectionListener(new SelectionListener() {
-
- public void widgetSelected(SelectionEvent e) {
- int index = getSelectionIndex();
- if (index > 0) {
- attrs.add(index - 1, attrs.remove(index));
- refreshPreview();
- }
- }
-
- public void widgetDefaultSelected(SelectionEvent e) {
- }
- });
-
- downButton = createButton(parent, "&Down");
- downButton.addSelectionListener(new SelectionListener() {
- public void widgetSelected(SelectionEvent e) {
- int index = getSelectionIndex();
- if (index < attrs.size() - 1) {
- attrs.add(index + 1, attrs.remove(index));
- refreshPreview();
- }
- }
-
- public void widgetDefaultSelected(SelectionEvent e) {
- }
- });
-
- addButton = createButton(parent, "&Add");
- addButton.addSelectionListener(new SelectionListener() {
- public void widgetSelected(SelectionEvent e) {
- int insertIndex = getSelectionIndex();
- String[] newData = inputValue();
- if (newData != null) {
- attrs.add(newData);
- refreshPreview();
- }
- }
-
- String[] inputValue() {
- SomeItemInputDialog dialog = new SomeItemInputDialog(
- getShell(), "Input new attribute", new String[] {
- "Attribute name", "Attribute value" },
- new IInputValidator[] { attrValidator, null });
-
- if (dialog.open() == Window.OK) {
- return dialog.getValues();
- }
- return null;
- }
-
- public void widgetDefaultSelected(SelectionEvent e) {
- }
- });
-
- removeButton = createButton(parent, "&Remove");
- removeButton.addSelectionListener(new SelectionListener() {
- public void widgetSelected(SelectionEvent e) {
- int index = getSelectionIndex();
- if (index != -1) {
- attrs.remove(index);
- refreshPreview();
- }
- }
-
- public void widgetDefaultSelected(SelectionEvent e) {
- }
- });
-
- emptyElementCheck = new Button(parent, SWT.CHECK);
- gd = new GridData(GridData.FILL_HORIZONTAL);
- emptyElementCheck.setLayoutData(gd);
- emptyElementCheck.setText("&Empty Element");
- emptyElementCheck.addSelectionListener(elemTypeChangeListener);
- emptyElementCheck.setSelection(isEmptyAsText());
-
- new Label(parent, SWT.NONE);
- }
-
- static Button createButton(Composite parent, String text) {
- Button button = new Button(parent, SWT.PUSH);
- GridData gd = new GridData(GridData.VERTICAL_ALIGN_BEGINNING
- | GridData.HORIZONTAL_ALIGN_END);
- gd.widthHint = 60;
- button.setLayoutData(gd);
- button.setText(text);
- return button;
- }
-
- public String getPreviewText() {
- String elemName = getElementName();
- if (elemName == null) {
- return null;
- }
-
- // sets values
-
- boolean empty = false;
- if (emptyElementCheck == null) {
- // ui uninitialized
- empty = isEmptyAsText();
- } else {
- // ui initialized
- empty = emptyElementCheck.getSelection();
- }
-
- String content = getSelectionText();
- if (!empty && getEditType() == MODIFY) {
- content = chooseContent(content);
- }
-
- String previewText = "<" + elemName + attrsCode();
- if (empty) {
- previewText += " />";
- } else {
- previewText += ">" + content + "</" + elemName + ">";
- }
- return previewText;
- }
-
- boolean isEmptyAsText() {
- String selText = getSelectionText();
- if (getEditType() == MODIFY) {
- int len = selText.length();
- return selText.substring(len - 2, len).equals("/>");
- }
- return false;
- }
-
- void resetAttributes() {
- attrs.clear();
-
- Element elem = getParsedSelectionText();
- if (elem != null) {
- NamedNodeMap as = elem.getAttributes();
- for (int i = 0; i < as.getLength(); i++) {
- Node n = as.item(i);
- attrs.add(new String[] { n.getNodeName(), n.getNodeValue() });
- }
- }
- }
-
- String attrsCode() {
- StringBuffer buff = new StringBuffer();
- Object[] as = attrs.toArray();
- for (int i = 0; i < as.length; i++) {
- String[] a = (String[]) as[i];
- buff.append(" " + a[0] + "=\"" + HTMLUtilities.escape(a[1]) + "\"");
- }
- return buff.toString();
- }
-
- int getSelectionIndex() {
- Object sel = unknownElementAttrs.getSelection();
- if (sel instanceof IStructuredSelection) {
- Object item = ((IStructuredSelection) sel).getFirstElement();
- return attrs.indexOf(item);
- } else {
- return -1;
- }
- }
-
- public void refreshPreview() {
- unknownElementAttrs.refresh();
- super.refreshPreview();
- }
-
- public void setElementName(String elemName) {
- super.setElementName(elemName);
- setTitle("\"" + elemName + "\" Element");
- }
-
-}
\ No newline at end of file