+++ /dev/null
-/*
- * $Id: TableElementCellModifier.java,v 1.3 2006-10-21 23:18:43 pombredanne Exp $
- * Copyright Narushima Hironori. All rights reserved.
- */
-package net.sourceforge.phpeclipse.wizards.html;
-
-import javax.xml.parsers.DocumentBuilderFactory;
-
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.jface.viewers.ICellModifier;
-import org.eclipse.swt.widgets.Item;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-import org.w3c.dom.Text;
-
-/**
- *
- */
-public class TableElementCellModifier implements ICellModifier {
-
- DocumentBuilderFactory builderFactory;
-
- IPropertyChangeListener listener;
-
- public TableElementCellModifier(IPropertyChangeListener listener) {
- builderFactory = DocumentBuilderFactory.newInstance();
- this.listener = listener;
- }
-
- public boolean canModify(Object element, String property) {
- return getValue(element, property) != null;
- }
-
- public Object getValue(Object trElem, String property) {
- if (trElem instanceof Element) {
- Element e = (Element) trElem;
- if (e.getNodeName().equals("tr")) {
- int v = TableElementModel.toNumeric(property);
- Element[] cells = TableElementModel.chooseCellElements(e);
- if (v >= 0 && v < cells.length) {
- NodeList nodes = cells[v].getChildNodes();
- if (nodes.getLength() == 1) {
- Node n = nodes.item(0);
- if (n instanceof Text) {
- return n.getNodeValue();
- }
- }
- }
- }
- }
- return null;
- }
-
- public void modify(Object element, String property, Object value) {
- if (element instanceof Item) {
- element = ((Item) element).getData();
- }
- Element trElem = (Element) element;
- int index = TableElementModel.toNumeric(property);
- Element cellElem = TableElementModel.chooseCellElements(trElem)[index];
-
- NodeList nodes = cellElem.getChildNodes();
- for (int i = 0; i < nodes.getLength(); i++) {
- cellElem.removeChild(nodes.item(i));
- }
- Document doc = cellElem.getOwnerDocument();
-
- if (value instanceof String) {
- cellElem.appendChild(doc.createTextNode((String) value));
- }
- // notify listener
- if (listener != null) {
- String oldValue = nodes.item(0).getNodeValue();
- listener.propertyChange(new PropertyChangeEvent(this, property,
- (String) value, oldValue));
- }
- }
-
-}