1 package net.sourceforge.phpdt.sql.view.bookmark;
3 import java.util.Vector;
5 import org.eclipse.jface.viewers.ITreeContentProvider;
6 import org.eclipse.jface.viewers.Viewer;
7 import org.w3c.dom.Element;
8 import org.w3c.dom.NodeList;
10 import net.sourceforge.phpdt.sql.Messages;
11 import net.sourceforge.phpdt.sql.sql.metadata.MetaDataXMLInterface;
12 import net.sourceforge.phpdt.sql.sql.metadata.ObjectMetaData;
14 public class SubsetContentProvider implements ITreeContentProvider {
15 private Vector subsets = new Vector();
16 private static SubsetContentProvider instance = null;
17 private boolean hasChanged = false;
22 public static synchronized SubsetContentProvider getInstance() {
23 if (instance == null) {
24 instance = new SubsetContentProvider();
29 private SubsetContentProvider() {
32 public void exportXML(Element root) {
33 System.out.println("Subsets: Saving to Element"); //$NON-NLS-1$
34 Element subsetRoot = MetaDataXMLInterface.createElementText(root,Messages.getString("ExportXMLAction.Subsets"), ""); //$NON-NLS-1$ //$NON-NLS-2$
35 for (int i = 0; i < subsets.size(); i++) {
36 SubsetNode current = (SubsetNode) subsets.get(i);
37 current.exportXML(subsetRoot);
42 * Imports the data from an XML file to the tree. Does not set the tree to
43 * changed because it's usually invoked from the initial import routine.
46 public void importXML(Element root){
47 System.out.println("Bookmarks: Loading from Element"); //$NON-NLS-1$
48 Vector newSubsets = new Vector();
49 NodeList nodes = root.getElementsByTagName(Messages.getString("ExportXMLAction.Subset")); //$NON-NLS-1$
50 for (int i = 0; i < nodes.getLength(); i++) {
51 SubsetNode subset = new SubsetNode();
52 Element node = (Element) nodes.item(i);
53 subset.importXML(node,true);
54 newSubsets.add(subset);
60 public Object[] getChildren(Object parentElement) {
61 if (parentElement.equals(Root.ROOT)) {
62 return subsets.toArray();
63 } else if (parentElement instanceof TreeNode) {
64 TreeNode node = (TreeNode) parentElement;
65 return node.getChildren();
67 return Root.EMPTY_ARRAY;
70 public Object[] getElements(Object inputElement) {
71 return getChildren(inputElement);
74 public Object getParent(Object element) {
75 if (element.equals(Root.ROOT)) {
77 } else if (element instanceof TreeNode) {
78 TreeNode node = (TreeNode) element;
79 return node.getParent();
84 public boolean hasChildren(Object element) {
85 if (element.equals(Root.ROOT)) {
87 } else if (element instanceof TreeNode) {
88 TreeNode node = (TreeNode) element;
89 return node.hasChildren();
94 public void setChildren(SubsetNode b, Vector tables) {
95 b.setChildren(tables);
98 public void addSubset(SubsetNode b) {
100 if (!subsets.contains(b)) {
101 subsets.addElement(b);
104 public void removeSubset(SubsetNode b) {
106 if (subsets.contains(b)) {
107 subsets.removeElement(b);
111 public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
114 public void dispose() {
117 public boolean hasChanged() {
121 public int getSize() {
122 return subsets.size();
128 public void setHasChanged(boolean b) {
135 public void deleteColumn(ColumnMetaData column) {
136 TreeNode node = (TreeNode) column.getParent();
137 ObjectMetaData metadata = node.getMetaData();
138 if (metadata == null) return;
139 metadata.dropColumn(column.getName());
147 public void deleteObject(ObjectNode object) {
148 SubsetNode node = (SubsetNode) object.getParent();
149 if (!(node instanceof SubsetNode)) return;