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

Robert Stryker rawblem at gmail.com
Fri Oct 13 16:20:30 EDT 2006


  User: rawb    
  Date: 06/10/13 16:20:30

  Modified:    as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/viewproviders 
                        DescriptorXPathViewProvider.java
  Log:
  Fixed issues regarding properties view not updating or having different references to the same object. It just wasn't very clean.... or functional actually. 
  
  Revision  Changes    Path
  1.9       +423 -419  jbosside/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/viewproviders/DescriptorXPathViewProvider.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: DescriptorXPathViewProvider.java
  ===================================================================
  RCS file: /cvsroot/jboss/jbosside/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/viewproviders/DescriptorXPathViewProvider.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -b -r1.8 -r1.9
  --- DescriptorXPathViewProvider.java	28 Sep 2006 22:18:03 -0000	1.8
  +++ DescriptorXPathViewProvider.java	13 Oct 2006 20:20:30 -0000	1.9
  @@ -87,7 +87,6 @@
   import org.jboss.ide.eclipse.as.core.server.ServerAttributeHelper;
   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.JBossServerUIPlugin;
   import org.jboss.ide.eclipse.as.ui.Messages;
   import org.jboss.ide.eclipse.as.ui.JBossServerUIPlugin.ServerViewProvider;
  @@ -98,18 +97,15 @@
   import org.jboss.ide.eclipse.as.ui.views.JBossServerTableViewer.ContentWrapper;
   
   public class DescriptorXPathViewProvider extends JBossServerViewExtension {
  -	private XPathTreeContentProvider contentProvider;
  -	private XPathTreeLabelProvider labelProvider;
  -	private DescriptorXPathPropertySheetPage propertyPage;
   	
   	private static final String XPATH_PROPERTY = "_XPATH_PROPERTY_";
  +	private static final String PREFERENCE_KEY = "_DESCRIPTOR_PREFERENCE_PAGE_DETAILS_SHOWN";
  +	private static final boolean COMPLEX = true;
  +	private static final boolean SIMPLE = false;
   	
  -	private static String PREFERENCE_KEY = "_DESCRIPTOR_PREFERENCE_PAGE_DETAILS_SHOWN";
  -	
  -	private static boolean COMPLEX = true;
  -	private static boolean SIMPLE = false;
  -	
  -
  +	private XPathTreeContentProvider contentProvider;
  +	private XPathTreeLabelProvider labelProvider;
  +	private DescriptorXPathPropertySheetPage propertyPage;
   
   	private Action newXPathCategoryAction, deleteXPathCategoryAction, newXPathAction, editXPathAction, deleteXPathAction;
   
  @@ -117,16 +113,80 @@
   	private JBossServer jbServer;
   	private SimpleXPathPreferenceTreeItem root;
   	
  +	private Object activeCategory;
  +	private Object selectedPropertyObject;
   
   	
   	public DescriptorXPathViewProvider() {
   		contentProvider = new XPathTreeContentProvider();
   		labelProvider = new XPathTreeLabelProvider();
  -		getPropertySheetPage(); // prime it
   		createActions();
   		addListeners();
   	}
   	
  +	protected void addListeners() {
  +	}
  +	
  +	protected void setActiveCategory(Object o) {
  +		if( o != null && o != activeCategory) {
  +			activeCategory = o;
  +		}
  +	}
  +	protected Object getActiveCategory() {
  +		return activeCategory;
  +	}
  +	protected void setPropertySelection(Object o) {
  +		selectedPropertyObject = o;
  +	}
  +	protected Object getPropertySelection() {
  +		return selectedPropertyObject;
  +	}
  +	protected class XPathTreeContentProvider implements ITreeContentProvider {
  +		
  +		public Object[] getChildren(Object parentElement) {
  +			if( parentElement instanceof ServerViewProvider ) 
  +				return getRoot().getChildren2();
  +			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) {
  +			return new Object[0];
  +		}
  +		public void dispose() {
  +		}
  +		public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
  +			if( oldInput != newInput ) {
  +				server = (IServer)newInput;
  +				jbServer = server == null ? null : JBossServerCore.getServer(server);
  +				root = null;
  +			}
  +		}
  +	}
  +	protected class XPathTreeLabelProvider extends LabelProvider {
  +		public Image getImage(Object element) {
  +			return null;
  +		}
  +		public String getText(Object element) {
  +			if( element instanceof SimpleXPathPreferenceTreeItem) {
  +				return ((SimpleXPathPreferenceTreeItem)element).getData().toString();
  +			}
  +			return "";
  +		}
  +	}
  +
  +	
  +	public ITreeContentProvider getContentProvider() {
  +		return contentProvider;
  +	}
  +
  +	public LabelProvider getLabelProvider() {
  +		return labelProvider;
  +	}
   	
   	public boolean showSimple() {
   		return JBossServerUIPlugin.getDefault().getPreferenceStore().getBoolean(PREFERENCE_KEY) == SIMPLE;
  @@ -139,6 +199,10 @@
   		return root;
   	}
   	
  +	public void setRoot(SimpleXPathPreferenceTreeItem root) {
  +		this.root = root;
  +	}
  +	
   
   	
   	public void createActions() {
  @@ -161,7 +225,7 @@
   		
   		deleteXPathCategoryAction= new Action() {
   			public void run() {
  -				Object selected = getServerViewSelection();
  +				Object selected = getActiveCategory();
   				if( selected instanceof SimpleXPathPreferenceTreeItem && ((SimpleXPathPreferenceTreeItem)selected).getParent().equals(getRoot())) {
   					int style = SWT.APPLICATION_MODAL | SWT.YES | SWT.NO;
   					MessageBox messageBox = new MessageBox (Display.getCurrent().getActiveShell(), style);
  @@ -172,7 +236,7 @@
   						ServerAttributeHelper helper = jbServer.getAttributeHelper();
   						helper.saveXPathPreferenceTree(getRoot());
   						helper.save();
  -						
  +						setActiveCategory(null);
   						refreshViewer();
   					}
   				}
  @@ -184,7 +248,7 @@
   		newXPathAction = new Action() {
   			public void run() {
   				SimpleTreeItem tree = getRoot();
  -					Object o = getServerViewSelection();
  +				Object o = getActiveCategory();
   					if( o != null && o instanceof SimpleXPathPreferenceTreeItem) {
   						String category = (String)  ((SimpleXPathPreferenceTreeItem)o).getData();
   						XPathDialog d = new XPathDialog(Display.getCurrent().getActiveShell(), tree, category, jbServer);
  @@ -211,7 +275,7 @@
   		editXPathAction = new Action() {
   			public void run() {
   				SimpleTreeItem tree = getRoot();
  -				Object o = getXPathViewSelection();
  +				Object o = getPropertySelection();
   					if( o != null && o instanceof XPathPreferenceTreeItem) {
   						XPathPreferenceTreeItem original = (XPathPreferenceTreeItem)o;
   						String category = (String)  original.getParent().getData();
  @@ -237,8 +301,7 @@
   
   		deleteXPathAction = new Action() {
   			public void run() {
  -				SimpleTreeItem tree = getRoot();
  -				Object o = getXPathViewSelection();
  +				Object o = getPropertySelection();
   				if( o instanceof XPathPreferenceTreeItem ) {
   					((XPathPreferenceTreeItem)o).getParent().deleteChild((XPathPreferenceTreeItem)o);
   					ServerAttributeHelper helper = jbServer.getAttributeHelper();
  @@ -251,208 +314,331 @@
   		deleteXPathAction.setText(Messages.DescriptorXPathDeleteXPath);
   	}
   	
  -	public void addListeners() {
  -		
  -	}
  -	
   	public void fillContextMenu(Shell shell, IMenuManager menu, Object selection) {
  -		if( getServerViewSelection() instanceof ServerViewProvider ) {
  +		if( selection instanceof ServerViewProvider ) {
   			menu.add(this.newXPathCategoryAction);
   			menu.add(new Separator());
   			return;
   		}
   		
  -		if( getServerViewSelection() instanceof SimpleXPathPreferenceTreeItem ) {
  +		if( selection instanceof SimpleXPathPreferenceTreeItem ) {
   			menu.add(this.newXPathAction);
   			menu.add(this.deleteXPathCategoryAction);
   			menu.add(new Separator());
   		}
   	}
   	
  -	public Object getServerViewSelection() {
  -		return JBossServerView.getDefault().getJbViewer().getSelectedElement();
  -	}
  -	public Object getXPathViewSelection() {
  -		if( propertyPage != null && propertyPage.xpathTree != null ) {
  -			TreeItem[] items = propertyPage.xpathTree.getSelection();
  -			if( items.length == 1 ) {
  -				return items[0].getData();
  -			}
  -		}
  -		return null;
  -	}
  -
  -	protected class XPathTreeContentProvider implements ITreeContentProvider {
  -		
  -		public Object[] getChildren(Object parentElement) {
  -			if( parentElement instanceof ServerViewProvider ) 
  -				return getRoot().getChildren2();
  -			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) {
  -			return new Object[0];
  -		}
  -		public void dispose() {
  -		}
  -		public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
  -			server = (IServer)newInput;
  -			jbServer = server == null ? null : JBossServerCore.getServer(server);
  -			root = null;
  -		}
  +	public void setSimple(boolean simple) {
   
   	}
  -	protected class XPathTreeLabelProvider extends LabelProvider {
  -		public Image getImage(Object element) {
  -			return null;
  -		}
  -		public String getText(Object element) {
  -			if( element instanceof SimpleXPathPreferenceTreeItem) {
  -				return ((SimpleXPathPreferenceTreeItem)element).getData().toString();
  -			}
  -			return "";
  -		}
  -	}
  -
   	
  -	public ITreeContentProvider getContentProvider() {
  -		return contentProvider;
  -	}
  +	// Preference Page
   
  -	public LabelProvider getLabelProvider() {
  -		return labelProvider;
  +	public ViewProviderPreferenceComposite createPreferenceComposite(Composite parent) {
  +		return new DescriptorPreferencePage(parent);
   	}
   
  +	public class DescriptorPreferencePage extends ViewProviderPreferenceComposite {
   	
  -	public IPropertySheetPage getPropertySheetPage() {
  -		if( propertyPage == null ) {
  -			propertyPage = new DescriptorXPathPropertySheetPage();
  -		}
  -		return propertyPage;
  -	}
  -	
  +		private Button simple, complex;
  +		private Combo portsCategoryCombo;
  +		private Combo serversCombo;
   	
  +		private JBossServer[] servers;
   	
  -	public class DescriptorXPathPropertySheetPage implements IPropertySheetPage {
  -		private Object input;
  +		private HashMap serverToCategoryList;
  +		private HashMap serverToDefaultPortCat;
  +		private HashMap serverToAttributeHelper;
   		
  +		public DescriptorPreferencePage(Composite parent) {
  +			super(parent, SWT.NONE);
  +			setLayout(new FormLayout());
   		
  -		private TreeViewer xpathTreeViewer;
  -		private TreeColumn column, column2, column3;
  -		private Tree xpathTree;
  -		private XPathPropertyLabelProvider labelProvider;
  +			serverToCategoryList = new HashMap();
  +			serverToDefaultPortCat = new HashMap();
  +			serverToAttributeHelper = new HashMap();
   
  -		private Group xPathGroup;
   		
  -		public void createControl(Composite parent) {
  -			createXPathGroup(parent);
  -			addViewerMenus();
  -		}
  +			Composite viewDetailsComp = new Composite(this, SWT.NONE);
  +			fillViewDetails(viewDetailsComp);
   
  -		public XPathPropertyLabelProvider getLabelProvider() {
  -			if( labelProvider == null ) {
  -				labelProvider = new XPathPropertyLabelProvider();
  -			}
  -			return labelProvider;
  +			Composite defaultPortComp = new Composite(this, SWT.BORDER);
  +			FormData portData = new FormData();
  +			portData.left = new FormAttachment(0,5);
  +			portData.top = new FormAttachment(viewDetailsComp,5);
  +			portData.right = new FormAttachment(50,-5);
  +			defaultPortComp.setLayoutData(portData);
  +			fillPortPreferences(defaultPortComp);
   		}
   		
  -		private void addViewerMenus() {
  -			MenuManager menuManager = new MenuManager("#PopupMenu"); 
  -			menuManager.setRemoveAllWhenShown(true);
  -			final Shell shell = xpathTree.getShell();
  -			menuManager.addMenuListener(new IMenuListener() {
  -				public void menuAboutToShow(IMenuManager mgr) {
  -					xpathTreeMenuAboutToShow(shell, mgr);
  +		private ServerAttributeHelper getAttributeHelper(JBossServer server) {
  +			Object helper = serverToAttributeHelper.get(server);
  +			if( helper == null ) {
  +				helper = server.getAttributeHelper();
  +				serverToAttributeHelper.put(server, helper);
   				}
  -			});
  -			Menu menu = menuManager.createContextMenu(xpathTree);
  -			xpathTree.setMenu(menu);
  +			return (ServerAttributeHelper)helper;
   		}
   		
  -		private void xpathTreeMenuAboutToShow(Shell shell, IMenuManager menu) {
  -			menu.add(newXPathAction);
  -			if( getXPathViewSelection() != null && getXPathViewSelection() instanceof XPathPreferenceTreeItem) {
  -				menu.add(editXPathAction);
  -				menu.add(deleteXPathAction);
  -			}
  -		}
  +		protected void fillPortPreferences(Composite portComp) {
  +			portComp.setLayout(new RowLayout(SWT.VERTICAL));
   
  -		public void setSimple(boolean simple) {
  -			boolean showSimple = showSimple();
  +			servers = JBossServerCore.getAllJBossServers();
  +			String[] serverNames = new String[servers.length];
  +			for( int i = 0; i < servers.length; i++ )
  +				serverNames[i] = servers[i].getServer().getName();
   
  -			if( showSimple != simple ) {
  -				JBossServerUIPlugin.getDefault().getPreferenceStore().setValue(PREFERENCE_KEY, simple == SIMPLE);
  -				JBossServerUIPlugin.getDefault().savePluginPreferences();
  +			portComp.setLayout(new RowLayout(SWT.VERTICAL));
   
  -				// if the properties page isn't opened, it'll throw nulls
  -				try {
  -					if( simple ) {
  -						getLabelProvider().setSimple(true);
  -						column3.setText("");
  -						column2.setText(Messages.DescriptorXPathAttributeValue);
  -						xpathTreeViewer.refresh();
  -					} else {
  -						getLabelProvider().setSimple(false);
  -						column3.setText(Messages.DescriptorXPathXPathXML);
  -						column2.setText(Messages.DescriptorXPathAttributeKeyValue);
  -						xpathTreeViewer.refresh();
  -					}
  -				} catch ( Exception e ) {
  -				}
  -			}
  -		}
  +			Label nameLabel = new Label(portComp, SWT.NONE);
  +			nameLabel.setText(Messages.DescriptorXPathServerName);
   		
  -		public void dispose() {
  -		}
  +			serversCombo = new Combo(portComp, SWT.READ_ONLY);
  +			serversCombo.setItems(serverNames);
   
  -		public Control getControl() {
  -			return xPathGroup;
  -		}
  +			Label categoryLabel = new Label(portComp, SWT.NONE);
  +			categoryLabel.setText(Messages.DescriptorXPathPortCategory);
   
  -		public void setActionBars(IActionBars actionBars) {
  -		}
  +			portsCategoryCombo = new Combo(portComp, SWT.READ_ONLY);
   
  -		public void setFocus() {
  -		}
   
  -		public void selectionChanged(IWorkbenchPart part, ISelection selection) {
  -			//input = null;
  -			Object element = ((IStructuredSelection)selection).getFirstElement();
  -			if( element instanceof ContentWrapper ) {
  +			serversCombo.addSelectionListener(new SelectionListener() {
   
  -				if( input == ((ContentWrapper)element).getElement() ) return;
  +				public void widgetDefaultSelected(SelectionEvent e) {
  +				}
   				
  -				input = ((ContentWrapper)element).getElement();
  -				IRunnableWithProgress op = new IRunnableWithProgress() {
  -					public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
  -						final IProgressMonitor monitor2 = monitor;
  -						jbServer.getDescriptorModel().refreshDescriptors(monitor2);
  -						Display.getDefault().asyncExec(new Runnable() { 
  -							public void run() {
  -								xpathTreeViewer.setInput(input);
  -								xpathTreeViewer.expandToLevel(2);
  -								jbServer.getAttributeHelper().setServerPorts(root);
  +				public void widgetSelected(SelectionEvent e) {
  +					serverComboChanged();
   							}
   						});
  -					}
  -				};
  -				try {
  -				new ProgressMonitorDialog(new Shell()).run(false, true, op);
  -					//JBossServerCore.getServer(contentProvider.server).getDescriptorModel().refreshDescriptors(new NullProgressMonitor());
   
  -				} catch( Exception e) {
  -					e.printStackTrace();
  -				}
  -			}
  +			portsCategoryCombo.addSelectionListener(new SelectionListener() {
  +				public void widgetDefaultSelected(SelectionEvent e) {
  +				}
  +				public void widgetSelected(SelectionEvent e) {
  +					JBossServer server = getSelectedServer();
  +					if( server != null ) {
  +						int index = portsCategoryCombo.getSelectionIndex();
  +						String selectedCategory = portsCategoryCombo.getItem(index);
  +						serverToDefaultPortCat.put(server, selectedCategory);
  +					}
  +				} 
  +				
  +			} );
  +		}
  +		private void serverComboChanged() {
  +			JBossServer s = getSelectedServer();
  +			if( s != null ) {
  +				Object o = serverToCategoryList.get(s);
  +				ArrayList list;
  +				if( o == null ) {
  +					ServerAttributeHelper helper = getAttributeHelper(s);
  +					SimpleXPathPreferenceTreeItem tree = helper.getXPathPreferenceTree();
  +					SimpleTreeItem[] children = tree.getChildren2();
  +					String[] categoryNames = new String[children.length];
  +					for( int i = 0; i < children.length; i++ ) {
  +						categoryNames[i] = (String)children[i].getData();
  +					}
  +					list = new ArrayList();
  +					list.addAll(Arrays.asList(categoryNames));
  +					String portDir = helper.getDefaultPortCategoryName();
  +					serverToDefaultPortCat.put(s, portDir);
  +					serverToCategoryList.put(s, list);
  +				} else {
  +					list = (ArrayList)o;
  +				}
  +				portsCategoryCombo.setItems((String[]) list
  +						.toArray(new String[list.size()]));
  +				
  +				String portDir = (String)serverToDefaultPortCat.get(s);
  +				if( portDir != null ) {
  +					int index2 = portsCategoryCombo.indexOf(portDir);
  +					portsCategoryCombo.select(index2);
  +				}
  +			}
  +		}
  +		private JBossServer getSelectedServer() {
  +			int index = serversCombo.getSelectionIndex();
  +			String selected = serversCombo.getItem(index);
  +			if( selected == null ) return null;
  +			
  +			for( int i = 0; i < servers.length; i++ ) {
  +				if( servers[i].getServer().getName().equals(selected)) {
  +					return servers[i];
  +				}
  +			}
  +			return null;
  +		}
  +		
  +		protected void fillViewDetails(Composite c) {
  +			FormData vdcData = new FormData();
  +			vdcData.left = new FormAttachment(0,5);
  +			vdcData.top = new FormAttachment(0,5);
  +			c.setLayoutData(vdcData);
  +
  +			c.setLayout(new RowLayout(SWT.VERTICAL));
  +
  +			simple = new Button(c, SWT.RADIO);
  +			complex = new Button(c, SWT.RADIO);
  +			
  +			simple.setText(Messages.DescriptorXPathSimple);
  +			complex.setText(Messages.DescriptorXPathComplex);
  +			
  +			boolean prefVal = JBossServerUIPlugin.getDefault().getPreferenceStore().getBoolean(PREFERENCE_KEY);
  +			simple.setSelection(prefVal == SIMPLE);
  +			complex.setSelection(prefVal == COMPLEX);
  +		}
  +		
  +		public boolean isValid() {
  +			return true;
  +		}
  +		public boolean performCancel() {
  +			return true;
  +		}
  +		public boolean performOk() {
  +			boolean simp = simple.getSelection() == true ? SIMPLE : COMPLEX;
  +			setSimple(simp == SIMPLE);
  +			
  +			// now save default port categories
  +			ServerAttributeHelper helper;
  +			for( int i = 0; i < servers.length; i++ ) {
  +				helper = (ServerAttributeHelper)serverToAttributeHelper.get(servers[i]);
  +				String category = (String)serverToDefaultPortCat.get(servers[i]);
  +				if( category != null ) {
  +					helper.setDefaultPortCategoryName(category);
  +					helper.save();
  +				}
  +			}
  +			return true;
  +		}
  +		public void dispose() {
  +			super.dispose();
  +		}
  +	}
  +
  +
  +
  +	
  +	// Property Sheet Page
  +	public IPropertySheetPage getPropertySheetPage() {
  +		if( propertyPage == null ) {
  +			propertyPage = new DescriptorXPathPropertySheetPage();
  +		}
  +		return propertyPage;
  +	}
  +	
  +	public class DescriptorXPathPropertySheetPage implements IPropertySheetPage {
  +		private TreeViewer xpathTreeViewer;
  +		private TreeColumn column, column2, column3;
  +		private Tree xpathTree;
  +		private XPathPropertyLabelProvider labelProvider;
  +
  +		private Group xPathGroup;
  +		
  +		public void createControl(Composite parent) {
  +			createXPathGroup(parent);
  +			addViewerMenus();
  +		}
  +
  +		public XPathPropertyLabelProvider getLabelProvider() {
  +			if( labelProvider == null ) {
  +				labelProvider = new XPathPropertyLabelProvider();
  +			}
  +			return labelProvider;
  +		}
  +		
  +		private void addViewerMenus() {
  +			MenuManager menuManager = new MenuManager("#PopupMenu"); 
  +			menuManager.setRemoveAllWhenShown(true);
  +			final Shell shell = xpathTree.getShell();
  +			menuManager.addMenuListener(new IMenuListener() {
  +				public void menuAboutToShow(IMenuManager mgr) {
  +					xpathTreeMenuAboutToShow(shell, mgr);
  +				}
  +			});
  +			Menu menu = menuManager.createContextMenu(xpathTree);
  +			xpathTree.setMenu(menu);
  +		}
  +		
  +		private void xpathTreeMenuAboutToShow(Shell shell, IMenuManager menu) {
  +			menu.add(newXPathAction);
  +			if( getPropertySelection() != null && getPropertySelection() instanceof XPathPreferenceTreeItem) {
  +				menu.add(editXPathAction);
  +				menu.add(deleteXPathAction);
  +			}
  +		}
  +
  +		public void setSimple(boolean simple) {
  +			boolean showSimple = showSimple();
  +
  +			if( showSimple != simple ) {
  +				JBossServerUIPlugin.getDefault().getPreferenceStore().setValue(PREFERENCE_KEY, simple == SIMPLE);
  +				JBossServerUIPlugin.getDefault().savePluginPreferences();
  +
  +				// if the properties page isn't opened, it'll throw nulls
  +				try {
  +					if( simple ) {
  +						getLabelProvider().setSimple(true);
  +						column3.setText("");
  +						column2.setText(Messages.DescriptorXPathAttributeValue);
  +						xpathTreeViewer.refresh();
  +					} else {
  +						getLabelProvider().setSimple(false);
  +						column3.setText(Messages.DescriptorXPathXPathXML);
  +						column2.setText(Messages.DescriptorXPathAttributeKeyValue);
  +						xpathTreeViewer.refresh();
  +					}
  +				} catch ( Exception e ) {
  +				}
  +			}
  +		}
  +		
  +		public void dispose() {
  +		}
  +
  +		public Control getControl() {
  +			return xPathGroup;
  +		}
  +
  +		public void setActionBars(IActionBars actionBars) {
   		}
   		
  +		public void setFocus() {
  +		}
  +
  +		public void selectionChanged(IWorkbenchPart part, ISelection selection) {
  +			//input = null;
  +			Object element = ((IStructuredSelection)selection).getFirstElement();
  +			if( element instanceof ContentWrapper ) {
  +				element = ((ContentWrapper)element).getElement();
  +			}
  +			if( element != null && element != getActiveCategory()) {
  +				setActiveCategory(element);
  +				forceDescriptorRefresh(element);
  +			}
  +		}
  +		
  +		protected void forceDescriptorRefresh(final Object element) {
  +			IRunnableWithProgress op = new IRunnableWithProgress() {
  +				public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
  +					final IProgressMonitor monitor2 = monitor;
  +					jbServer.getDescriptorModel().refreshDescriptors(monitor2);
  +					Display.getDefault().asyncExec(new Runnable() { 
  +						public void run() {
  +							xpathTreeViewer.setInput(element);
  +							xpathTreeViewer.expandToLevel(2);
  +							//jbServer.getAttributeHelper().setServerPorts(root);
  +						}
  +					});
  +				}
  +			};
  +			try {
  +				new ProgressMonitorDialog(new Shell()).run(false, true, op);
  +			} catch( Exception e) {
  +				e.printStackTrace();
  +			}
  +		}
   		
  -
   		protected class XPathTreeLabelProvider implements ITableLabelProvider {
   			public Image getColumnImage(Object element, int columnIndex) {
   				return null;
  @@ -564,7 +750,6 @@
   			
   			
   			public void handleEvent (Event event) {
  -//				final TreeItem item = (TreeItem) event.item;
   				TreeItem[] selectedItems = xpathTree.getSelection();
   				if( selectedItems.length != 1 ) return;
   				
  @@ -650,7 +835,6 @@
   			
   			xPathGroup.addDisposeListener(new DisposeListener() {
   				public void widgetDisposed(DisposeEvent e) {
  -					input = null;
   				} 
   			} );
   			
  @@ -703,6 +887,16 @@
   			
   			final XPathTreeSelectionListener selListener = new XPathTreeSelectionListener();
   			xpathTree.addListener (SWT.MouseDoubleClick, selListener);
  +			xpathTree.addSelectionListener(new SelectionListener() {
  +				public void widgetDefaultSelected(SelectionEvent e) {
  +				}
  +				public void widgetSelected(SelectionEvent e) {
  +					if( xpathTree.getSelection().length == 1 ) {
  +						Object sel = xpathTree.getSelection()[0].getData();
  +						setPropertySelection(sel);
  +					}
  +				} 
  +			});
   			
   			// alerts the top listener as to the mouse position, to know which column is serverViewerSelection
   			xpathTree.addListener(SWT.MouseMove, new Listener() {
  @@ -810,247 +1004,6 @@
   		}
   	}
   	
  -	protected class XPathPropertyContentProvider implements ITreeContentProvider {
  -		
  -		private SimpleXPathPreferenceTreeItem category;
  -		
  -		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;
  -			}
  -
  -			// re-creates it from scratch... hrmm
  -			if( parentElement instanceof ServerViewProvider ) 
  -				return jbServer.getAttributeHelper().getXPathPreferenceTree().getChildren2();
  -			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 SimpleXPathPreferenceTreeItem ) {
  -				SimpleTreeItem[] items =  ((SimpleXPathPreferenceTreeItem)inputElement).getChildren2();
  -				for( int i = 0; i < items.length; i++ )
  -					ensureLoaded((SimpleXPathPreferenceTreeItem)items[i]);
  -				return items;
  -			}
  -			return new Object[0];
  -		}
  -		public void ensureLoaded(SimpleXPathPreferenceTreeItem item) {
  -			if( item instanceof XPathPreferenceTreeItem ) {
  -				((XPathPreferenceTreeItem)item).ensureLoaded(jbServer);
  -			}
  -		}
  -
  -		
  -		public void dispose() {
  -		}
  -		public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
  -			category = (SimpleXPathPreferenceTreeItem) newInput;
  -		}
  -
  -	}
  -	
  -	public ViewProviderPreferenceComposite createPreferenceComposite(Composite parent) {
  -		return new DescriptorPreferencePage(parent);
  -	}
  -
  -	public class DescriptorPreferencePage extends ViewProviderPreferenceComposite {
  -
  -		private Button simple, complex;
  -		private Combo portsCategoryCombo;
  -		private Combo serversCombo;
  -		
  -		private JBossServer[] servers;
  -		
  -		private HashMap serverToCategoryList;
  -		private HashMap serverToDefaultPortCat;
  -		private HashMap serverToAttributeHelper;
  -		
  -		public DescriptorPreferencePage(Composite parent) {
  -			super(parent, SWT.NONE);
  -			setLayout(new FormLayout());
  -			
  -			serverToCategoryList = new HashMap();
  -			serverToDefaultPortCat = new HashMap();
  -			serverToAttributeHelper = new HashMap();
  -			
  -			
  -			Composite viewDetailsComp = new Composite(this, SWT.NONE);
  -			fillViewDetails(viewDetailsComp);
  -			
  -			Composite defaultPortComp = new Composite(this, SWT.BORDER);
  -			FormData portData = new FormData();
  -			portData.left = new FormAttachment(0,5);
  -			portData.top = new FormAttachment(viewDetailsComp,5);
  -			portData.right = new FormAttachment(50,-5);
  -			defaultPortComp.setLayoutData(portData);
  -			fillPortPreferences(defaultPortComp);
  -		}
  -		
  -		private ServerAttributeHelper getAttributeHelper(JBossServer server) {
  -			Object helper = serverToAttributeHelper.get(server);
  -			if( helper == null ) {
  -				helper = server.getAttributeHelper();
  -				serverToAttributeHelper.put(server, helper);
  -			}
  -			return (ServerAttributeHelper)helper;
  -		}
  -		
  -		protected void fillPortPreferences(Composite portComp) {
  -			portComp.setLayout(new RowLayout(SWT.VERTICAL));
  -			
  -			servers = JBossServerCore.getAllJBossServers();
  -			String[] serverNames = new String[servers.length];
  -			for( int i = 0; i < servers.length; i++ )
  -				serverNames[i] = servers[i].getServer().getName();
  -			
  -			portComp.setLayout(new RowLayout(SWT.VERTICAL));
  -			
  -			Label nameLabel = new Label(portComp, SWT.NONE);
  -			nameLabel.setText(Messages.DescriptorXPathServerName);
  -			
  -			serversCombo = new Combo(portComp, SWT.READ_ONLY);
  -			serversCombo.setItems(serverNames);
  -
  -			Label categoryLabel = new Label(portComp, SWT.NONE);
  -			categoryLabel.setText(Messages.DescriptorXPathPortCategory);
  -			
  -			portsCategoryCombo = new Combo(portComp, SWT.READ_ONLY);
  -			
  -			
  -			serversCombo.addSelectionListener(new SelectionListener() {
  -
  -				public void widgetDefaultSelected(SelectionEvent e) {
  -				}
  -
  -				public void widgetSelected(SelectionEvent e) {
  -					serverComboChanged();
  -				} 
  -			});
  -			
  -			portsCategoryCombo.addSelectionListener(new SelectionListener() {
  -				public void widgetDefaultSelected(SelectionEvent e) {
  -				}
  -				public void widgetSelected(SelectionEvent e) {
  -					JBossServer server = getSelectedServer();
  -					if( server != null ) {
  -						int index = portsCategoryCombo.getSelectionIndex();
  -						String selectedCategory = portsCategoryCombo.getItem(index);
  -						serverToDefaultPortCat.put(server, selectedCategory);
  -					}
  -				} 
  -				
  -			} );
  -		}
  -		private void serverComboChanged() {
  -			JBossServer s = getSelectedServer();
  -			if( s != null ) {
  -				Object o = serverToCategoryList.get(s);
  -				ArrayList list;
  -				if( o == null ) {
  -					ServerAttributeHelper helper = getAttributeHelper(s);
  -					SimpleXPathPreferenceTreeItem tree = helper.getXPathPreferenceTree();
  -					SimpleTreeItem[] children = tree.getChildren2();
  -					String[] categoryNames = new String[children.length];
  -					for( int i = 0; i < children.length; i++ ) {
  -						categoryNames[i] = (String)children[i].getData();
  -					}
  -					list = new ArrayList();
  -					list.addAll(Arrays.asList(categoryNames));
  -					String portDir = helper.getDefaultPortCategoryName();
  -					serverToDefaultPortCat.put(s, portDir);
  -					serverToCategoryList.put(s, list);
  -				} else {
  -					list = (ArrayList)o;
  -				}
  -				portsCategoryCombo.setItems((String[]) list
  -						.toArray(new String[list.size()]));
  -				
  -				String portDir = (String)serverToDefaultPortCat.get(s);
  -				if( portDir != null ) {
  -					int index2 = portsCategoryCombo.indexOf(portDir);
  -					portsCategoryCombo.select(index2);
  -				}
  -			}
  -		}
  -		private JBossServer getSelectedServer() {
  -			int index = serversCombo.getSelectionIndex();
  -			String selected = serversCombo.getItem(index);
  -			if( selected == null ) return null;
  -			
  -			for( int i = 0; i < servers.length; i++ ) {
  -				if( servers[i].getServer().getName().equals(selected)) {
  -					return servers[i];
  -				}
  -			}
  -			return null;
  -		}
  -		
  -		protected void fillViewDetails(Composite c) {
  -			FormData vdcData = new FormData();
  -			vdcData.left = new FormAttachment(0,5);
  -			vdcData.top = new FormAttachment(0,5);
  -			c.setLayoutData(vdcData);
  -
  -			c.setLayout(new RowLayout(SWT.VERTICAL));
  -
  -			simple = new Button(c, SWT.RADIO);
  -			complex = new Button(c, SWT.RADIO);
  -			
  -			simple.setText(Messages.DescriptorXPathSimple);
  -			complex.setText(Messages.DescriptorXPathComplex);
  -			
  -			boolean prefVal = JBossServerUIPlugin.getDefault().getPreferenceStore().getBoolean(PREFERENCE_KEY);
  -			simple.setSelection(prefVal == SIMPLE);
  -			complex.setSelection(prefVal == COMPLEX);
  -		}
  -		
  -		public boolean isValid() {
  -			return true;
  -		}
  -		public boolean performCancel() {
  -			return true;
  -		}
  -		public boolean performOk() {
  -			boolean simp = simple.getSelection() == true ? SIMPLE : COMPLEX;
  -			propertyPage.setSimple(simp == SIMPLE);
  -			
  -			// now save default port categories
  -			ServerAttributeHelper helper;
  -			for( int i = 0; i < servers.length; i++ ) {
  -				helper = (ServerAttributeHelper)serverToAttributeHelper.get(servers[i]);
  -				String category = (String)serverToDefaultPortCat.get(servers[i]);
  -				if( category != null ) {
  -					helper.setDefaultPortCategoryName(category);
  -					helper.save();
  -				}
  -			}
  -			
  -			
  -			return true;
  -		}
  -		public void dispose() {
  -			super.dispose();
  -		}
  -	}
  -	
   	public static class XPathPropertyLabelProvider extends LabelProvider implements ITableLabelProvider {
   
   		private boolean simple = false;
  @@ -1094,6 +1047,7 @@
   		}
   	}
   
  +	
   	protected void refreshViewer() {
   		if( isEnabled() ) {
   			try {
  @@ -1106,4 +1060,54 @@
   		}
   	}
   
  +	
  +	protected class XPathPropertyContentProvider implements 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;
  +			}
  +
  +			// re-creates it from scratch... hrmm
  +			if( parentElement instanceof ServerViewProvider ) 
  +				return jbServer.getAttributeHelper().getXPathPreferenceTree().getChildren2();
  +			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 SimpleXPathPreferenceTreeItem ) {
  +				SimpleTreeItem[] items =  ((SimpleXPathPreferenceTreeItem)inputElement).getChildren2();
  +				for( int i = 0; i < items.length; i++ )
  +					ensureLoaded((SimpleXPathPreferenceTreeItem)items[i]);
  +				return items;
  +			}
  +			return new Object[0];
  +		}
  +		public void ensureLoaded(SimpleXPathPreferenceTreeItem item) {
  +			if( item instanceof XPathPreferenceTreeItem ) {
  +				((XPathPreferenceTreeItem)item).ensureLoaded(jbServer);
  +			}
  +		}
  +		public void dispose() {
  +		}
  +		public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
  +		}
  +	}
   }
  
  
  



More information about the jboss-cvs-commits mailing list