You are viewing a plain text version of this content. The canonical link for it is here.
Posted to svn@forrest.apache.org by rg...@apache.org on 2005/07/15 01:37:11 UTC

svn commit: r219138 - in /forrest/trunk/tools/eclipse/plugins/org.apache.forrest: ./ src/org/apache/forrest/eclipse/views/ src/org/apache/forrest/eclipse/wizards/

Author: rgardler
Date: Thu Jul 14 16:37:10 2005
New Revision: 219138

URL: http://svn.apache.org/viewcvs?rev=219138&view=rev
Log:
tabs view and wizards to add elements to both site and tabs view

Added:
    forrest/trunk/tools/eclipse/plugins/org.apache.forrest/src/org/apache/forrest/eclipse/views/DOMUtilities.java   (with props)
    forrest/trunk/tools/eclipse/plugins/org.apache.forrest/src/org/apache/forrest/eclipse/views/TabsXMLView.java   (with props)
    forrest/trunk/tools/eclipse/plugins/org.apache.forrest/src/org/apache/forrest/eclipse/wizards/NewSiteElement.java   (with props)
    forrest/trunk/tools/eclipse/plugins/org.apache.forrest/src/org/apache/forrest/eclipse/wizards/NewSiteElementPage.java   (with props)
    forrest/trunk/tools/eclipse/plugins/org.apache.forrest/src/org/apache/forrest/eclipse/wizards/NewTabElement.java   (with props)
    forrest/trunk/tools/eclipse/plugins/org.apache.forrest/src/org/apache/forrest/eclipse/wizards/NewTabElementPage.java   (with props)
Modified:
    forrest/trunk/tools/eclipse/plugins/org.apache.forrest/plugin.xml
    forrest/trunk/tools/eclipse/plugins/org.apache.forrest/src/org/apache/forrest/eclipse/views/SiteXMLView.java

Modified: forrest/trunk/tools/eclipse/plugins/org.apache.forrest/plugin.xml
URL: http://svn.apache.org/viewcvs/forrest/trunk/tools/eclipse/plugins/org.apache.forrest/plugin.xml?rev=219138&r1=219137&r2=219138&view=diff
==============================================================================
--- forrest/trunk/tools/eclipse/plugins/org.apache.forrest/plugin.xml (original)
+++ forrest/trunk/tools/eclipse/plugins/org.apache.forrest/plugin.xml Thu Jul 14 16:37:10 2005
@@ -126,14 +126,20 @@
   <extension
         point="org.eclipse.ui.views">
      <category
-           id="StructureViewer"
-           name="StructureViewer"/>
+           id="Forrest"
+           name="Forrest"/>
      <view
-           category="StructureView"
+           category="Forrest"
            class="org.apache.forrest.eclipse.views.SiteXMLView"
            icon="icons/start.png"
            id="SiteXML"
            name="SiteXML"/>
+     <view
+           category="Forrest"
+           class="org.apache.forrest.eclipse.views.TabsXMLView"
+           icon="icons/start.png"
+           id="TabsXML"
+           name="TabsXML"/>
   </extension>
   
    <extension

Added: forrest/trunk/tools/eclipse/plugins/org.apache.forrest/src/org/apache/forrest/eclipse/views/DOMUtilities.java
URL: http://svn.apache.org/viewcvs/forrest/trunk/tools/eclipse/plugins/org.apache.forrest/src/org/apache/forrest/eclipse/views/DOMUtilities.java?rev=219138&view=auto
==============================================================================
--- forrest/trunk/tools/eclipse/plugins/org.apache.forrest/src/org/apache/forrest/eclipse/views/DOMUtilities.java (added)
+++ forrest/trunk/tools/eclipse/plugins/org.apache.forrest/src/org/apache/forrest/eclipse/views/DOMUtilities.java Thu Jul 14 16:37:10 2005
@@ -0,0 +1,87 @@
+/*
+ * Copyright 1999-2005 The Apache Software Foundation or its licensors,
+ * as applicable.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.forrest.eclipse.views;
+
+import java.io.File;
+import java.io.IOException;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.transform.Result;
+import javax.xml.transform.Source;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerConfigurationException;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+
+import org.w3c.dom.Document;
+import org.xml.sax.SAXException;
+
+public class DOMUtilities {
+	private static Document document;
+
+	/**
+	 * This loads an XML file into a DOM called document
+	 * 
+	 */
+	public static Document loadDOM(String path) {
+		// Loads the XML file iton the DOM document
+		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+		DocumentBuilder parser;
+		try {
+			parser = factory.newDocumentBuilder();
+			document = null;
+			document = parser.parse(new File(path));
+		} catch (SAXException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		} catch (IOException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		} catch (ParserConfigurationException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+		return document;
+
+	}
+
+	/**
+	 * This writes the DOM to an XML file
+	 * 
+	 */
+	public static void SaveDOM(Document document, String filename) {
+		try {
+
+			Source source = new DOMSource(document);
+			File file = new File(filename);
+			Result result = new StreamResult(file);
+			Transformer transformer = TransformerFactory.newInstance()
+					.newTransformer();
+			transformer.transform(source, result);
+		} catch (TransformerConfigurationException e) {
+		} catch (TransformerException e) {
+		}
+	}
+
+	
+
+}

Propchange: forrest/trunk/tools/eclipse/plugins/org.apache.forrest/src/org/apache/forrest/eclipse/views/DOMUtilities.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: forrest/trunk/tools/eclipse/plugins/org.apache.forrest/src/org/apache/forrest/eclipse/views/SiteXMLView.java
URL: http://svn.apache.org/viewcvs/forrest/trunk/tools/eclipse/plugins/org.apache.forrest/src/org/apache/forrest/eclipse/views/SiteXMLView.java?rev=219138&r1=219137&r2=219138&view=diff
==============================================================================
--- forrest/trunk/tools/eclipse/plugins/org.apache.forrest/src/org/apache/forrest/eclipse/views/SiteXMLView.java (original)
+++ forrest/trunk/tools/eclipse/plugins/org.apache.forrest/src/org/apache/forrest/eclipse/views/SiteXMLView.java Thu Jul 14 16:37:10 2005
@@ -17,23 +17,11 @@
 package org.apache.forrest.eclipse.views;
 
 
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
 
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.transform.Result;
-import javax.xml.transform.Source;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerConfigurationException;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.stream.StreamResult;
+import java.util.ArrayList;
 
 import org.apache.forrest.eclipse.actions.Utilities;
+import org.apache.forrest.eclipse.wizards.NewSiteElement;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IResource;
 import org.eclipse.jface.action.Action;
@@ -50,20 +38,13 @@
 import org.eclipse.jface.viewers.SelectionChangedEvent;
 import org.eclipse.jface.viewers.TreeViewer;
 import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.wizard.WizardDialog;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.dnd.DND;
 import org.eclipse.swt.dnd.FileTransfer;
 import org.eclipse.swt.dnd.Transfer;
-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.Event;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Listener;
 import org.eclipse.swt.widgets.Menu;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Text;
 import org.eclipse.ui.ISelectionListener;
 import org.eclipse.ui.ISharedImages;
 import org.eclipse.ui.IWorkbenchActionConstants;
@@ -75,11 +56,6 @@
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
-import org.xml.sax.SAXException;
-
-
-
-
 
 /**
  * A tree view for site.xml files. The view handles drag and
@@ -89,7 +65,6 @@
 public class SiteXMLView extends ViewPart implements IMenuListener,
 		ISelectionListener {
 	private TreeViewer treeViewer;
-	private DocumentBuilder parser;
 	private Document document;
 	private String projectName;
 	private String path;
@@ -97,13 +72,6 @@
 	private Action AddElement;
 	private Action RemoveElement;
 	private Action SaveDocument;
-	private Text elementText;
-	private Text hrefText;
-	private Text locationText;
-	private Text labelText;
-	private Text descriptionText;
-	
-	
 	
 	protected IProject activeProject;
 	
@@ -161,23 +129,6 @@
 					return ((Node) element).getNodeName();
 			}
 		});
-
-		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
-
-		try {
-
-			parser = factory.newDocumentBuilder();
-			document = parser.parse(new File(""));
-		} catch (SAXException e) {
-			// TODO Auto-generated catch block
-			e.printStackTrace();
-		} catch (IOException e) {
-			// TODO Auto-generated catch block
-			e.printStackTrace();
-		} catch (ParserConfigurationException e) {
-			// TODO Auto-generated catch block
-			e.printStackTrace();
-		}
 		getViewSite().getPage().addSelectionListener(this);
 		
 		
@@ -188,8 +139,6 @@
 					IStructuredSelection selection = (IStructuredSelection) event
 							.getSelection();
 					treeSelection = selection;
-					
-					
 				}
 			}
 		});
@@ -228,24 +177,8 @@
 						+ java.io.File.separator
 						+ Utilities.getPathToXDocs()
 						+ java.io.File.separator + "site.xml");
-				try {
-					
-				
-					Document newDocument = parser.parse(new File(path));
-					if ((document != (newDocument))) {
-							document = newDocument;
-							treeViewer.setInput(document);
-					}
-				} catch (SAXException e) {
-					// TODO Auto-generated catch block
-					e.printStackTrace();
-				} catch (IOException e) {
-					// TODO Auto-generated catch block
-					e.printStackTrace();
-				}
-				
-				
-	
+				document = DOMUtilities.loadDOM(path);
+				treeViewer.setInput(document);
 			}
 		}
 
@@ -264,8 +197,6 @@
 		getSite().registerContextMenu(menuMgr, treeViewer);
 	}
 
-
-
 		private void fillContextMenu(IMenuManager manager) {
 			manager.add(AddElement);
 			manager.add(RemoveElement);
@@ -273,13 +204,15 @@
 			manager.add(SaveDocument);
 		}
 	
-
-
 		private void makeActions() {
 		AddElement = new Action() {
 			public void run() {
 				if (treeSelection != null) {
-				insertElementDialog();
+				NewSiteElement elementCreation_ = new NewSiteElement(treeSelection,document);
+				elementCreation_.init(PlatformUI.getWorkbench(), null); // initializes the wizard
+				WizardDialog dialog = new WizardDialog(treeViewer.getControl().getShell(), elementCreation_);
+				dialog.open(); // This opens a dialog
+				treeViewer.refresh();
 				}
 			}
 		};
@@ -307,7 +240,7 @@
 		
 		SaveDocument = new Action() {
 			public void run() {
-				SaveXmlFile(document,path);
+				DOMUtilities.SaveDOM(document,path);
 			}
 		};
 		
@@ -317,19 +250,6 @@
 				getImageDescriptor(ISharedImages.IMG_OBJS_INFO_TSK));
 	}
 
-	 public static void SaveXmlFile(Document document, String filename) {
-	        try {
-	           
-	            Source source = new DOMSource(document);
-	            File file = new File(filename);
-	            Result result = new StreamResult(file);
-	            Transformer transformer = TransformerFactory.newInstance().newTransformer();
-	            transformer.transform(source, result);
-	        } catch (TransformerConfigurationException e) {
-	        } catch (TransformerException e) {
-	        }
-	    }
-
 	private void showMessage(String message) {
 		MessageDialog.openInformation(
 			treeViewer.getControl().getShell(),
@@ -337,66 +257,6 @@
 			message);
 	}
 
-    /**
-     * Create and display a dialog in which the user can enter a new
-     * elements attributes when it is created.
-     */
-	private void insertElementDialog () {
-		
-			
-			Shell shell = treeViewer.getControl().getShell();
-			shell.open ();
-			
-			final Shell dialog = new Shell (shell, SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL);
-			GridData data = new GridData();
-			
-			dialog.setLayout(new GridLayout(2, true));
-			dialog.setText("Add Element");
-			dialog.setSize(300,150);
-			Label elementLabel = new Label (dialog, SWT.FLAT);
-			elementLabel.setText ("Element Name");
-			elementText = new Text (dialog, SWT.FILL);
-			
-			Label descriptionLabel = new Label (dialog, SWT.FLAT);
-			descriptionLabel.setText ("Description");
-			descriptionText = new Text (dialog, SWT.FILL);
-			
-			Label hrefLabel = new Label (dialog, SWT.FLAT);
-			hrefLabel.setText ("Href");
-			hrefText = new Text (dialog, SWT.FILL);
-			
-			Label labelLabel = new Label (dialog, SWT.FLAT);
-			labelLabel.setText ("Label");
-			labelText = new Text (dialog, SWT.FILL);
-			
-			final Button ok = new Button (dialog, SWT.PUSH);
-			ok.setText ("Ok");
-			Button cancel = new Button (dialog, SWT.PUSH);
-			cancel.setText ("Cancel");
-			
-			ok.addListener(SWT.Selection, new Listener() {
-			      public void handleEvent(Event event) {
-			    	  Node insertionElement = (Element) treeSelection.getFirstElement();	
-					  
-			    	  Element element = document.createElement(elementText.getText());
-			    	  element.setAttribute("href", hrefText.getText());
-			    	  element.setAttribute("description", descriptionText.getText());
-			    	  element.setAttribute("label", labelText.getText());
-			    	  insertionElement.appendChild(element);
-	  
-					  treeViewer.refresh();
-				      dialog.close();
-			      }
-			    });
-
-			 cancel.addListener(SWT.Selection, new Listener() {
-			      public void handleEvent(Event event) {
-			       dialog.close();
-			      }
-			    });
-			
-			dialog.open ();
-		
-		
-		}
+   
+	
 }

Added: forrest/trunk/tools/eclipse/plugins/org.apache.forrest/src/org/apache/forrest/eclipse/views/TabsXMLView.java
URL: http://svn.apache.org/viewcvs/forrest/trunk/tools/eclipse/plugins/org.apache.forrest/src/org/apache/forrest/eclipse/views/TabsXMLView.java?rev=219138&view=auto
==============================================================================
--- forrest/trunk/tools/eclipse/plugins/org.apache.forrest/src/org/apache/forrest/eclipse/views/TabsXMLView.java (added)
+++ forrest/trunk/tools/eclipse/plugins/org.apache.forrest/src/org/apache/forrest/eclipse/views/TabsXMLView.java Thu Jul 14 16:37:10 2005
@@ -0,0 +1,262 @@
+/*
+ * Copyright 1999-2005 The Apache Software Foundation or its licensors,
+ * as applicable.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.forrest.eclipse.views;
+
+
+
+import java.util.ArrayList;
+
+import org.apache.forrest.eclipse.actions.Utilities;
+import org.apache.forrest.eclipse.wizards.NewTabElement;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.dnd.DND;
+import org.eclipse.swt.dnd.FileTransfer;
+import org.eclipse.swt.dnd.Transfer;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.ui.ISelectionListener;
+import org.eclipse.ui.ISharedImages;
+import org.eclipse.ui.IWorkbenchActionConstants;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.part.ViewPart;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+/**
+ * A tree view for tabs.xml files. The view handles drag and
+ * drop from the navigator and supports a number of context 
+ * menus for editing. 
+ */
+public class TabsXMLView extends ViewPart implements IMenuListener,
+		ISelectionListener {
+	private TreeViewer tree;
+	private Document tabsDocument;
+	private String projectName;
+	private String path;
+	private IStructuredSelection treeSelection;
+	private Action AddElement;
+	private Action RemoveElement;
+	private Action SaveDocument;
+	
+	protected IProject activeProject;
+	/**
+	 * The constructor.
+	 */
+	public TabsXMLView() {
+	}
+	/**
+	 * This is a callback that will allow us to create the viewer and initialize
+	 * it.
+	 */
+	public void createPartControl(Composite parent) {
+		tree = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
+		getSite().setSelectionProvider(tree);
+		int operations = DND.DROP_COPY | DND.DROP_MOVE;
+		Transfer[] types = new Transfer[] { FileTransfer.getInstance()};
+		//tree.addDropSupport(operations, types, new SiteDropListener(projectName ,tabsDocument, tree));
+		tree.setContentProvider(new ITreeContentProvider() {
+			public Object[] getChildren(Object element) {
+				ArrayList ch = new ArrayList();
+				NodeList nl = ((Node) element).getChildNodes();
+				for (int i = 0; i < nl.getLength(); i++)
+					if (nl.item(i).getNodeType() == Node.ELEMENT_NODE)
+						ch.add(nl.item(i));
+				return ch.toArray();
+			}
+
+			public Object getParent(Object element) {
+				return ((Node) element).getParentNode();
+			}
+
+			public Object[] getElements(Object element) {
+				return getChildren(element);
+			}
+
+			public boolean hasChildren(Object element) {
+				return getChildren(element).length > 0;
+			}
+
+			public void dispose() {
+			}
+
+			public void inputChanged(Viewer viewer, Object old_input,
+					Object new_input) {
+			}
+		});
+		tree.setLabelProvider(new LabelProvider() {
+			public String getText(Object element) {
+				if (element instanceof Attr)
+					return "@" + ((Attr) element).getNodeName() + " " +((Attr) element).getNodeValue();
+				else
+					return ((Node) element).getNodeName();
+			}
+		});
+		getViewSite().getPage().addSelectionListener(this);
+		tree.addSelectionChangedListener(new ISelectionChangedListener() {
+		public void selectionChanged(SelectionChangedEvent event) {
+					if (event.getSelection() instanceof IStructuredSelection) {
+					IStructuredSelection selection = (IStructuredSelection) event
+							.getSelection();
+					treeSelection = selection;
+				}
+			}
+		});
+	
+		//System.out.println(document.toString());
+		if (path != null) { tabsDocument = DOMUtilities.loadDOM(path);}
+		tree.setInput(tabsDocument);
+		makeActions();
+		hookContextMenu();
+	}
+
+	public void setFocus() {
+		// TODO Auto-generated method stub
+
+	}
+
+	public void menuAboutToShow(IMenuManager manager) {
+		// TODO Auto-generated method stub
+
+	}
+
+	/**
+     * When the selection in the navigator view is changed 
+     * we look to see if the new selection is an IProject.
+     * If it is then we load the tabs.xml file into this
+     * TabsXMLView.
+	 */
+	public void selectionChanged(IWorkbenchPart part, ISelection selection) {
+		if (selection instanceof IStructuredSelection) {
+			Object first = ((IStructuredSelection) selection).getFirstElement();
+			IResource resource = (IResource) first;
+			if (resource instanceof IProject) {
+				activeProject = (IProject) resource;
+				projectName = activeProject.getProject().getName();
+				path = (activeProject.getProject().getLocation()
+						.toString()
+						+ java.io.File.separator
+						+ Utilities.getPathToXDocs()
+						+ java.io.File.separator + "tabs.xml");
+				
+				tabsDocument = DOMUtilities.loadDOM(path);
+				tree.setInput(tabsDocument);
+				
+	
+			}
+		}
+
+	}
+
+    private void hookContextMenu() {
+		MenuManager menuMgr = new MenuManager("#PopupMenu");
+		menuMgr.setRemoveAllWhenShown(true);
+		menuMgr.addMenuListener(new IMenuListener() {
+			public void menuAboutToShow(IMenuManager manager) {
+            TabsXMLView.this.fillContextMenu(manager);
+			}
+		});
+		Menu menu = menuMgr.createContextMenu(tree.getControl());
+		tree.getControl().setMenu(menu);
+		getSite().registerContextMenu(menuMgr, tree);
+	}
+
+
+
+		private void fillContextMenu(IMenuManager manager) {
+			manager.add(AddElement);
+			manager.add(RemoveElement);
+			manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
+			manager.add(SaveDocument);
+		}
+	
+		private void makeActions() {
+		AddElement = new Action() {
+			public void run() {
+				if (treeSelection != null) {
+					NewTabElement elementCreation_ = new NewTabElement(treeSelection,tabsDocument);
+					elementCreation_.init(PlatformUI.getWorkbench(), null); // initializes the wizard
+					WizardDialog dialog = new WizardDialog(tree.getControl().getShell(), elementCreation_);
+					dialog.open();
+				tree.refresh();
+				}
+			}
+		};
+		AddElement.setText("Add Element");
+		AddElement.setToolTipText("Add Element tooltip");
+		AddElement.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages().
+			getImageDescriptor(ISharedImages.IMG_OBJS_INFO_TSK));
+		
+		RemoveElement = new Action() {
+			public void run() {
+				if (treeSelection != null) {
+					//TODO: Code to remove Element does here.
+					Node deletionElement = (Element) treeSelection.getFirstElement();	
+					Node deletionParent = deletionElement.getParentNode();
+					deletionParent.removeChild(deletionElement);
+					tree.refresh();
+					
+				}
+			}
+		};
+		RemoveElement.setText("DeleteElement");
+		RemoveElement.setToolTipText("Delete Element");
+		RemoveElement.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages().
+				getImageDescriptor(ISharedImages.IMG_OBJS_INFO_TSK));
+		
+		SaveDocument = new Action() {
+			public void run() {
+				DOMUtilities.SaveDOM(tabsDocument,path);
+			}
+		};
+		
+		SaveDocument.setText("Save");
+		SaveDocument.setToolTipText("Save XML Document");
+		SaveDocument.setImageDescriptor(PlatformUI.getWorkbench().getSharedImages().
+				getImageDescriptor(ISharedImages.IMG_OBJS_INFO_TSK));
+	}
+
+	private void showMessage(String message) {
+		MessageDialog.openInformation(
+			tree.getControl().getShell(),
+			"Sample View",
+			message);
+	}
+
+   
+	
+}

Propchange: forrest/trunk/tools/eclipse/plugins/org.apache.forrest/src/org/apache/forrest/eclipse/views/TabsXMLView.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: forrest/trunk/tools/eclipse/plugins/org.apache.forrest/src/org/apache/forrest/eclipse/wizards/NewSiteElement.java
URL: http://svn.apache.org/viewcvs/forrest/trunk/tools/eclipse/plugins/org.apache.forrest/src/org/apache/forrest/eclipse/wizards/NewSiteElement.java?rev=219138&view=auto
==============================================================================
--- forrest/trunk/tools/eclipse/plugins/org.apache.forrest/src/org/apache/forrest/eclipse/wizards/NewSiteElement.java (added)
+++ forrest/trunk/tools/eclipse/plugins/org.apache.forrest/src/org/apache/forrest/eclipse/wizards/NewSiteElement.java Thu Jul 14 16:37:10 2005
@@ -0,0 +1,112 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation or its licensors,
+ * as applicable.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.forrest.eclipse.wizards;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.apache.log4j.Logger;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.INewWizard;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+/**
+ * Create a new Site Element project.
+ */
+
+public class NewSiteElement extends Wizard implements INewWizard {
+	protected IStructuredSelection selection;
+	private Document document;
+	
+	
+	/**
+	 * Logger for this class
+	 */
+	private static final Logger logger = Logger
+			.getLogger(NewSiteElement.class);
+
+	private NewSiteElementPage page;
+
+	/**
+	 * Constructor for New Site Element.
+	 * @param treeSelection 
+	 * @param document 
+	 */
+	public NewSiteElement(IStructuredSelection treeSelection, Document newDocument) {
+		super();
+		setWindowTitle("New Element");
+		setNeedsProgressMonitor(true);
+		selection= treeSelection;
+		document = newDocument;
+	}
+	
+	/**
+	 * Adding the page to the wizard.
+	 */
+
+	public void addPages() {
+		page = new NewSiteElementPage();
+		addPage(page);
+	}
+
+	/**
+	 * This method is called when 'Finish' button is pressed in
+	 * the wizard. We will create an operation and run it
+	 * using wizard as execution context.
+	 */
+	public boolean performFinish() {
+		WorkspaceModifyOperation op= new WorkspaceModifyOperation() {
+			protected void execute(IProgressMonitor monitor) throws CoreException, InvocationTargetException, InterruptedException {
+				 Node insertionElement = (Element) selection.getFirstElement();	
+		    	  Element element = document.createElement(page.getElementName());
+		    	  element.setAttribute("href", page.getHref());
+		    	  element.setAttribute("description", page.getDescription());
+		    	  element.setAttribute("label", page.getLabel());
+		    	  insertionElement.appendChild(element);
+							}
+		};
+		try {
+			getContainer().run(false, true, op);
+		} catch (InvocationTargetException e) {
+			return false; // TODO: should open error dialog and log
+		} catch  (InterruptedException e) {
+			return false; // canceled
+		}
+		return true;
+	}
+	
+	
+	public void createControl(Composite parent) {
+		// TODO Auto-generated method stub
+		
+	}
+
+
+	
+	public void init(IWorkbench workbench, IStructuredSelection selection) {
+		// TODO Auto-generated method stub
+		
+	}
+}
+

Propchange: forrest/trunk/tools/eclipse/plugins/org.apache.forrest/src/org/apache/forrest/eclipse/wizards/NewSiteElement.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: forrest/trunk/tools/eclipse/plugins/org.apache.forrest/src/org/apache/forrest/eclipse/wizards/NewSiteElementPage.java
URL: http://svn.apache.org/viewcvs/forrest/trunk/tools/eclipse/plugins/org.apache.forrest/src/org/apache/forrest/eclipse/wizards/NewSiteElementPage.java?rev=219138&view=auto
==============================================================================
--- forrest/trunk/tools/eclipse/plugins/org.apache.forrest/src/org/apache/forrest/eclipse/wizards/NewSiteElementPage.java (added)
+++ forrest/trunk/tools/eclipse/plugins/org.apache.forrest/src/org/apache/forrest/eclipse/wizards/NewSiteElementPage.java Thu Jul 14 16:37:10 2005
@@ -0,0 +1,111 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation or its licensors,
+ * as applicable.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.forrest.eclipse.wizards;
+
+import org.eclipse.jface.dialogs.IDialogPage;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+
+/**
+ * The "New Element" wizard page allows you to insert a 
+ * new element into the site.xml file and specify the element
+ * name, location, path and descriotion.
+ * 
+ */
+
+public class NewSiteElementPage extends WizardPage {
+    
+	private Text hrefText;
+	private Text descriptionText;
+	private Text labelText;
+	private Text elementName;
+	
+
+	/**
+	 * Create the new page.
+	 * @param selection 
+	 * @param selection 
+	 * @param pageName
+	 */
+	public NewSiteElementPage() {
+		super("wizardPage");
+		setTitle("New Site Element");
+		setDescription("This wizard creates a new element in site.xml.");
+		
+	}
+
+	/**
+	 * @see IDialogPage#createControl(Composite)
+	 */
+	public void createControl(Composite parent) {
+		Composite container = new Composite(parent, SWT.NULL);
+		GridLayout layout = new GridLayout();
+		container.setLayout(layout);
+		layout.numColumns = 2;
+		layout.verticalSpacing = 9;
+		Label label = new Label(container, SWT.NULL);
+		label.setText("&HREF:");
+
+		hrefText = new Text(container, SWT.BORDER | SWT.SINGLE);
+		GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+		hrefText.setLayoutData(gd);
+				
+		label = new Label(container, SWT.NULL);
+		label.setText("&Description:");
+
+		descriptionText = new Text(container, SWT.BORDER | SWT.SINGLE);
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		descriptionText.setLayoutData(gd);
+		
+		label = new Label(container, SWT.NULL);
+		label.setText("&Label:");
+
+		labelText = new Text(container, SWT.BORDER | SWT.SINGLE);
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		labelText.setLayoutData(gd);
+
+		label = new Label(container, SWT.NULL);
+		label.setText("&Element Name:");
+
+		elementName = new Text(container, SWT.BORDER | SWT.SINGLE);
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		elementName.setLayoutData(gd);
+		setControl(container);
+	}
+	
+	public String getElementName() {
+		return elementName.getText();
+	}
+	
+	public String getDescription() {
+		return descriptionText.getText();
+	}
+	
+	public String getLabel() {
+		return labelText.getText();
+	}
+	
+	public String getHref() {
+		return hrefText.getText();
+	}
+	
+}
\ No newline at end of file

Propchange: forrest/trunk/tools/eclipse/plugins/org.apache.forrest/src/org/apache/forrest/eclipse/wizards/NewSiteElementPage.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: forrest/trunk/tools/eclipse/plugins/org.apache.forrest/src/org/apache/forrest/eclipse/wizards/NewTabElement.java
URL: http://svn.apache.org/viewcvs/forrest/trunk/tools/eclipse/plugins/org.apache.forrest/src/org/apache/forrest/eclipse/wizards/NewTabElement.java?rev=219138&view=auto
==============================================================================
--- forrest/trunk/tools/eclipse/plugins/org.apache.forrest/src/org/apache/forrest/eclipse/wizards/NewTabElement.java (added)
+++ forrest/trunk/tools/eclipse/plugins/org.apache.forrest/src/org/apache/forrest/eclipse/wizards/NewTabElement.java Thu Jul 14 16:37:10 2005
@@ -0,0 +1,113 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation or its licensors,
+ * as applicable.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.forrest.eclipse.wizards;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.apache.log4j.Logger;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.INewWizard;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.actions.WorkspaceModifyOperation;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+/**
+ * Create a new Tab Element.
+ */
+
+public class NewTabElement extends Wizard implements INewWizard {
+	protected IStructuredSelection selection;
+	private Document document;
+	
+	
+	/**
+	 * Logger for this class
+	 */
+	private static final Logger logger = Logger
+			.getLogger(NewTabElement.class);
+
+	private NewTabElementPage page;
+
+	/**
+	 * Constructor for New Tab Element.
+	 * @param treeSelection 
+	 * @param document 
+	 */
+	public NewTabElement(IStructuredSelection treeSelection, Document newDocument) {
+		super();
+		setWindowTitle("New Element");
+		setNeedsProgressMonitor(true);
+		selection= treeSelection;
+		document = newDocument;
+	}
+	
+	/**
+	 * Adding the page to the wizard.
+	 */
+
+	public void addPages() {
+		page = new NewTabElementPage();
+		addPage(page);
+	}
+
+	/**
+	 * This method is called when 'Finish' button is pressed in
+	 * the wizard. We will create an operation and run it
+	 * using wizard as execution context.
+	 */
+	public boolean performFinish() {
+		WorkspaceModifyOperation op= new WorkspaceModifyOperation() {
+			protected void execute(IProgressMonitor monitor) throws CoreException, InvocationTargetException, InterruptedException {
+				 Node insertionElement = (Element) selection.getFirstElement();	
+		    	  Element element = document.createElement("tab");
+		    	  element.setAttribute("id", page.getId());
+		    	  element.setAttribute("label", page.getLabel());
+		    	  element.setAttribute("dir", page.getDir());
+		    	  element.setAttribute("indexfile", page.getIndexFile());
+		    	  insertionElement.appendChild(element);
+							}
+		};
+		try {
+			getContainer().run(false, true, op);
+		} catch (InvocationTargetException e) {
+			return false; // TODO: should open error dialog and log
+		} catch  (InterruptedException e) {
+			return false; // canceled
+		}
+		return true;
+	}
+	
+	
+	public void createControl(Composite parent) {
+		// TODO Auto-generated method stub
+		
+	}
+
+
+	
+	public void init(IWorkbench workbench, IStructuredSelection selection) {
+		// TODO Auto-generated method stub
+		
+	}
+}
+

Propchange: forrest/trunk/tools/eclipse/plugins/org.apache.forrest/src/org/apache/forrest/eclipse/wizards/NewTabElement.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: forrest/trunk/tools/eclipse/plugins/org.apache.forrest/src/org/apache/forrest/eclipse/wizards/NewTabElementPage.java
URL: http://svn.apache.org/viewcvs/forrest/trunk/tools/eclipse/plugins/org.apache.forrest/src/org/apache/forrest/eclipse/wizards/NewTabElementPage.java?rev=219138&view=auto
==============================================================================
--- forrest/trunk/tools/eclipse/plugins/org.apache.forrest/src/org/apache/forrest/eclipse/wizards/NewTabElementPage.java (added)
+++ forrest/trunk/tools/eclipse/plugins/org.apache.forrest/src/org/apache/forrest/eclipse/wizards/NewTabElementPage.java Thu Jul 14 16:37:10 2005
@@ -0,0 +1,111 @@
+/*
+ * Copyright 1999-2004 The Apache Software Foundation or its licensors,
+ * as applicable.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.forrest.eclipse.wizards;
+
+import org.eclipse.jface.dialogs.IDialogPage;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+
+/**
+ * The "New Element" wizard page allows you to insert a 
+ * new element into the site.xml file and specify the element
+ * name, location, path and descriotion.
+ * 
+ */
+
+public class NewTabElementPage extends WizardPage {
+    
+	private Text idText;
+	private Text dirText;
+	private Text labelText;
+	private Text indexFileText;
+	
+
+	/**
+	 * Create the new page.
+	 * @param selection 
+	 * @param selection 
+	 * @param pageName
+	 */
+	public NewTabElementPage() {
+		super("wizardPage");
+		setTitle("New Site Element");
+		setDescription("This wizard creates a new element in site.xml.");
+		
+	}
+
+	/**
+	 * @see IDialogPage#createControl(Composite)
+	 */
+	public void createControl(Composite parent) {
+		Composite container = new Composite(parent, SWT.NULL);
+		GridLayout layout = new GridLayout();
+		container.setLayout(layout);
+		layout.numColumns = 2;
+		layout.verticalSpacing = 9;
+		Label label = new Label(container, SWT.NULL);
+		label.setText("&ID:");
+
+		idText = new Text(container, SWT.BORDER | SWT.SINGLE);
+		GridData gd = new GridData(GridData.FILL_HORIZONTAL);
+		idText.setLayoutData(gd);
+				
+		label = new Label(container, SWT.NULL);
+		label.setText("&Dir:");
+
+		dirText = new Text(container, SWT.BORDER | SWT.SINGLE);
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		dirText.setLayoutData(gd);
+		
+		label = new Label(container, SWT.NULL);
+		label.setText("&Label:");
+
+		labelText = new Text(container, SWT.BORDER | SWT.SINGLE);
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		labelText.setLayoutData(gd);
+
+		label = new Label(container, SWT.NULL);
+		label.setText("&Index File:");
+
+		indexFileText = new Text(container, SWT.BORDER | SWT.SINGLE);
+		gd = new GridData(GridData.FILL_HORIZONTAL);
+		indexFileText.setLayoutData(gd);
+		setControl(container);
+	}
+	
+	public String getId() {
+		return idText.getText();
+	}
+	
+	public String getDir() {
+		return dirText.getText();
+	}
+	
+	public String getLabel() {
+		return labelText.getText();
+	}
+	
+	public String getIndexFile() {
+		return indexFileText.getText();
+	}
+	
+}
\ No newline at end of file

Propchange: forrest/trunk/tools/eclipse/plugins/org.apache.forrest/src/org/apache/forrest/eclipse/wizards/NewTabElementPage.java
------------------------------------------------------------------------------
    svn:eol-style = native