X-Git-Url: http://git.phpeclipse.com diff --git a/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/view/subset/SubsetContentProvider.java b/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/view/subset/SubsetContentProvider.java new file mode 100644 index 0000000..dd8133b --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/view/subset/SubsetContentProvider.java @@ -0,0 +1,158 @@ +package com.quantum.view.subset; + +import java.util.Vector; + +import com.quantum.Messages; +import com.quantum.sql.metadata.MetaDataXMLInterface; +import com.quantum.view.bookmark.ColumnNode; +import com.quantum.view.bookmark.TreeNode; + +import org.eclipse.jface.viewers.ITreeContentProvider; +import org.eclipse.jface.viewers.Viewer; +import org.w3c.dom.Element; +import org.w3c.dom.NodeList; + +public class SubsetContentProvider implements ITreeContentProvider { + private Vector subsets = new Vector(); + private static SubsetContentProvider instance = null; + private boolean hasChanged = false; + + /** + * Singleton accessor + */ + public static synchronized SubsetContentProvider getInstance() { + if (instance == null) { + instance = new SubsetContentProvider(); + } + return instance; + } + + private SubsetContentProvider() { + } + + public void exportXML(Element root) { + System.out.println("Subsets: Saving to Element"); //$NON-NLS-1$ + Element subsetRoot = MetaDataXMLInterface.createElementText(root,Messages.getString("ExportXMLAction.Subsets"), ""); //$NON-NLS-1$ //$NON-NLS-2$ + for (int i = 0; i < subsets.size(); i++) { + SubsetNode current = (SubsetNode) subsets.get(i); + current.exportXML(subsetRoot); + } + } + + /** + * Imports the data from an XML file to the tree. Does not set the tree to + * changed because it's usually invoked from the initial import routine. + * @param root + */ + public void importXML(Element root){ + System.out.println("Bookmarks: Loading from Element"); //$NON-NLS-1$ + Vector newSubsets = new Vector(); + NodeList nodes = root.getElementsByTagName(Messages.getString("ExportXMLAction.Subset")); //$NON-NLS-1$ + for (int i = 0; i < nodes.getLength(); i++) { + SubsetNode subset = new SubsetNode(); + Element node = (Element) nodes.item(i); + subset.importXML(node,true); + newSubsets.add(subset); + } + subsets = newSubsets; + } + + + public Object[] getChildren(Object parentElement) { + if (parentElement.equals(SubsetRoot.ROOT)) { + return subsets.toArray(); + } else if (parentElement instanceof TreeNode) { + TreeNode node = (TreeNode) parentElement; + return node.getChildren(); + } + return SubsetRoot.EMPTY_ARRAY; + } + + public Object[] getElements(Object inputElement) { + return getChildren(inputElement); + } + + public Object getParent(Object element) { + if (element.equals(SubsetRoot.ROOT)) { + return null; + } else if (element instanceof TreeNode) { + TreeNode node = (TreeNode) element; + return node.getParent(); + } + return null; + } + + public boolean hasChildren(Object element) { + if (element.equals(SubsetRoot.ROOT)) { + return true; + } else if (element instanceof TreeNode) { + TreeNode node = (TreeNode) element; + return node.hasChildren(); + } + return false; + } + + public void setChildren(SubsetNode b, Vector tables) { + b.setChildren(tables); + } + + public void addSubset(SubsetNode b) { + hasChanged = true; + if (!subsets.contains(b)) { + subsets.addElement(b); + } + } + public void removeSubset(SubsetNode b) { + hasChanged = true; + if (subsets.contains(b)) { + subsets.removeElement(b); + } + } + + public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { + } + + public void dispose() { + } + + public boolean hasChanged() { + return hasChanged; + } + + public int getSize() { + return subsets.size(); + } + + /** + * @param b + */ + public void setHasChanged(boolean b) { + hasChanged = b; + } + + /** + * @param column + */ + public void deleteColumn(ColumnNode column) { + // TODO: reinstate this +// TreeNode node = (TreeNode) column.getParent(); +// if (!(node instanceof HasMetaData)) return; +// ObjectMetaData metadata = ((HasMetaData)node).getMetaData(); +// if (metadata == null) return; +// metadata.dropColumn(column.getName()); +// setHasChanged(true); +// + } + + /** + * @param object + */ + public void deleteObject(ObjectNode object) { + SubsetNode node = (SubsetNode) object.getParent(); + if (!(node instanceof SubsetNode)) return; + node.remove(object); + setHasChanged(true); + + } + +}