+++ /dev/null
-/*
- * $Id: UnknownElementWizardPage.java,v 1.1 2004-10-05 20:51:57 jsurfer 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