[jboss-cvs] jbosside/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/dialogs ...

Robert Stryker rawblem at gmail.com
Mon Jul 31 15:41:00 EDT 2006


  User: rawb    
  Date: 06/07/31 15:41:00

  Modified:    as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/dialogs 
                        XPathDialogs.java
  Log:
  Added a preview for the dialog
  
  Revision  Changes    Path
  1.2       +105 -11   jbosside/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/dialogs/XPathDialogs.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: XPathDialogs.java
  ===================================================================
  RCS file: /cvsroot/jboss/jbosside/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/dialogs/XPathDialogs.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -b -r1.1 -r1.2
  --- XPathDialogs.java	27 Jul 2006 06:34:01 -0000	1.1
  +++ XPathDialogs.java	31 Jul 2006 19:41:00 -0000	1.2
  @@ -1,7 +1,13 @@
   package org.jboss.ide.eclipse.as.ui.dialogs;
   
  +import java.util.ArrayList;
  +import java.util.Arrays;
  +
   import org.eclipse.jface.dialogs.Dialog;
   import org.eclipse.jface.dialogs.IDialogConstants;
  +import org.eclipse.jface.viewers.ITreeContentProvider;
  +import org.eclipse.jface.viewers.TreeViewer;
  +import org.eclipse.jface.viewers.Viewer;
   import org.eclipse.swt.SWT;
   import org.eclipse.swt.events.ModifyEvent;
   import org.eclipse.swt.events.ModifyListener;
  @@ -16,12 +22,15 @@
   import org.eclipse.swt.widgets.Label;
   import org.eclipse.swt.widgets.Shell;
   import org.eclipse.swt.widgets.Text;
  +import org.eclipse.swt.widgets.Tree;
  +import org.eclipse.swt.widgets.TreeColumn;
   import org.jboss.ide.eclipse.as.core.model.SimpleTreeItem;
   import org.jboss.ide.eclipse.as.core.model.DescriptorModel.ServerDescriptorModel.XPathTreeItem;
  +import org.jboss.ide.eclipse.as.core.model.DescriptorModel.ServerDescriptorModel.XPathTreeItem2;
   import org.jboss.ide.eclipse.as.core.server.JBossServer;
  -import org.jboss.ide.eclipse.as.core.server.ServerAttributeHelper.SimpleXPathPreferenceTreeItem;
   import org.jboss.ide.eclipse.as.core.server.ServerAttributeHelper.XPathPreferenceTreeItem;
   import org.jboss.ide.eclipse.as.core.util.ASDebug;
  +import org.jboss.ide.eclipse.as.ui.viewproviders.DescriptorXPathViewProvider.XPathPropertyLabelProvider;
   
   public class XPathDialogs {
   
  @@ -122,15 +131,16 @@
   		private SimpleTreeItem tree;
   		private String category;
   		private JBossServer server;
  -		
   		private String name, xpath, attribute;
  -		
   		private String originalName = null;
  -		
   		private XPathPreferenceTreeItem original = null;
  -		
   		int previewId = 48879;
   		
  +		private Tree previewTree;
  +		private TreeColumn column, column2, column3;
  +		private TreeViewer previewTreeViewer;
  +		private Composite main;
  +		
   		public XPathDialog(Shell parentShell, SimpleTreeItem tree, String categoryName, JBossServer server) {
   			super(parentShell);
   			this.tree = tree;
  @@ -148,30 +158,32 @@
   
   		protected void configureShell(Shell shell) {
   			super.configureShell(shell);
  +			setShellStyle(getShellStyle() | SWT.RESIZE);
   			shell.setText("New XPath");
  +			shell.setBounds(shell.getLocation().x, shell.getLocation().y, 550, 400);
   		}
   		
   		protected void createButtonsForButtonBar(Composite parent) {
   			// create OK and Cancel buttons by default
   			super.createButtonsForButtonBar(parent);
   			previewButton = createButton(parent, previewId, "Preview", true);
  -			getButton(IDialogConstants.OK_ID).setEnabled(false);
  +			if( name == null ) getButton(IDialogConstants.OK_ID).setEnabled(false);
   
   			addListeners();
   		}
   
   		
   		protected Control createDialogArea(Composite parent) {
  -			Composite c = (Composite)super.createDialogArea(parent);
  -			c.setLayout(new FormLayout());
  -			layoutWidgets(c);
  +			main = (Composite)super.createDialogArea(parent);
  +			main.setLayout(new FormLayout());
  +			layoutWidgets(main);
   			
   			if( name != null ) nameText.setText(name);
   			if( attribute != null ) attributeText.setText(attribute);
   			if( xpath != null ) xpathText.setText(xpath);
   			
   			
  -			return c;
  +			return main;
   		} 
   		
   		protected void addListeners() {
  @@ -237,7 +249,12 @@
   			}
   		}
   		protected void previewPressed() {
  -			XPathTreeItem[] item = server.getDescriptorModel().getXPath(xpathText.getText());
  +			XPathTreeItem[] item = server.getDescriptorModel().getXPath(xpathText.getText(), attributeText.getText());
  +			ArrayList list = new ArrayList();
  +			list.addAll(Arrays.asList(item));
  +			previewTreeViewer.setInput(list);
  +			main.layout();
  +			ASDebug.p("found items: " + item.length, this);
   		}
   		protected void layoutWidgets(Composite c) {
   			// create widgets
  @@ -250,6 +267,25 @@
   			xpathText = new Text(c, SWT.BORDER);
   			attributeText = new Text(c, SWT.BORDER);
   			
  +			// Now do the tree and viewer
  +			previewTree = new Tree(c, SWT.BORDER);
  +			previewTree.setHeaderVisible(true);
  +			previewTree.setLinesVisible(true);
  +			column = new TreeColumn(previewTree, SWT.NONE);
  +			column2 = new TreeColumn(previewTree, SWT.NONE);
  +			column3 = new TreeColumn(previewTree, SWT.NONE);
  +			
  +			column.setText("Location");
  +			column2.setText("Attribute Value");
  +			column3.setText("Raw XML");
  +
  +			column.setWidth(100);
  +			column2.setWidth(100);
  +			column3.setWidth(100);
  +
  +			previewTreeViewer = new TreeViewer(previewTree);
  +
  +			
   			// set some text
   			nameLabel.setText("Name: ");
   			xpathLabel.setText("XPath Pattern: ");
  @@ -305,7 +341,65 @@
   			attributeTextData.left = new FormAttachment(0, pixel);
   			attributeTextData.right = new FormAttachment(100,-5);
   			attributeTextData.top = new FormAttachment(xpathText,4);
  +			
   			attributeText.setLayoutData(attributeTextData);
  +			
  +			
  +			// Tree layout data
  +			FormData previewTreeData = new FormData();
  +			previewTreeData.left = new FormAttachment(0,5);
  +			previewTreeData.right = new FormAttachment(100,-5);
  +			previewTreeData.top = new FormAttachment(attributeText,5);
  +			previewTreeData.bottom = new FormAttachment(100,-5);
  +			previewTree.setLayoutData(previewTreeData);
  +			
  +			previewTreeViewer.setContentProvider(new ITreeContentProvider() {
  +				public Object[] getChildren(Object parentElement) {
  +					// we're a leaf
  +					if( parentElement instanceof XPathTreeItem2 ) 
  +						return new Object[0];
  +					
  +					// we're a file node (blah.xml) 
  +					if( parentElement instanceof XPathTreeItem ) {
  +						if( ((XPathTreeItem)parentElement).getChildren2().length > 1 ) 
  +							return ((XPathTreeItem)parentElement).getChildren2();
  +						return new Object[0];
  +					}
  +					
  +					// we're the named element (JNDI)
  +					if( parentElement instanceof XPathPreferenceTreeItem ) {
  +						SimpleTreeItem[] kids = ((XPathPreferenceTreeItem)parentElement).getChildren2();
  +						return kids;
  +					}
  +
  +					return new Object[0];
  +				}
  +
  +				public Object getParent(Object element) {
  +					return null;
  +				}
  +
  +				public boolean hasChildren(Object element) {
  +					return getChildren(element).length > 0 ? true : false;
  +				}
  +
  +				public Object[] getElements(Object inputElement) {
  +					if( inputElement instanceof ArrayList ) {
  +						ASDebug.p("we have an array list", this);
  +						return ((ArrayList)inputElement).toArray();
  +					}
  +					return new Object[0];
  +				}
  +
  +				public void dispose() {
  +				}
  +
  +				public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
  +				} 
  +				
  +			});
  +			
  +			previewTreeViewer.setLabelProvider(new XPathPropertyLabelProvider());
   		}
   
   		public String getAttribute() {
  
  
  



More information about the jboss-cvs-commits mailing list